From 1609f03bb1bece493d6058cfb9b76f450de517d2 Mon Sep 17 00:00:00 2001 From: Michael Leuschel <leuschel@uni-duesseldorf.de> Date: Tue, 15 Oct 2024 13:53:35 +0200 Subject: [PATCH] add html export --- logic_programming/2_IntroProlog.html | 18916 ++++++++++++++++++++++++ logic_programming/2_IntroProlog.ipynb | 1276 +- 2 files changed, 19307 insertions(+), 885 deletions(-) create mode 100644 logic_programming/2_IntroProlog.html diff --git a/logic_programming/2_IntroProlog.html b/logic_programming/2_IntroProlog.html new file mode 100644 index 0000000..5e86e55 --- /dev/null +++ b/logic_programming/2_IntroProlog.html @@ -0,0 +1,18916 @@ +<!DOCTYPE html> +<html> +<head><meta charset="utf-8" /> +<meta name="viewport" content="width=device-width, initial-scale=1.0"> + +<title>2_IntroProlog</title><script src="https://cdnjs.cloudflare.com/ajax/libs/require.js/2.1.10/require.min.js"></script> + + + + +<style type="text/css"> + pre { line-height: 125%; } +td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: var(--jp-cell-editor-active-background) } +.highlight { background: var(--jp-cell-editor-background); color: var(--jp-mirror-editor-variable-color) } +.highlight .c { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment */ +.highlight .err { color: var(--jp-mirror-editor-error-color) } /* Error */ +.highlight .k { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword */ +.highlight .o { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator */ +.highlight .p { color: var(--jp-mirror-editor-punctuation-color) } /* Punctuation */ +.highlight .ch { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Preproc */ +.highlight .cpf { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Single */ +.highlight .cs { color: var(--jp-mirror-editor-comment-color); font-style: italic } /* Comment.Special */ +.highlight .kc { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Pseudo */ +.highlight .kr { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: var(--jp-mirror-editor-keyword-color); font-weight: bold } /* Keyword.Type */ +.highlight .m { color: var(--jp-mirror-editor-number-color) } /* Literal.Number */ +.highlight .s { color: var(--jp-mirror-editor-string-color) } /* Literal.String */ +.highlight .ow { color: var(--jp-mirror-editor-operator-color); font-weight: bold } /* Operator.Word */ +.highlight .w { color: var(--jp-mirror-editor-variable-color) } /* Text.Whitespace */ +.highlight .mb { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Bin */ +.highlight .mf { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Float */ +.highlight .mh { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Hex */ +.highlight .mi { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer */ +.highlight .mo { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Oct */ +.highlight .sa { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Affix */ +.highlight .sb { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Backtick */ +.highlight .sc { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Char */ +.highlight .dl { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Delimiter */ +.highlight .sd { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Doc */ +.highlight .s2 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Double */ +.highlight .se { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Escape */ +.highlight .sh { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Heredoc */ +.highlight .si { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Interpol */ +.highlight .sx { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Other */ +.highlight .sr { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Regex */ +.highlight .s1 { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Single */ +.highlight .ss { color: var(--jp-mirror-editor-string-color) } /* Literal.String.Symbol */ +.highlight .il { color: var(--jp-mirror-editor-number-color) } /* Literal.Number.Integer.Long */ + </style> + + + +<style type="text/css"> +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* + * Mozilla scrollbar styling + */ + +/* use standard opaque scrollbars for most nodes */ +[data-jp-theme-scrollbars='true'] { + scrollbar-color: rgb(var(--jp-scrollbar-thumb-color)) + var(--jp-scrollbar-background-color); +} + +/* for code nodes, use a transparent style of scrollbar. These selectors + * will match lower in the tree, and so will override the above */ +[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar, +[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar { + scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent; +} + +/* tiny scrollbar */ + +.jp-scrollbar-tiny { + scrollbar-color: rgba(var(--jp-scrollbar-thumb-color), 0.5) transparent; + scrollbar-width: thin; +} + +/* + * Webkit scrollbar styling + */ + +/* use standard opaque scrollbars for most nodes */ + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-corner { + background: var(--jp-scrollbar-background-color); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-thumb { + background: rgb(var(--jp-scrollbar-thumb-color)); + border: var(--jp-scrollbar-thumb-margin) solid transparent; + background-clip: content-box; + border-radius: var(--jp-scrollbar-thumb-radius); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:horizontal { + border-left: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); + border-right: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); +} + +[data-jp-theme-scrollbars='true'] ::-webkit-scrollbar-track:vertical { + border-top: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); + border-bottom: var(--jp-scrollbar-endpad) solid + var(--jp-scrollbar-background-color); +} + +/* for code nodes, use a transparent style of scrollbar */ + +[data-jp-theme-scrollbars='true'] .CodeMirror-hscrollbar::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] .CodeMirror-vscrollbar::-webkit-scrollbar, +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-corner, +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-corner { + background-color: transparent; +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-thumb, +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-thumb { + background: rgba(var(--jp-scrollbar-thumb-color), 0.5); + border: var(--jp-scrollbar-thumb-margin) solid transparent; + background-clip: content-box; + border-radius: var(--jp-scrollbar-thumb-radius); +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-hscrollbar::-webkit-scrollbar-track:horizontal { + border-left: var(--jp-scrollbar-endpad) solid transparent; + border-right: var(--jp-scrollbar-endpad) solid transparent; +} + +[data-jp-theme-scrollbars='true'] + .CodeMirror-vscrollbar::-webkit-scrollbar-track:vertical { + border-top: var(--jp-scrollbar-endpad) solid transparent; + border-bottom: var(--jp-scrollbar-endpad) solid transparent; +} + +/* tiny scrollbar */ + +.jp-scrollbar-tiny::-webkit-scrollbar, +.jp-scrollbar-tiny::-webkit-scrollbar-corner { + background-color: transparent; + height: 4px; + width: 4px; +} + +.jp-scrollbar-tiny::-webkit-scrollbar-thumb { + background: rgba(var(--jp-scrollbar-thumb-color), 0.5); +} + +.jp-scrollbar-tiny::-webkit-scrollbar-track:horizontal { + border-left: 0px solid transparent; + border-right: 0px solid transparent; +} + +.jp-scrollbar-tiny::-webkit-scrollbar-track:vertical { + border-top: 0px solid transparent; + border-bottom: 0px solid transparent; +} + +/* + * Phosphor + */ + +.lm-ScrollBar[data-orientation='horizontal'] { + min-height: 16px; + max-height: 16px; + min-width: 45px; + border-top: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='vertical'] { + min-width: 16px; + max-width: 16px; + min-height: 45px; + border-left: 1px solid #a0a0a0; +} + +.lm-ScrollBar-button { + background-color: #f0f0f0; + background-position: center center; + min-height: 15px; + max-height: 15px; + min-width: 15px; + max-width: 15px; +} + +.lm-ScrollBar-button:hover { + background-color: #dadada; +} + +.lm-ScrollBar-button.lm-mod-active { + background-color: #cdcdcd; +} + +.lm-ScrollBar-track { + background: #f0f0f0; +} + +.lm-ScrollBar-thumb { + background: #cdcdcd; +} + +.lm-ScrollBar-thumb:hover { + background: #bababa; +} + +.lm-ScrollBar-thumb.lm-mod-active { + background: #a0a0a0; +} + +.lm-ScrollBar[data-orientation='horizontal'] .lm-ScrollBar-thumb { + height: 100%; + min-width: 15px; + border-left: 1px solid #a0a0a0; + border-right: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='vertical'] .lm-ScrollBar-thumb { + width: 100%; + min-height: 15px; + border-top: 1px solid #a0a0a0; + border-bottom: 1px solid #a0a0a0; +} + +.lm-ScrollBar[data-orientation='horizontal'] + .lm-ScrollBar-button[data-action='decrement'] { + background-image: var(--jp-icon-caret-left); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='horizontal'] + .lm-ScrollBar-button[data-action='increment'] { + background-image: var(--jp-icon-caret-right); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='vertical'] + .lm-ScrollBar-button[data-action='decrement'] { + background-image: var(--jp-icon-caret-up); + background-size: 17px; +} + +.lm-ScrollBar[data-orientation='vertical'] + .lm-ScrollBar-button[data-action='increment'] { + background-image: var(--jp-icon-caret-down); + background-size: 17px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-Widget, /* </DEPRECATED> */ +.lm-Widget { + box-sizing: border-box; + position: relative; + overflow: hidden; + cursor: default; +} + + +/* <DEPRECATED> */ .p-Widget.p-mod-hidden, /* </DEPRECATED> */ +.lm-Widget.lm-mod-hidden { + display: none !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-CommandPalette, /* </DEPRECATED> */ +.lm-CommandPalette { + display: flex; + flex-direction: column; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-CommandPalette-search, /* </DEPRECATED> */ +.lm-CommandPalette-search { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-content, /* </DEPRECATED> */ +.lm-CommandPalette-content { + flex: 1 1 auto; + margin: 0; + padding: 0; + min-height: 0; + overflow: auto; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p-CommandPalette-header, /* </DEPRECATED> */ +.lm-CommandPalette-header { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + + +/* <DEPRECATED> */ .p-CommandPalette-item, /* </DEPRECATED> */ +.lm-CommandPalette-item { + display: flex; + flex-direction: row; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemIcon, /* </DEPRECATED> */ +.lm-CommandPalette-itemIcon { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemContent, /* </DEPRECATED> */ +.lm-CommandPalette-itemContent { + flex: 1 1 auto; + overflow: hidden; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemShortcut, /* </DEPRECATED> */ +.lm-CommandPalette-itemShortcut { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-CommandPalette-itemLabel, /* </DEPRECATED> */ +.lm-CommandPalette-itemLabel { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.lm-close-icon { + border:1px solid transparent; + background-color: transparent; + position: absolute; + z-index:1; + right:3%; + top: 0; + bottom: 0; + margin: auto; + padding: 7px 0; + display: none; + vertical-align: middle; + outline: 0; + cursor: pointer; +} +.lm-close-icon:after { + content: "X"; + display: block; + width: 15px; + height: 15px; + text-align: center; + color:#000; + font-weight: normal; + font-size: 12px; + cursor: pointer; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-DockPanel, /* </DEPRECATED> */ +.lm-DockPanel { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-DockPanel-widget, /* </DEPRECATED> */ +.lm-DockPanel-widget { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-DockPanel-tabBar, /* </DEPRECATED> */ +.lm-DockPanel-tabBar { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle, /* </DEPRECATED> */ +.lm-DockPanel-handle { + z-index: 2; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle.p-mod-hidden, /* </DEPRECATED> */ +.lm-DockPanel-handle.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-DockPanel-handle:after, /* </DEPRECATED> */ +.lm-DockPanel-handle:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ''; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='horizontal'], +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='horizontal'] { + cursor: ew-resize; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='vertical'], +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='vertical'] { + cursor: ns-resize; +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='horizontal']:after, +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='horizontal']:after { + left: 50%; + min-width: 8px; + transform: translateX(-50%); +} + + +/* <DEPRECATED> */ +.p-DockPanel-handle[data-orientation='vertical']:after, +/* </DEPRECATED> */ +.lm-DockPanel-handle[data-orientation='vertical']:after { + top: 50%; + min-height: 8px; + transform: translateY(-50%); +} + + +/* <DEPRECATED> */ .p-DockPanel-overlay, /* </DEPRECATED> */ +.lm-DockPanel-overlay { + z-index: 3; + box-sizing: border-box; + pointer-events: none; +} + + +/* <DEPRECATED> */ .p-DockPanel-overlay.p-mod-hidden, /* </DEPRECATED> */ +.lm-DockPanel-overlay.lm-mod-hidden { + display: none !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-Menu, /* </DEPRECATED> */ +.lm-Menu { + z-index: 10000; + position: absolute; + white-space: nowrap; + overflow-x: hidden; + overflow-y: auto; + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-Menu-content, /* </DEPRECATED> */ +.lm-Menu-content { + margin: 0; + padding: 0; + display: table; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p-Menu-item, /* </DEPRECATED> */ +.lm-Menu-item { + display: table-row; +} + + +/* <DEPRECATED> */ +.p-Menu-item.p-mod-hidden, +.p-Menu-item.p-mod-collapsed, +/* </DEPRECATED> */ +.lm-Menu-item.lm-mod-hidden, +.lm-Menu-item.lm-mod-collapsed { + display: none !important; +} + + +/* <DEPRECATED> */ +.p-Menu-itemIcon, +.p-Menu-itemSubmenuIcon, +/* </DEPRECATED> */ +.lm-Menu-itemIcon, +.lm-Menu-itemSubmenuIcon { + display: table-cell; + text-align: center; +} + + +/* <DEPRECATED> */ .p-Menu-itemLabel, /* </DEPRECATED> */ +.lm-Menu-itemLabel { + display: table-cell; + text-align: left; +} + + +/* <DEPRECATED> */ .p-Menu-itemShortcut, /* </DEPRECATED> */ +.lm-Menu-itemShortcut { + display: table-cell; + text-align: right; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-MenuBar, /* </DEPRECATED> */ +.lm-MenuBar { + outline: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-MenuBar-content, /* </DEPRECATED> */ +.lm-MenuBar-content { + margin: 0; + padding: 0; + display: flex; + flex-direction: row; + list-style-type: none; +} + + +/* <DEPRECATED> */ .p--MenuBar-item, /* </DEPRECATED> */ +.lm-MenuBar-item { + box-sizing: border-box; +} + + +/* <DEPRECATED> */ +.p-MenuBar-itemIcon, +.p-MenuBar-itemLabel, +/* </DEPRECATED> */ +.lm-MenuBar-itemIcon, +.lm-MenuBar-itemLabel { + display: inline-block; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-ScrollBar, /* </DEPRECATED> */ +.lm-ScrollBar { + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ +.p-ScrollBar[data-orientation='horizontal'], +/* </DEPRECATED> */ +.lm-ScrollBar[data-orientation='horizontal'] { + flex-direction: row; +} + + +/* <DEPRECATED> */ +.p-ScrollBar[data-orientation='vertical'], +/* </DEPRECATED> */ +.lm-ScrollBar[data-orientation='vertical'] { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-ScrollBar-button, /* </DEPRECATED> */ +.lm-ScrollBar-button { + box-sizing: border-box; + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-ScrollBar-track, /* </DEPRECATED> */ +.lm-ScrollBar-track { + box-sizing: border-box; + position: relative; + overflow: hidden; + flex: 1 1 auto; +} + + +/* <DEPRECATED> */ .p-ScrollBar-thumb, /* </DEPRECATED> */ +.lm-ScrollBar-thumb { + box-sizing: border-box; + position: absolute; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-SplitPanel-child, /* </DEPRECATED> */ +.lm-SplitPanel-child { + z-index: 0; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle, /* </DEPRECATED> */ +.lm-SplitPanel-handle { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle.p-mod-hidden, /* </DEPRECATED> */ +.lm-SplitPanel-handle.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-SplitPanel-handle:after, /* </DEPRECATED> */ +.lm-SplitPanel-handle:after { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + content: ''; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle { + cursor: ew-resize; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle { + cursor: ns-resize; +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='horizontal'] > .p-SplitPanel-handle:after, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='horizontal'] > .lm-SplitPanel-handle:after { + left: 50%; + min-width: 8px; + transform: translateX(-50%); +} + + +/* <DEPRECATED> */ +.p-SplitPanel[data-orientation='vertical'] > .p-SplitPanel-handle:after, +/* </DEPRECATED> */ +.lm-SplitPanel[data-orientation='vertical'] > .lm-SplitPanel-handle:after { + top: 50%; + min-height: 8px; + transform: translateY(-50%); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-TabBar, /* </DEPRECATED> */ +.lm-TabBar { + display: flex; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + + +/* <DEPRECATED> */ .p-TabBar[data-orientation='horizontal'], /* </DEPRECATED> */ +.lm-TabBar[data-orientation='horizontal'] { + flex-direction: row; + align-items: flex-end; +} + + +/* <DEPRECATED> */ .p-TabBar[data-orientation='vertical'], /* </DEPRECATED> */ +.lm-TabBar[data-orientation='vertical'] { + flex-direction: column; + align-items: flex-end; +} + + +/* <DEPRECATED> */ .p-TabBar-content, /* </DEPRECATED> */ +.lm-TabBar-content { + margin: 0; + padding: 0; + display: flex; + flex: 1 1 auto; + list-style-type: none; +} + + +/* <DEPRECATED> */ +.p-TabBar[data-orientation='horizontal'] > .p-TabBar-content, +/* </DEPRECATED> */ +.lm-TabBar[data-orientation='horizontal'] > .lm-TabBar-content { + flex-direction: row; +} + + +/* <DEPRECATED> */ +.p-TabBar[data-orientation='vertical'] > .p-TabBar-content, +/* </DEPRECATED> */ +.lm-TabBar[data-orientation='vertical'] > .lm-TabBar-content { + flex-direction: column; +} + + +/* <DEPRECATED> */ .p-TabBar-tab, /* </DEPRECATED> */ +.lm-TabBar-tab { + display: flex; + flex-direction: row; + box-sizing: border-box; + overflow: hidden; +} + + +/* <DEPRECATED> */ +.p-TabBar-tabIcon, +.p-TabBar-tabCloseIcon, +/* </DEPRECATED> */ +.lm-TabBar-tabIcon, +.lm-TabBar-tabCloseIcon { + flex: 0 0 auto; +} + + +/* <DEPRECATED> */ .p-TabBar-tabLabel, /* </DEPRECATED> */ +.lm-TabBar-tabLabel { + flex: 1 1 auto; + overflow: hidden; + white-space: nowrap; +} + + +.lm-TabBar-tabInput { + user-select: all; + width: 100%; + box-sizing : border-box; +} + + +/* <DEPRECATED> */ .p-TabBar-tab.p-mod-hidden, /* </DEPRECATED> */ +.lm-TabBar-tab.lm-mod-hidden { + display: none !important; +} + + +.lm-TabBar-addButton.lm-mod-hidden { + display: none !important; +} + + +/* <DEPRECATED> */ .p-TabBar.p-mod-dragging .p-TabBar-tab, /* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging .lm-TabBar-tab { + position: relative; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging[data-orientation='horizontal'] .p-TabBar-tab, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging[data-orientation='horizontal'] .lm-TabBar-tab { + left: 0; + transition: left 150ms ease; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging[data-orientation='vertical'] .p-TabBar-tab, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging[data-orientation='vertical'] .lm-TabBar-tab { + top: 0; + transition: top 150ms ease; +} + + +/* <DEPRECATED> */ +.p-TabBar.p-mod-dragging .p-TabBar-tab.p-mod-dragging, +/* </DEPRECATED> */ +.lm-TabBar.lm-mod-dragging .lm-TabBar-tab.lm-mod-dragging { + transition: none; +} + +.lm-TabBar-tabLabel .lm-TabBar-tabInput { + user-select: all; + width: 100%; + box-sizing : border-box; + background: inherit; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ .p-TabPanel-tabBar, /* </DEPRECATED> */ +.lm-TabPanel-tabBar { + z-index: 1; +} + + +/* <DEPRECATED> */ .p-TabPanel-stackedPanel, /* </DEPRECATED> */ +.lm-TabPanel-stackedPanel { + z-index: 0; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + +@charset "UTF-8"; +html{ + -webkit-box-sizing:border-box; + box-sizing:border-box; } + +*, +*::before, +*::after{ + -webkit-box-sizing:inherit; + box-sizing:inherit; } + +body{ + font-size:14px; + font-weight:400; + letter-spacing:0; + line-height:1.28581; + text-transform:none; + color:#182026; + font-family:-apple-system, "BlinkMacSystemFont", "Segoe UI", "Roboto", "Oxygen", "Ubuntu", "Cantarell", "Open Sans", "Helvetica Neue", "Icons16", sans-serif; } + +p{ + margin-bottom:10px; + margin-top:0; } + +small{ + font-size:12px; } + +strong{ + font-weight:600; } + +::-moz-selection{ + background:rgba(125, 188, 255, 0.6); } + +::selection{ + background:rgba(125, 188, 255, 0.6); } +.bp3-heading{ + color:#182026; + font-weight:600; + margin:0 0 10px; + padding:0; } + .bp3-dark .bp3-heading{ + color:#f5f8fa; } + +h1.bp3-heading, .bp3-running-text h1{ + font-size:36px; + line-height:40px; } + +h2.bp3-heading, .bp3-running-text h2{ + font-size:28px; + line-height:32px; } + +h3.bp3-heading, .bp3-running-text h3{ + font-size:22px; + line-height:25px; } + +h4.bp3-heading, .bp3-running-text h4{ + font-size:18px; + line-height:21px; } + +h5.bp3-heading, .bp3-running-text h5{ + font-size:16px; + line-height:19px; } + +h6.bp3-heading, .bp3-running-text h6{ + font-size:14px; + line-height:16px; } +.bp3-ui-text{ + font-size:14px; + font-weight:400; + letter-spacing:0; + line-height:1.28581; + text-transform:none; } + +.bp3-monospace-text{ + font-family:monospace; + text-transform:none; } + +.bp3-text-muted{ + color:#5c7080; } + .bp3-dark .bp3-text-muted{ + color:#a7b6c2; } + +.bp3-text-disabled{ + color:rgba(92, 112, 128, 0.6); } + .bp3-dark .bp3-text-disabled{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-text-overflow-ellipsis{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; } +.bp3-running-text{ + font-size:14px; + line-height:1.5; } + .bp3-running-text h1{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h1{ + color:#f5f8fa; } + .bp3-running-text h2{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h2{ + color:#f5f8fa; } + .bp3-running-text h3{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h3{ + color:#f5f8fa; } + .bp3-running-text h4{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h4{ + color:#f5f8fa; } + .bp3-running-text h5{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h5{ + color:#f5f8fa; } + .bp3-running-text h6{ + color:#182026; + font-weight:600; + margin-bottom:20px; + margin-top:40px; } + .bp3-dark .bp3-running-text h6{ + color:#f5f8fa; } + .bp3-running-text hr{ + border:none; + border-bottom:1px solid rgba(16, 22, 26, 0.15); + margin:20px 0; } + .bp3-dark .bp3-running-text hr{ + border-color:rgba(255, 255, 255, 0.15); } + .bp3-running-text p{ + margin:0 0 10px; + padding:0; } + +.bp3-text-large{ + font-size:16px; } + +.bp3-text-small{ + font-size:12px; } +a{ + color:#106ba3; + text-decoration:none; } + a:hover{ + color:#106ba3; + cursor:pointer; + text-decoration:underline; } + a .bp3-icon, a .bp3-icon-standard, a .bp3-icon-large{ + color:inherit; } + a code, + .bp3-dark a code{ + color:inherit; } + .bp3-dark a, + .bp3-dark a:hover{ + color:#48aff0; } + .bp3-dark a .bp3-icon, .bp3-dark a .bp3-icon-standard, .bp3-dark a .bp3-icon-large, + .bp3-dark a:hover .bp3-icon, + .bp3-dark a:hover .bp3-icon-standard, + .bp3-dark a:hover .bp3-icon-large{ + color:inherit; } +.bp3-running-text code, .bp3-code{ + font-family:monospace; + text-transform:none; + background:rgba(255, 255, 255, 0.7); + border-radius:3px; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2); + color:#5c7080; + font-size:smaller; + padding:2px 5px; } + .bp3-dark .bp3-running-text code, .bp3-running-text .bp3-dark code, .bp3-dark .bp3-code{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + color:#a7b6c2; } + .bp3-running-text a > code, a > .bp3-code{ + color:#137cbd; } + .bp3-dark .bp3-running-text a > code, .bp3-running-text .bp3-dark a > code, .bp3-dark a > .bp3-code{ + color:inherit; } + +.bp3-running-text pre, .bp3-code-block{ + font-family:monospace; + text-transform:none; + background:rgba(255, 255, 255, 0.7); + border-radius:3px; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + color:#182026; + display:block; + font-size:13px; + line-height:1.4; + margin:10px 0; + padding:13px 15px 12px; + word-break:break-all; + word-wrap:break-word; } + .bp3-dark .bp3-running-text pre, .bp3-running-text .bp3-dark pre, .bp3-dark .bp3-code-block{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-running-text pre > code, .bp3-code-block > code{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; + font-size:inherit; + padding:0; } + +.bp3-running-text kbd, .bp3-key{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + color:#5c7080; + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + font-family:inherit; + font-size:12px; + height:24px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + line-height:24px; + min-width:24px; + padding:3px 6px; + vertical-align:middle; } + .bp3-running-text kbd .bp3-icon, .bp3-key .bp3-icon, .bp3-running-text kbd .bp3-icon-standard, .bp3-key .bp3-icon-standard, .bp3-running-text kbd .bp3-icon-large, .bp3-key .bp3-icon-large{ + margin-right:5px; } + .bp3-dark .bp3-running-text kbd, .bp3-running-text .bp3-dark kbd, .bp3-dark .bp3-key{ + background:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + color:#a7b6c2; } +.bp3-running-text blockquote, .bp3-blockquote{ + border-left:solid 4px rgba(167, 182, 194, 0.5); + margin:0 0 10px; + padding:0 20px; } + .bp3-dark .bp3-running-text blockquote, .bp3-running-text .bp3-dark blockquote, .bp3-dark .bp3-blockquote{ + border-color:rgba(115, 134, 148, 0.5); } +.bp3-running-text ul, +.bp3-running-text ol, .bp3-list{ + margin:10px 0; + padding-left:30px; } + .bp3-running-text ul li:not(:last-child), .bp3-running-text ol li:not(:last-child), .bp3-list li:not(:last-child){ + margin-bottom:5px; } + .bp3-running-text ul ol, .bp3-running-text ol ol, .bp3-list ol, + .bp3-running-text ul ul, + .bp3-running-text ol ul, + .bp3-list ul{ + margin-top:5px; } + +.bp3-list-unstyled{ + list-style:none; + margin:0; + padding:0; } + .bp3-list-unstyled li{ + padding:0; } +.bp3-rtl{ + text-align:right; } + +.bp3-dark{ + color:#f5f8fa; } + +:focus{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:2px; + -moz-outline-radius:6px; } + +.bp3-focus-disabled :focus{ + outline:none !important; } + .bp3-focus-disabled :focus ~ .bp3-control-indicator{ + outline:none !important; } + +.bp3-alert{ + max-width:400px; + padding:20px; } + +.bp3-alert-body{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-alert-body .bp3-icon{ + font-size:40px; + margin-right:20px; + margin-top:0; } + +.bp3-alert-contents{ + word-break:break-word; } + +.bp3-alert-footer{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:reverse; + -ms-flex-direction:row-reverse; + flex-direction:row-reverse; + margin-top:10px; } + .bp3-alert-footer .bp3-button{ + margin-left:10px; } +.bp3-breadcrumbs{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + cursor:default; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-wrap:wrap; + flex-wrap:wrap; + height:30px; + list-style:none; + margin:0; + padding:0; } + .bp3-breadcrumbs > li{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-breadcrumbs > li::after{ + background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M10.71 7.29l-4-4a1.003 1.003 0 00-1.42 1.42L8.59 8 5.3 11.29c-.19.18-.3.43-.3.71a1.003 1.003 0 001.71.71l4-4c.18-.18.29-.43.29-.71 0-.28-.11-.53-.29-.71z' fill='%235C7080'/%3e%3c/svg%3e"); + content:""; + display:block; + height:16px; + margin:0 5px; + width:16px; } + .bp3-breadcrumbs > li:last-of-type::after{ + display:none; } + +.bp3-breadcrumb, +.bp3-breadcrumb-current, +.bp3-breadcrumbs-collapsed{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + font-size:16px; } + +.bp3-breadcrumb, +.bp3-breadcrumbs-collapsed{ + color:#5c7080; } + +.bp3-breadcrumb:hover{ + text-decoration:none; } + +.bp3-breadcrumb.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-breadcrumb .bp3-icon{ + margin-right:5px; } + +.bp3-breadcrumb-current{ + color:inherit; + font-weight:600; } + .bp3-breadcrumb-current .bp3-input{ + font-size:inherit; + font-weight:inherit; + vertical-align:baseline; } + +.bp3-breadcrumbs-collapsed{ + background:#ced9e0; + border:none; + border-radius:3px; + cursor:pointer; + margin-right:2px; + padding:1px 5px; + vertical-align:text-bottom; } + .bp3-breadcrumbs-collapsed::before{ + background:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cg fill='%235C7080'%3e%3ccircle cx='2' cy='8.03' r='2'/%3e%3ccircle cx='14' cy='8.03' r='2'/%3e%3ccircle cx='8' cy='8.03' r='2'/%3e%3c/g%3e%3c/svg%3e") center no-repeat; + content:""; + display:block; + height:16px; + width:16px; } + .bp3-breadcrumbs-collapsed:hover{ + background:#bfccd6; + color:#182026; + text-decoration:none; } + +.bp3-dark .bp3-breadcrumb, +.bp3-dark .bp3-breadcrumbs-collapsed{ + color:#a7b6c2; } + +.bp3-dark .bp3-breadcrumbs > li::after{ + color:#a7b6c2; } + +.bp3-dark .bp3-breadcrumb.bp3-disabled{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-dark .bp3-breadcrumb-current{ + color:#f5f8fa; } + +.bp3-dark .bp3-breadcrumbs-collapsed{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-breadcrumbs-collapsed:hover{ + background:rgba(16, 22, 26, 0.6); + color:#f5f8fa; } +.bp3-button{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border:none; + border-radius:3px; + cursor:pointer; + font-size:14px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + padding:5px 10px; + text-align:left; + vertical-align:middle; + min-height:30px; + min-width:30px; } + .bp3-button > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-button > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-button::before, + .bp3-button > *{ + margin-right:7px; } + .bp3-button:empty::before, + .bp3-button > :last-child{ + margin-right:0; } + .bp3-button:empty{ + padding:0 !important; } + .bp3-button:disabled, .bp3-button.bp3-disabled{ + cursor:not-allowed; } + .bp3-button.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-button.bp3-align-right, + .bp3-align-right .bp3-button{ + text-align:right; } + .bp3-button.bp3-align-left, + .bp3-align-left .bp3-button{ + text-align:left; } + .bp3-button:not([class*="bp3-intent-"]){ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; } + .bp3-button:not([class*="bp3-intent-"]):hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-button:not([class*="bp3-intent-"]):active, .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active:hover, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active, .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-button.bp3-intent-primary{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-primary:hover, .bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-primary:hover{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-primary:active, .bp3-button.bp3-intent-primary.bp3-active{ + background-color:#0e5a8a; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-primary:disabled, .bp3-button.bp3-intent-primary.bp3-disabled{ + background-color:rgba(19, 124, 189, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-success{ + background-color:#0f9960; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-success:hover, .bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-success:hover{ + background-color:#0d8050; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-success:active, .bp3-button.bp3-intent-success.bp3-active{ + background-color:#0a6640; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-success:disabled, .bp3-button.bp3-intent-success.bp3-disabled{ + background-color:rgba(15, 153, 96, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-warning{ + background-color:#d9822b; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-warning:hover, .bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-warning:hover{ + background-color:#bf7326; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-warning:active, .bp3-button.bp3-intent-warning.bp3-active{ + background-color:#a66321; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-warning:disabled, .bp3-button.bp3-intent-warning.bp3-disabled{ + background-color:rgba(217, 130, 43, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button.bp3-intent-danger{ + background-color:#db3737; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-button.bp3-intent-danger:hover, .bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{ + color:#ffffff; } + .bp3-button.bp3-intent-danger:hover{ + background-color:#c23030; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-danger:active, .bp3-button.bp3-intent-danger.bp3-active{ + background-color:#a82a2a; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-button.bp3-intent-danger:disabled, .bp3-button.bp3-intent-danger.bp3-disabled{ + background-color:rgba(219, 55, 55, 0.5); + background-image:none; + border-color:transparent; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.6); } + .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{ + stroke:#ffffff; } + .bp3-button.bp3-large, + .bp3-large .bp3-button{ + min-height:40px; + min-width:40px; + font-size:16px; + padding:5px 15px; } + .bp3-button.bp3-large::before, + .bp3-button.bp3-large > *, + .bp3-large .bp3-button::before, + .bp3-large .bp3-button > *{ + margin-right:10px; } + .bp3-button.bp3-large:empty::before, + .bp3-button.bp3-large > :last-child, + .bp3-large .bp3-button:empty::before, + .bp3-large .bp3-button > :last-child{ + margin-right:0; } + .bp3-button.bp3-small, + .bp3-small .bp3-button{ + min-height:24px; + min-width:24px; + padding:0 7px; } + .bp3-button.bp3-loading{ + position:relative; } + .bp3-button.bp3-loading[class*="bp3-icon-"]::before{ + visibility:hidden; } + .bp3-button.bp3-loading .bp3-button-spinner{ + margin:0; + position:absolute; } + .bp3-button.bp3-loading > :not(.bp3-button-spinner){ + visibility:hidden; } + .bp3-button[class*="bp3-icon-"]::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + color:#5c7080; } + .bp3-button .bp3-icon, .bp3-button .bp3-icon-standard, .bp3-button .bp3-icon-large{ + color:#5c7080; } + .bp3-button .bp3-icon.bp3-align-right, .bp3-button .bp3-icon-standard.bp3-align-right, .bp3-button .bp3-icon-large.bp3-align-right{ + margin-left:7px; } + .bp3-button .bp3-icon:first-child:last-child, + .bp3-button .bp3-spinner + .bp3-icon:last-child{ + margin:0 -7px; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]){ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover, .bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]):disabled.bp3-active, .bp3-dark .bp3-button:not([class*="bp3-intent-"]).bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"])[class*="bp3-icon-"]::before{ + color:#a7b6c2; } + .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-standard, .bp3-dark .bp3-button:not([class*="bp3-intent-"]) .bp3-icon-large{ + color:#a7b6c2; } + .bp3-dark .bp3-button[class*="bp3-intent-"]{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:active, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-button[class*="bp3-intent-"]:disabled, .bp3-dark .bp3-button[class*="bp3-intent-"].bp3-disabled{ + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(255, 255, 255, 0.3); } + .bp3-dark .bp3-button[class*="bp3-intent-"] .bp3-button-spinner .bp3-spinner-head{ + stroke:#8a9ba8; } + .bp3-button:disabled::before, + .bp3-button:disabled .bp3-icon, .bp3-button:disabled .bp3-icon-standard, .bp3-button:disabled .bp3-icon-large, .bp3-button.bp3-disabled::before, + .bp3-button.bp3-disabled .bp3-icon, .bp3-button.bp3-disabled .bp3-icon-standard, .bp3-button.bp3-disabled .bp3-icon-large, .bp3-button[class*="bp3-intent-"]::before, + .bp3-button[class*="bp3-intent-"] .bp3-icon, .bp3-button[class*="bp3-intent-"] .bp3-icon-standard, .bp3-button[class*="bp3-intent-"] .bp3-icon-large{ + color:inherit !important; } + .bp3-button.bp3-minimal{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-button.bp3-minimal:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button.bp3-minimal:active, .bp3-button.bp3-minimal.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button.bp3-minimal:disabled, .bp3-button.bp3-minimal:disabled:hover, .bp3-button.bp3-minimal.bp3-disabled, .bp3-button.bp3-minimal.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button.bp3-minimal:disabled.bp3-active, .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button.bp3-minimal{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button.bp3-minimal:hover, .bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button.bp3-minimal:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button.bp3-minimal:active, .bp3-dark .bp3-button.bp3-minimal.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button.bp3-minimal:disabled, .bp3-dark .bp3-button.bp3-minimal:disabled:hover, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button.bp3-minimal:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-primary{ + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:hover, .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-success{ + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:hover, .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-warning{ + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:hover, .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-danger{ + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:hover, .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-minimal.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-minimal.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + border:1px solid rgba(24, 32, 38, 0.2); + -webkit-box-sizing:border-box; + box-sizing:border-box; } + .bp3-button.bp3-outlined:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button.bp3-outlined:active, .bp3-button.bp3-outlined.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button.bp3-outlined:disabled.bp3-active, .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button.bp3-outlined{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button.bp3-outlined:hover, .bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button.bp3-outlined:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button.bp3-outlined:active, .bp3-dark .bp3-button.bp3-outlined.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button.bp3-outlined:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined:disabled:hover.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-primary{ + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:hover, .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-success{ + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:hover, .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-warning{ + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:hover, .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-danger{ + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:hover, .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button.bp3-outlined:disabled, .bp3-button.bp3-outlined.bp3-disabled, .bp3-button.bp3-outlined:disabled:hover, .bp3-button.bp3-outlined.bp3-disabled:hover{ + border-color:rgba(92, 112, 128, 0.1); } + .bp3-dark .bp3-button.bp3-outlined{ + border-color:rgba(255, 255, 255, 0.4); } + .bp3-dark .bp3-button.bp3-outlined:disabled, .bp3-dark .bp3-button.bp3-outlined:disabled:hover, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-disabled:hover{ + border-color:rgba(255, 255, 255, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-primary{ + border-color:rgba(16, 107, 163, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + border-color:rgba(16, 107, 163, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary{ + border-color:rgba(72, 175, 240, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-primary.bp3-disabled{ + border-color:rgba(72, 175, 240, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-success{ + border-color:rgba(13, 128, 80, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + border-color:rgba(13, 128, 80, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success{ + border-color:rgba(61, 204, 145, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-success.bp3-disabled{ + border-color:rgba(61, 204, 145, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-warning{ + border-color:rgba(191, 115, 38, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + border-color:rgba(191, 115, 38, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning{ + border-color:rgba(255, 179, 102, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-warning.bp3-disabled{ + border-color:rgba(255, 179, 102, 0.2); } + .bp3-button.bp3-outlined.bp3-intent-danger{ + border-color:rgba(194, 48, 48, 0.6); } + .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + border-color:rgba(194, 48, 48, 0.2); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger{ + border-color:rgba(255, 115, 115, 0.6); } + .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger:disabled, .bp3-dark .bp3-button.bp3-outlined.bp3-intent-danger.bp3-disabled{ + border-color:rgba(255, 115, 115, 0.2); } + +a.bp3-button{ + text-align:center; + text-decoration:none; + -webkit-transition:none; + transition:none; } + a.bp3-button, a.bp3-button:hover, a.bp3-button:active{ + color:#182026; } + a.bp3-button.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); } + +.bp3-button-text{ + -webkit-box-flex:0; + -ms-flex:0 1 auto; + flex:0 1 auto; } + +.bp3-button.bp3-align-left .bp3-button-text, .bp3-button.bp3-align-right .bp3-button-text, +.bp3-button-group.bp3-align-left .bp3-button-text, +.bp3-button-group.bp3-align-right .bp3-button-text{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } +.bp3-button-group{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; } + .bp3-button-group .bp3-button{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + position:relative; + z-index:4; } + .bp3-button-group .bp3-button:focus{ + z-index:5; } + .bp3-button-group .bp3-button:hover{ + z-index:6; } + .bp3-button-group .bp3-button:active, .bp3-button-group .bp3-button.bp3-active{ + z-index:7; } + .bp3-button-group .bp3-button:disabled, .bp3-button-group .bp3-button.bp3-disabled{ + z-index:3; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]{ + z-index:9; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:focus{ + z-index:10; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:hover{ + z-index:11; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:active, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-active{ + z-index:12; } + .bp3-button-group .bp3-button[class*="bp3-intent-"]:disabled, .bp3-button-group .bp3-button[class*="bp3-intent-"].bp3-disabled{ + z-index:8; } + .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:first-child) .bp3-button, + .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:first-child){ + border-bottom-left-radius:0; + border-top-left-radius:0; } + .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){ + border-bottom-right-radius:0; + border-top-right-radius:0; + margin-right:-1px; } + .bp3-button-group.bp3-minimal .bp3-button{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-button-group.bp3-minimal .bp3-button:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button:disabled:hover.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{ + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{ + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{ + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{ + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-button-group.bp3-minimal .bp3-button.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-button-group .bp3-popover-wrapper, + .bp3-button-group .bp3-popover-target{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-button-group.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-button-group .bp3-button.bp3-fill, + .bp3-button-group.bp3-fill .bp3-button:not(.bp3-fixed){ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-button-group.bp3-vertical{ + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + vertical-align:top; } + .bp3-button-group.bp3-vertical.bp3-fill{ + height:100%; + width:unset; } + .bp3-button-group.bp3-vertical .bp3-button{ + margin-right:0 !important; + width:100%; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:first-child .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:first-child{ + border-radius:3px 3px 0 0; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:last-child .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:last-child{ + border-radius:0 0 3px 3px; } + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-button-group.bp3-vertical:not(.bp3-minimal) > .bp3-button:not(:last-child){ + margin-bottom:-1px; } + .bp3-button-group.bp3-align-left .bp3-button{ + text-align:left; } + .bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-dark .bp3-button-group:not(.bp3-minimal) > .bp3-button:not(:last-child){ + margin-right:1px; } + .bp3-dark .bp3-button-group.bp3-vertical > .bp3-popover-wrapper:not(:last-child) .bp3-button, + .bp3-dark .bp3-button-group.bp3-vertical > .bp3-button:not(:last-child){ + margin-bottom:1px; } +.bp3-callout{ + font-size:14px; + line-height:1.5; + background-color:rgba(138, 155, 168, 0.15); + border-radius:3px; + padding:10px 12px 9px; + position:relative; + width:100%; } + .bp3-callout[class*="bp3-icon-"]{ + padding-left:40px; } + .bp3-callout[class*="bp3-icon-"]::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + color:#5c7080; + left:10px; + position:absolute; + top:10px; } + .bp3-callout.bp3-callout-icon{ + padding-left:40px; } + .bp3-callout.bp3-callout-icon > .bp3-icon:first-child{ + color:#5c7080; + left:10px; + position:absolute; + top:10px; } + .bp3-callout .bp3-heading{ + line-height:20px; + margin-bottom:5px; + margin-top:0; } + .bp3-callout .bp3-heading:last-child{ + margin-bottom:0; } + .bp3-dark .bp3-callout{ + background-color:rgba(138, 155, 168, 0.2); } + .bp3-dark .bp3-callout[class*="bp3-icon-"]::before{ + color:#a7b6c2; } + .bp3-callout.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.15); } + .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-primary > .bp3-icon:first-child, + .bp3-callout.bp3-intent-primary .bp3-heading{ + color:#106ba3; } + .bp3-dark .bp3-callout.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-primary[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-primary > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-primary .bp3-heading{ + color:#48aff0; } + .bp3-callout.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.15); } + .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-success > .bp3-icon:first-child, + .bp3-callout.bp3-intent-success .bp3-heading{ + color:#0d8050; } + .bp3-dark .bp3-callout.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-success[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-success > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-success .bp3-heading{ + color:#3dcc91; } + .bp3-callout.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.15); } + .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-warning > .bp3-icon:first-child, + .bp3-callout.bp3-intent-warning .bp3-heading{ + color:#bf7326; } + .bp3-dark .bp3-callout.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-warning[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-warning > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-warning .bp3-heading{ + color:#ffb366; } + .bp3-callout.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.15); } + .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before, + .bp3-callout.bp3-intent-danger > .bp3-icon:first-child, + .bp3-callout.bp3-intent-danger .bp3-heading{ + color:#c23030; } + .bp3-dark .bp3-callout.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.25); } + .bp3-dark .bp3-callout.bp3-intent-danger[class*="bp3-icon-"]::before, + .bp3-dark .bp3-callout.bp3-intent-danger > .bp3-icon:first-child, + .bp3-dark .bp3-callout.bp3-intent-danger .bp3-heading{ + color:#ff7373; } + .bp3-running-text .bp3-callout{ + margin:20px 0; } +.bp3-card{ + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + padding:20px; + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-card.bp3-dark, + .bp3-dark .bp3-card{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + +.bp3-elevation-0{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.15), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + .bp3-elevation-0.bp3-dark, + .bp3-dark .bp3-elevation-0{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), 0 0 0 rgba(16, 22, 26, 0), 0 0 0 rgba(16, 22, 26, 0); } + +.bp3-elevation-1{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-elevation-1.bp3-dark, + .bp3-dark .bp3-elevation-1{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-2{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 1px 1px rgba(16, 22, 26, 0.2), 0 2px 6px rgba(16, 22, 26, 0.2); } + .bp3-elevation-2.bp3-dark, + .bp3-dark .bp3-elevation-2{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.4), 0 2px 6px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-3{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); } + .bp3-elevation-3.bp3-dark, + .bp3-dark .bp3-elevation-3{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + +.bp3-elevation-4{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); } + .bp3-elevation-4.bp3-dark, + .bp3-dark .bp3-elevation-4{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); } + +.bp3-card.bp3-interactive:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + cursor:pointer; } + .bp3-card.bp3-interactive:hover.bp3-dark, + .bp3-dark .bp3-card.bp3-interactive:hover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + +.bp3-card.bp3-interactive:active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + opacity:0.9; + -webkit-transition-duration:0; + transition-duration:0; } + .bp3-card.bp3-interactive:active.bp3-dark, + .bp3-dark .bp3-card.bp3-interactive:active{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-collapse{ + height:0; + overflow-y:hidden; + -webkit-transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:height 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-collapse .bp3-collapse-body{ + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-collapse .bp3-collapse-body[aria-hidden="true"]{ + display:none; } + +.bp3-context-menu .bp3-popover-target{ + display:block; } + +.bp3-context-menu-popover-target{ + position:fixed; } + +.bp3-divider{ + border-bottom:1px solid rgba(16, 22, 26, 0.15); + border-right:1px solid rgba(16, 22, 26, 0.15); + margin:5px; } + .bp3-dark .bp3-divider{ + border-color:rgba(16, 22, 26, 0.4); } +.bp3-dialog-container{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + min-height:100%; + pointer-events:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + width:100%; } + .bp3-dialog-container.bp3-overlay-enter > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear > .bp3-dialog{ + opacity:0; + -webkit-transform:scale(0.5); + transform:scale(0.5); } + .bp3-dialog-container.bp3-overlay-enter-active > .bp3-dialog, .bp3-dialog-container.bp3-overlay-appear-active > .bp3-dialog{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:opacity, transform; + transition-property:opacity, transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-dialog-container.bp3-overlay-exit > .bp3-dialog{ + opacity:1; + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-dialog-container.bp3-overlay-exit-active > .bp3-dialog{ + opacity:0; + -webkit-transform:scale(0.5); + transform:scale(0.5); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:opacity, transform; + transition-property:opacity, transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + +.bp3-dialog{ + background:#ebf1f5; + border-radius:6px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:30px 0; + padding-bottom:20px; + pointer-events:all; + -webkit-user-select:text; + -moz-user-select:text; + -ms-user-select:text; + user-select:text; + width:500px; } + .bp3-dialog:focus{ + outline:0; } + .bp3-dialog.bp3-dark, + .bp3-dark .bp3-dialog{ + background:#293742; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + +.bp3-dialog-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background:#ffffff; + border-radius:6px 6px 0 0; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + min-height:40px; + padding-left:20px; + padding-right:5px; + z-index:30; } + .bp3-dialog-header .bp3-icon-large, + .bp3-dialog-header .bp3-icon{ + color:#5c7080; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin-right:10px; } + .bp3-dialog-header .bp3-heading{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:inherit; + margin:0; } + .bp3-dialog-header .bp3-heading:last-child{ + margin-right:20px; } + .bp3-dark .bp3-dialog-header{ + background:#30404d; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-dialog-header .bp3-icon-large, + .bp3-dark .bp3-dialog-header .bp3-icon{ + color:#a7b6c2; } + +.bp3-dialog-body{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:18px; + margin:20px; } + +.bp3-dialog-footer{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin:0 20px; } + +.bp3-dialog-footer-actions{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:end; + -ms-flex-pack:end; + justify-content:flex-end; } + .bp3-dialog-footer-actions .bp3-button{ + margin-left:10px; } +.bp3-multistep-dialog-panels{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + +.bp3-multistep-dialog-left-panel{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1; + flex:1; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; } + .bp3-dark .bp3-multistep-dialog-left-panel{ + background:#202b33; } + +.bp3-multistep-dialog-right-panel{ + background-color:#f5f8fa; + border-left:1px solid rgba(16, 22, 26, 0.15); + border-radius:0 0 6px 0; + -webkit-box-flex:3; + -ms-flex:3; + flex:3; + min-width:0; } + .bp3-dark .bp3-multistep-dialog-right-panel{ + background-color:#293742; + border-left:1px solid rgba(16, 22, 26, 0.4); } + +.bp3-multistep-dialog-footer{ + background-color:#ffffff; + border-radius:0 0 6px 0; + border-top:1px solid rgba(16, 22, 26, 0.15); + padding:10px; } + .bp3-dark .bp3-multistep-dialog-footer{ + background:#30404d; + border-top:1px solid rgba(16, 22, 26, 0.4); } + +.bp3-dialog-step-container{ + background-color:#f5f8fa; + border-bottom:1px solid rgba(16, 22, 26, 0.15); } + .bp3-dark .bp3-dialog-step-container{ + background:#293742; + border-bottom:1px solid rgba(16, 22, 26, 0.4); } + .bp3-dialog-step-container.bp3-dialog-step-viewed{ + background-color:#ffffff; } + .bp3-dark .bp3-dialog-step-container.bp3-dialog-step-viewed{ + background:#30404d; } + +.bp3-dialog-step{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background-color:#f5f8fa; + border-radius:6px; + cursor:not-allowed; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + margin:4px; + padding:6px 14px; } + .bp3-dark .bp3-dialog-step{ + background:#293742; } + .bp3-dialog-step-viewed .bp3-dialog-step{ + background-color:#ffffff; + cursor:pointer; } + .bp3-dark .bp3-dialog-step-viewed .bp3-dialog-step{ + background:#30404d; } + .bp3-dialog-step:hover{ + background-color:#f5f8fa; } + .bp3-dark .bp3-dialog-step:hover{ + background:#293742; } + +.bp3-dialog-step-icon{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background-color:rgba(92, 112, 128, 0.6); + border-radius:50%; + color:#ffffff; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + height:25px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + width:25px; } + .bp3-dark .bp3-dialog-step-icon{ + background-color:rgba(167, 182, 194, 0.6); } + .bp3-active.bp3-dialog-step-viewed .bp3-dialog-step-icon{ + background-color:#2b95d6; } + .bp3-dialog-step-viewed .bp3-dialog-step-icon{ + background-color:#8a9ba8; } + +.bp3-dialog-step-title{ + color:rgba(92, 112, 128, 0.6); + -webkit-box-flex:1; + -ms-flex:1; + flex:1; + padding-left:10px; } + .bp3-dark .bp3-dialog-step-title{ + color:rgba(167, 182, 194, 0.6); } + .bp3-active.bp3-dialog-step-viewed .bp3-dialog-step-title{ + color:#2b95d6; } + .bp3-dialog-step-viewed:not(.bp3-active) .bp3-dialog-step-title{ + color:#182026; } + .bp3-dark .bp3-dialog-step-viewed:not(.bp3-active) .bp3-dialog-step-title{ + color:#f5f8fa; } +.bp3-drawer{ + background:#ffffff; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:0; + padding:0; } + .bp3-drawer:focus{ + outline:0; } + .bp3-drawer.bp3-position-top{ + height:50%; + left:0; + right:0; + top:0; } + .bp3-drawer.bp3-position-top.bp3-overlay-enter, .bp3-drawer.bp3-position-top.bp3-overlay-appear{ + -webkit-transform:translateY(-100%); + transform:translateY(-100%); } + .bp3-drawer.bp3-position-top.bp3-overlay-enter-active, .bp3-drawer.bp3-position-top.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-top.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer.bp3-position-top.bp3-overlay-exit-active{ + -webkit-transform:translateY(-100%); + transform:translateY(-100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-bottom{ + bottom:0; + height:50%; + left:0; + right:0; } + .bp3-drawer.bp3-position-bottom.bp3-overlay-enter, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear{ + -webkit-transform:translateY(100%); + transform:translateY(100%); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-enter-active, .bp3-drawer.bp3-position-bottom.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer.bp3-position-bottom.bp3-overlay-exit-active{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-left{ + bottom:0; + left:0; + top:0; + width:50%; } + .bp3-drawer.bp3-position-left.bp3-overlay-enter, .bp3-drawer.bp3-position-left.bp3-overlay-appear{ + -webkit-transform:translateX(-100%); + transform:translateX(-100%); } + .bp3-drawer.bp3-position-left.bp3-overlay-enter-active, .bp3-drawer.bp3-position-left.bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-left.bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer.bp3-position-left.bp3-overlay-exit-active{ + -webkit-transform:translateX(-100%); + transform:translateX(-100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-right{ + bottom:0; + right:0; + top:0; + width:50%; } + .bp3-drawer.bp3-position-right.bp3-overlay-enter, .bp3-drawer.bp3-position-right.bp3-overlay-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); } + .bp3-drawer.bp3-position-right.bp3-overlay-enter-active, .bp3-drawer.bp3-position-right.bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-position-right.bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer.bp3-position-right.bp3-overlay-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical){ + bottom:0; + right:0; + top:0; + width:50%; } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-appear-active{ + -webkit-transform:translateX(0); + transform:translateX(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-exit{ + -webkit-transform:translateX(0); + transform:translateX(0); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right):not(.bp3-vertical).bp3-overlay-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical{ + bottom:0; + height:50%; + left:0; + right:0; } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-enter, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-appear{ + -webkit-transform:translateY(100%); + transform:translateY(100%); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-enter-active, .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-exit{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-drawer:not(.bp3-position-top):not(.bp3-position-bottom):not(.bp3-position-left):not( + .bp3-position-right).bp3-vertical.bp3-overlay-exit-active{ + -webkit-transform:translateY(100%); + transform:translateY(100%); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-drawer.bp3-dark, + .bp3-dark .bp3-drawer{ + background:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + +.bp3-drawer-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border-radius:0; + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + min-height:40px; + padding:5px; + padding-left:20px; + position:relative; } + .bp3-drawer-header .bp3-icon-large, + .bp3-drawer-header .bp3-icon{ + color:#5c7080; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + margin-right:10px; } + .bp3-drawer-header .bp3-heading{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:inherit; + margin:0; } + .bp3-drawer-header .bp3-heading:last-child{ + margin-right:20px; } + .bp3-dark .bp3-drawer-header{ + -webkit-box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:0 1px 0 rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-drawer-header .bp3-icon-large, + .bp3-dark .bp3-drawer-header .bp3-icon{ + color:#a7b6c2; } + +.bp3-drawer-body{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:18px; + overflow:auto; } + +.bp3-drawer-footer{ + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + padding:10px 20px; + position:relative; } + .bp3-dark .bp3-drawer-footer{ + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.4); } +.bp3-editable-text{ + cursor:text; + display:inline-block; + max-width:100%; + position:relative; + vertical-align:top; + white-space:nowrap; } + .bp3-editable-text::before{ + bottom:-3px; + left:-3px; + position:absolute; + right:-3px; + top:-3px; + border-radius:3px; + content:""; + -webkit-transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9), box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-editable-text:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-editable-text.bp3-editable-text-editing::before{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-disabled::before{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-editable-text.bp3-intent-primary .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{ + color:#137cbd; } + .bp3-editable-text.bp3-intent-primary:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(19, 124, 189, 0.4); } + .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-success .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-success .bp3-editable-text-content{ + color:#0f9960; } + .bp3-editable-text.bp3-intent-success:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px rgba(15, 153, 96, 0.4); } + .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-warning .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{ + color:#d9822b; } + .bp3-editable-text.bp3-intent-warning:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px rgba(217, 130, 43, 0.4); } + .bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-editable-text.bp3-intent-danger .bp3-editable-text-input, + .bp3-editable-text.bp3-intent-danger .bp3-editable-text-content{ + color:#db3737; } + .bp3-editable-text.bp3-intent-danger:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px rgba(219, 55, 55, 0.4); } + .bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-editable-text:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(255, 255, 255, 0.15); } + .bp3-dark .bp3-editable-text.bp3-editable-text-editing::before{ + background-color:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-disabled::before{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-editable-text.bp3-intent-primary .bp3-editable-text-content{ + color:#48aff0; } + .bp3-dark .bp3-editable-text.bp3-intent-primary:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4); + box-shadow:0 0 0 0 rgba(72, 175, 240, 0), 0 0 0 0 rgba(72, 175, 240, 0), inset 0 0 0 1px rgba(72, 175, 240, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-primary.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #48aff0, 0 0 0 3px rgba(72, 175, 240, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-success .bp3-editable-text-content{ + color:#3dcc91; } + .bp3-dark .bp3-editable-text.bp3-intent-success:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4); + box-shadow:0 0 0 0 rgba(61, 204, 145, 0), 0 0 0 0 rgba(61, 204, 145, 0), inset 0 0 0 1px rgba(61, 204, 145, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-success.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #3dcc91, 0 0 0 3px rgba(61, 204, 145, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-warning .bp3-editable-text-content{ + color:#ffb366; } + .bp3-dark .bp3-editable-text.bp3-intent-warning:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4); + box-shadow:0 0 0 0 rgba(255, 179, 102, 0), 0 0 0 0 rgba(255, 179, 102, 0), inset 0 0 0 1px rgba(255, 179, 102, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-warning.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #ffb366, 0 0 0 3px rgba(255, 179, 102, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-danger .bp3-editable-text-content{ + color:#ff7373; } + .bp3-dark .bp3-editable-text.bp3-intent-danger:hover::before{ + -webkit-box-shadow:0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4); + box-shadow:0 0 0 0 rgba(255, 115, 115, 0), 0 0 0 0 rgba(255, 115, 115, 0), inset 0 0 0 1px rgba(255, 115, 115, 0.4); } + .bp3-dark .bp3-editable-text.bp3-intent-danger.bp3-editable-text-editing::before{ + -webkit-box-shadow:0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #ff7373, 0 0 0 3px rgba(255, 115, 115, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-editable-text-input, +.bp3-editable-text-content{ + color:inherit; + display:inherit; + font:inherit; + letter-spacing:inherit; + max-width:inherit; + min-width:inherit; + position:relative; + resize:none; + text-transform:inherit; + vertical-align:top; } + +.bp3-editable-text-input{ + background:none; + border:none; + -webkit-box-shadow:none; + box-shadow:none; + padding:0; + white-space:pre-wrap; + width:100%; } + .bp3-editable-text-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-editable-text-input:focus{ + outline:none; } + .bp3-editable-text-input::-ms-clear{ + display:none; } + +.bp3-editable-text-content{ + overflow:hidden; + padding-right:2px; + text-overflow:ellipsis; + white-space:pre; } + .bp3-editable-text-editing > .bp3-editable-text-content{ + left:0; + position:absolute; + visibility:hidden; } + .bp3-editable-text-placeholder > .bp3-editable-text-content{ + color:rgba(92, 112, 128, 0.6); } + .bp3-dark .bp3-editable-text-placeholder > .bp3-editable-text-content{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-editable-text.bp3-multiline{ + display:block; } + .bp3-editable-text.bp3-multiline .bp3-editable-text-content{ + overflow:auto; + white-space:pre-wrap; + word-wrap:break-word; } +.bp3-divider{ + border-bottom:1px solid rgba(16, 22, 26, 0.15); + border-right:1px solid rgba(16, 22, 26, 0.15); + margin:5px; } + .bp3-dark .bp3-divider{ + border-color:rgba(16, 22, 26, 0.4); } +.bp3-control-group{ + -webkit-transform:translateZ(0); + transform:translateZ(0); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; } + .bp3-control-group > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-control-group > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-control-group .bp3-button, + .bp3-control-group .bp3-html-select, + .bp3-control-group .bp3-input, + .bp3-control-group .bp3-select{ + position:relative; } + .bp3-control-group .bp3-input{ + border-radius:inherit; + z-index:2; } + .bp3-control-group .bp3-input:focus{ + border-radius:3px; + z-index:14; } + .bp3-control-group .bp3-input[class*="bp3-intent"]{ + z-index:13; } + .bp3-control-group .bp3-input[class*="bp3-intent"]:focus{ + z-index:15; } + .bp3-control-group .bp3-input[readonly], .bp3-control-group .bp3-input:disabled, .bp3-control-group .bp3-input.bp3-disabled{ + z-index:1; } + .bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input{ + z-index:13; } + .bp3-control-group .bp3-input-group[class*="bp3-intent"] .bp3-input:focus{ + z-index:15; } + .bp3-control-group .bp3-button, + .bp3-control-group .bp3-html-select select, + .bp3-control-group .bp3-select select{ + -webkit-transform:translateZ(0); + transform:translateZ(0); + border-radius:inherit; + z-index:4; } + .bp3-control-group .bp3-button:focus, + .bp3-control-group .bp3-html-select select:focus, + .bp3-control-group .bp3-select select:focus{ + z-index:5; } + .bp3-control-group .bp3-button:hover, + .bp3-control-group .bp3-html-select select:hover, + .bp3-control-group .bp3-select select:hover{ + z-index:6; } + .bp3-control-group .bp3-button:active, + .bp3-control-group .bp3-html-select select:active, + .bp3-control-group .bp3-select select:active{ + z-index:7; } + .bp3-control-group .bp3-button[readonly], .bp3-control-group .bp3-button:disabled, .bp3-control-group .bp3-button.bp3-disabled, + .bp3-control-group .bp3-html-select select[readonly], + .bp3-control-group .bp3-html-select select:disabled, + .bp3-control-group .bp3-html-select select.bp3-disabled, + .bp3-control-group .bp3-select select[readonly], + .bp3-control-group .bp3-select select:disabled, + .bp3-control-group .bp3-select select.bp3-disabled{ + z-index:3; } + .bp3-control-group .bp3-button[class*="bp3-intent"], + .bp3-control-group .bp3-html-select select[class*="bp3-intent"], + .bp3-control-group .bp3-select select[class*="bp3-intent"]{ + z-index:9; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:focus, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:focus, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:focus{ + z-index:10; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:hover, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:hover, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:hover{ + z-index:11; } + .bp3-control-group .bp3-button[class*="bp3-intent"]:active, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:active, + .bp3-control-group .bp3-select select[class*="bp3-intent"]:active{ + z-index:12; } + .bp3-control-group .bp3-button[class*="bp3-intent"][readonly], .bp3-control-group .bp3-button[class*="bp3-intent"]:disabled, .bp3-control-group .bp3-button[class*="bp3-intent"].bp3-disabled, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"][readonly], + .bp3-control-group .bp3-html-select select[class*="bp3-intent"]:disabled, + .bp3-control-group .bp3-html-select select[class*="bp3-intent"].bp3-disabled, + .bp3-control-group .bp3-select select[class*="bp3-intent"][readonly], + .bp3-control-group .bp3-select select[class*="bp3-intent"]:disabled, + .bp3-control-group .bp3-select select[class*="bp3-intent"].bp3-disabled{ + z-index:8; } + .bp3-control-group .bp3-input-group > .bp3-icon, + .bp3-control-group .bp3-input-group > .bp3-button, + .bp3-control-group .bp3-input-group > .bp3-input-left-container, + .bp3-control-group .bp3-input-group > .bp3-input-action{ + z-index:16; } + .bp3-control-group .bp3-select::after, + .bp3-control-group .bp3-html-select::after, + .bp3-control-group .bp3-select > .bp3-icon, + .bp3-control-group .bp3-html-select > .bp3-icon{ + z-index:17; } + .bp3-control-group .bp3-select:focus-within{ + z-index:5; } + .bp3-control-group:not(.bp3-vertical) > *:not(.bp3-divider){ + margin-right:-1px; } + .bp3-control-group:not(.bp3-vertical) > .bp3-divider:not(:first-child){ + margin-left:6px; } + .bp3-dark .bp3-control-group:not(.bp3-vertical) > *:not(.bp3-divider){ + margin-right:0; } + .bp3-dark .bp3-control-group:not(.bp3-vertical) > .bp3-button + .bp3-button{ + margin-left:1px; } + .bp3-control-group .bp3-popover-wrapper, + .bp3-control-group .bp3-popover-target{ + border-radius:inherit; } + .bp3-control-group > :first-child{ + border-radius:3px 0 0 3px; } + .bp3-control-group > :last-child{ + border-radius:0 3px 3px 0; + margin-right:0; } + .bp3-control-group > :only-child{ + border-radius:3px; + margin-right:0; } + .bp3-control-group .bp3-input-group .bp3-button{ + border-radius:3px; } + .bp3-control-group .bp3-numeric-input:not(:first-child) .bp3-input-group{ + border-bottom-left-radius:0; + border-top-left-radius:0; } + .bp3-control-group.bp3-fill{ + width:100%; } + .bp3-control-group > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-control-group.bp3-fill > *:not(.bp3-fixed){ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; } + .bp3-control-group.bp3-vertical{ + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; } + .bp3-control-group.bp3-vertical > *{ + margin-top:-1px; } + .bp3-control-group.bp3-vertical > :first-child{ + border-radius:3px 3px 0 0; + margin-top:0; } + .bp3-control-group.bp3-vertical > :last-child{ + border-radius:0 0 3px 3px; } +.bp3-control{ + cursor:pointer; + display:block; + margin-bottom:10px; + position:relative; + text-transform:none; } + .bp3-control input:checked ~ .bp3-control-indicator{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-control:hover input:checked ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-control input:not(:disabled):active:checked ~ .bp3-control-indicator{ + background:#0e5a8a; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control input:disabled:checked ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-control input:checked ~ .bp3-control-indicator{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control:hover input:checked ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control input:not(:disabled):active:checked ~ .bp3-control-indicator{ + background-color:#0e5a8a; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control input:disabled:checked ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-control:not(.bp3-align-right){ + padding-left:26px; } + .bp3-control:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-26px; } + .bp3-control.bp3-align-right{ + padding-right:26px; } + .bp3-control.bp3-align-right .bp3-control-indicator{ + margin-right:-26px; } + .bp3-control.bp3-disabled{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-control.bp3-inline{ + display:inline-block; + margin-right:20px; } + .bp3-control input{ + left:0; + opacity:0; + position:absolute; + top:0; + z-index:-1; } + .bp3-control .bp3-control-indicator{ + background-clip:padding-box; + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + border:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + cursor:pointer; + display:inline-block; + font-size:16px; + height:1em; + margin-right:10px; + margin-top:-3px; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + vertical-align:middle; + width:1em; } + .bp3-control .bp3-control-indicator::before{ + content:""; + display:block; + height:1em; + width:1em; } + .bp3-control:hover .bp3-control-indicator{ + background-color:#ebf1f5; } + .bp3-control input:not(:disabled):active ~ .bp3-control-indicator{ + background:#d8e1e8; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control input:disabled ~ .bp3-control-indicator{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + cursor:not-allowed; } + .bp3-control input:focus ~ .bp3-control-indicator{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:2px; + -moz-outline-radius:6px; } + .bp3-control.bp3-align-right .bp3-control-indicator{ + float:right; + margin-left:10px; + margin-top:1px; } + .bp3-control.bp3-large{ + font-size:16px; } + .bp3-control.bp3-large:not(.bp3-align-right){ + padding-left:30px; } + .bp3-control.bp3-large:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-30px; } + .bp3-control.bp3-large.bp3-align-right{ + padding-right:30px; } + .bp3-control.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-right:-30px; } + .bp3-control.bp3-large .bp3-control-indicator{ + font-size:20px; } + .bp3-control.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-top:0; } + .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator{ + background-color:#137cbd; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.1)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.1), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + color:#ffffff; } + .bp3-control.bp3-checkbox:hover input:indeterminate ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 -1px 0 rgba(16, 22, 26, 0.2); } + .bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate ~ .bp3-control-indicator{ + background:#0e5a8a; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-checkbox:hover input:indeterminate ~ .bp3-control-indicator{ + background-color:#106ba3; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-checkbox input:not(:disabled):active:indeterminate ~ .bp3-control-indicator{ + background-color:#0e5a8a; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-control.bp3-checkbox .bp3-control-indicator{ + border-radius:3px; } + .bp3-control.bp3-checkbox input:checked ~ .bp3-control-indicator::before{ + background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M12 5c-.28 0-.53.11-.71.29L7 9.59l-2.29-2.3a1.003 1.003 0 00-1.42 1.42l3 3c.18.18.43.29.71.29s.53-.11.71-.29l5-5A1.003 1.003 0 0012 5z' fill='white'/%3e%3c/svg%3e"); } + .bp3-control.bp3-checkbox input:indeterminate ~ .bp3-control-indicator::before{ + background-image:url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill-rule='evenodd' clip-rule='evenodd' d='M11 7H5c-.55 0-1 .45-1 1s.45 1 1 1h6c.55 0 1-.45 1-1s-.45-1-1-1z' fill='white'/%3e%3c/svg%3e"); } + .bp3-control.bp3-radio .bp3-control-indicator{ + border-radius:50%; } + .bp3-control.bp3-radio input:checked ~ .bp3-control-indicator::before{ + background-image:radial-gradient(#ffffff, #ffffff 28%, transparent 32%); } + .bp3-control.bp3-radio input:checked:disabled ~ .bp3-control-indicator::before{ + opacity:0.5; } + .bp3-control.bp3-radio input:focus ~ .bp3-control-indicator{ + -moz-outline-radius:16px; } + .bp3-control.bp3-switch input ~ .bp3-control-indicator{ + background:rgba(167, 182, 194, 0.5); } + .bp3-control.bp3-switch:hover input ~ .bp3-control-indicator{ + background:rgba(115, 134, 148, 0.5); } + .bp3-control.bp3-switch input:not(:disabled):active ~ .bp3-control-indicator{ + background:rgba(92, 112, 128, 0.5); } + .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator{ + background:rgba(206, 217, 224, 0.5); } + .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator::before{ + background:rgba(255, 255, 255, 0.8); } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator{ + background:#137cbd; } + .bp3-control.bp3-switch:hover input:checked ~ .bp3-control-indicator{ + background:#106ba3; } + .bp3-control.bp3-switch input:checked:not(:disabled):active ~ .bp3-control-indicator{ + background:#0e5a8a; } + .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator{ + background:rgba(19, 124, 189, 0.5); } + .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator::before{ + background:rgba(255, 255, 255, 0.8); } + .bp3-control.bp3-switch:not(.bp3-align-right){ + padding-left:38px; } + .bp3-control.bp3-switch:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-38px; } + .bp3-control.bp3-switch.bp3-align-right{ + padding-right:38px; } + .bp3-control.bp3-switch.bp3-align-right .bp3-control-indicator{ + margin-right:-38px; } + .bp3-control.bp3-switch .bp3-control-indicator{ + border:none; + border-radius:1.75em; + -webkit-box-shadow:none !important; + box-shadow:none !important; + min-width:1.75em; + -webkit-transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:background-color 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:auto; } + .bp3-control.bp3-switch .bp3-control-indicator::before{ + background:#ffffff; + border-radius:50%; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + height:calc(1em - 4px); + left:0; + margin:2px; + position:absolute; + -webkit-transition:left 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:left 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:calc(1em - 4px); } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator::before{ + left:calc(100% - 1em); } + .bp3-control.bp3-switch.bp3-large:not(.bp3-align-right){ + padding-left:45px; } + .bp3-control.bp3-switch.bp3-large:not(.bp3-align-right) .bp3-control-indicator{ + margin-left:-45px; } + .bp3-control.bp3-switch.bp3-large.bp3-align-right{ + padding-right:45px; } + .bp3-control.bp3-switch.bp3-large.bp3-align-right .bp3-control-indicator{ + margin-right:-45px; } + .bp3-dark .bp3-control.bp3-switch input ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.5); } + .bp3-dark .bp3-control.bp3-switch:hover input ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.7); } + .bp3-dark .bp3-control.bp3-switch input:not(:disabled):active ~ .bp3-control-indicator{ + background:rgba(16, 22, 26, 0.9); } + .bp3-dark .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator{ + background:rgba(57, 75, 89, 0.5); } + .bp3-dark .bp3-control.bp3-switch input:disabled ~ .bp3-control-indicator::before{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator{ + background:#137cbd; } + .bp3-dark .bp3-control.bp3-switch:hover input:checked ~ .bp3-control-indicator{ + background:#106ba3; } + .bp3-dark .bp3-control.bp3-switch input:checked:not(:disabled):active ~ .bp3-control-indicator{ + background:#0e5a8a; } + .bp3-dark .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator{ + background:rgba(14, 90, 138, 0.5); } + .bp3-dark .bp3-control.bp3-switch input:checked:disabled ~ .bp3-control-indicator::before{ + background:rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch .bp3-control-indicator::before{ + background:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator::before{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-control.bp3-switch .bp3-switch-inner-text{ + font-size:0.7em; + text-align:center; } + .bp3-control.bp3-switch .bp3-control-indicator-child:first-child{ + line-height:0; + margin-left:0.5em; + margin-right:1.2em; + visibility:hidden; } + .bp3-control.bp3-switch .bp3-control-indicator-child:last-child{ + line-height:1em; + margin-left:1.2em; + margin-right:0.5em; + visibility:visible; } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator .bp3-control-indicator-child:first-child{ + line-height:1em; + visibility:visible; } + .bp3-control.bp3-switch input:checked ~ .bp3-control-indicator .bp3-control-indicator-child:last-child{ + line-height:0; + visibility:hidden; } + .bp3-dark .bp3-control{ + color:#f5f8fa; } + .bp3-dark .bp3-control.bp3-disabled{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-control .bp3-control-indicator{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-control:hover .bp3-control-indicator{ + background-color:#30404d; } + .bp3-dark .bp3-control input:not(:disabled):active ~ .bp3-control-indicator{ + background:#202b33; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-control input:disabled ~ .bp3-control-indicator{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + cursor:not-allowed; } + .bp3-dark .bp3-control.bp3-checkbox input:disabled:checked ~ .bp3-control-indicator, .bp3-dark .bp3-control.bp3-checkbox input:disabled:indeterminate ~ .bp3-control-indicator{ + color:rgba(167, 182, 194, 0.6); } +.bp3-file-input{ + cursor:pointer; + display:inline-block; + height:30px; + position:relative; } + .bp3-file-input input{ + margin:0; + min-width:200px; + opacity:0; } + .bp3-file-input input:disabled + .bp3-file-upload-input, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-file-input input:disabled + .bp3-file-upload-input::after, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active, .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active:hover, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active, + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input::after, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-input input:disabled + .bp3-file-upload-input::after.bp3-active, .bp3-dark + .bp3-file-input input.bp3-disabled + .bp3-file-upload-input::after.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input{ + color:#182026; } + .bp3-dark .bp3-file-input.bp3-file-input-has-selection .bp3-file-upload-input{ + color:#f5f8fa; } + .bp3-file-input.bp3-fill{ + width:100%; } + .bp3-file-input.bp3-large, + .bp3-large .bp3-file-input{ + height:40px; } + .bp3-file-input .bp3-file-upload-input-custom-text::after{ + content:attr(bp3-button-text); } + +.bp3-file-upload-input{ + -webkit-appearance:none; + -moz-appearance:none; + appearance:none; + background:#ffffff; + border:none; + border-radius:3px; + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + color:#182026; + font-size:14px; + font-weight:400; + height:30px; + line-height:30px; + outline:none; + padding:0 10px; + -webkit-transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + vertical-align:middle; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + color:rgba(92, 112, 128, 0.6); + left:0; + padding-right:80px; + position:absolute; + right:0; + top:0; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-file-upload-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-file-upload-input:focus, .bp3-file-upload-input.bp3-active{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-file-upload-input[type="search"], .bp3-file-upload-input.bp3-round{ + border-radius:30px; + -webkit-box-sizing:border-box; + box-sizing:border-box; + padding-left:10px; } + .bp3-file-upload-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-file-upload-input:disabled, .bp3-file-upload-input.bp3-disabled{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-file-upload-input::after{ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + min-height:24px; + min-width:24px; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + border-radius:3px; + content:"Browse"; + line-height:24px; + margin:3px; + position:absolute; + right:0; + text-align:center; + top:0; + width:70px; } + .bp3-file-upload-input::after:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-file-upload-input::after:active, .bp3-file-upload-input::after.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-file-upload-input::after:disabled, .bp3-file-upload-input::after.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-file-upload-input::after:disabled.bp3-active, .bp3-file-upload-input::after:disabled.bp3-active:hover, .bp3-file-upload-input::after.bp3-disabled.bp3-active, .bp3-file-upload-input::after.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-file-upload-input:hover::after{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-file-upload-input:active::after{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-large .bp3-file-upload-input{ + font-size:16px; + height:40px; + line-height:40px; + padding-right:95px; } + .bp3-large .bp3-file-upload-input[type="search"], .bp3-large .bp3-file-upload-input.bp3-round{ + padding:0 15px; } + .bp3-large .bp3-file-upload-input::after{ + min-height:30px; + min-width:30px; + line-height:30px; + margin:5px; + width:85px; } + .bp3-dark .bp3-file-upload-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input:disabled, .bp3-dark .bp3-file-upload-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::after{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-file-upload-input::after:hover, .bp3-dark .bp3-file-upload-input::after:active, .bp3-dark .bp3-file-upload-input::after.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-file-upload-input::after:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input::after:active, .bp3-dark .bp3-file-upload-input::after.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-file-upload-input::after:disabled, .bp3-dark .bp3-file-upload-input::after.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-file-upload-input::after:disabled.bp3-active, .bp3-dark .bp3-file-upload-input::after.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-file-upload-input::after .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-file-upload-input:hover::after{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-file-upload-input:active::after{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } +.bp3-file-upload-input::after{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } +.bp3-form-group{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin:0 0 15px; } + .bp3-form-group label.bp3-label{ + margin-bottom:5px; } + .bp3-form-group .bp3-control{ + margin-top:7px; } + .bp3-form-group .bp3-form-helper-text{ + color:#5c7080; + font-size:12px; + margin-top:5px; } + .bp3-form-group.bp3-intent-primary .bp3-form-helper-text{ + color:#106ba3; } + .bp3-form-group.bp3-intent-success .bp3-form-helper-text{ + color:#0d8050; } + .bp3-form-group.bp3-intent-warning .bp3-form-helper-text{ + color:#bf7326; } + .bp3-form-group.bp3-intent-danger .bp3-form-helper-text{ + color:#c23030; } + .bp3-form-group.bp3-inline{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; } + .bp3-form-group.bp3-inline.bp3-large label.bp3-label{ + line-height:40px; + margin:0 10px 0 0; } + .bp3-form-group.bp3-inline label.bp3-label{ + line-height:30px; + margin:0 10px 0 0; } + .bp3-form-group.bp3-disabled .bp3-label, + .bp3-form-group.bp3-disabled .bp3-text-muted, + .bp3-form-group.bp3-disabled .bp3-form-helper-text{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-dark .bp3-form-group.bp3-intent-primary .bp3-form-helper-text{ + color:#48aff0; } + .bp3-dark .bp3-form-group.bp3-intent-success .bp3-form-helper-text{ + color:#3dcc91; } + .bp3-dark .bp3-form-group.bp3-intent-warning .bp3-form-helper-text{ + color:#ffb366; } + .bp3-dark .bp3-form-group.bp3-intent-danger .bp3-form-helper-text{ + color:#ff7373; } + .bp3-dark .bp3-form-group .bp3-form-helper-text{ + color:#a7b6c2; } + .bp3-dark .bp3-form-group.bp3-disabled .bp3-label, + .bp3-dark .bp3-form-group.bp3-disabled .bp3-text-muted, + .bp3-dark .bp3-form-group.bp3-disabled .bp3-form-helper-text{ + color:rgba(167, 182, 194, 0.6) !important; } +.bp3-input-group{ + display:block; + position:relative; } + .bp3-input-group .bp3-input{ + position:relative; + width:100%; } + .bp3-input-group .bp3-input:not(:first-child){ + padding-left:30px; } + .bp3-input-group .bp3-input:not(:last-child){ + padding-right:30px; } + .bp3-input-group .bp3-input-action, + .bp3-input-group > .bp3-input-left-container, + .bp3-input-group > .bp3-button, + .bp3-input-group > .bp3-icon{ + position:absolute; + top:0; } + .bp3-input-group .bp3-input-action:first-child, + .bp3-input-group > .bp3-input-left-container:first-child, + .bp3-input-group > .bp3-button:first-child, + .bp3-input-group > .bp3-icon:first-child{ + left:0; } + .bp3-input-group .bp3-input-action:last-child, + .bp3-input-group > .bp3-input-left-container:last-child, + .bp3-input-group > .bp3-button:last-child, + .bp3-input-group > .bp3-icon:last-child{ + right:0; } + .bp3-input-group .bp3-button{ + min-height:24px; + min-width:24px; + margin:3px; + padding:0 7px; } + .bp3-input-group .bp3-button:empty{ + padding:0; } + .bp3-input-group > .bp3-input-left-container, + .bp3-input-group > .bp3-icon{ + z-index:1; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon, + .bp3-input-group > .bp3-icon{ + color:#5c7080; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon:empty, + .bp3-input-group > .bp3-icon:empty{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; } + .bp3-input-group > .bp3-input-left-container > .bp3-icon, + .bp3-input-group > .bp3-icon, + .bp3-input-group .bp3-input-action > .bp3-spinner{ + margin:7px; } + .bp3-input-group .bp3-tag{ + margin:5px; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus), + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus){ + color:#5c7080; } + .bp3-dark .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus), .bp3-dark + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus){ + color:#a7b6c2; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-standard, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:not(:hover):not(:focus) .bp3-icon-large{ + color:#5c7080; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon-standard, .bp3-input-group .bp3-input:not(:focus) + .bp3-button.bp3-minimal:disabled .bp3-icon-large, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-standard, + .bp3-input-group .bp3-input:not(:focus) + .bp3-input-action .bp3-button.bp3-minimal:disabled .bp3-icon-large{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-input-group.bp3-disabled{ + cursor:not-allowed; } + .bp3-input-group.bp3-disabled .bp3-icon{ + color:rgba(92, 112, 128, 0.6); } + .bp3-input-group.bp3-large .bp3-button{ + min-height:30px; + min-width:30px; + margin:5px; } + .bp3-input-group.bp3-large > .bp3-input-left-container > .bp3-icon, + .bp3-input-group.bp3-large > .bp3-icon, + .bp3-input-group.bp3-large .bp3-input-action > .bp3-spinner{ + margin:12px; } + .bp3-input-group.bp3-large .bp3-input{ + font-size:16px; + height:40px; + line-height:40px; } + .bp3-input-group.bp3-large .bp3-input[type="search"], .bp3-input-group.bp3-large .bp3-input.bp3-round{ + padding:0 15px; } + .bp3-input-group.bp3-large .bp3-input:not(:first-child){ + padding-left:40px; } + .bp3-input-group.bp3-large .bp3-input:not(:last-child){ + padding-right:40px; } + .bp3-input-group.bp3-small .bp3-button{ + min-height:20px; + min-width:20px; + margin:2px; } + .bp3-input-group.bp3-small .bp3-tag{ + min-height:20px; + min-width:20px; + margin:2px; } + .bp3-input-group.bp3-small > .bp3-input-left-container > .bp3-icon, + .bp3-input-group.bp3-small > .bp3-icon, + .bp3-input-group.bp3-small .bp3-input-action > .bp3-spinner{ + margin:4px; } + .bp3-input-group.bp3-small .bp3-input{ + font-size:12px; + height:24px; + line-height:24px; + padding-left:8px; + padding-right:8px; } + .bp3-input-group.bp3-small .bp3-input[type="search"], .bp3-input-group.bp3-small .bp3-input.bp3-round{ + padding:0 12px; } + .bp3-input-group.bp3-small .bp3-input:not(:first-child){ + padding-left:24px; } + .bp3-input-group.bp3-small .bp3-input:not(:last-child){ + padding-right:24px; } + .bp3-input-group.bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + width:100%; } + .bp3-input-group.bp3-round .bp3-button, + .bp3-input-group.bp3-round .bp3-input, + .bp3-input-group.bp3-round .bp3-tag{ + border-radius:30px; } + .bp3-dark .bp3-input-group .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-input-group.bp3-disabled .bp3-icon{ + color:rgba(167, 182, 194, 0.6); } + .bp3-input-group.bp3-intent-primary .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-primary .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-primary .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-input-group.bp3-intent-primary .bp3-input:disabled, .bp3-input-group.bp3-intent-primary .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-primary > .bp3-icon{ + color:#106ba3; } + .bp3-dark .bp3-input-group.bp3-intent-primary > .bp3-icon{ + color:#48aff0; } + .bp3-input-group.bp3-intent-success .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-success .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-success .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-input-group.bp3-intent-success .bp3-input:disabled, .bp3-input-group.bp3-intent-success .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-success > .bp3-icon{ + color:#0d8050; } + .bp3-dark .bp3-input-group.bp3-intent-success > .bp3-icon{ + color:#3dcc91; } + .bp3-input-group.bp3-intent-warning .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-warning .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-warning .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-input-group.bp3-intent-warning .bp3-input:disabled, .bp3-input-group.bp3-intent-warning .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-warning > .bp3-icon{ + color:#bf7326; } + .bp3-dark .bp3-input-group.bp3-intent-warning > .bp3-icon{ + color:#ffb366; } + .bp3-input-group.bp3-intent-danger .bp3-input{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-danger .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input-group.bp3-intent-danger .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-input-group.bp3-intent-danger .bp3-input:disabled, .bp3-input-group.bp3-intent-danger .bp3-input.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input-group.bp3-intent-danger > .bp3-icon{ + color:#c23030; } + .bp3-dark .bp3-input-group.bp3-intent-danger > .bp3-icon{ + color:#ff7373; } +.bp3-input{ + -webkit-appearance:none; + -moz-appearance:none; + appearance:none; + background:#ffffff; + border:none; + border-radius:3px; + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + color:#182026; + font-size:14px; + font-weight:400; + height:30px; + line-height:30px; + outline:none; + padding:0 10px; + -webkit-transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-box-shadow 100ms cubic-bezier(0.4, 1, 0.75, 0.9); + vertical-align:middle; } + .bp3-input::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input:focus, .bp3-input.bp3-active{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input[type="search"], .bp3-input.bp3-round{ + border-radius:30px; + -webkit-box-sizing:border-box; + box-sizing:border-box; + padding-left:10px; } + .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.15); } + .bp3-input:disabled, .bp3-input.bp3-disabled{ + background:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + resize:none; } + .bp3-input.bp3-large{ + font-size:16px; + height:40px; + line-height:40px; } + .bp3-input.bp3-large[type="search"], .bp3-input.bp3-large.bp3-round{ + padding:0 15px; } + .bp3-input.bp3-small{ + font-size:12px; + height:24px; + line-height:24px; + padding-left:8px; + padding-right:8px; } + .bp3-input.bp3-small[type="search"], .bp3-input.bp3-small.bp3-round{ + padding:0 12px; } + .bp3-input.bp3-fill{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + width:100%; } + .bp3-dark .bp3-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input:disabled, .bp3-dark .bp3-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-input.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-primary:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-primary[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-input.bp3-intent-primary:disabled, .bp3-input.bp3-intent-primary.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px #137cbd, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-primary:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-primary[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #137cbd; + box-shadow:inset 0 0 0 1px #137cbd; } + .bp3-dark .bp3-input.bp3-intent-primary:disabled, .bp3-dark .bp3-input.bp3-intent-primary.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-success{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-success:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-success[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-input.bp3-intent-success:disabled, .bp3-input.bp3-intent-success.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-success{ + -webkit-box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), 0 0 0 0 rgba(15, 153, 96, 0), inset 0 0 0 1px #0f9960, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-success:focus{ + -webkit-box-shadow:0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #0f9960, 0 0 0 1px #0f9960, 0 0 0 3px rgba(15, 153, 96, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-success[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #0f9960; + box-shadow:inset 0 0 0 1px #0f9960; } + .bp3-dark .bp3-input.bp3-intent-success:disabled, .bp3-dark .bp3-input.bp3-intent-success.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-warning:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-warning[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-input.bp3-intent-warning:disabled, .bp3-input.bp3-intent-warning.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), 0 0 0 0 rgba(217, 130, 43, 0), inset 0 0 0 1px #d9822b, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-warning:focus{ + -webkit-box-shadow:0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #d9822b, 0 0 0 1px #d9822b, 0 0 0 3px rgba(217, 130, 43, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-warning[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #d9822b; + box-shadow:inset 0 0 0 1px #d9822b; } + .bp3-dark .bp3-input.bp3-intent-warning:disabled, .bp3-dark .bp3-input.bp3-intent-warning.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.15), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-danger:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-input.bp3-intent-danger[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-input.bp3-intent-danger:disabled, .bp3-input.bp3-intent-danger.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-input.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), 0 0 0 0 rgba(219, 55, 55, 0), inset 0 0 0 1px #db3737, inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-danger:focus{ + -webkit-box-shadow:0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #db3737, 0 0 0 1px #db3737, 0 0 0 3px rgba(219, 55, 55, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-input.bp3-intent-danger[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px #db3737; + box-shadow:inset 0 0 0 1px #db3737; } + .bp3-dark .bp3-input.bp3-intent-danger:disabled, .bp3-dark .bp3-input.bp3-intent-danger.bp3-disabled{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-input::-ms-clear{ + display:none; } +textarea.bp3-input{ + max-width:100%; + padding:10px; } + textarea.bp3-input, textarea.bp3-input.bp3-large, textarea.bp3-input.bp3-small{ + height:auto; + line-height:inherit; } + textarea.bp3-input.bp3-small{ + padding:8px; } + .bp3-dark textarea.bp3-input{ + background:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), 0 0 0 0 rgba(19, 124, 189, 0), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark textarea.bp3-input::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark textarea.bp3-input:focus{ + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark textarea.bp3-input[readonly]{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark textarea.bp3-input:disabled, .bp3-dark textarea.bp3-input.bp3-disabled{ + background:rgba(57, 75, 89, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } +label.bp3-label{ + display:block; + margin-bottom:15px; + margin-top:0; } + label.bp3-label .bp3-html-select, + label.bp3-label .bp3-input, + label.bp3-label .bp3-select, + label.bp3-label .bp3-slider, + label.bp3-label .bp3-popover-wrapper{ + display:block; + margin-top:5px; + text-transform:none; } + label.bp3-label .bp3-button-group{ + margin-top:5px; } + label.bp3-label .bp3-select select, + label.bp3-label .bp3-html-select select{ + font-weight:400; + vertical-align:top; + width:100%; } + label.bp3-label.bp3-disabled, + label.bp3-label.bp3-disabled .bp3-text-muted{ + color:rgba(92, 112, 128, 0.6); } + label.bp3-label.bp3-inline{ + line-height:30px; } + label.bp3-label.bp3-inline .bp3-html-select, + label.bp3-label.bp3-inline .bp3-input, + label.bp3-label.bp3-inline .bp3-input-group, + label.bp3-label.bp3-inline .bp3-select, + label.bp3-label.bp3-inline .bp3-popover-wrapper{ + display:inline-block; + margin:0 0 0 5px; + vertical-align:top; } + label.bp3-label.bp3-inline .bp3-button-group{ + margin:0 0 0 5px; } + label.bp3-label.bp3-inline .bp3-input-group .bp3-input{ + margin-left:0; } + label.bp3-label.bp3-inline.bp3-large{ + line-height:40px; } + label.bp3-label:not(.bp3-inline) .bp3-popover-target{ + display:block; } + .bp3-dark label.bp3-label{ + color:#f5f8fa; } + .bp3-dark label.bp3-label.bp3-disabled, + .bp3-dark label.bp3-label.bp3-disabled .bp3-text-muted{ + color:rgba(167, 182, 194, 0.6); } +.bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button{ + -webkit-box-flex:1; + -ms-flex:1 1 14px; + flex:1 1 14px; + min-height:0; + padding:0; + width:30px; } + .bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button:first-child{ + border-radius:0 3px 0 0; } + .bp3-numeric-input .bp3-button-group.bp3-vertical > .bp3-button:last-child{ + border-radius:0 0 3px 0; } + +.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child > .bp3-button:first-child{ + border-radius:3px 0 0 0; } + +.bp3-numeric-input .bp3-button-group.bp3-vertical:first-child > .bp3-button:last-child{ + border-radius:0 0 0 3px; } + +.bp3-numeric-input.bp3-large .bp3-button-group.bp3-vertical > .bp3-button{ + width:40px; } + +form{ + display:block; } +.bp3-html-select select, +.bp3-select select{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + border:none; + border-radius:3px; + cursor:pointer; + font-size:14px; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + padding:5px 10px; + text-align:left; + vertical-align:middle; + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + -moz-appearance:none; + -webkit-appearance:none; + border-radius:3px; + height:30px; + padding:0 25px 0 10px; + width:100%; } + .bp3-html-select select > *, .bp3-select select > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-html-select select > .bp3-fill, .bp3-select select > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-html-select select::before, + .bp3-select select::before, .bp3-html-select select > *, .bp3-select select > *{ + margin-right:7px; } + .bp3-html-select select:empty::before, + .bp3-select select:empty::before, + .bp3-html-select select > :last-child, + .bp3-select select > :last-child{ + margin-right:0; } + .bp3-html-select select:hover, + .bp3-select select:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-html-select select:active, + .bp3-select select:active, .bp3-html-select select.bp3-active, + .bp3-select select.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-html-select select:disabled, + .bp3-select select:disabled, .bp3-html-select select.bp3-disabled, + .bp3-select select.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-html-select select:disabled.bp3-active, + .bp3-select select:disabled.bp3-active, .bp3-html-select select:disabled.bp3-active:hover, + .bp3-select select:disabled.bp3-active:hover, .bp3-html-select select.bp3-disabled.bp3-active, + .bp3-select select.bp3-disabled.bp3-active, .bp3-html-select select.bp3-disabled.bp3-active:hover, + .bp3-select select.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + +.bp3-html-select.bp3-minimal select, +.bp3-select.bp3-minimal select{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-html-select.bp3-minimal select:hover, + .bp3-select.bp3-minimal select:hover{ + background:rgba(167, 182, 194, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; + text-decoration:none; } + .bp3-html-select.bp3-minimal select:active, + .bp3-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal select.bp3-active, + .bp3-select.bp3-minimal select.bp3-active{ + background:rgba(115, 134, 148, 0.3); + -webkit-box-shadow:none; + box-shadow:none; + color:#182026; } + .bp3-html-select.bp3-minimal select:disabled, + .bp3-select.bp3-minimal select:disabled, .bp3-html-select.bp3-minimal select:disabled:hover, + .bp3-select.bp3-minimal select:disabled:hover, .bp3-html-select.bp3-minimal select.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-disabled, .bp3-html-select.bp3-minimal select.bp3-disabled:hover, + .bp3-select.bp3-minimal select.bp3-disabled:hover{ + background:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-html-select.bp3-minimal select:disabled.bp3-active, + .bp3-select.bp3-minimal select:disabled.bp3-active, .bp3-html-select.bp3-minimal select:disabled:hover.bp3-active, + .bp3-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active, + .bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active{ + background:rgba(115, 134, 148, 0.3); } + .bp3-dark .bp3-html-select.bp3-minimal select, .bp3-html-select.bp3-minimal .bp3-dark select, + .bp3-dark .bp3-select.bp3-minimal select, .bp3-select.bp3-minimal .bp3-dark select{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:inherit; } + .bp3-dark .bp3-html-select.bp3-minimal select:hover, .bp3-html-select.bp3-minimal .bp3-dark select:hover, + .bp3-dark .bp3-select.bp3-minimal select:hover, .bp3-select.bp3-minimal .bp3-dark select:hover, .bp3-dark .bp3-html-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal .bp3-dark select:active, + .bp3-dark .bp3-select.bp3-minimal select:active, .bp3-select.bp3-minimal .bp3-dark select:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-html-select.bp3-minimal select:hover, .bp3-html-select.bp3-minimal .bp3-dark select:hover, + .bp3-dark .bp3-select.bp3-minimal select:hover, .bp3-select.bp3-minimal .bp3-dark select:hover{ + background:rgba(138, 155, 168, 0.15); } + .bp3-dark .bp3-html-select.bp3-minimal select:active, .bp3-html-select.bp3-minimal .bp3-dark select:active, + .bp3-dark .bp3-select.bp3-minimal select:active, .bp3-select.bp3-minimal .bp3-dark select:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-active{ + background:rgba(138, 155, 168, 0.3); + color:#f5f8fa; } + .bp3-dark .bp3-html-select.bp3-minimal select:disabled, .bp3-html-select.bp3-minimal .bp3-dark select:disabled, + .bp3-dark .bp3-select.bp3-minimal select:disabled, .bp3-select.bp3-minimal .bp3-dark select:disabled, .bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover, .bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover, + .bp3-dark .bp3-select.bp3-minimal select:disabled:hover, .bp3-select.bp3-minimal .bp3-dark select:disabled:hover, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover{ + background:none; + color:rgba(167, 182, 194, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-html-select.bp3-minimal select:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select:disabled:hover.bp3-active, .bp3-select.bp3-minimal .bp3-dark select:disabled:hover.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-disabled:hover.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-disabled:hover.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-disabled:hover.bp3-active{ + background:rgba(138, 155, 168, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary, + .bp3-select.bp3-minimal select.bp3-intent-primary{ + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, + .bp3-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, + .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, + .bp3-select.bp3-minimal select.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, + .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#106ba3; } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled, + .bp3-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(16, 107, 163, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-primary .bp3-button-spinner .bp3-spinner-head{ + stroke:#106ba3; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:hover{ + background:rgba(19, 124, 189, 0.2); + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-active{ + background:rgba(19, 124, 189, 0.3); + color:#48aff0; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled{ + background:none; + color:rgba(72, 175, 240, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-primary.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-primary.bp3-disabled.bp3-active{ + background:rgba(19, 124, 189, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-success, + .bp3-select.bp3-minimal select.bp3-intent-success{ + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, + .bp3-select.bp3-minimal select.bp3-intent-success:hover, .bp3-html-select.bp3-minimal select.bp3-intent-success:active, + .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, + .bp3-select.bp3-minimal select.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:active, + .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#0d8050; } + .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled, + .bp3-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(13, 128, 80, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-success .bp3-button-spinner .bp3-spinner-head{ + stroke:#0d8050; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:hover{ + background:rgba(15, 153, 96, 0.2); + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-active{ + background:rgba(15, 153, 96, 0.3); + color:#3dcc91; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled{ + background:none; + color:rgba(61, 204, 145, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-success.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-success.bp3-disabled.bp3-active{ + background:rgba(15, 153, 96, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning, + .bp3-select.bp3-minimal select.bp3-intent-warning{ + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, + .bp3-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, + .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, + .bp3-select.bp3-minimal select.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, + .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#bf7326; } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled, + .bp3-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(191, 115, 38, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-warning .bp3-button-spinner .bp3-spinner-head{ + stroke:#bf7326; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:hover{ + background:rgba(217, 130, 43, 0.2); + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-active{ + background:rgba(217, 130, 43, 0.3); + color:#ffb366; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled{ + background:none; + color:rgba(255, 179, 102, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-warning.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-warning.bp3-disabled.bp3-active{ + background:rgba(217, 130, 43, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger, + .bp3-select.bp3-minimal select.bp3-intent-danger{ + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, + .bp3-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, + .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active{ + background:none; + -webkit-box-shadow:none; + box-shadow:none; + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, + .bp3-select.bp3-minimal select.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, + .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#c23030; } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled, + .bp3-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(194, 48, 48, 0.5); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, + .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + .bp3-html-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head, .bp3-select.bp3-minimal select.bp3-intent-danger .bp3-button-spinner .bp3-spinner-head{ + stroke:#c23030; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:hover, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:hover{ + background:rgba(219, 55, 55, 0.2); + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-active{ + background:rgba(219, 55, 55, 0.3); + color:#ff7373; } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled{ + background:none; + color:rgba(255, 115, 115, 0.5); } + .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger:disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger:disabled.bp3-active, .bp3-dark .bp3-html-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, .bp3-html-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active, + .bp3-dark .bp3-select.bp3-minimal select.bp3-intent-danger.bp3-disabled.bp3-active, .bp3-select.bp3-minimal .bp3-dark select.bp3-intent-danger.bp3-disabled.bp3-active{ + background:rgba(219, 55, 55, 0.3); } + +.bp3-html-select.bp3-large select, +.bp3-select.bp3-large select{ + font-size:16px; + height:40px; + padding-right:35px; } + +.bp3-dark .bp3-html-select select, .bp3-dark .bp3-select select{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-html-select select:hover, .bp3-dark .bp3-select select:hover, .bp3-dark .bp3-html-select select:active, .bp3-dark .bp3-select select:active, .bp3-dark .bp3-html-select select.bp3-active, .bp3-dark .bp3-select select.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-html-select select:hover, .bp3-dark .bp3-select select:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-html-select select:active, .bp3-dark .bp3-select select:active, .bp3-dark .bp3-html-select select.bp3-active, .bp3-dark .bp3-select select.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-html-select select:disabled, .bp3-dark .bp3-select select:disabled, .bp3-dark .bp3-html-select select.bp3-disabled, .bp3-dark .bp3-select select.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-html-select select:disabled.bp3-active, .bp3-dark .bp3-select select:disabled.bp3-active, .bp3-dark .bp3-html-select select.bp3-disabled.bp3-active, .bp3-dark .bp3-select select.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-html-select select .bp3-button-spinner .bp3-spinner-head, .bp3-dark .bp3-select select .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + +.bp3-html-select select:disabled, +.bp3-select select:disabled{ + background-color:rgba(206, 217, 224, 0.5); + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-html-select .bp3-icon, +.bp3-select .bp3-icon, .bp3-select::after{ + color:#5c7080; + pointer-events:none; + position:absolute; + right:7px; + top:7px; } + .bp3-html-select .bp3-disabled.bp3-icon, + .bp3-select .bp3-disabled.bp3-icon, .bp3-disabled.bp3-select::after{ + color:rgba(92, 112, 128, 0.6); } +.bp3-html-select, +.bp3-select{ + display:inline-block; + letter-spacing:normal; + position:relative; + vertical-align:middle; } + .bp3-html-select select::-ms-expand, + .bp3-select select::-ms-expand{ + display:none; } + .bp3-html-select .bp3-icon, + .bp3-select .bp3-icon{ + color:#5c7080; } + .bp3-html-select .bp3-icon:hover, + .bp3-select .bp3-icon:hover{ + color:#182026; } + .bp3-dark .bp3-html-select .bp3-icon, .bp3-dark + .bp3-select .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-html-select .bp3-icon:hover, .bp3-dark + .bp3-select .bp3-icon:hover{ + color:#f5f8fa; } + .bp3-html-select.bp3-large::after, + .bp3-html-select.bp3-large .bp3-icon, + .bp3-select.bp3-large::after, + .bp3-select.bp3-large .bp3-icon{ + right:12px; + top:12px; } + .bp3-html-select.bp3-fill, + .bp3-html-select.bp3-fill select, + .bp3-select.bp3-fill, + .bp3-select.bp3-fill select{ + width:100%; } + .bp3-dark .bp3-html-select option, .bp3-dark + .bp3-select option{ + background-color:#30404d; + color:#f5f8fa; } + .bp3-dark .bp3-html-select option:disabled, .bp3-dark + .bp3-select option:disabled{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-html-select::after, .bp3-dark + .bp3-select::after{ + color:#a7b6c2; } + +.bp3-select::after{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + content:""; } +.bp3-running-text table, table.bp3-html-table{ + border-spacing:0; + font-size:14px; } + .bp3-running-text table th, table.bp3-html-table th, + .bp3-running-text table td, + table.bp3-html-table td{ + padding:11px; + text-align:left; + vertical-align:top; } + .bp3-running-text table th, table.bp3-html-table th{ + color:#182026; + font-weight:600; } + + .bp3-running-text table td, + table.bp3-html-table td{ + color:#182026; } + .bp3-running-text table tbody tr:first-child th, table.bp3-html-table tbody tr:first-child th, + .bp3-running-text table tbody tr:first-child td, + table.bp3-html-table tbody tr:first-child td, + .bp3-running-text table tfoot tr:first-child th, + table.bp3-html-table tfoot tr:first-child th, + .bp3-running-text table tfoot tr:first-child td, + table.bp3-html-table tfoot tr:first-child td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); } + .bp3-dark .bp3-running-text table th, .bp3-running-text .bp3-dark table th, .bp3-dark table.bp3-html-table th{ + color:#f5f8fa; } + .bp3-dark .bp3-running-text table td, .bp3-running-text .bp3-dark table td, .bp3-dark table.bp3-html-table td{ + color:#f5f8fa; } + .bp3-dark .bp3-running-text table tbody tr:first-child th, .bp3-running-text .bp3-dark table tbody tr:first-child th, .bp3-dark table.bp3-html-table tbody tr:first-child th, + .bp3-dark .bp3-running-text table tbody tr:first-child td, + .bp3-running-text .bp3-dark table tbody tr:first-child td, + .bp3-dark table.bp3-html-table tbody tr:first-child td, + .bp3-dark .bp3-running-text table tfoot tr:first-child th, + .bp3-running-text .bp3-dark table tfoot tr:first-child th, + .bp3-dark table.bp3-html-table tfoot tr:first-child th, + .bp3-dark .bp3-running-text table tfoot tr:first-child td, + .bp3-running-text .bp3-dark table tfoot tr:first-child td, + .bp3-dark table.bp3-html-table tfoot tr:first-child td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); } + +table.bp3-html-table.bp3-html-table-condensed th, +table.bp3-html-table.bp3-html-table-condensed td, table.bp3-html-table.bp3-small th, +table.bp3-html-table.bp3-small td{ + padding-bottom:6px; + padding-top:6px; } + +table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td{ + background:rgba(191, 204, 214, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered th:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered tbody tr td, +table.bp3-html-table.bp3-html-table-bordered tfoot tr td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 0 rgba(16, 22, 26, 0.15); } + table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child), + table.bp3-html-table.bp3-html-table-bordered tfoot tr td:not(:first-child){ + -webkit-box-shadow:inset 1px 1px 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 1px 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td{ + -webkit-box-shadow:none; + box-shadow:none; } + table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 1px 0 0 0 rgba(16, 22, 26, 0.15); } + +table.bp3-html-table.bp3-interactive tbody tr:hover td{ + background-color:rgba(191, 204, 214, 0.3); + cursor:pointer; } + +table.bp3-html-table.bp3-interactive tbody tr:active td{ + background-color:rgba(191, 204, 214, 0.4); } + +.bp3-dark table.bp3-html-table{ } + .bp3-dark table.bp3-html-table.bp3-html-table-striped tbody tr:nth-child(odd) td{ + background:rgba(92, 112, 128, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered th:not(:first-child){ + -webkit-box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td, + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tfoot tr td{ + -webkit-box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 0 1px 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tbody tr td:not(:first-child), + .bp3-dark table.bp3-html-table.bp3-html-table-bordered tfoot tr td:not(:first-child){ + -webkit-box-shadow:inset 1px 1px 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 1px 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td{ + -webkit-box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); + box-shadow:inset 1px 0 0 0 rgba(255, 255, 255, 0.15); } + .bp3-dark table.bp3-html-table.bp3-html-table-bordered.bp3-html-table-striped tbody tr:not(:first-child) td:first-child{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark table.bp3-html-table.bp3-interactive tbody tr:hover td{ + background-color:rgba(92, 112, 128, 0.3); + cursor:pointer; } + .bp3-dark table.bp3-html-table.bp3-interactive tbody tr:active td{ + background-color:rgba(92, 112, 128, 0.4); } + +.bp3-key-combo{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; } + .bp3-key-combo > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-key-combo > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-key-combo::before, + .bp3-key-combo > *{ + margin-right:5px; } + .bp3-key-combo:empty::before, + .bp3-key-combo > :last-child{ + margin-right:0; } + +.bp3-hotkey-dialog{ + padding-bottom:0; + top:40px; } + .bp3-hotkey-dialog .bp3-dialog-body{ + margin:0; + padding:0; } + .bp3-hotkey-dialog .bp3-hotkey-label{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; } + +.bp3-hotkey-column{ + margin:auto; + max-height:80vh; + overflow-y:auto; + padding:30px; } + .bp3-hotkey-column .bp3-heading{ + margin-bottom:20px; } + .bp3-hotkey-column .bp3-heading:not(:first-child){ + margin-top:40px; } + +.bp3-hotkey{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:justify; + -ms-flex-pack:justify; + justify-content:space-between; + margin-left:0; + margin-right:0; } + .bp3-hotkey:not(:last-child){ + margin-bottom:10px; } +.bp3-icon{ + display:inline-block; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + vertical-align:text-bottom; } + .bp3-icon:not(:empty)::before{ + content:"" !important; + content:unset !important; } + .bp3-icon > svg{ + display:block; } + .bp3-icon > svg:not([fill]){ + fill:currentColor; } + +.bp3-icon.bp3-intent-primary, .bp3-icon-standard.bp3-intent-primary, .bp3-icon-large.bp3-intent-primary{ + color:#106ba3; } + .bp3-dark .bp3-icon.bp3-intent-primary, .bp3-dark .bp3-icon-standard.bp3-intent-primary, .bp3-dark .bp3-icon-large.bp3-intent-primary{ + color:#48aff0; } + +.bp3-icon.bp3-intent-success, .bp3-icon-standard.bp3-intent-success, .bp3-icon-large.bp3-intent-success{ + color:#0d8050; } + .bp3-dark .bp3-icon.bp3-intent-success, .bp3-dark .bp3-icon-standard.bp3-intent-success, .bp3-dark .bp3-icon-large.bp3-intent-success{ + color:#3dcc91; } + +.bp3-icon.bp3-intent-warning, .bp3-icon-standard.bp3-intent-warning, .bp3-icon-large.bp3-intent-warning{ + color:#bf7326; } + .bp3-dark .bp3-icon.bp3-intent-warning, .bp3-dark .bp3-icon-standard.bp3-intent-warning, .bp3-dark .bp3-icon-large.bp3-intent-warning{ + color:#ffb366; } + +.bp3-icon.bp3-intent-danger, .bp3-icon-standard.bp3-intent-danger, .bp3-icon-large.bp3-intent-danger{ + color:#c23030; } + .bp3-dark .bp3-icon.bp3-intent-danger, .bp3-dark .bp3-icon-standard.bp3-intent-danger, .bp3-dark .bp3-icon-large.bp3-intent-danger{ + color:#ff7373; } + +span.bp3-icon-standard{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + display:inline-block; } + +span.bp3-icon-large{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + display:inline-block; } + +span.bp3-icon:empty{ + font-family:"Icons20"; + font-size:inherit; + font-style:normal; + font-weight:400; + line-height:1; } + span.bp3-icon:empty::before{ + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; } + +.bp3-icon-add::before{ + content:""; } + +.bp3-icon-add-column-left::before{ + content:""; } + +.bp3-icon-add-column-right::before{ + content:""; } + +.bp3-icon-add-row-bottom::before{ + content:""; } + +.bp3-icon-add-row-top::before{ + content:""; } + +.bp3-icon-add-to-artifact::before{ + content:""; } + +.bp3-icon-add-to-folder::before{ + content:""; } + +.bp3-icon-airplane::before{ + content:""; } + +.bp3-icon-align-center::before{ + content:""; } + +.bp3-icon-align-justify::before{ + content:""; } + +.bp3-icon-align-left::before{ + content:""; } + +.bp3-icon-align-right::before{ + content:""; } + +.bp3-icon-alignment-bottom::before{ + content:""; } + +.bp3-icon-alignment-horizontal-center::before{ + content:""; } + +.bp3-icon-alignment-left::before{ + content:""; } + +.bp3-icon-alignment-right::before{ + content:""; } + +.bp3-icon-alignment-top::before{ + content:""; } + +.bp3-icon-alignment-vertical-center::before{ + content:""; } + +.bp3-icon-annotation::before{ + content:""; } + +.bp3-icon-application::before{ + content:""; } + +.bp3-icon-applications::before{ + content:""; } + +.bp3-icon-archive::before{ + content:""; } + +.bp3-icon-arrow-bottom-left::before{ + content:"↙"; } + +.bp3-icon-arrow-bottom-right::before{ + content:"↘"; } + +.bp3-icon-arrow-down::before{ + content:"↓"; } + +.bp3-icon-arrow-left::before{ + content:"←"; } + +.bp3-icon-arrow-right::before{ + content:"→"; } + +.bp3-icon-arrow-top-left::before{ + content:"↖"; } + +.bp3-icon-arrow-top-right::before{ + content:"↗"; } + +.bp3-icon-arrow-up::before{ + content:"↑"; } + +.bp3-icon-arrows-horizontal::before{ + content:"↔"; } + +.bp3-icon-arrows-vertical::before{ + content:"↕"; } + +.bp3-icon-asterisk::before{ + content:"*"; } + +.bp3-icon-automatic-updates::before{ + content:""; } + +.bp3-icon-badge::before{ + content:""; } + +.bp3-icon-ban-circle::before{ + content:""; } + +.bp3-icon-bank-account::before{ + content:""; } + +.bp3-icon-barcode::before{ + content:""; } + +.bp3-icon-blank::before{ + content:""; } + +.bp3-icon-blocked-person::before{ + content:""; } + +.bp3-icon-bold::before{ + content:""; } + +.bp3-icon-book::before{ + content:""; } + +.bp3-icon-bookmark::before{ + content:""; } + +.bp3-icon-box::before{ + content:""; } + +.bp3-icon-briefcase::before{ + content:""; } + +.bp3-icon-bring-data::before{ + content:""; } + +.bp3-icon-build::before{ + content:""; } + +.bp3-icon-calculator::before{ + content:""; } + +.bp3-icon-calendar::before{ + content:""; } + +.bp3-icon-camera::before{ + content:""; } + +.bp3-icon-caret-down::before{ + content:"⌄"; } + +.bp3-icon-caret-left::before{ + content:"〈"; } + +.bp3-icon-caret-right::before{ + content:"〉"; } + +.bp3-icon-caret-up::before{ + content:"⌃"; } + +.bp3-icon-cell-tower::before{ + content:""; } + +.bp3-icon-changes::before{ + content:""; } + +.bp3-icon-chart::before{ + content:""; } + +.bp3-icon-chat::before{ + content:""; } + +.bp3-icon-chevron-backward::before{ + content:""; } + +.bp3-icon-chevron-down::before{ + content:""; } + +.bp3-icon-chevron-forward::before{ + content:""; } + +.bp3-icon-chevron-left::before{ + content:""; } + +.bp3-icon-chevron-right::before{ + content:""; } + +.bp3-icon-chevron-up::before{ + content:""; } + +.bp3-icon-circle::before{ + content:""; } + +.bp3-icon-circle-arrow-down::before{ + content:""; } + +.bp3-icon-circle-arrow-left::before{ + content:""; } + +.bp3-icon-circle-arrow-right::before{ + content:""; } + +.bp3-icon-circle-arrow-up::before{ + content:""; } + +.bp3-icon-citation::before{ + content:""; } + +.bp3-icon-clean::before{ + content:""; } + +.bp3-icon-clipboard::before{ + content:""; } + +.bp3-icon-cloud::before{ + content:"☁"; } + +.bp3-icon-cloud-download::before{ + content:""; } + +.bp3-icon-cloud-upload::before{ + content:""; } + +.bp3-icon-code::before{ + content:""; } + +.bp3-icon-code-block::before{ + content:""; } + +.bp3-icon-cog::before{ + content:""; } + +.bp3-icon-collapse-all::before{ + content:""; } + +.bp3-icon-column-layout::before{ + content:""; } + +.bp3-icon-comment::before{ + content:""; } + +.bp3-icon-comparison::before{ + content:""; } + +.bp3-icon-compass::before{ + content:""; } + +.bp3-icon-compressed::before{ + content:""; } + +.bp3-icon-confirm::before{ + content:""; } + +.bp3-icon-console::before{ + content:""; } + +.bp3-icon-contrast::before{ + content:""; } + +.bp3-icon-control::before{ + content:""; } + +.bp3-icon-credit-card::before{ + content:""; } + +.bp3-icon-cross::before{ + content:"✗"; } + +.bp3-icon-crown::before{ + content:""; } + +.bp3-icon-cube::before{ + content:""; } + +.bp3-icon-cube-add::before{ + content:""; } + +.bp3-icon-cube-remove::before{ + content:""; } + +.bp3-icon-curved-range-chart::before{ + content:""; } + +.bp3-icon-cut::before{ + content:""; } + +.bp3-icon-dashboard::before{ + content:""; } + +.bp3-icon-data-lineage::before{ + content:""; } + +.bp3-icon-database::before{ + content:""; } + +.bp3-icon-delete::before{ + content:""; } + +.bp3-icon-delta::before{ + content:"Δ"; } + +.bp3-icon-derive-column::before{ + content:""; } + +.bp3-icon-desktop::before{ + content:""; } + +.bp3-icon-diagnosis::before{ + content:""; } + +.bp3-icon-diagram-tree::before{ + content:""; } + +.bp3-icon-direction-left::before{ + content:""; } + +.bp3-icon-direction-right::before{ + content:""; } + +.bp3-icon-disable::before{ + content:""; } + +.bp3-icon-document::before{ + content:""; } + +.bp3-icon-document-open::before{ + content:""; } + +.bp3-icon-document-share::before{ + content:""; } + +.bp3-icon-dollar::before{ + content:"$"; } + +.bp3-icon-dot::before{ + content:"•"; } + +.bp3-icon-double-caret-horizontal::before{ + content:""; } + +.bp3-icon-double-caret-vertical::before{ + content:""; } + +.bp3-icon-double-chevron-down::before{ + content:""; } + +.bp3-icon-double-chevron-left::before{ + content:""; } + +.bp3-icon-double-chevron-right::before{ + content:""; } + +.bp3-icon-double-chevron-up::before{ + content:""; } + +.bp3-icon-doughnut-chart::before{ + content:""; } + +.bp3-icon-download::before{ + content:""; } + +.bp3-icon-drag-handle-horizontal::before{ + content:""; } + +.bp3-icon-drag-handle-vertical::before{ + content:""; } + +.bp3-icon-draw::before{ + content:""; } + +.bp3-icon-drive-time::before{ + content:""; } + +.bp3-icon-duplicate::before{ + content:""; } + +.bp3-icon-edit::before{ + content:"✎"; } + +.bp3-icon-eject::before{ + content:"⏏"; } + +.bp3-icon-endorsed::before{ + content:""; } + +.bp3-icon-envelope::before{ + content:"✉"; } + +.bp3-icon-equals::before{ + content:""; } + +.bp3-icon-eraser::before{ + content:""; } + +.bp3-icon-error::before{ + content:""; } + +.bp3-icon-euro::before{ + content:"€"; } + +.bp3-icon-exchange::before{ + content:""; } + +.bp3-icon-exclude-row::before{ + content:""; } + +.bp3-icon-expand-all::before{ + content:""; } + +.bp3-icon-export::before{ + content:""; } + +.bp3-icon-eye-off::before{ + content:""; } + +.bp3-icon-eye-on::before{ + content:""; } + +.bp3-icon-eye-open::before{ + content:""; } + +.bp3-icon-fast-backward::before{ + content:""; } + +.bp3-icon-fast-forward::before{ + content:""; } + +.bp3-icon-feed::before{ + content:""; } + +.bp3-icon-feed-subscribed::before{ + content:""; } + +.bp3-icon-film::before{ + content:""; } + +.bp3-icon-filter::before{ + content:""; } + +.bp3-icon-filter-keep::before{ + content:""; } + +.bp3-icon-filter-list::before{ + content:""; } + +.bp3-icon-filter-open::before{ + content:""; } + +.bp3-icon-filter-remove::before{ + content:""; } + +.bp3-icon-flag::before{ + content:"⚑"; } + +.bp3-icon-flame::before{ + content:""; } + +.bp3-icon-flash::before{ + content:""; } + +.bp3-icon-floppy-disk::before{ + content:""; } + +.bp3-icon-flow-branch::before{ + content:""; } + +.bp3-icon-flow-end::before{ + content:""; } + +.bp3-icon-flow-linear::before{ + content:""; } + +.bp3-icon-flow-review::before{ + content:""; } + +.bp3-icon-flow-review-branch::before{ + content:""; } + +.bp3-icon-flows::before{ + content:""; } + +.bp3-icon-folder-close::before{ + content:""; } + +.bp3-icon-folder-new::before{ + content:""; } + +.bp3-icon-folder-open::before{ + content:""; } + +.bp3-icon-folder-shared::before{ + content:""; } + +.bp3-icon-folder-shared-open::before{ + content:""; } + +.bp3-icon-follower::before{ + content:""; } + +.bp3-icon-following::before{ + content:""; } + +.bp3-icon-font::before{ + content:""; } + +.bp3-icon-fork::before{ + content:""; } + +.bp3-icon-form::before{ + content:""; } + +.bp3-icon-full-circle::before{ + content:""; } + +.bp3-icon-full-stacked-chart::before{ + content:""; } + +.bp3-icon-fullscreen::before{ + content:""; } + +.bp3-icon-function::before{ + content:""; } + +.bp3-icon-gantt-chart::before{ + content:""; } + +.bp3-icon-geolocation::before{ + content:""; } + +.bp3-icon-geosearch::before{ + content:""; } + +.bp3-icon-git-branch::before{ + content:""; } + +.bp3-icon-git-commit::before{ + content:""; } + +.bp3-icon-git-merge::before{ + content:""; } + +.bp3-icon-git-new-branch::before{ + content:""; } + +.bp3-icon-git-pull::before{ + content:""; } + +.bp3-icon-git-push::before{ + content:""; } + +.bp3-icon-git-repo::before{ + content:""; } + +.bp3-icon-glass::before{ + content:""; } + +.bp3-icon-globe::before{ + content:""; } + +.bp3-icon-globe-network::before{ + content:""; } + +.bp3-icon-graph::before{ + content:""; } + +.bp3-icon-graph-remove::before{ + content:""; } + +.bp3-icon-greater-than::before{ + content:""; } + +.bp3-icon-greater-than-or-equal-to::before{ + content:""; } + +.bp3-icon-grid::before{ + content:""; } + +.bp3-icon-grid-view::before{ + content:""; } + +.bp3-icon-group-objects::before{ + content:""; } + +.bp3-icon-grouped-bar-chart::before{ + content:""; } + +.bp3-icon-hand::before{ + content:""; } + +.bp3-icon-hand-down::before{ + content:""; } + +.bp3-icon-hand-left::before{ + content:""; } + +.bp3-icon-hand-right::before{ + content:""; } + +.bp3-icon-hand-up::before{ + content:""; } + +.bp3-icon-header::before{ + content:""; } + +.bp3-icon-header-one::before{ + content:""; } + +.bp3-icon-header-two::before{ + content:""; } + +.bp3-icon-headset::before{ + content:""; } + +.bp3-icon-heart::before{ + content:"♥"; } + +.bp3-icon-heart-broken::before{ + content:""; } + +.bp3-icon-heat-grid::before{ + content:""; } + +.bp3-icon-heatmap::before{ + content:""; } + +.bp3-icon-help::before{ + content:"?"; } + +.bp3-icon-helper-management::before{ + content:""; } + +.bp3-icon-highlight::before{ + content:""; } + +.bp3-icon-history::before{ + content:""; } + +.bp3-icon-home::before{ + content:"⌂"; } + +.bp3-icon-horizontal-bar-chart::before{ + content:""; } + +.bp3-icon-horizontal-bar-chart-asc::before{ + content:""; } + +.bp3-icon-horizontal-bar-chart-desc::before{ + content:""; } + +.bp3-icon-horizontal-distribution::before{ + content:""; } + +.bp3-icon-id-number::before{ + content:""; } + +.bp3-icon-image-rotate-left::before{ + content:""; } + +.bp3-icon-image-rotate-right::before{ + content:""; } + +.bp3-icon-import::before{ + content:""; } + +.bp3-icon-inbox::before{ + content:""; } + +.bp3-icon-inbox-filtered::before{ + content:""; } + +.bp3-icon-inbox-geo::before{ + content:""; } + +.bp3-icon-inbox-search::before{ + content:""; } + +.bp3-icon-inbox-update::before{ + content:""; } + +.bp3-icon-info-sign::before{ + content:"ℹ"; } + +.bp3-icon-inheritance::before{ + content:""; } + +.bp3-icon-inner-join::before{ + content:""; } + +.bp3-icon-insert::before{ + content:""; } + +.bp3-icon-intersection::before{ + content:""; } + +.bp3-icon-ip-address::before{ + content:""; } + +.bp3-icon-issue::before{ + content:""; } + +.bp3-icon-issue-closed::before{ + content:""; } + +.bp3-icon-issue-new::before{ + content:""; } + +.bp3-icon-italic::before{ + content:""; } + +.bp3-icon-join-table::before{ + content:""; } + +.bp3-icon-key::before{ + content:""; } + +.bp3-icon-key-backspace::before{ + content:""; } + +.bp3-icon-key-command::before{ + content:""; } + +.bp3-icon-key-control::before{ + content:""; } + +.bp3-icon-key-delete::before{ + content:""; } + +.bp3-icon-key-enter::before{ + content:""; } + +.bp3-icon-key-escape::before{ + content:""; } + +.bp3-icon-key-option::before{ + content:""; } + +.bp3-icon-key-shift::before{ + content:""; } + +.bp3-icon-key-tab::before{ + content:""; } + +.bp3-icon-known-vehicle::before{ + content:""; } + +.bp3-icon-lab-test::before{ + content:""; } + +.bp3-icon-label::before{ + content:""; } + +.bp3-icon-layer::before{ + content:""; } + +.bp3-icon-layers::before{ + content:""; } + +.bp3-icon-layout::before{ + content:""; } + +.bp3-icon-layout-auto::before{ + content:""; } + +.bp3-icon-layout-balloon::before{ + content:""; } + +.bp3-icon-layout-circle::before{ + content:""; } + +.bp3-icon-layout-grid::before{ + content:""; } + +.bp3-icon-layout-group-by::before{ + content:""; } + +.bp3-icon-layout-hierarchy::before{ + content:""; } + +.bp3-icon-layout-linear::before{ + content:""; } + +.bp3-icon-layout-skew-grid::before{ + content:""; } + +.bp3-icon-layout-sorted-clusters::before{ + content:""; } + +.bp3-icon-learning::before{ + content:""; } + +.bp3-icon-left-join::before{ + content:""; } + +.bp3-icon-less-than::before{ + content:""; } + +.bp3-icon-less-than-or-equal-to::before{ + content:""; } + +.bp3-icon-lifesaver::before{ + content:""; } + +.bp3-icon-lightbulb::before{ + content:""; } + +.bp3-icon-link::before{ + content:""; } + +.bp3-icon-list::before{ + content:"☰"; } + +.bp3-icon-list-columns::before{ + content:""; } + +.bp3-icon-list-detail-view::before{ + content:""; } + +.bp3-icon-locate::before{ + content:""; } + +.bp3-icon-lock::before{ + content:""; } + +.bp3-icon-log-in::before{ + content:""; } + +.bp3-icon-log-out::before{ + content:""; } + +.bp3-icon-manual::before{ + content:""; } + +.bp3-icon-manually-entered-data::before{ + content:""; } + +.bp3-icon-map::before{ + content:""; } + +.bp3-icon-map-create::before{ + content:""; } + +.bp3-icon-map-marker::before{ + content:""; } + +.bp3-icon-maximize::before{ + content:""; } + +.bp3-icon-media::before{ + content:""; } + +.bp3-icon-menu::before{ + content:""; } + +.bp3-icon-menu-closed::before{ + content:""; } + +.bp3-icon-menu-open::before{ + content:""; } + +.bp3-icon-merge-columns::before{ + content:""; } + +.bp3-icon-merge-links::before{ + content:""; } + +.bp3-icon-minimize::before{ + content:""; } + +.bp3-icon-minus::before{ + content:"−"; } + +.bp3-icon-mobile-phone::before{ + content:""; } + +.bp3-icon-mobile-video::before{ + content:""; } + +.bp3-icon-moon::before{ + content:""; } + +.bp3-icon-more::before{ + content:""; } + +.bp3-icon-mountain::before{ + content:""; } + +.bp3-icon-move::before{ + content:""; } + +.bp3-icon-mugshot::before{ + content:""; } + +.bp3-icon-multi-select::before{ + content:""; } + +.bp3-icon-music::before{ + content:""; } + +.bp3-icon-new-drawing::before{ + content:""; } + +.bp3-icon-new-grid-item::before{ + content:""; } + +.bp3-icon-new-layer::before{ + content:""; } + +.bp3-icon-new-layers::before{ + content:""; } + +.bp3-icon-new-link::before{ + content:""; } + +.bp3-icon-new-object::before{ + content:""; } + +.bp3-icon-new-person::before{ + content:""; } + +.bp3-icon-new-prescription::before{ + content:""; } + +.bp3-icon-new-text-box::before{ + content:""; } + +.bp3-icon-ninja::before{ + content:""; } + +.bp3-icon-not-equal-to::before{ + content:""; } + +.bp3-icon-notifications::before{ + content:""; } + +.bp3-icon-notifications-updated::before{ + content:""; } + +.bp3-icon-numbered-list::before{ + content:""; } + +.bp3-icon-numerical::before{ + content:""; } + +.bp3-icon-office::before{ + content:""; } + +.bp3-icon-offline::before{ + content:""; } + +.bp3-icon-oil-field::before{ + content:""; } + +.bp3-icon-one-column::before{ + content:""; } + +.bp3-icon-outdated::before{ + content:""; } + +.bp3-icon-page-layout::before{ + content:""; } + +.bp3-icon-panel-stats::before{ + content:""; } + +.bp3-icon-panel-table::before{ + content:""; } + +.bp3-icon-paperclip::before{ + content:""; } + +.bp3-icon-paragraph::before{ + content:""; } + +.bp3-icon-path::before{ + content:""; } + +.bp3-icon-path-search::before{ + content:""; } + +.bp3-icon-pause::before{ + content:""; } + +.bp3-icon-people::before{ + content:""; } + +.bp3-icon-percentage::before{ + content:""; } + +.bp3-icon-person::before{ + content:""; } + +.bp3-icon-phone::before{ + content:"☎"; } + +.bp3-icon-pie-chart::before{ + content:""; } + +.bp3-icon-pin::before{ + content:""; } + +.bp3-icon-pivot::before{ + content:""; } + +.bp3-icon-pivot-table::before{ + content:""; } + +.bp3-icon-play::before{ + content:""; } + +.bp3-icon-plus::before{ + content:"+"; } + +.bp3-icon-polygon-filter::before{ + content:""; } + +.bp3-icon-power::before{ + content:""; } + +.bp3-icon-predictive-analysis::before{ + content:""; } + +.bp3-icon-prescription::before{ + content:""; } + +.bp3-icon-presentation::before{ + content:""; } + +.bp3-icon-print::before{ + content:"⎙"; } + +.bp3-icon-projects::before{ + content:""; } + +.bp3-icon-properties::before{ + content:""; } + +.bp3-icon-property::before{ + content:""; } + +.bp3-icon-publish-function::before{ + content:""; } + +.bp3-icon-pulse::before{ + content:""; } + +.bp3-icon-random::before{ + content:""; } + +.bp3-icon-record::before{ + content:""; } + +.bp3-icon-redo::before{ + content:""; } + +.bp3-icon-refresh::before{ + content:""; } + +.bp3-icon-regression-chart::before{ + content:""; } + +.bp3-icon-remove::before{ + content:""; } + +.bp3-icon-remove-column::before{ + content:""; } + +.bp3-icon-remove-column-left::before{ + content:""; } + +.bp3-icon-remove-column-right::before{ + content:""; } + +.bp3-icon-remove-row-bottom::before{ + content:""; } + +.bp3-icon-remove-row-top::before{ + content:""; } + +.bp3-icon-repeat::before{ + content:""; } + +.bp3-icon-reset::before{ + content:""; } + +.bp3-icon-resolve::before{ + content:""; } + +.bp3-icon-rig::before{ + content:""; } + +.bp3-icon-right-join::before{ + content:""; } + +.bp3-icon-ring::before{ + content:""; } + +.bp3-icon-rotate-document::before{ + content:""; } + +.bp3-icon-rotate-page::before{ + content:""; } + +.bp3-icon-satellite::before{ + content:""; } + +.bp3-icon-saved::before{ + content:""; } + +.bp3-icon-scatter-plot::before{ + content:""; } + +.bp3-icon-search::before{ + content:""; } + +.bp3-icon-search-around::before{ + content:""; } + +.bp3-icon-search-template::before{ + content:""; } + +.bp3-icon-search-text::before{ + content:""; } + +.bp3-icon-segmented-control::before{ + content:""; } + +.bp3-icon-select::before{ + content:""; } + +.bp3-icon-selection::before{ + content:"⦿"; } + +.bp3-icon-send-to::before{ + content:""; } + +.bp3-icon-send-to-graph::before{ + content:""; } + +.bp3-icon-send-to-map::before{ + content:""; } + +.bp3-icon-series-add::before{ + content:""; } + +.bp3-icon-series-configuration::before{ + content:""; } + +.bp3-icon-series-derived::before{ + content:""; } + +.bp3-icon-series-filtered::before{ + content:""; } + +.bp3-icon-series-search::before{ + content:""; } + +.bp3-icon-settings::before{ + content:""; } + +.bp3-icon-share::before{ + content:""; } + +.bp3-icon-shield::before{ + content:""; } + +.bp3-icon-shop::before{ + content:""; } + +.bp3-icon-shopping-cart::before{ + content:""; } + +.bp3-icon-signal-search::before{ + content:""; } + +.bp3-icon-sim-card::before{ + content:""; } + +.bp3-icon-slash::before{ + content:""; } + +.bp3-icon-small-cross::before{ + content:""; } + +.bp3-icon-small-minus::before{ + content:""; } + +.bp3-icon-small-plus::before{ + content:""; } + +.bp3-icon-small-tick::before{ + content:""; } + +.bp3-icon-snowflake::before{ + content:""; } + +.bp3-icon-social-media::before{ + content:""; } + +.bp3-icon-sort::before{ + content:""; } + +.bp3-icon-sort-alphabetical::before{ + content:""; } + +.bp3-icon-sort-alphabetical-desc::before{ + content:""; } + +.bp3-icon-sort-asc::before{ + content:""; } + +.bp3-icon-sort-desc::before{ + content:""; } + +.bp3-icon-sort-numerical::before{ + content:""; } + +.bp3-icon-sort-numerical-desc::before{ + content:""; } + +.bp3-icon-split-columns::before{ + content:""; } + +.bp3-icon-square::before{ + content:""; } + +.bp3-icon-stacked-chart::before{ + content:""; } + +.bp3-icon-star::before{ + content:"★"; } + +.bp3-icon-star-empty::before{ + content:"☆"; } + +.bp3-icon-step-backward::before{ + content:""; } + +.bp3-icon-step-chart::before{ + content:""; } + +.bp3-icon-step-forward::before{ + content:""; } + +.bp3-icon-stop::before{ + content:""; } + +.bp3-icon-stopwatch::before{ + content:""; } + +.bp3-icon-strikethrough::before{ + content:""; } + +.bp3-icon-style::before{ + content:""; } + +.bp3-icon-swap-horizontal::before{ + content:""; } + +.bp3-icon-swap-vertical::before{ + content:""; } + +.bp3-icon-symbol-circle::before{ + content:""; } + +.bp3-icon-symbol-cross::before{ + content:""; } + +.bp3-icon-symbol-diamond::before{ + content:""; } + +.bp3-icon-symbol-square::before{ + content:""; } + +.bp3-icon-symbol-triangle-down::before{ + content:""; } + +.bp3-icon-symbol-triangle-up::before{ + content:""; } + +.bp3-icon-tag::before{ + content:""; } + +.bp3-icon-take-action::before{ + content:""; } + +.bp3-icon-taxi::before{ + content:""; } + +.bp3-icon-text-highlight::before{ + content:""; } + +.bp3-icon-th::before{ + content:""; } + +.bp3-icon-th-derived::before{ + content:""; } + +.bp3-icon-th-disconnect::before{ + content:""; } + +.bp3-icon-th-filtered::before{ + content:""; } + +.bp3-icon-th-list::before{ + content:""; } + +.bp3-icon-thumbs-down::before{ + content:""; } + +.bp3-icon-thumbs-up::before{ + content:""; } + +.bp3-icon-tick::before{ + content:"✓"; } + +.bp3-icon-tick-circle::before{ + content:""; } + +.bp3-icon-time::before{ + content:"⏲"; } + +.bp3-icon-timeline-area-chart::before{ + content:""; } + +.bp3-icon-timeline-bar-chart::before{ + content:""; } + +.bp3-icon-timeline-events::before{ + content:""; } + +.bp3-icon-timeline-line-chart::before{ + content:""; } + +.bp3-icon-tint::before{ + content:""; } + +.bp3-icon-torch::before{ + content:""; } + +.bp3-icon-tractor::before{ + content:""; } + +.bp3-icon-train::before{ + content:""; } + +.bp3-icon-translate::before{ + content:""; } + +.bp3-icon-trash::before{ + content:""; } + +.bp3-icon-tree::before{ + content:""; } + +.bp3-icon-trending-down::before{ + content:""; } + +.bp3-icon-trending-up::before{ + content:""; } + +.bp3-icon-truck::before{ + content:""; } + +.bp3-icon-two-columns::before{ + content:""; } + +.bp3-icon-unarchive::before{ + content:""; } + +.bp3-icon-underline::before{ + content:"⎁"; } + +.bp3-icon-undo::before{ + content:"⎌"; } + +.bp3-icon-ungroup-objects::before{ + content:""; } + +.bp3-icon-unknown-vehicle::before{ + content:""; } + +.bp3-icon-unlock::before{ + content:""; } + +.bp3-icon-unpin::before{ + content:""; } + +.bp3-icon-unresolve::before{ + content:""; } + +.bp3-icon-updated::before{ + content:""; } + +.bp3-icon-upload::before{ + content:""; } + +.bp3-icon-user::before{ + content:""; } + +.bp3-icon-variable::before{ + content:""; } + +.bp3-icon-vertical-bar-chart-asc::before{ + content:""; } + +.bp3-icon-vertical-bar-chart-desc::before{ + content:""; } + +.bp3-icon-vertical-distribution::before{ + content:""; } + +.bp3-icon-video::before{ + content:""; } + +.bp3-icon-volume-down::before{ + content:""; } + +.bp3-icon-volume-off::before{ + content:""; } + +.bp3-icon-volume-up::before{ + content:""; } + +.bp3-icon-walk::before{ + content:""; } + +.bp3-icon-warning-sign::before{ + content:""; } + +.bp3-icon-waterfall-chart::before{ + content:""; } + +.bp3-icon-widget::before{ + content:""; } + +.bp3-icon-widget-button::before{ + content:""; } + +.bp3-icon-widget-footer::before{ + content:""; } + +.bp3-icon-widget-header::before{ + content:""; } + +.bp3-icon-wrench::before{ + content:""; } + +.bp3-icon-zoom-in::before{ + content:""; } + +.bp3-icon-zoom-out::before{ + content:""; } + +.bp3-icon-zoom-to-fit::before{ + content:""; } +.bp3-submenu > .bp3-popover-wrapper{ + display:block; } + +.bp3-submenu .bp3-popover-target{ + display:block; } + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ } + +.bp3-submenu.bp3-popover{ + -webkit-box-shadow:none; + box-shadow:none; + padding:0 5px; } + .bp3-submenu.bp3-popover > .bp3-popover-content{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-submenu.bp3-popover, .bp3-submenu.bp3-popover.bp3-dark{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-dark .bp3-submenu.bp3-popover > .bp3-popover-content, .bp3-submenu.bp3-popover.bp3-dark > .bp3-popover-content{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } +.bp3-menu{ + background:#ffffff; + border-radius:3px; + color:#182026; + list-style:none; + margin:0; + min-width:180px; + padding:5px; + text-align:left; } + +.bp3-menu-divider{ + border-top:1px solid rgba(16, 22, 26, 0.15); + display:block; + margin:5px; } + .bp3-dark .bp3-menu-divider{ + border-top-color:rgba(255, 255, 255, 0.15); } + +.bp3-menu-item{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + border-radius:2px; + color:inherit; + line-height:20px; + padding:5px 7px; + text-decoration:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-menu-item > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-menu-item > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-menu-item::before, + .bp3-menu-item > *{ + margin-right:7px; } + .bp3-menu-item:empty::before, + .bp3-menu-item > :last-child{ + margin-right:0; } + .bp3-menu-item > .bp3-fill{ + word-break:break-word; } + .bp3-menu-item:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + background-color:rgba(167, 182, 194, 0.3); + cursor:pointer; + text-decoration:none; } + .bp3-menu-item.bp3-disabled{ + background-color:inherit; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-dark .bp3-menu-item{ + color:inherit; } + .bp3-dark .bp3-menu-item:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + background-color:rgba(138, 155, 168, 0.15); + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-disabled{ + background-color:inherit; + color:rgba(167, 182, 194, 0.6); } + .bp3-menu-item.bp3-intent-primary{ + color:#106ba3; } + .bp3-menu-item.bp3-intent-primary .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-primary::before, .bp3-menu-item.bp3-intent-primary::after, + .bp3-menu-item.bp3-intent-primary .bp3-menu-item-label{ + color:#106ba3; } + .bp3-menu-item.bp3-intent-primary:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-menu-item.bp3-intent-primary.bp3-active{ + background-color:#137cbd; } + .bp3-menu-item.bp3-intent-primary:active{ + background-color:#106ba3; } + .bp3-menu-item.bp3-intent-primary:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-menu-item.bp3-intent-primary:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-menu-item.bp3-intent-primary:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-primary:active, .bp3-menu-item.bp3-intent-primary:active::before, .bp3-menu-item.bp3-intent-primary:active::after, + .bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-primary.bp3-active, .bp3-menu-item.bp3-intent-primary.bp3-active::before, .bp3-menu-item.bp3-intent-primary.bp3-active::after, + .bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-success{ + color:#0d8050; } + .bp3-menu-item.bp3-intent-success .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-success::before, .bp3-menu-item.bp3-intent-success::after, + .bp3-menu-item.bp3-intent-success .bp3-menu-item-label{ + color:#0d8050; } + .bp3-menu-item.bp3-intent-success:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-menu-item.bp3-intent-success.bp3-active{ + background-color:#0f9960; } + .bp3-menu-item.bp3-intent-success:active{ + background-color:#0d8050; } + .bp3-menu-item.bp3-intent-success:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-menu-item.bp3-intent-success:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-menu-item.bp3-intent-success:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-success:active, .bp3-menu-item.bp3-intent-success:active::before, .bp3-menu-item.bp3-intent-success:active::after, + .bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-success.bp3-active, .bp3-menu-item.bp3-intent-success.bp3-active::before, .bp3-menu-item.bp3-intent-success.bp3-active::after, + .bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-warning{ + color:#bf7326; } + .bp3-menu-item.bp3-intent-warning .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-warning::before, .bp3-menu-item.bp3-intent-warning::after, + .bp3-menu-item.bp3-intent-warning .bp3-menu-item-label{ + color:#bf7326; } + .bp3-menu-item.bp3-intent-warning:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-menu-item.bp3-intent-warning.bp3-active{ + background-color:#d9822b; } + .bp3-menu-item.bp3-intent-warning:active{ + background-color:#bf7326; } + .bp3-menu-item.bp3-intent-warning:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-menu-item.bp3-intent-warning:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-menu-item.bp3-intent-warning:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-warning:active, .bp3-menu-item.bp3-intent-warning:active::before, .bp3-menu-item.bp3-intent-warning:active::after, + .bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-warning.bp3-active, .bp3-menu-item.bp3-intent-warning.bp3-active::before, .bp3-menu-item.bp3-intent-warning.bp3-active::after, + .bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item.bp3-intent-danger{ + color:#c23030; } + .bp3-menu-item.bp3-intent-danger .bp3-icon{ + color:inherit; } + .bp3-menu-item.bp3-intent-danger::before, .bp3-menu-item.bp3-intent-danger::after, + .bp3-menu-item.bp3-intent-danger .bp3-menu-item-label{ + color:#c23030; } + .bp3-menu-item.bp3-intent-danger:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-menu-item.bp3-intent-danger.bp3-active{ + background-color:#db3737; } + .bp3-menu-item.bp3-intent-danger:active{ + background-color:#c23030; } + .bp3-menu-item.bp3-intent-danger:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-menu-item.bp3-intent-danger:hover::before, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-menu-item.bp3-intent-danger:hover::after, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, + .bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label, + .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, .bp3-menu-item.bp3-intent-danger:active, .bp3-menu-item.bp3-intent-danger:active::before, .bp3-menu-item.bp3-intent-danger:active::after, + .bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label, .bp3-menu-item.bp3-intent-danger.bp3-active, .bp3-menu-item.bp3-intent-danger.bp3-active::before, .bp3-menu-item.bp3-intent-danger.bp3-active::after, + .bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-menu-item::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + margin-right:7px; } + .bp3-menu-item::before, + .bp3-menu-item > .bp3-icon{ + color:#5c7080; + margin-top:2px; } + .bp3-menu-item .bp3-menu-item-label{ + color:#5c7080; } + .bp3-menu-item:hover, .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-menu-item{ + color:inherit; } + .bp3-menu-item.bp3-active, .bp3-menu-item:active{ + background-color:rgba(115, 134, 148, 0.3); } + .bp3-menu-item.bp3-disabled{ + background-color:inherit !important; + color:rgba(92, 112, 128, 0.6) !important; + cursor:not-allowed !important; + outline:none !important; } + .bp3-menu-item.bp3-disabled::before, + .bp3-menu-item.bp3-disabled > .bp3-icon, + .bp3-menu-item.bp3-disabled .bp3-menu-item-label{ + color:rgba(92, 112, 128, 0.6) !important; } + .bp3-large .bp3-menu-item{ + font-size:16px; + line-height:22px; + padding:9px 7px; } + .bp3-large .bp3-menu-item .bp3-icon{ + margin-top:3px; } + .bp3-large .bp3-menu-item::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + margin-right:10px; + margin-top:1px; } + +button.bp3-menu-item{ + background:none; + border:none; + text-align:left; + width:100%; } +.bp3-menu-header{ + border-top:1px solid rgba(16, 22, 26, 0.15); + display:block; + margin:5px; + cursor:default; + padding-left:2px; } + .bp3-dark .bp3-menu-header{ + border-top-color:rgba(255, 255, 255, 0.15); } + .bp3-menu-header:first-of-type{ + border-top:none; } + .bp3-menu-header > h6{ + color:#182026; + font-weight:600; + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + line-height:17px; + margin:0; + padding:10px 7px 0 1px; } + .bp3-dark .bp3-menu-header > h6{ + color:#f5f8fa; } + .bp3-menu-header:first-of-type > h6{ + padding-top:0; } + .bp3-large .bp3-menu-header > h6{ + font-size:18px; + padding-bottom:5px; + padding-top:15px; } + .bp3-large .bp3-menu-header:first-of-type > h6{ + padding-top:0; } + +.bp3-dark .bp3-menu{ + background:#30404d; + color:#f5f8fa; } + +.bp3-dark .bp3-menu-item{ } + .bp3-dark .bp3-menu-item.bp3-intent-primary{ + color:#48aff0; } + .bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-primary::before, .bp3-dark .bp3-menu-item.bp3-intent-primary::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary .bp3-menu-item-label{ + color:#48aff0; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active{ + background-color:#137cbd; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:active{ + background-color:#106ba3; } + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-primary:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-primary:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-primary.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-primary:active, .bp3-dark .bp3-menu-item.bp3-intent-primary:active::before, .bp3-dark .bp3-menu-item.bp3-intent-primary:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-primary.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-success{ + color:#3dcc91; } + .bp3-dark .bp3-menu-item.bp3-intent-success .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-success::before, .bp3-dark .bp3-menu-item.bp3-intent-success::after, + .bp3-dark .bp3-menu-item.bp3-intent-success .bp3-menu-item-label{ + color:#3dcc91; } + .bp3-dark .bp3-menu-item.bp3-intent-success:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active{ + background-color:#0f9960; } + .bp3-dark .bp3-menu-item.bp3-intent-success:active{ + background-color:#0d8050; } + .bp3-dark .bp3-menu-item.bp3-intent-success:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-success:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-success:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-success:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-success.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-success:active, .bp3-dark .bp3-menu-item.bp3-intent-success:active::before, .bp3-dark .bp3-menu-item.bp3-intent-success:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-success:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-success.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-warning{ + color:#ffb366; } + .bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-warning::before, .bp3-dark .bp3-menu-item.bp3-intent-warning::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning .bp3-menu-item-label{ + color:#ffb366; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active{ + background-color:#d9822b; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:active{ + background-color:#bf7326; } + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-warning:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-warning:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-warning.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-warning:active, .bp3-dark .bp3-menu-item.bp3-intent-warning:active::before, .bp3-dark .bp3-menu-item.bp3-intent-warning:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-warning.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item.bp3-intent-danger{ + color:#ff7373; } + .bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-icon{ + color:inherit; } + .bp3-dark .bp3-menu-item.bp3-intent-danger::before, .bp3-dark .bp3-menu-item.bp3-intent-danger::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger .bp3-menu-item-label{ + color:#ff7373; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active{ + background-color:#db3737; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:active{ + background-color:#c23030; } + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item, .bp3-dark .bp3-menu-item.bp3-intent-danger:hover::before, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::before, .bp3-dark .bp3-menu-item.bp3-intent-danger:hover::after, .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger:hover .bp3-menu-item-label, + .bp3-dark .bp3-submenu .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, + .bp3-submenu .bp3-dark .bp3-popover-target.bp3-popover-open > .bp3-intent-danger.bp3-menu-item .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-danger:active, .bp3-dark .bp3-menu-item.bp3-intent-danger:active::before, .bp3-dark .bp3-menu-item.bp3-intent-danger:active::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger:active .bp3-menu-item-label, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::before, .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active::after, + .bp3-dark .bp3-menu-item.bp3-intent-danger.bp3-active .bp3-menu-item-label{ + color:#ffffff; } + .bp3-dark .bp3-menu-item::before, + .bp3-dark .bp3-menu-item > .bp3-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-menu-item .bp3-menu-item-label{ + color:#a7b6c2; } + .bp3-dark .bp3-menu-item.bp3-active, .bp3-dark .bp3-menu-item:active{ + background-color:rgba(138, 155, 168, 0.3); } + .bp3-dark .bp3-menu-item.bp3-disabled{ + color:rgba(167, 182, 194, 0.6) !important; } + .bp3-dark .bp3-menu-item.bp3-disabled::before, + .bp3-dark .bp3-menu-item.bp3-disabled > .bp3-icon, + .bp3-dark .bp3-menu-item.bp3-disabled .bp3-menu-item-label{ + color:rgba(167, 182, 194, 0.6) !important; } + +.bp3-dark .bp3-menu-divider, +.bp3-dark .bp3-menu-header{ + border-color:rgba(255, 255, 255, 0.15); } + +.bp3-dark .bp3-menu-header > h6{ + color:#f5f8fa; } + +.bp3-label .bp3-menu{ + margin-top:5px; } +.bp3-navbar{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.2); + height:50px; + padding:0 15px; + position:relative; + width:100%; + z-index:10; } + .bp3-navbar.bp3-dark, + .bp3-dark .bp3-navbar{ + background-color:#394b59; } + .bp3-navbar.bp3-dark{ + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-navbar{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 0 0 rgba(16, 22, 26, 0), 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-navbar.bp3-fixed-top{ + left:0; + position:fixed; + right:0; + top:0; } + +.bp3-navbar-heading{ + font-size:16px; + margin-right:15px; } + +.bp3-navbar-group{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + height:50px; } + .bp3-navbar-group.bp3-align-left{ + float:left; } + .bp3-navbar-group.bp3-align-right{ + float:right; } + +.bp3-navbar-divider{ + border-left:1px solid rgba(16, 22, 26, 0.15); + height:20px; + margin:0 10px; } + .bp3-dark .bp3-navbar-divider{ + border-left-color:rgba(255, 255, 255, 0.15); } +.bp3-non-ideal-state{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + height:100%; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + text-align:center; + width:100%; } + .bp3-non-ideal-state > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-non-ideal-state > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-non-ideal-state::before, + .bp3-non-ideal-state > *{ + margin-bottom:20px; } + .bp3-non-ideal-state:empty::before, + .bp3-non-ideal-state > :last-child{ + margin-bottom:0; } + .bp3-non-ideal-state > *{ + max-width:400px; } + +.bp3-non-ideal-state-visual{ + color:rgba(92, 112, 128, 0.6); + font-size:60px; } + .bp3-dark .bp3-non-ideal-state-visual{ + color:rgba(167, 182, 194, 0.6); } + +.bp3-overflow-list{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-wrap:nowrap; + flex-wrap:nowrap; + min-width:0; } + +.bp3-overflow-list-spacer{ + -ms-flex-negative:1; + flex-shrink:1; + width:1px; } + +body.bp3-overlay-open{ + overflow:hidden; } + +.bp3-overlay{ + bottom:0; + left:0; + position:static; + right:0; + top:0; + z-index:20; } + .bp3-overlay:not(.bp3-overlay-open){ + pointer-events:none; } + .bp3-overlay.bp3-overlay-container{ + overflow:hidden; + position:fixed; } + .bp3-overlay.bp3-overlay-container.bp3-overlay-inline{ + position:absolute; } + .bp3-overlay.bp3-overlay-scroll-container{ + overflow:auto; + position:fixed; } + .bp3-overlay.bp3-overlay-scroll-container.bp3-overlay-inline{ + position:absolute; } + .bp3-overlay.bp3-overlay-inline{ + display:inline; + overflow:visible; } + +.bp3-overlay-content{ + position:fixed; + z-index:20; } + .bp3-overlay-inline .bp3-overlay-content, + .bp3-overlay-scroll-container .bp3-overlay-content{ + position:absolute; } + +.bp3-overlay-backdrop{ + bottom:0; + left:0; + position:fixed; + right:0; + top:0; + opacity:1; + background-color:rgba(16, 22, 26, 0.7); + overflow:auto; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; + z-index:20; } + .bp3-overlay-backdrop.bp3-overlay-enter, .bp3-overlay-backdrop.bp3-overlay-appear{ + opacity:0; } + .bp3-overlay-backdrop.bp3-overlay-enter-active, .bp3-overlay-backdrop.bp3-overlay-appear-active{ + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-overlay-backdrop.bp3-overlay-exit{ + opacity:1; } + .bp3-overlay-backdrop.bp3-overlay-exit-active{ + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-overlay-backdrop:focus{ + outline:none; } + .bp3-overlay-inline .bp3-overlay-backdrop{ + position:absolute; } +.bp3-panel-stack{ + overflow:hidden; + position:relative; } + +.bp3-panel-stack-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + -webkit-box-shadow:0 1px rgba(16, 22, 26, 0.15); + box-shadow:0 1px rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-negative:0; + flex-shrink:0; + height:30px; + z-index:1; } + .bp3-dark .bp3-panel-stack-header{ + -webkit-box-shadow:0 1px rgba(255, 255, 255, 0.15); + box-shadow:0 1px rgba(255, 255, 255, 0.15); } + .bp3-panel-stack-header > span{ + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1; + flex:1; } + .bp3-panel-stack-header .bp3-heading{ + margin:0 5px; } + +.bp3-button.bp3-panel-stack-header-back{ + margin-left:5px; + padding-left:0; + white-space:nowrap; } + .bp3-button.bp3-panel-stack-header-back .bp3-icon{ + margin:0 2px; } + +.bp3-panel-stack-view{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; + background-color:#ffffff; + border-right:1px solid rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin-right:-1px; + overflow-y:auto; + z-index:1; } + .bp3-dark .bp3-panel-stack-view{ + background-color:#30404d; } + .bp3-panel-stack-view:nth-last-child(n + 4){ + display:none; } + +.bp3-panel-stack-push .bp3-panel-stack-enter, .bp3-panel-stack-push .bp3-panel-stack-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; } + +.bp3-panel-stack-push .bp3-panel-stack-enter-active, .bp3-panel-stack-push .bp3-panel-stack-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-push .bp3-panel-stack-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack-push .bp3-panel-stack-exit-active{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-pop .bp3-panel-stack-enter, .bp3-panel-stack-pop .bp3-panel-stack-appear{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; } + +.bp3-panel-stack-pop .bp3-panel-stack-enter-active, .bp3-panel-stack-pop .bp3-panel-stack-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack-pop .bp3-panel-stack-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack-pop .bp3-panel-stack-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } +.bp3-panel-stack2{ + overflow:hidden; + position:relative; } + +.bp3-panel-stack2-header{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + -webkit-box-shadow:0 1px rgba(16, 22, 26, 0.15); + box-shadow:0 1px rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -ms-flex-negative:0; + flex-shrink:0; + height:30px; + z-index:1; } + .bp3-dark .bp3-panel-stack2-header{ + -webkit-box-shadow:0 1px rgba(255, 255, 255, 0.15); + box-shadow:0 1px rgba(255, 255, 255, 0.15); } + .bp3-panel-stack2-header > span{ + -webkit-box-align:stretch; + -ms-flex-align:stretch; + align-items:stretch; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:1; + -ms-flex:1; + flex:1; } + .bp3-panel-stack2-header .bp3-heading{ + margin:0 5px; } + +.bp3-button.bp3-panel-stack2-header-back{ + margin-left:5px; + padding-left:0; + white-space:nowrap; } + .bp3-button.bp3-panel-stack2-header-back .bp3-icon{ + margin:0 2px; } + +.bp3-panel-stack2-view{ + bottom:0; + left:0; + position:absolute; + right:0; + top:0; + background-color:#ffffff; + border-right:1px solid rgba(16, 22, 26, 0.15); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + margin-right:-1px; + overflow-y:auto; + z-index:1; } + .bp3-dark .bp3-panel-stack2-view{ + background-color:#30404d; } + .bp3-panel-stack2-view:nth-last-child(n + 4){ + display:none; } + +.bp3-panel-stack2-push .bp3-panel-stack2-enter, .bp3-panel-stack2-push .bp3-panel-stack2-appear{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; } + +.bp3-panel-stack2-push .bp3-panel-stack2-enter-active, .bp3-panel-stack2-push .bp3-panel-stack2-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack2-push .bp3-panel-stack2-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack2-push .bp3-panel-stack2-exit-active{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack2-pop .bp3-panel-stack2-enter, .bp3-panel-stack2-pop .bp3-panel-stack2-appear{ + -webkit-transform:translateX(-50%); + transform:translateX(-50%); + opacity:0; } + +.bp3-panel-stack2-pop .bp3-panel-stack2-enter-active, .bp3-panel-stack2-pop .bp3-panel-stack2-appear-active{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } + +.bp3-panel-stack2-pop .bp3-panel-stack2-exit{ + -webkit-transform:translate(0%); + transform:translate(0%); + opacity:1; } + +.bp3-panel-stack2-pop .bp3-panel-stack2-exit-active{ + -webkit-transform:translateX(100%); + transform:translateX(100%); + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:400ms; + transition-duration:400ms; + -webkit-transition-property:opacity, -webkit-transform; + transition-property:opacity, -webkit-transform; + transition-property:transform, opacity; + transition-property:transform, opacity, -webkit-transform; + -webkit-transition-timing-function:ease; + transition-timing-function:ease; } +.bp3-popover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + -webkit-transform:scale(1); + transform:scale(1); + border-radius:3px; + display:inline-block; + z-index:20; } + .bp3-popover .bp3-popover-arrow{ + height:30px; + position:absolute; + width:30px; } + .bp3-popover .bp3-popover-arrow::before{ + height:20px; + margin:5px; + width:20px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover{ + margin-bottom:17px; + margin-top:-17px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow{ + bottom:-11px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(-90deg); + transform:rotate(-90deg); } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover{ + margin-left:17px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow{ + left:-11px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(0); + transform:rotate(0); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover{ + margin-top:17px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow{ + top:-11px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover{ + margin-left:-17px; + margin-right:17px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow{ + right:-11px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow svg{ + -webkit-transform:rotate(180deg); + transform:rotate(180deg); } + .bp3-tether-element-attached-middle > .bp3-popover > .bp3-popover-arrow{ + top:50%; + -webkit-transform:translateY(-50%); + transform:translateY(-50%); } + .bp3-tether-element-attached-center > .bp3-popover > .bp3-popover-arrow{ + right:50%; + -webkit-transform:translateX(50%); + transform:translateX(50%); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-top > .bp3-popover > .bp3-popover-arrow{ + top:-0.3934px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-right > .bp3-popover > .bp3-popover-arrow{ + right:-0.3934px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-left > .bp3-popover > .bp3-popover-arrow{ + left:-0.3934px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom > .bp3-popover > .bp3-popover-arrow{ + bottom:-0.3934px; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:top left; + transform-origin:top left; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:top center; + transform-origin:top center; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:top right; + transform-origin:top right; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:center left; + transform-origin:center left; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:center center; + transform-origin:center center; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:center right; + transform-origin:center right; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-left > .bp3-popover{ + -webkit-transform-origin:bottom left; + transform-origin:bottom left; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-center > .bp3-popover{ + -webkit-transform-origin:bottom center; + transform-origin:bottom center; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-right > .bp3-popover{ + -webkit-transform-origin:bottom right; + transform-origin:bottom right; } + .bp3-popover .bp3-popover-content{ + background:#ffffff; + color:inherit; } + .bp3-popover .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); } + .bp3-popover .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.1; } + .bp3-popover .bp3-popover-arrow-fill{ + fill:#ffffff; } + .bp3-popover-enter > .bp3-popover, .bp3-popover-appear > .bp3-popover{ + -webkit-transform:scale(0.3); + transform:scale(0.3); } + .bp3-popover-enter-active > .bp3-popover, .bp3-popover-appear-active > .bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-popover-exit > .bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-popover{ + -webkit-transform:scale(0.3); + transform:scale(0.3); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-popover .bp3-popover-content{ + border-radius:3px; + position:relative; } + .bp3-popover.bp3-popover-content-sizing .bp3-popover-content{ + max-width:350px; + padding:20px; } + .bp3-popover-target + .bp3-overlay .bp3-popover.bp3-popover-content-sizing{ + width:350px; } + .bp3-popover.bp3-minimal{ + margin:0 !important; } + .bp3-popover.bp3-minimal .bp3-popover-arrow{ + display:none; } + .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-enter > .bp3-popover.bp3-minimal.bp3-popover, .bp3-popover-appear > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-enter-active > .bp3-popover.bp3-minimal.bp3-popover, .bp3-popover-appear-active > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover-exit > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-popover.bp3-minimal.bp3-popover{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover.bp3-dark, + .bp3-dark .bp3-popover{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-popover.bp3-dark .bp3-popover-content, + .bp3-dark .bp3-popover .bp3-popover-content{ + background:#30404d; + color:inherit; } + .bp3-popover.bp3-dark .bp3-popover-arrow::before, + .bp3-dark .bp3-popover .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); } + .bp3-popover.bp3-dark .bp3-popover-arrow-border, + .bp3-dark .bp3-popover .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.2; } + .bp3-popover.bp3-dark .bp3-popover-arrow-fill, + .bp3-dark .bp3-popover .bp3-popover-arrow-fill{ + fill:#30404d; } + +.bp3-popover-arrow::before{ + border-radius:2px; + content:""; + display:block; + position:absolute; + -webkit-transform:rotate(45deg); + transform:rotate(45deg); } + +.bp3-tether-pinned .bp3-popover-arrow{ + display:none; } + +.bp3-popover-backdrop{ + background:rgba(255, 255, 255, 0); } + +.bp3-transition-container{ + opacity:1; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + z-index:20; } + .bp3-transition-container.bp3-popover-enter, .bp3-transition-container.bp3-popover-appear{ + opacity:0; } + .bp3-transition-container.bp3-popover-enter-active, .bp3-transition-container.bp3-popover-appear-active{ + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-transition-container.bp3-popover-exit{ + opacity:1; } + .bp3-transition-container.bp3-popover-exit-active{ + opacity:0; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:opacity; + transition-property:opacity; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-transition-container:focus{ + outline:none; } + .bp3-transition-container.bp3-popover-leave .bp3-popover-content{ + pointer-events:none; } + .bp3-transition-container[data-x-out-of-boundaries]{ + display:none; } + +span.bp3-popover-target{ + display:inline-block; } + +.bp3-popover-wrapper.bp3-fill{ + width:100%; } + +.bp3-portal{ + left:0; + position:absolute; + right:0; + top:0; } +@-webkit-keyframes linear-progress-bar-stripes{ + from{ + background-position:0 0; } + to{ + background-position:30px 0; } } +@keyframes linear-progress-bar-stripes{ + from{ + background-position:0 0; } + to{ + background-position:30px 0; } } + +.bp3-progress-bar{ + background:rgba(92, 112, 128, 0.2); + border-radius:40px; + display:block; + height:8px; + overflow:hidden; + position:relative; + width:100%; } + .bp3-progress-bar .bp3-progress-meter{ + background:linear-gradient(-45deg, rgba(255, 255, 255, 0.2) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.2) 50%, rgba(255, 255, 255, 0.2) 75%, transparent 75%); + background-color:rgba(92, 112, 128, 0.8); + background-size:30px 30px; + border-radius:40px; + height:100%; + position:absolute; + -webkit-transition:width 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:width 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + width:100%; } + .bp3-progress-bar:not(.bp3-no-animation):not(.bp3-no-stripes) .bp3-progress-meter{ + animation:linear-progress-bar-stripes 300ms linear infinite reverse; } + .bp3-progress-bar.bp3-no-stripes .bp3-progress-meter{ + background-image:none; } + +.bp3-dark .bp3-progress-bar{ + background:rgba(16, 22, 26, 0.5); } + .bp3-dark .bp3-progress-bar .bp3-progress-meter{ + background-color:#8a9ba8; } + +.bp3-progress-bar.bp3-intent-primary .bp3-progress-meter{ + background-color:#137cbd; } + +.bp3-progress-bar.bp3-intent-success .bp3-progress-meter{ + background-color:#0f9960; } + +.bp3-progress-bar.bp3-intent-warning .bp3-progress-meter{ + background-color:#d9822b; } + +.bp3-progress-bar.bp3-intent-danger .bp3-progress-meter{ + background-color:#db3737; } +@-webkit-keyframes skeleton-glow{ + from{ + background:rgba(206, 217, 224, 0.2); + border-color:rgba(206, 217, 224, 0.2); } + to{ + background:rgba(92, 112, 128, 0.2); + border-color:rgba(92, 112, 128, 0.2); } } +@keyframes skeleton-glow{ + from{ + background:rgba(206, 217, 224, 0.2); + border-color:rgba(206, 217, 224, 0.2); } + to{ + background:rgba(92, 112, 128, 0.2); + border-color:rgba(92, 112, 128, 0.2); } } +.bp3-skeleton{ + -webkit-animation:1000ms linear infinite alternate skeleton-glow; + animation:1000ms linear infinite alternate skeleton-glow; + background:rgba(206, 217, 224, 0.2); + background-clip:padding-box !important; + border-color:rgba(206, 217, 224, 0.2) !important; + border-radius:2px; + -webkit-box-shadow:none !important; + box-shadow:none !important; + color:transparent !important; + cursor:default; + pointer-events:none; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-skeleton::before, .bp3-skeleton::after, + .bp3-skeleton *{ + visibility:hidden !important; } +.bp3-slider{ + height:40px; + min-width:150px; + width:100%; + cursor:default; + outline:none; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-slider:hover{ + cursor:pointer; } + .bp3-slider:active{ + cursor:-webkit-grabbing; + cursor:grabbing; } + .bp3-slider.bp3-disabled{ + cursor:not-allowed; + opacity:0.5; } + .bp3-slider.bp3-slider-unlabeled{ + height:16px; } + +.bp3-slider-track, +.bp3-slider-progress{ + height:6px; + left:0; + right:0; + top:5px; + position:absolute; } + +.bp3-slider-track{ + border-radius:3px; + overflow:hidden; } + +.bp3-slider-progress{ + background:rgba(92, 112, 128, 0.2); } + .bp3-dark .bp3-slider-progress{ + background:rgba(16, 22, 26, 0.5); } + .bp3-slider-progress.bp3-intent-primary{ + background-color:#137cbd; } + .bp3-slider-progress.bp3-intent-success{ + background-color:#0f9960; } + .bp3-slider-progress.bp3-intent-warning{ + background-color:#d9822b; } + .bp3-slider-progress.bp3-intent-danger{ + background-color:#db3737; } + +.bp3-slider-handle{ + background-color:#f5f8fa; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.8)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.8), rgba(255, 255, 255, 0)); + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + color:#182026; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + cursor:pointer; + height:16px; + left:0; + position:absolute; + top:0; + width:16px; } + .bp3-slider-handle:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); } + .bp3-slider-handle:active, .bp3-slider-handle.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-slider-handle:disabled, .bp3-slider-handle.bp3-disabled{ + background-color:rgba(206, 217, 224, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; + outline:none; } + .bp3-slider-handle:disabled.bp3-active, .bp3-slider-handle:disabled.bp3-active:hover, .bp3-slider-handle.bp3-disabled.bp3-active, .bp3-slider-handle.bp3-disabled.bp3-active:hover{ + background:rgba(206, 217, 224, 0.7); } + .bp3-slider-handle:focus{ + z-index:1; } + .bp3-slider-handle:hover{ + background-clip:padding-box; + background-color:#ebf1f5; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 -1px 0 rgba(16, 22, 26, 0.1); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 1px 1px rgba(16, 22, 26, 0.2); + cursor:-webkit-grab; + cursor:grab; + z-index:2; } + .bp3-slider-handle.bp3-active{ + background-color:#d8e1e8; + background-image:none; + -webkit-box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:inset 0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 2px rgba(16, 22, 26, 0.2); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), inset 0 1px 1px rgba(16, 22, 26, 0.1); + cursor:-webkit-grabbing; + cursor:grabbing; } + .bp3-disabled .bp3-slider-handle{ + background:#bfccd6; + -webkit-box-shadow:none; + box-shadow:none; + pointer-events:none; } + .bp3-dark .bp3-slider-handle{ + background-color:#394b59; + background-image:-webkit-gradient(linear, left top, left bottom, from(rgba(255, 255, 255, 0.05)), to(rgba(255, 255, 255, 0))); + background-image:linear-gradient(to bottom, rgba(255, 255, 255, 0.05), rgba(255, 255, 255, 0)); + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + color:#f5f8fa; } + .bp3-dark .bp3-slider-handle:hover, .bp3-dark .bp3-slider-handle:active, .bp3-dark .bp3-slider-handle.bp3-active{ + color:#f5f8fa; } + .bp3-dark .bp3-slider-handle:hover{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-slider-handle:active, .bp3-dark .bp3-slider-handle.bp3-active{ + background-color:#202b33; + background-image:none; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.6), inset 0 1px 2px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-slider-handle:disabled, .bp3-dark .bp3-slider-handle.bp3-disabled{ + background-color:rgba(57, 75, 89, 0.5); + background-image:none; + -webkit-box-shadow:none; + box-shadow:none; + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-slider-handle:disabled.bp3-active, .bp3-dark .bp3-slider-handle.bp3-disabled.bp3-active{ + background:rgba(57, 75, 89, 0.7); } + .bp3-dark .bp3-slider-handle .bp3-button-spinner .bp3-spinner-head{ + background:rgba(16, 22, 26, 0.5); + stroke:#8a9ba8; } + .bp3-dark .bp3-slider-handle, .bp3-dark .bp3-slider-handle:hover{ + background-color:#394b59; } + .bp3-dark .bp3-slider-handle.bp3-active{ + background-color:#293742; } + .bp3-dark .bp3-disabled .bp3-slider-handle{ + background:#5c7080; + border-color:#5c7080; + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-slider-handle .bp3-slider-label{ + background:#394b59; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + color:#f5f8fa; + margin-left:8px; } + .bp3-dark .bp3-slider-handle .bp3-slider-label{ + background:#e1e8ed; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + color:#394b59; } + .bp3-disabled .bp3-slider-handle .bp3-slider-label{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-slider-handle.bp3-start, .bp3-slider-handle.bp3-end{ + width:8px; } + .bp3-slider-handle.bp3-start{ + border-bottom-right-radius:0; + border-top-right-radius:0; } + .bp3-slider-handle.bp3-end{ + border-bottom-left-radius:0; + border-top-left-radius:0; + margin-left:8px; } + .bp3-slider-handle.bp3-end .bp3-slider-label{ + margin-left:0; } + +.bp3-slider-label{ + -webkit-transform:translate(-50%, 20px); + transform:translate(-50%, 20px); + display:inline-block; + font-size:12px; + line-height:1; + padding:2px 5px; + position:absolute; + vertical-align:top; } + +.bp3-slider.bp3-vertical{ + height:150px; + min-width:40px; + width:40px; } + .bp3-slider.bp3-vertical .bp3-slider-track, + .bp3-slider.bp3-vertical .bp3-slider-progress{ + bottom:0; + height:auto; + left:5px; + top:0; + width:6px; } + .bp3-slider.bp3-vertical .bp3-slider-progress{ + top:auto; } + .bp3-slider.bp3-vertical .bp3-slider-label{ + -webkit-transform:translate(20px, 50%); + transform:translate(20px, 50%); } + .bp3-slider.bp3-vertical .bp3-slider-handle{ + top:auto; } + .bp3-slider.bp3-vertical .bp3-slider-handle .bp3-slider-label{ + margin-left:0; + margin-top:-8px; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end, .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start{ + height:8px; + margin-left:0; + width:16px; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start{ + border-bottom-right-radius:3px; + border-top-left-radius:0; } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-start .bp3-slider-label{ + -webkit-transform:translate(20px); + transform:translate(20px); } + .bp3-slider.bp3-vertical .bp3-slider-handle.bp3-end{ + border-bottom-left-radius:0; + border-bottom-right-radius:0; + border-top-left-radius:3px; + margin-bottom:8px; } + +@-webkit-keyframes pt-spinner-animation{ + from{ + -webkit-transform:rotate(0deg); + transform:rotate(0deg); } + to{ + -webkit-transform:rotate(360deg); + transform:rotate(360deg); } } + +@keyframes pt-spinner-animation{ + from{ + -webkit-transform:rotate(0deg); + transform:rotate(0deg); } + to{ + -webkit-transform:rotate(360deg); + transform:rotate(360deg); } } + +.bp3-spinner{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-pack:center; + -ms-flex-pack:center; + justify-content:center; + overflow:visible; + vertical-align:middle; } + .bp3-spinner svg{ + display:block; } + .bp3-spinner path{ + fill-opacity:0; } + .bp3-spinner .bp3-spinner-head{ + stroke:rgba(92, 112, 128, 0.8); + stroke-linecap:round; + -webkit-transform-origin:center; + transform-origin:center; + -webkit-transition:stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:stroke-dashoffset 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-spinner .bp3-spinner-track{ + stroke:rgba(92, 112, 128, 0.2); } + +.bp3-spinner-animation{ + -webkit-animation:pt-spinner-animation 500ms linear infinite; + animation:pt-spinner-animation 500ms linear infinite; } + .bp3-no-spin > .bp3-spinner-animation{ + -webkit-animation:none; + animation:none; } + +.bp3-dark .bp3-spinner .bp3-spinner-head{ + stroke:#8a9ba8; } + +.bp3-dark .bp3-spinner .bp3-spinner-track{ + stroke:rgba(16, 22, 26, 0.5); } + +.bp3-spinner.bp3-intent-primary .bp3-spinner-head{ + stroke:#137cbd; } + +.bp3-spinner.bp3-intent-success .bp3-spinner-head{ + stroke:#0f9960; } + +.bp3-spinner.bp3-intent-warning .bp3-spinner-head{ + stroke:#d9822b; } + +.bp3-spinner.bp3-intent-danger .bp3-spinner-head{ + stroke:#db3737; } +.bp3-tabs.bp3-vertical{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + .bp3-tabs.bp3-vertical > .bp3-tab-list{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab{ + border-radius:3px; + padding:0 10px; + width:100%; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab[aria-selected="true"]{ + background-color:rgba(19, 124, 189, 0.2); + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-tabs.bp3-vertical > .bp3-tab-list .bp3-tab-indicator-wrapper .bp3-tab-indicator{ + background-color:rgba(19, 124, 189, 0.2); + border-radius:3px; + bottom:0; + height:auto; + left:0; + right:0; + top:0; } + .bp3-tabs.bp3-vertical > .bp3-tab-panel{ + margin-top:0; + padding-left:20px; } + +.bp3-tab-list{ + -webkit-box-align:end; + -ms-flex-align:end; + align-items:flex-end; + border:none; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + list-style:none; + margin:0; + padding:0; + position:relative; } + .bp3-tab-list > *:not(:last-child){ + margin-right:20px; } + +.bp3-tab{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + color:#182026; + cursor:pointer; + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + font-size:14px; + line-height:30px; + max-width:100%; + position:relative; + vertical-align:top; } + .bp3-tab a{ + color:inherit; + display:block; + text-decoration:none; } + .bp3-tab-indicator-wrapper ~ .bp3-tab{ + background-color:transparent !important; + -webkit-box-shadow:none !important; + box-shadow:none !important; } + .bp3-tab[aria-disabled="true"]{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + .bp3-tab[aria-selected="true"]{ + border-radius:0; + -webkit-box-shadow:inset 0 -3px 0 #106ba3; + box-shadow:inset 0 -3px 0 #106ba3; } + .bp3-tab[aria-selected="true"], .bp3-tab:not([aria-disabled="true"]):hover{ + color:#106ba3; } + .bp3-tab:focus{ + -moz-outline-radius:0; } + .bp3-large > .bp3-tab{ + font-size:16px; + line-height:40px; } + +.bp3-tab-panel{ + margin-top:20px; } + .bp3-tab-panel[aria-hidden="true"]{ + display:none; } + +.bp3-tab-indicator-wrapper{ + left:0; + pointer-events:none; + position:absolute; + top:0; + -webkit-transform:translateX(0), translateY(0); + transform:translateX(0), translateY(0); + -webkit-transition:height, width, -webkit-transform; + transition:height, width, -webkit-transform; + transition:height, transform, width; + transition:height, transform, width, -webkit-transform; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tab-indicator-wrapper .bp3-tab-indicator{ + background-color:#106ba3; + bottom:0; + height:3px; + left:0; + position:absolute; + right:0; } + .bp3-tab-indicator-wrapper.bp3-no-animation{ + -webkit-transition:none; + transition:none; } + +.bp3-dark .bp3-tab{ + color:#f5f8fa; } + .bp3-dark .bp3-tab[aria-disabled="true"]{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tab[aria-selected="true"]{ + -webkit-box-shadow:inset 0 -3px 0 #48aff0; + box-shadow:inset 0 -3px 0 #48aff0; } + .bp3-dark .bp3-tab[aria-selected="true"], .bp3-dark .bp3-tab:not([aria-disabled="true"]):hover{ + color:#48aff0; } + +.bp3-dark .bp3-tab-indicator{ + background-color:#48aff0; } + +.bp3-flex-expander{ + -webkit-box-flex:1; + -ms-flex:1 1; + flex:1 1; } +.bp3-tag{ + display:-webkit-inline-box; + display:-ms-inline-flexbox; + display:inline-flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + background-color:#5c7080; + border:none; + border-radius:3px; + -webkit-box-shadow:none; + box-shadow:none; + color:#f5f8fa; + font-size:12px; + line-height:16px; + max-width:100%; + min-height:20px; + min-width:20px; + padding:2px 6px; + position:relative; } + .bp3-tag.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-interactive:hover{ + background-color:rgba(92, 112, 128, 0.85); } + .bp3-tag.bp3-interactive.bp3-active, .bp3-tag.bp3-interactive:active{ + background-color:rgba(92, 112, 128, 0.7); } + .bp3-tag > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag::before, + .bp3-tag > *{ + margin-right:4px; } + .bp3-tag:empty::before, + .bp3-tag > :last-child{ + margin-right:0; } + .bp3-tag:focus{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:0; + -moz-outline-radius:6px; } + .bp3-tag.bp3-round{ + border-radius:30px; + padding-left:8px; + padding-right:8px; } + .bp3-dark .bp3-tag{ + background-color:#bfccd6; + color:#182026; } + .bp3-dark .bp3-tag.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-interactive:hover{ + background-color:rgba(191, 204, 214, 0.85); } + .bp3-dark .bp3-tag.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-interactive:active{ + background-color:rgba(191, 204, 214, 0.7); } + .bp3-dark .bp3-tag > .bp3-icon, .bp3-dark .bp3-tag .bp3-icon-standard, .bp3-dark .bp3-tag .bp3-icon-large{ + fill:currentColor; } + .bp3-tag > .bp3-icon, .bp3-tag .bp3-icon-standard, .bp3-tag .bp3-icon-large{ + fill:#ffffff; } + .bp3-tag.bp3-large, + .bp3-large .bp3-tag{ + font-size:14px; + line-height:20px; + min-height:30px; + min-width:30px; + padding:5px 10px; } + .bp3-tag.bp3-large::before, + .bp3-tag.bp3-large > *, + .bp3-large .bp3-tag::before, + .bp3-large .bp3-tag > *{ + margin-right:7px; } + .bp3-tag.bp3-large:empty::before, + .bp3-tag.bp3-large > :last-child, + .bp3-large .bp3-tag:empty::before, + .bp3-large .bp3-tag > :last-child{ + margin-right:0; } + .bp3-tag.bp3-large.bp3-round, + .bp3-large .bp3-tag.bp3-round{ + padding-left:12px; + padding-right:12px; } + .bp3-tag.bp3-intent-primary{ + background:#137cbd; + color:#ffffff; } + .bp3-tag.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.85); } + .bp3-tag.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.7); } + .bp3-tag.bp3-intent-success{ + background:#0f9960; + color:#ffffff; } + .bp3-tag.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.85); } + .bp3-tag.bp3-intent-success.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.7); } + .bp3-tag.bp3-intent-warning{ + background:#d9822b; + color:#ffffff; } + .bp3-tag.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.85); } + .bp3-tag.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.7); } + .bp3-tag.bp3-intent-danger{ + background:#db3737; + color:#ffffff; } + .bp3-tag.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.85); } + .bp3-tag.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-tag.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.7); } + .bp3-tag.bp3-fill{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + width:100%; } + .bp3-tag.bp3-minimal > .bp3-icon, .bp3-tag.bp3-minimal .bp3-icon-standard, .bp3-tag.bp3-minimal .bp3-icon-large{ + fill:#5c7080; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]){ + background-color:rgba(138, 155, 168, 0.2); + color:#182026; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover{ + background-color:rgba(92, 112, 128, 0.3); } + .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active, .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active{ + background-color:rgba(92, 112, 128, 0.4); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]){ + color:#f5f8fa; } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:hover{ + background-color:rgba(191, 204, 214, 0.3); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]).bp3-interactive:active{ + background-color:rgba(191, 204, 214, 0.4); } + .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) > .bp3-icon, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-standard, .bp3-dark .bp3-tag.bp3-minimal:not([class*="bp3-intent-"]) .bp3-icon-large{ + fill:#a7b6c2; } + .bp3-tag.bp3-minimal.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.15); + color:#106ba3; } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-primary > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-primary .bp3-icon-large{ + fill:#137cbd; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary{ + background-color:rgba(19, 124, 189, 0.25); + color:#48aff0; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:hover{ + background-color:rgba(19, 124, 189, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-primary.bp3-interactive:active{ + background-color:rgba(19, 124, 189, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.15); + color:#0d8050; } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-success > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-success .bp3-icon-large{ + fill:#0f9960; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success{ + background-color:rgba(15, 153, 96, 0.25); + color:#3dcc91; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:hover{ + background-color:rgba(15, 153, 96, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-success.bp3-interactive:active{ + background-color:rgba(15, 153, 96, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.15); + color:#bf7326; } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-warning > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-warning .bp3-icon-large{ + fill:#d9822b; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning{ + background-color:rgba(217, 130, 43, 0.25); + color:#ffb366; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:hover{ + background-color:rgba(217, 130, 43, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-warning.bp3-interactive:active{ + background-color:rgba(217, 130, 43, 0.45); } + .bp3-tag.bp3-minimal.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.15); + color:#c23030; } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.25); } + .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.35); } + .bp3-tag.bp3-minimal.bp3-intent-danger > .bp3-icon, .bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-standard, .bp3-tag.bp3-minimal.bp3-intent-danger .bp3-icon-large{ + fill:#db3737; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger{ + background-color:rgba(219, 55, 55, 0.25); + color:#ff7373; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive{ + cursor:pointer; } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:hover{ + background-color:rgba(219, 55, 55, 0.35); } + .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive.bp3-active, .bp3-dark .bp3-tag.bp3-minimal.bp3-intent-danger.bp3-interactive:active{ + background-color:rgba(219, 55, 55, 0.45); } + +.bp3-tag-remove{ + background:none; + border:none; + color:inherit; + cursor:pointer; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + margin-bottom:-2px; + margin-right:-6px !important; + margin-top:-2px; + opacity:0.5; + padding:2px; + padding-left:0; } + .bp3-tag-remove:hover{ + background:none; + opacity:0.8; + text-decoration:none; } + .bp3-tag-remove:active{ + opacity:1; } + .bp3-tag-remove:empty::before{ + font-family:"Icons16", sans-serif; + font-size:16px; + font-style:normal; + font-weight:400; + line-height:1; + -moz-osx-font-smoothing:grayscale; + -webkit-font-smoothing:antialiased; + content:""; } + .bp3-large .bp3-tag-remove{ + margin-right:-10px !important; + padding:0 5px 0 0; } + .bp3-large .bp3-tag-remove:empty::before{ + font-family:"Icons20", sans-serif; + font-size:20px; + font-style:normal; + font-weight:400; + line-height:1; } +.bp3-tag-input{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + cursor:text; + height:auto; + line-height:inherit; + min-height:30px; + padding-left:5px; + padding-right:0; } + .bp3-tag-input > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag-input > .bp3-tag-input-values{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag-input .bp3-tag-input-icon{ + color:#5c7080; + margin-left:2px; + margin-right:7px; + margin-top:7px; } + .bp3-tag-input .bp3-tag-input-values{ + display:-webkit-box; + display:-ms-flexbox; + display:flex; + -webkit-box-orient:horizontal; + -webkit-box-direction:normal; + -ms-flex-direction:row; + flex-direction:row; + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + -ms-flex-item-align:stretch; + align-self:stretch; + -ms-flex-wrap:wrap; + flex-wrap:wrap; + margin-right:7px; + margin-top:5px; + min-width:0; } + .bp3-tag-input .bp3-tag-input-values > *{ + -webkit-box-flex:0; + -ms-flex-positive:0; + flex-grow:0; + -ms-flex-negative:0; + flex-shrink:0; } + .bp3-tag-input .bp3-tag-input-values > .bp3-fill{ + -webkit-box-flex:1; + -ms-flex-positive:1; + flex-grow:1; + -ms-flex-negative:1; + flex-shrink:1; } + .bp3-tag-input .bp3-tag-input-values::before, + .bp3-tag-input .bp3-tag-input-values > *{ + margin-right:5px; } + .bp3-tag-input .bp3-tag-input-values:empty::before, + .bp3-tag-input .bp3-tag-input-values > :last-child{ + margin-right:0; } + .bp3-tag-input .bp3-tag-input-values:first-child .bp3-input-ghost:first-child{ + padding-left:5px; } + .bp3-tag-input .bp3-tag-input-values > *{ + margin-bottom:5px; } + .bp3-tag-input .bp3-tag{ + overflow-wrap:break-word; } + .bp3-tag-input .bp3-tag.bp3-active{ + outline:rgba(19, 124, 189, 0.6) auto 2px; + outline-offset:0; + -moz-outline-radius:6px; } + .bp3-tag-input .bp3-input-ghost{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + line-height:20px; + width:80px; } + .bp3-tag-input .bp3-input-ghost:disabled, .bp3-tag-input .bp3-input-ghost.bp3-disabled{ + cursor:not-allowed; } + .bp3-tag-input .bp3-button, + .bp3-tag-input .bp3-spinner{ + margin:3px; + margin-left:0; } + .bp3-tag-input .bp3-button{ + min-height:24px; + min-width:24px; + padding:0 7px; } + .bp3-tag-input.bp3-large{ + height:auto; + min-height:40px; } + .bp3-tag-input.bp3-large::before, + .bp3-tag-input.bp3-large > *{ + margin-right:10px; } + .bp3-tag-input.bp3-large:empty::before, + .bp3-tag-input.bp3-large > :last-child{ + margin-right:0; } + .bp3-tag-input.bp3-large .bp3-tag-input-icon{ + margin-left:5px; + margin-top:10px; } + .bp3-tag-input.bp3-large .bp3-input-ghost{ + line-height:30px; } + .bp3-tag-input.bp3-large .bp3-button{ + min-height:30px; + min-width:30px; + padding:5px 10px; + margin:5px; + margin-left:0; } + .bp3-tag-input.bp3-large .bp3-spinner{ + margin:8px; + margin-left:0; } + .bp3-tag-input.bp3-active{ + background-color:#ffffff; + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-success{ + -webkit-box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-tag-input.bp3-active.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.2); } + .bp3-dark .bp3-tag-input .bp3-tag-input-icon, .bp3-tag-input.bp3-dark .bp3-tag-input-icon{ + color:#a7b6c2; } + .bp3-dark .bp3-tag-input .bp3-input-ghost, .bp3-tag-input.bp3-dark .bp3-input-ghost{ + color:#f5f8fa; } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-webkit-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-webkit-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-moz-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-moz-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost:-ms-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost:-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::-ms-input-placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::-ms-input-placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input .bp3-input-ghost::placeholder, .bp3-tag-input.bp3-dark .bp3-input-ghost::placeholder{ + color:rgba(167, 182, 194, 0.6); } + .bp3-dark .bp3-tag-input.bp3-active, .bp3-tag-input.bp3-dark.bp3-active{ + background-color:rgba(16, 22, 26, 0.3); + -webkit-box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #137cbd, 0 0 0 1px #137cbd, 0 0 0 3px rgba(19, 124, 189, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-primary, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-primary{ + -webkit-box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #106ba3, 0 0 0 3px rgba(16, 107, 163, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-success, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-success{ + -webkit-box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #0d8050, 0 0 0 3px rgba(13, 128, 80, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-warning, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-warning{ + -webkit-box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #bf7326, 0 0 0 3px rgba(191, 115, 38, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + .bp3-dark .bp3-tag-input.bp3-active.bp3-intent-danger, .bp3-tag-input.bp3-dark.bp3-active.bp3-intent-danger{ + -webkit-box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px #c23030, 0 0 0 3px rgba(194, 48, 48, 0.3), inset 0 0 0 1px rgba(16, 22, 26, 0.3), inset 0 1px 1px rgba(16, 22, 26, 0.4); } + +.bp3-input-ghost{ + background:none; + border:none; + -webkit-box-shadow:none; + box-shadow:none; + padding:0; } + .bp3-input-ghost::-webkit-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::-moz-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost:-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::-ms-input-placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost::placeholder{ + color:rgba(92, 112, 128, 0.6); + opacity:1; } + .bp3-input-ghost:focus{ + outline:none !important; } +.bp3-toast{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + display:-webkit-box; + display:-ms-flexbox; + display:flex; + margin:20px 0 0; + max-width:500px; + min-width:300px; + pointer-events:all; + position:relative !important; } + .bp3-toast.bp3-toast-enter, .bp3-toast.bp3-toast-appear{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); } + .bp3-toast.bp3-toast-enter-active, .bp3-toast.bp3-toast-appear-active{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-toast.bp3-toast-enter ~ .bp3-toast, .bp3-toast.bp3-toast-appear ~ .bp3-toast{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); } + .bp3-toast.bp3-toast-enter-active ~ .bp3-toast, .bp3-toast.bp3-toast-appear-active ~ .bp3-toast{ + -webkit-transform:translateY(0); + transform:translateY(0); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); + transition-timing-function:cubic-bezier(0.54, 1.12, 0.38, 1.11); } + .bp3-toast.bp3-toast-exit{ + opacity:1; + -webkit-filter:blur(0); + filter:blur(0); } + .bp3-toast.bp3-toast-exit-active{ + opacity:0; + -webkit-filter:blur(10px); + filter:blur(10px); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:300ms; + transition-duration:300ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:opacity, filter; + transition-property:opacity, filter, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-toast.bp3-toast-exit ~ .bp3-toast{ + -webkit-transform:translateY(0); + transform:translateY(0); } + .bp3-toast.bp3-toast-exit-active ~ .bp3-toast{ + -webkit-transform:translateY(-40px); + transform:translateY(-40px); + -webkit-transition-delay:50ms; + transition-delay:50ms; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-toast .bp3-button-group{ + -webkit-box-flex:0; + -ms-flex:0 0 auto; + flex:0 0 auto; + padding:5px; + padding-left:0; } + .bp3-toast > .bp3-icon{ + color:#5c7080; + margin:12px; + margin-right:0; } + .bp3-toast.bp3-dark, + .bp3-dark .bp3-toast{ + background-color:#394b59; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-toast.bp3-dark > .bp3-icon, + .bp3-dark .bp3-toast > .bp3-icon{ + color:#a7b6c2; } + .bp3-toast[class*="bp3-intent-"] a{ + color:rgba(255, 255, 255, 0.7); } + .bp3-toast[class*="bp3-intent-"] a:hover{ + color:#ffffff; } + .bp3-toast[class*="bp3-intent-"] > .bp3-icon{ + color:#ffffff; } + .bp3-toast[class*="bp3-intent-"] .bp3-button, .bp3-toast[class*="bp3-intent-"] .bp3-button::before, + .bp3-toast[class*="bp3-intent-"] .bp3-button .bp3-icon, .bp3-toast[class*="bp3-intent-"] .bp3-button:active{ + color:rgba(255, 255, 255, 0.7) !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button:focus{ + outline-color:rgba(255, 255, 255, 0.5); } + .bp3-toast[class*="bp3-intent-"] .bp3-button:hover{ + background-color:rgba(255, 255, 255, 0.15) !important; + color:#ffffff !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button:active{ + background-color:rgba(255, 255, 255, 0.3) !important; + color:#ffffff !important; } + .bp3-toast[class*="bp3-intent-"] .bp3-button::after{ + background:rgba(255, 255, 255, 0.3) !important; } + .bp3-toast.bp3-intent-primary{ + background-color:#137cbd; + color:#ffffff; } + .bp3-toast.bp3-intent-success{ + background-color:#0f9960; + color:#ffffff; } + .bp3-toast.bp3-intent-warning{ + background-color:#d9822b; + color:#ffffff; } + .bp3-toast.bp3-intent-danger{ + background-color:#db3737; + color:#ffffff; } + +.bp3-toast-message{ + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + padding:11px; + word-break:break-word; } + +.bp3-toast-container{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box !important; + display:-ms-flexbox !important; + display:flex !important; + -webkit-box-orient:vertical; + -webkit-box-direction:normal; + -ms-flex-direction:column; + flex-direction:column; + left:0; + overflow:hidden; + padding:0 20px 20px; + pointer-events:none; + right:0; + z-index:40; } + .bp3-toast-container.bp3-toast-container-in-portal{ + position:fixed; } + .bp3-toast-container.bp3-toast-container-inline{ + position:absolute; } + .bp3-toast-container.bp3-toast-container-top{ + top:0; } + .bp3-toast-container.bp3-toast-container-bottom{ + bottom:0; + -webkit-box-orient:vertical; + -webkit-box-direction:reverse; + -ms-flex-direction:column-reverse; + flex-direction:column-reverse; + top:auto; } + .bp3-toast-container.bp3-toast-container-left{ + -webkit-box-align:start; + -ms-flex-align:start; + align-items:flex-start; } + .bp3-toast-container.bp3-toast-container-right{ + -webkit-box-align:end; + -ms-flex-align:end; + align-items:flex-end; } + +.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active), +.bp3-toast-container-bottom .bp3-toast.bp3-toast-enter:not(.bp3-toast-enter-active) ~ .bp3-toast, .bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active), +.bp3-toast-container-bottom .bp3-toast.bp3-toast-appear:not(.bp3-toast-appear-active) ~ .bp3-toast, +.bp3-toast-container-bottom .bp3-toast.bp3-toast-exit-active ~ .bp3-toast, +.bp3-toast-container-bottom .bp3-toast.bp3-toast-leave-active ~ .bp3-toast{ + -webkit-transform:translateY(60px); + transform:translateY(60px); } +.bp3-tooltip{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 2px 4px rgba(16, 22, 26, 0.2), 0 8px 24px rgba(16, 22, 26, 0.2); + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-tooltip .bp3-popover-arrow{ + height:22px; + position:absolute; + width:22px; } + .bp3-tooltip .bp3-popover-arrow::before{ + height:14px; + margin:4px; + width:14px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip{ + margin-bottom:11px; + margin-top:-11px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow{ + bottom:-8px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(-90deg); + transform:rotate(-90deg); } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip{ + margin-left:11px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow{ + left:-8px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(0); + transform:rotate(0); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip{ + margin-top:11px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow{ + top:-8px; } + .bp3-tether-element-attached-top.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip{ + margin-left:-11px; + margin-right:11px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow{ + right:-8px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow svg{ + -webkit-transform:rotate(180deg); + transform:rotate(180deg); } + .bp3-tether-element-attached-middle > .bp3-tooltip > .bp3-popover-arrow{ + top:50%; + -webkit-transform:translateY(-50%); + transform:translateY(-50%); } + .bp3-tether-element-attached-center > .bp3-tooltip > .bp3-popover-arrow{ + right:50%; + -webkit-transform:translateX(50%); + transform:translateX(50%); } + .bp3-tether-element-attached-top.bp3-tether-target-attached-top > .bp3-tooltip > .bp3-popover-arrow{ + top:-0.22183px; } + .bp3-tether-element-attached-right.bp3-tether-target-attached-right > .bp3-tooltip > .bp3-popover-arrow{ + right:-0.22183px; } + .bp3-tether-element-attached-left.bp3-tether-target-attached-left > .bp3-tooltip > .bp3-popover-arrow{ + left:-0.22183px; } + .bp3-tether-element-attached-bottom.bp3-tether-target-attached-bottom > .bp3-tooltip > .bp3-popover-arrow{ + bottom:-0.22183px; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:top left; + transform-origin:top left; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:top center; + transform-origin:top center; } + .bp3-tether-element-attached-top.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:top right; + transform-origin:top right; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:center left; + transform-origin:center left; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:center center; + transform-origin:center center; } + .bp3-tether-element-attached-middle.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:center right; + transform-origin:center right; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-left > .bp3-tooltip{ + -webkit-transform-origin:bottom left; + transform-origin:bottom left; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-center > .bp3-tooltip{ + -webkit-transform-origin:bottom center; + transform-origin:bottom center; } + .bp3-tether-element-attached-bottom.bp3-tether-element-attached-right > .bp3-tooltip{ + -webkit-transform-origin:bottom right; + transform-origin:bottom right; } + .bp3-tooltip .bp3-popover-content{ + background:#394b59; + color:#f5f8fa; } + .bp3-tooltip .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.2); } + .bp3-tooltip .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.1; } + .bp3-tooltip .bp3-popover-arrow-fill{ + fill:#394b59; } + .bp3-popover-enter > .bp3-tooltip, .bp3-popover-appear > .bp3-tooltip{ + -webkit-transform:scale(0.8); + transform:scale(0.8); } + .bp3-popover-enter-active > .bp3-tooltip, .bp3-popover-appear-active > .bp3-tooltip{ + -webkit-transform:scale(1); + transform:scale(1); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-popover-exit > .bp3-tooltip{ + -webkit-transform:scale(1); + transform:scale(1); } + .bp3-popover-exit-active > .bp3-tooltip{ + -webkit-transform:scale(0.8); + transform:scale(0.8); + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:100ms; + transition-duration:100ms; + -webkit-transition-property:-webkit-transform; + transition-property:-webkit-transform; + transition-property:transform; + transition-property:transform, -webkit-transform; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tooltip .bp3-popover-content{ + padding:10px 12px; } + .bp3-tooltip.bp3-dark, + .bp3-dark .bp3-tooltip{ + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 2px 4px rgba(16, 22, 26, 0.4), 0 8px 24px rgba(16, 22, 26, 0.4); } + .bp3-tooltip.bp3-dark .bp3-popover-content, + .bp3-dark .bp3-tooltip .bp3-popover-content{ + background:#e1e8ed; + color:#394b59; } + .bp3-tooltip.bp3-dark .bp3-popover-arrow::before, + .bp3-dark .bp3-tooltip .bp3-popover-arrow::before{ + -webkit-box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); + box-shadow:1px 1px 6px rgba(16, 22, 26, 0.4); } + .bp3-tooltip.bp3-dark .bp3-popover-arrow-border, + .bp3-dark .bp3-tooltip .bp3-popover-arrow-border{ + fill:#10161a; + fill-opacity:0.2; } + .bp3-tooltip.bp3-dark .bp3-popover-arrow-fill, + .bp3-dark .bp3-tooltip .bp3-popover-arrow-fill{ + fill:#e1e8ed; } + .bp3-tooltip.bp3-intent-primary .bp3-popover-content{ + background:#137cbd; + color:#ffffff; } + .bp3-tooltip.bp3-intent-primary .bp3-popover-arrow-fill{ + fill:#137cbd; } + .bp3-tooltip.bp3-intent-success .bp3-popover-content{ + background:#0f9960; + color:#ffffff; } + .bp3-tooltip.bp3-intent-success .bp3-popover-arrow-fill{ + fill:#0f9960; } + .bp3-tooltip.bp3-intent-warning .bp3-popover-content{ + background:#d9822b; + color:#ffffff; } + .bp3-tooltip.bp3-intent-warning .bp3-popover-arrow-fill{ + fill:#d9822b; } + .bp3-tooltip.bp3-intent-danger .bp3-popover-content{ + background:#db3737; + color:#ffffff; } + .bp3-tooltip.bp3-intent-danger .bp3-popover-arrow-fill{ + fill:#db3737; } + +.bp3-tooltip-indicator{ + border-bottom:dotted 1px; + cursor:help; } +.bp3-tree .bp3-icon, .bp3-tree .bp3-icon-standard, .bp3-tree .bp3-icon-large{ + color:#5c7080; } + .bp3-tree .bp3-icon.bp3-intent-primary, .bp3-tree .bp3-icon-standard.bp3-intent-primary, .bp3-tree .bp3-icon-large.bp3-intent-primary{ + color:#137cbd; } + .bp3-tree .bp3-icon.bp3-intent-success, .bp3-tree .bp3-icon-standard.bp3-intent-success, .bp3-tree .bp3-icon-large.bp3-intent-success{ + color:#0f9960; } + .bp3-tree .bp3-icon.bp3-intent-warning, .bp3-tree .bp3-icon-standard.bp3-intent-warning, .bp3-tree .bp3-icon-large.bp3-intent-warning{ + color:#d9822b; } + .bp3-tree .bp3-icon.bp3-intent-danger, .bp3-tree .bp3-icon-standard.bp3-intent-danger, .bp3-tree .bp3-icon-large.bp3-intent-danger{ + color:#db3737; } + +.bp3-tree-node-list{ + list-style:none; + margin:0; + padding-left:0; } + +.bp3-tree-root{ + background-color:transparent; + cursor:default; + padding-left:0; + position:relative; } + +.bp3-tree-node-content-0{ + padding-left:0px; } + +.bp3-tree-node-content-1{ + padding-left:23px; } + +.bp3-tree-node-content-2{ + padding-left:46px; } + +.bp3-tree-node-content-3{ + padding-left:69px; } + +.bp3-tree-node-content-4{ + padding-left:92px; } + +.bp3-tree-node-content-5{ + padding-left:115px; } + +.bp3-tree-node-content-6{ + padding-left:138px; } + +.bp3-tree-node-content-7{ + padding-left:161px; } + +.bp3-tree-node-content-8{ + padding-left:184px; } + +.bp3-tree-node-content-9{ + padding-left:207px; } + +.bp3-tree-node-content-10{ + padding-left:230px; } + +.bp3-tree-node-content-11{ + padding-left:253px; } + +.bp3-tree-node-content-12{ + padding-left:276px; } + +.bp3-tree-node-content-13{ + padding-left:299px; } + +.bp3-tree-node-content-14{ + padding-left:322px; } + +.bp3-tree-node-content-15{ + padding-left:345px; } + +.bp3-tree-node-content-16{ + padding-left:368px; } + +.bp3-tree-node-content-17{ + padding-left:391px; } + +.bp3-tree-node-content-18{ + padding-left:414px; } + +.bp3-tree-node-content-19{ + padding-left:437px; } + +.bp3-tree-node-content-20{ + padding-left:460px; } + +.bp3-tree-node-content{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; + height:30px; + padding-right:5px; + width:100%; } + .bp3-tree-node-content:hover{ + background-color:rgba(191, 204, 214, 0.4); } + +.bp3-tree-node-caret, +.bp3-tree-node-caret-none{ + min-width:30px; } + +.bp3-tree-node-caret{ + color:#5c7080; + cursor:pointer; + padding:7px; + -webkit-transform:rotate(0deg); + transform:rotate(0deg); + -webkit-transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:-webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); + transition:transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9), -webkit-transform 200ms cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-tree-node-caret:hover{ + color:#182026; } + .bp3-dark .bp3-tree-node-caret{ + color:#a7b6c2; } + .bp3-dark .bp3-tree-node-caret:hover{ + color:#f5f8fa; } + .bp3-tree-node-caret.bp3-tree-node-caret-open{ + -webkit-transform:rotate(90deg); + transform:rotate(90deg); } + .bp3-tree-node-caret.bp3-icon-standard::before{ + content:""; } + +.bp3-tree-node-icon{ + margin-right:7px; + position:relative; } + +.bp3-tree-node-label{ + overflow:hidden; + text-overflow:ellipsis; + white-space:nowrap; + word-wrap:normal; + -webkit-box-flex:1; + -ms-flex:1 1 auto; + flex:1 1 auto; + position:relative; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-tree-node-label span{ + display:inline; } + +.bp3-tree-node-secondary-label{ + padding:0 5px; + -webkit-user-select:none; + -moz-user-select:none; + -ms-user-select:none; + user-select:none; } + .bp3-tree-node-secondary-label .bp3-popover-wrapper, + .bp3-tree-node-secondary-label .bp3-popover-target{ + -webkit-box-align:center; + -ms-flex-align:center; + align-items:center; + display:-webkit-box; + display:-ms-flexbox; + display:flex; } + +.bp3-tree-node.bp3-disabled .bp3-tree-node-content{ + background-color:inherit; + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-tree-node.bp3-disabled .bp3-tree-node-caret, +.bp3-tree-node.bp3-disabled .bp3-tree-node-icon{ + color:rgba(92, 112, 128, 0.6); + cursor:not-allowed; } + +.bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content{ + background-color:#137cbd; } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content, + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon, .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon-standard, .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-icon-large{ + color:#ffffff; } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-tree-node-caret::before{ + color:rgba(255, 255, 255, 0.7); } + .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content .bp3-tree-node-caret:hover::before{ + color:#ffffff; } + +.bp3-dark .bp3-tree-node-content:hover{ + background-color:rgba(92, 112, 128, 0.3); } + +.bp3-dark .bp3-tree .bp3-icon, .bp3-dark .bp3-tree .bp3-icon-standard, .bp3-dark .bp3-tree .bp3-icon-large{ + color:#a7b6c2; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-primary, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-primary, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-primary{ + color:#137cbd; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-success, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-success, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-success{ + color:#0f9960; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-warning, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-warning, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-warning{ + color:#d9822b; } + .bp3-dark .bp3-tree .bp3-icon.bp3-intent-danger, .bp3-dark .bp3-tree .bp3-icon-standard.bp3-intent-danger, .bp3-dark .bp3-tree .bp3-icon-large.bp3-intent-danger{ + color:#db3737; } + +.bp3-dark .bp3-tree-node.bp3-tree-node-selected > .bp3-tree-node-content{ + background-color:#137cbd; } +.bp3-omnibar{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; + background-color:#ffffff; + border-radius:3px; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.1), 0 4px 8px rgba(16, 22, 26, 0.2), 0 18px 46px 6px rgba(16, 22, 26, 0.2); + left:calc(50% - 250px); + top:20vh; + width:500px; + z-index:21; } + .bp3-omnibar.bp3-overlay-enter, .bp3-omnibar.bp3-overlay-appear{ + -webkit-filter:blur(20px); + filter:blur(20px); + opacity:0.2; } + .bp3-omnibar.bp3-overlay-enter-active, .bp3-omnibar.bp3-overlay-appear-active{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:filter, opacity; + transition-property:filter, opacity, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-omnibar.bp3-overlay-exit{ + -webkit-filter:blur(0); + filter:blur(0); + opacity:1; } + .bp3-omnibar.bp3-overlay-exit-active{ + -webkit-filter:blur(20px); + filter:blur(20px); + opacity:0.2; + -webkit-transition-delay:0; + transition-delay:0; + -webkit-transition-duration:200ms; + transition-duration:200ms; + -webkit-transition-property:opacity, -webkit-filter; + transition-property:opacity, -webkit-filter; + transition-property:filter, opacity; + transition-property:filter, opacity, -webkit-filter; + -webkit-transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); + transition-timing-function:cubic-bezier(0.4, 1, 0.75, 0.9); } + .bp3-omnibar .bp3-input{ + background-color:transparent; + border-radius:0; } + .bp3-omnibar .bp3-input, .bp3-omnibar .bp3-input:focus{ + -webkit-box-shadow:none; + box-shadow:none; } + .bp3-omnibar .bp3-menu{ + background-color:transparent; + border-radius:0; + -webkit-box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + box-shadow:inset 0 1px 0 rgba(16, 22, 26, 0.15); + max-height:calc(60vh - 40px); + overflow:auto; } + .bp3-omnibar .bp3-menu:empty{ + display:none; } + .bp3-dark .bp3-omnibar, .bp3-omnibar.bp3-dark{ + background-color:#30404d; + -webkit-box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); + box-shadow:0 0 0 1px rgba(16, 22, 26, 0.2), 0 4px 8px rgba(16, 22, 26, 0.4), 0 18px 46px 6px rgba(16, 22, 26, 0.4); } + +.bp3-omnibar-overlay .bp3-overlay-backdrop{ + background-color:rgba(16, 22, 26, 0.2); } + +.bp3-select-popover .bp3-popover-content{ + padding:5px; } + +.bp3-select-popover .bp3-input-group{ + margin-bottom:0; } + +.bp3-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; + padding:0; } + .bp3-select-popover .bp3-menu:not(:first-child){ + padding-top:5px; } + +.bp3-multi-select{ + min-width:150px; } + +.bp3-multi-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; } + +.bp3-select-popover .bp3-popover-content{ + padding:5px; } + +.bp3-select-popover .bp3-input-group{ + margin-bottom:0; } + +.bp3-select-popover .bp3-menu{ + max-height:300px; + max-width:400px; + overflow:auto; + padding:0; } + .bp3-select-popover .bp3-menu:not(:first-child){ + padding-top:5px; } +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* This file was auto-generated by ensureUiComponents() in @jupyterlab/buildutils */ + +/** + * (DEPRECATED) Support for consuming icons as CSS background images + */ + +/* Icons urls */ + +:root { + --jp-icon-add: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDEzaC02djZoLTJ2LTZINXYtMmg2VjVoMnY2aDZ2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-bug: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0yMCA4aC0yLjgxYy0uNDUtLjc4LTEuMDctMS40NS0xLjgyLTEuOTZMMTcgNC40MSAxNS41OSAzbC0yLjE3IDIuMTdDMTIuOTYgNS4wNiAxMi40OSA1IDEyIDVjLS40OSAwLS45Ni4wNi0xLjQxLjE3TDguNDEgMyA3IDQuNDFsMS42MiAxLjYzQzcuODggNi41NSA3LjI2IDcuMjIgNi44MSA4SDR2MmgyLjA5Yy0uMDUuMzMtLjA5LjY2LS4wOSAxdjFINHYyaDJ2MWMwIC4zNC4wNC42Ny4wOSAxSDR2MmgyLjgxYzEuMDQgMS43OSAyLjk3IDMgNS4xOSAzczQuMTUtMS4yMSA1LjE5LTNIMjB2LTJoLTIuMDljLjA1LS4zMy4wOS0uNjYuMDktMXYtMWgydi0yaC0ydi0xYzAtLjM0LS4wNC0uNjctLjA5LTFIMjBWOHptLTYgOGgtNHYtMmg0djJ6bTAtNGgtNHYtMmg0djJ6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-build: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTYiIHZpZXdCb3g9IjAgMCAyNCAyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE0LjkgMTcuNDVDMTYuMjUgMTcuNDUgMTcuMzUgMTYuMzUgMTcuMzUgMTVDMTcuMzUgMTMuNjUgMTYuMjUgMTIuNTUgMTQuOSAxMi41NUMxMy41NCAxMi41NSAxMi40NSAxMy42NSAxMi40NSAxNUMxMi40NSAxNi4zNSAxMy41NCAxNy40NSAxNC45IDE3LjQ1Wk0yMC4xIDE1LjY4TDIxLjU4IDE2Ljg0QzIxLjcxIDE2Ljk1IDIxLjc1IDE3LjEzIDIxLjY2IDE3LjI5TDIwLjI2IDE5LjcxQzIwLjE3IDE5Ljg2IDIwIDE5LjkyIDE5LjgzIDE5Ljg2TDE4LjA5IDE5LjE2QzE3LjczIDE5LjQ0IDE3LjMzIDE5LjY3IDE2LjkxIDE5Ljg1TDE2LjY0IDIxLjdDMTYuNjIgMjEuODcgMTYuNDcgMjIgMTYuMyAyMkgxMy41QzEzLjMyIDIyIDEzLjE4IDIxLjg3IDEzLjE1IDIxLjdMMTIuODkgMTkuODVDMTIuNDYgMTkuNjcgMTIuMDcgMTkuNDQgMTEuNzEgMTkuMTZMOS45NjAwMiAxOS44NkM5LjgxMDAyIDE5LjkyIDkuNjIwMDIgMTkuODYgOS41NDAwMiAxOS43MUw4LjE0MDAyIDE3LjI5QzguMDUwMDIgMTcuMTMgOC4wOTAwMiAxNi45NSA4LjIyMDAyIDE2Ljg0TDkuNzAwMDIgMTUuNjhMOS42NTAwMSAxNUw5LjcwMDAyIDE0LjMxTDguMjIwMDIgMTMuMTZDOC4wOTAwMiAxMy4wNSA4LjA1MDAyIDEyLjg2IDguMTQwMDIgMTIuNzFMOS41NDAwMiAxMC4yOUM5LjYyMDAyIDEwLjEzIDkuODEwMDIgMTAuMDcgOS45NjAwMiAxMC4xM0wxMS43MSAxMC44NEMxMi4wNyAxMC41NiAxMi40NiAxMC4zMiAxMi44OSAxMC4xNUwxMy4xNSA4LjI4OTk4QzEzLjE4IDguMTI5OTggMTMuMzIgNy45OTk5OCAxMy41IDcuOTk5OThIMTYuM0MxNi40NyA3Ljk5OTk4IDE2LjYyIDguMTI5OTggMTYuNjQgOC4yODk5OEwxNi45MSAxMC4xNUMxNy4zMyAxMC4zMiAxNy43MyAxMC41NiAxOC4wOSAxMC44NEwxOS44MyAxMC4xM0MyMCAxMC4wNyAyMC4xNyAxMC4xMyAyMC4yNiAxMC4yOUwyMS42NiAxMi43MUMyMS43NSAxMi44NiAyMS43MSAxMy4wNSAyMS41OCAxMy4xNkwyMC4xIDE0LjMxTDIwLjE1IDE1TDIwLjEgMTUuNjhaIi8+CiAgICA8cGF0aCBkPSJNNy4zMjk2NiA3LjQ0NDU0QzguMDgzMSA3LjAwOTU0IDguMzM5MzIgNi4wNTMzMiA3LjkwNDMyIDUuMjk5ODhDNy40NjkzMiA0LjU0NjQzIDYuNTA4MSA0LjI4MTU2IDUuNzU0NjYgNC43MTY1NkM1LjM5MTc2IDQuOTI2MDggNS4xMjY5NSA1LjI3MTE4IDUuMDE4NDkgNS42NzU5NEM0LjkxMDA0IDYuMDgwNzEgNC45NjY4MiA2LjUxMTk4IDUuMTc2MzQgNi44NzQ4OEM1LjYxMTM0IDcuNjI4MzIgNi41NzYyMiA3Ljg3OTU0IDcuMzI5NjYgNy40NDQ1NFpNOS42NTcxOCA0Ljc5NTkzTDEwLjg2NzIgNC45NTE3OUMxMC45NjI4IDQuOTc3NDEgMTEuMDQwMiA1LjA3MTMzIDExLjAzODIgNS4xODc5M0wxMS4wMzg4IDYuOTg4OTNDMTEuMDQ1NSA3LjEwMDU0IDEwLjk2MTYgNy4xOTUxOCAxMC44NTUgNy4yMTA1NEw5LjY2MDAxIDcuMzgwODNMOS4yMzkxNSA4LjEzMTg4TDkuNjY5NjEgOS4yNTc0NUM5LjcwNzI5IDkuMzYyNzEgOS42NjkzNCA5LjQ3Njk5IDkuNTc0MDggOS41MzE5OUw4LjAxNTIzIDEwLjQzMkM3LjkxMTMxIDEwLjQ5MiA3Ljc5MzM3IDEwLjQ2NzcgNy43MjEwNSAxMC4zODI0TDYuOTg3NDggOS40MzE4OEw2LjEwOTMxIDkuNDMwODNMNS4zNDcwNCAxMC4zOTA1QzUuMjg5MDkgMTAuNDcwMiA1LjE3MzgzIDEwLjQ5MDUgNS4wNzE4NyAxMC40MzM5TDMuNTEyNDUgOS41MzI5M0MzLjQxMDQ5IDkuNDc2MzMgMy4zNzY0NyA5LjM1NzQxIDMuNDEwNzUgOS4yNTY3OUwzLjg2MzQ3IDguMTQwOTNMMy42MTc0OSA3Ljc3NDg4TDMuNDIzNDcgNy4zNzg4M0wyLjIzMDc1IDcuMjEyOTdDMi4xMjY0NyA3LjE5MjM1IDIuMDQwNDkgNy4xMDM0MiAyLjA0MjQ1IDYuOTg2ODJMMi4wNDE4NyA1LjE4NTgyQzIuMDQzODMgNS4wNjkyMiAyLjExOTA5IDQuOTc5NTggMi4yMTcwNCA0Ljk2OTIyTDMuNDIwNjUgNC43OTM5M0wzLjg2NzQ5IDQuMDI3ODhMMy40MTEwNSAyLjkxNzMxQzMuMzczMzcgMi44MTIwNCAzLjQxMTMxIDIuNjk3NzYgMy41MTUyMyAyLjYzNzc2TDUuMDc0MDggMS43Mzc3NkM1LjE2OTM0IDEuNjgyNzYgNS4yODcyOSAxLjcwNzA0IDUuMzU5NjEgMS43OTIzMUw2LjExOTE1IDIuNzI3ODhMNi45ODAwMSAyLjczODkzTDcuNzI0OTYgMS43ODkyMkM3Ljc5MTU2IDEuNzA0NTggNy45MTU0OCAxLjY3OTIyIDguMDA4NzkgMS43NDA4Mkw5LjU2ODIxIDIuNjQxODJDOS42NzAxNyAyLjY5ODQyIDkuNzEyODUgMi44MTIzNCA5LjY4NzIzIDIuOTA3OTdMOS4yMTcxOCA0LjAzMzgzTDkuNDYzMTYgNC4zOTk4OEw5LjY1NzE4IDQuNzk1OTNaIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iOS45LDEzLjYgMy42LDcuNCA0LjQsNi42IDkuOSwxMi4yIDE1LjQsNi43IDE2LjEsNy40ICIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNS45TDksOS43bDMuOC0zLjhsMS4yLDEuMmwtNC45LDVsLTQuOS01TDUuMiw1Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-caret-down: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik01LjIsNy41TDksMTEuMmwzLjgtMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-caret-left: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik0xMC44LDEyLjhMNy4xLDlsMy44LTMuOGwwLDcuNkgxMC44eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-caret-right: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiIHNoYXBlLXJlbmRlcmluZz0iZ2VvbWV0cmljUHJlY2lzaW9uIj4KICAgIDxwYXRoIGQ9Ik03LjIsNS4yTDEwLjksOWwtMy44LDMuOFY1LjJINy4yeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-caret-up-empty-thin: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwb2x5Z29uIGNsYXNzPSJzdDEiIHBvaW50cz0iMTUuNCwxMy4zIDkuOSw3LjcgNC40LDEzLjIgMy42LDEyLjUgOS45LDYuMyAxNi4xLDEyLjYgIi8+Cgk8L2c+Cjwvc3ZnPgo=); + --jp-icon-caret-up: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSIgc2hhcGUtcmVuZGVyaW5nPSJnZW9tZXRyaWNQcmVjaXNpb24iPgoJCTxwYXRoIGQ9Ik01LjIsMTAuNUw5LDYuOGwzLjgsMy44SDUuMnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-case-sensitive: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgogIDxnIGNsYXNzPSJqcC1pY29uLWFjY2VudDIiIGZpbGw9IiNGRkYiPgogICAgPHBhdGggZD0iTTcuNiw4aDAuOWwzLjUsOGgtMS4xTDEwLDE0SDZsLTAuOSwySDRMNy42LDh6IE04LDkuMUw2LjQsMTNoMy4yTDgsOS4xeiIvPgogICAgPHBhdGggZD0iTTE2LjYsOS44Yy0wLjIsMC4xLTAuNCwwLjEtMC43LDAuMWMtMC4yLDAtMC40LTAuMS0wLjYtMC4yYy0wLjEtMC4xLTAuMi0wLjQtMC4yLTAuNyBjLTAuMywwLjMtMC42LDAuNS0wLjksMC43Yy0wLjMsMC4xLTAuNywwLjItMS4xLDAuMmMtMC4zLDAtMC41LDAtMC43LTAuMWMtMC4yLTAuMS0wLjQtMC4yLTAuNi0wLjNjLTAuMi0wLjEtMC4zLTAuMy0wLjQtMC41IGMtMC4xLTAuMi0wLjEtMC40LTAuMS0wLjdjMC0wLjMsMC4xLTAuNiwwLjItMC44YzAuMS0wLjIsMC4zLTAuNCwwLjQtMC41QzEyLDcsMTIuMiw2LjksMTIuNSw2LjhjMC4yLTAuMSwwLjUtMC4xLDAuNy0wLjIgYzAuMy0wLjEsMC41LTAuMSwwLjctMC4xYzAuMiwwLDAuNC0wLjEsMC42LTAuMWMwLjIsMCwwLjMtMC4xLDAuNC0wLjJjMC4xLTAuMSwwLjItMC4yLDAuMi0wLjRjMC0xLTEuMS0xLTEuMy0xIGMtMC40LDAtMS40LDAtMS40LDEuMmgtMC45YzAtMC40LDAuMS0wLjcsMC4yLTFjMC4xLTAuMiwwLjMtMC40LDAuNS0wLjZjMC4yLTAuMiwwLjUtMC4zLDAuOC0wLjNDMTMuMyw0LDEzLjYsNCwxMy45LDQgYzAuMywwLDAuNSwwLDAuOCwwLjFjMC4zLDAsMC41LDAuMSwwLjcsMC4yYzAuMiwwLjEsMC40LDAuMywwLjUsMC41QzE2LDUsMTYsNS4yLDE2LDUuNnYyLjljMCwwLjIsMCwwLjQsMCwwLjUgYzAsMC4xLDAuMSwwLjIsMC4zLDAuMmMwLjEsMCwwLjIsMCwwLjMsMFY5Ljh6IE0xNS4yLDYuOWMtMS4yLDAuNi0zLjEsMC4yLTMuMSwxLjRjMCwxLjQsMy4xLDEsMy4xLTAuNVY2Ljl6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-check: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik05IDE2LjE3TDQuODMgMTJsLTEuNDIgMS40MUw5IDE5IDIxIDdsLTEuNDEtMS40MXoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-circle-empty: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDJDNi40NyAyIDIgNi40NyAyIDEyczQuNDcgMTAgMTAgMTAgMTAtNC40NyAxMC0xMFMxNy41MyAyIDEyIDJ6bTAgMThjLTQuNDEgMC04LTMuNTktOC04czMuNTktOCA4LTggOCAzLjU5IDggOC0zLjU5IDgtOCA4eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-circle: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iOSIgY3k9IjkiIHI9IjgiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-clear: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8bWFzayBpZD0iZG9udXRIb2xlIj4KICAgIDxyZWN0IHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgZmlsbD0id2hpdGUiIC8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSI4IiBmaWxsPSJibGFjayIvPgogIDwvbWFzaz4KCiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxyZWN0IGhlaWdodD0iMTgiIHdpZHRoPSIyIiB4PSIxMSIgeT0iMyIgdHJhbnNmb3JtPSJyb3RhdGUoMzE1LCAxMiwgMTIpIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIxMCIgbWFzaz0idXJsKCNkb251dEhvbGUpIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-close: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1ub25lIGpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIGpwLWljb24zLWhvdmVyIiBmaWxsPSJub25lIj4KICAgIDxjaXJjbGUgY3g9IjEyIiBjeT0iMTIiIHI9IjExIi8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIGpwLWljb24tYWNjZW50Mi1ob3ZlciIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMTkgNi40MUwxNy41OSA1IDEyIDEwLjU5IDYuNDEgNSA1IDYuNDEgMTAuNTkgMTIgNSAxNy41OSA2LjQxIDE5IDEyIDEzLjQxIDE3LjU5IDE5IDE5IDE3LjU5IDEzLjQxIDEyeiIvPgogIDwvZz4KCiAgPGcgY2xhc3M9ImpwLWljb24tbm9uZSBqcC1pY29uLWJ1c3kiIGZpbGw9Im5vbmUiPgogICAgPGNpcmNsZSBjeD0iMTIiIGN5PSIxMiIgcj0iNyIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-code: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTExLjQgMTguNkw2LjggMTRMMTEuNCA5LjRMMTAgOEw0IDE0TDEwIDIwTDExLjQgMTguNlpNMTYuNiAxOC42TDIxLjIgMTRMMTYuNiA5LjRMMTggOEwyNCAxNEwxOCAyMEwxNi42IDE4LjZWMTguNloiLz4KCTwvZz4KPC9zdmc+Cg==); + --jp-icon-console: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwMCAyMDAiPgogIDxnIGNsYXNzPSJqcC1pY29uLWJyYW5kMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMjg4RDEiPgogICAgPHBhdGggZD0iTTIwIDE5LjhoMTYwdjE1OS45SDIweiIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNmZmYiPgogICAgPHBhdGggZD0iTTEwNSAxMjcuM2g0MHYxMi44aC00MHpNNTEuMSA3N0w3NCA5OS45bC0yMy4zIDIzLjMgMTAuNSAxMC41IDIzLjMtMjMuM0w5NSA5OS45IDg0LjUgODkuNCA2MS42IDY2LjV6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-copy: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTExLjksMUgzLjJDMi40LDEsMS43LDEuNywxLjcsMi41djEwLjJoMS41VjIuNWg4LjdWMXogTTE0LjEsMy45aC04Yy0wLjgsMC0xLjUsMC43LTEuNSwxLjV2MTAuMmMwLDAuOCwwLjcsMS41LDEuNSwxLjVoOCBjMC44LDAsMS41LTAuNywxLjUtMS41VjUuNEMxNS41LDQuNiwxNC45LDMuOSwxNC4xLDMuOXogTTE0LjEsMTUuNWgtOFY1LjRoOFYxNS41eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-copyright: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGVuYWJsZS1iYWNrZ3JvdW5kPSJuZXcgMCAwIDI0IDI0IiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCI+CiAgPGcgY2xhc3M9ImpwLWljb24zIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik0xMS44OCw5LjE0YzEuMjgsMC4wNiwxLjYxLDEuMTUsMS42MywxLjY2aDEuNzljLTAuMDgtMS45OC0xLjQ5LTMuMTktMy40NS0zLjE5QzkuNjQsNy42MSw4LDksOCwxMi4xNCBjMCwxLjk0LDAuOTMsNC4yNCwzLjg0LDQuMjRjMi4yMiwwLDMuNDEtMS42NSwzLjQ0LTIuOTVoLTEuNzljLTAuMDMsMC41OS0wLjQ1LDEuMzgtMS42MywxLjQ0QzEwLjU1LDE0LjgzLDEwLDEzLjgxLDEwLDEyLjE0IEMxMCw5LjI1LDExLjI4LDkuMTYsMTEuODgsOS4xNHogTTEyLDJDNi40OCwyLDIsNi40OCwyLDEyczQuNDgsMTAsMTAsMTBzMTAtNC40OCwxMC0xMFMxNy41MiwyLDEyLDJ6IE0xMiwyMGMtNC40MSwwLTgtMy41OS04LTggczMuNTktOCw4LThzOCwzLjU5LDgsOFMxNi40MSwyMCwxMiwyMHoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-cut: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkuNjQgNy42NGMuMjMtLjUuMzYtMS4wNS4zNi0xLjY0IDAtMi4yMS0xLjc5LTQtNC00UzIgMy43OSAyIDZzMS43OSA0IDQgNGMuNTkgMCAxLjE0LS4xMyAxLjY0LS4zNkwxMCAxMmwtMi4zNiAyLjM2QzcuMTQgMTQuMTMgNi41OSAxNCA2IDE0Yy0yLjIxIDAtNCAxLjc5LTQgNHMxLjc5IDQgNCA0IDQtMS43OSA0LTRjMC0uNTktLjEzLTEuMTQtLjM2LTEuNjRMMTIgMTRsNyA3aDN2LTFMOS42NCA3LjY0ek02IDhjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTAgMTJjLTEuMSAwLTItLjg5LTItMnMuOS0yIDItMiAyIC44OSAyIDItLjkgMi0yIDJ6bTYtNy41Yy0uMjggMC0uNS0uMjItLjUtLjVzLjIyLS41LjUtLjUuNS4yMi41LjUtLjIyLjUtLjUuNXpNMTkgM2wtNiA2IDIgMiA3LTdWM3oiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-download: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE5IDloLTRWM0g5djZINWw3IDcgNy03ek01IDE4djJoMTR2LTJINXoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-edit: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMgMTcuMjVWMjFoMy43NUwxNy44MSA5Ljk0bC0zLjc1LTMuNzVMMyAxNy4yNXpNMjAuNzEgNy4wNGMuMzktLjM5LjM5LTEuMDIgMC0xLjQxbC0yLjM0LTIuMzRjLS4zOS0uMzktMS4wMi0uMzktMS40MSAwbC0xLjgzIDEuODMgMy43NSAzLjc1IDEuODMtMS44M3oiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-ellipses: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPGNpcmNsZSBjeD0iNSIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxMiIgY3k9IjEyIiByPSIyIi8+CiAgICA8Y2lyY2xlIGN4PSIxOSIgY3k9IjEyIiByPSIyIi8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-extension: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwLjUgMTFIMTlWN2MwLTEuMS0uOS0yLTItMmgtNFYzLjVDMTMgMi4xMiAxMS44OCAxIDEwLjUgMVM4IDIuMTIgOCAzLjVWNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAydjMuOEgzLjVjMS40OSAwIDIuNyAxLjIxIDIuNyAyLjdzLTEuMjEgMi43LTIuNyAyLjdIMlYyMGMwIDEuMS45IDIgMiAyaDMuOHYtMS41YzAtMS40OSAxLjIxLTIuNyAyLjctMi43IDEuNDkgMCAyLjcgMS4yMSAyLjcgMi43VjIySDE3YzEuMSAwIDItLjkgMi0ydi00aDEuNWMxLjM4IDAgMi41LTEuMTIgMi41LTIuNVMyMS44OCAxMSAyMC41IDExeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-fast-forward: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTQgMThsOC41LTZMNCA2djEyem05LTEydjEybDguNS02TDEzIDZ6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-file-upload: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTkgMTZoNnYtNmg0bC03LTctNyA3aDR6bS00IDJoMTR2Mkg1eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-file: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuMyA4LjJsLTUuNS01LjVjLS4zLS4zLS43LS41LTEuMi0uNUgzLjljLS44LjEtMS42LjktMS42IDEuOHYxNC4xYzAgLjkuNyAxLjYgMS42IDEuNmgxNC4yYy45IDAgMS42LS43IDEuNi0xLjZWOS40Yy4xLS41LS4xLS45LS40LTEuMnptLTUuOC0zLjNsMy40IDMuNmgtMy40VjQuOXptMy45IDEyLjdINC43Yy0uMSAwLS4yIDAtLjItLjJWNC43YzAtLjIuMS0uMy4yLS4zaDcuMnY0LjRzMCAuOC4zIDEuMWMuMy4zIDEuMS4zIDEuMS4zaDQuM3Y3LjJzLS4xLjItLjIuMnoiLz4KPC9zdmc+Cg==); + --jp-icon-filter-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEwIDE4aDR2LTJoLTR2MnpNMyA2djJoMThWNkgzem0zIDdoMTJ2LTJINnYyeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY4YzAtMS4xLS45LTItMi0yaC04bC0yLTJ6Ii8+Cjwvc3ZnPgo=); + --jp-icon-html5: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiMwMDAiIGQ9Ik0xMDguNCAwaDIzdjIyLjhoMjEuMlYwaDIzdjY5aC0yM1Y0NmgtMjF2MjNoLTIzLjJNMjA2IDIzaC0yMC4zVjBoNjMuN3YyM0gyMjl2NDZoLTIzbTUzLjUtNjloMjQuMWwxNC44IDI0LjNMMzEzLjIgMGgyNC4xdjY5aC0yM1YzNC44bC0xNi4xIDI0LjgtMTYuMS0yNC44VjY5aC0yMi42bTg5LjItNjloMjN2NDYuMmgzMi42VjY5aC01NS42Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI2U0NGQyNiIgZD0iTTEwNy42IDQ3MWwtMzMtMzcwLjRoMzYyLjhsLTMzIDM3MC4yTDI1NS43IDUxMiIvPgogIDxwYXRoIGNsYXNzPSJqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNmMTY1MjkiIGQ9Ik0yNTYgNDgwLjVWMTMxaDE0OC4zTDM3NiA0NDciLz4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNlYmViZWIiIGQ9Ik0xNDIgMTc2LjNoMTE0djQ1LjRoLTY0LjJsNC4yIDQ2LjVoNjB2NDUuM0gxNTQuNG0yIDIyLjhIMjAybDMuMiAzNi4zIDUwLjggMTMuNnY0Ny40bC05My4yLTI2Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZS1pbnZlcnNlIiBmaWxsPSIjZmZmIiBkPSJNMzY5LjYgMTc2LjNIMjU1Ljh2NDUuNGgxMDkuNm0tNC4xIDQ2LjVIMjU1Ljh2NDUuNGg1NmwtNS4zIDU5LTUwLjcgMTMuNnY0Ny4ybDkzLTI1LjgiLz4KPC9zdmc+Cg==); + --jp-icon-image: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1icmFuZDQganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGZpbGw9IiNGRkYiIGQ9Ik0yLjIgMi4yaDE3LjV2MTcuNUgyLjJ6Ii8+CiAgPHBhdGggY2xhc3M9ImpwLWljb24tYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzNGNTFCNSIgZD0iTTIuMiAyLjJ2MTcuNWgxNy41bC4xLTE3LjVIMi4yem0xMi4xIDIuMmMxLjIgMCAyLjIgMSAyLjIgMi4ycy0xIDIuMi0yLjIgMi4yLTIuMi0xLTIuMi0yLjIgMS0yLjIgMi4yLTIuMnpNNC40IDE3LjZsMy4zLTguOCAzLjMgNi42IDIuMi0zLjIgNC40IDUuNEg0LjR6Ii8+Cjwvc3ZnPgo=); + --jp-icon-inspector: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNEg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMThjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0tNSAxNEg0di00aDExdjR6bTAtNUg0VjloMTF2NHptNSA1aC00VjloNHY5eiIvPgo8L3N2Zz4K); + --jp-icon-json: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMSBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNGOUE4MjUiPgogICAgPHBhdGggZD0iTTIwLjIgMTEuOGMtMS42IDAtMS43LjUtMS43IDEgMCAuNC4xLjkuMSAxLjMuMS41LjEuOS4xIDEuMyAwIDEuNy0xLjQgMi4zLTMuNSAyLjNoLS45di0xLjloLjVjMS4xIDAgMS40IDAgMS40LS44IDAtLjMgMC0uNi0uMS0xIDAtLjQtLjEtLjgtLjEtMS4yIDAtMS4zIDAtMS44IDEuMy0yLTEuMy0uMi0xLjMtLjctMS4zLTIgMC0uNC4xLS44LjEtMS4yLjEtLjQuMS0uNy4xLTEgMC0uOC0uNC0uNy0xLjQtLjhoLS41VjQuMWguOWMyLjIgMCAzLjUuNyAzLjUgMi4zIDAgLjQtLjEuOS0uMSAxLjMtLjEuNS0uMS45LS4xIDEuMyAwIC41LjIgMSAxLjcgMXYxLjh6TTEuOCAxMC4xYzEuNiAwIDEuNy0uNSAxLjctMSAwLS40LS4xLS45LS4xLTEuMy0uMS0uNS0uMS0uOS0uMS0xLjMgMC0xLjYgMS40LTIuMyAzLjUtMi4zaC45djEuOWgtLjVjLTEgMC0xLjQgMC0xLjQuOCAwIC4zIDAgLjYuMSAxIDAgLjIuMS42LjEgMSAwIDEuMyAwIDEuOC0xLjMgMkM2IDExLjIgNiAxMS43IDYgMTNjMCAuNC0uMS44LS4xIDEuMi0uMS4zLS4xLjctLjEgMSAwIC44LjMuOCAxLjQuOGguNXYxLjloLS45Yy0yLjEgMC0zLjUtLjYtMy41LTIuMyAwLS40LjEtLjkuMS0xLjMuMS0uNS4xLS45LjEtMS4zIDAtLjUtLjItMS0xLjctMXYtMS45eiIvPgogICAgPGNpcmNsZSBjeD0iMTEiIGN5PSIxMy44IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY3g9IjExIiBjeT0iOC4yIiByPSIyLjEiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-julia: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDMyNSAzMDAiPgogIDxnIGNsYXNzPSJqcC1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjY2IzYzMzIj4KICAgIDxwYXRoIGQ9Ik0gMTUwLjg5ODQzOCAyMjUgQyAxNTAuODk4NDM4IDI2Ni40MjE4NzUgMTE3LjMyMDMxMiAzMDAgNzUuODk4NDM4IDMwMCBDIDM0LjQ3NjU2MiAzMDAgMC44OTg0MzggMjY2LjQyMTg3NSAwLjg5ODQzOCAyMjUgQyAwLjg5ODQzOCAxODMuNTc4MTI1IDM0LjQ3NjU2MiAxNTAgNzUuODk4NDM4IDE1MCBDIDExNy4zMjAzMTIgMTUwIDE1MC44OTg0MzggMTgzLjU3ODEyNSAxNTAuODk4NDM4IDIyNSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzM4OTgyNiI+CiAgICA8cGF0aCBkPSJNIDIzNy41IDc1IEMgMjM3LjUgMTE2LjQyMTg3NSAyMDMuOTIxODc1IDE1MCAxNjIuNSAxNTAgQyAxMjEuMDc4MTI1IDE1MCA4Ny41IDExNi40MjE4NzUgODcuNSA3NSBDIDg3LjUgMzMuNTc4MTI1IDEyMS4wNzgxMjUgMCAxNjIuNSAwIEMgMjAzLjkyMTg3NSAwIDIzNy41IDMzLjU3ODEyNSAyMzcuNSA3NSIvPgogIDwvZz4KICA8ZyBjbGFzcz0ianAtYnJhbmQwIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzk1NThiMiI+CiAgICA8cGF0aCBkPSJNIDMyNC4xMDE1NjIgMjI1IEMgMzI0LjEwMTU2MiAyNjYuNDIxODc1IDI5MC41MjM0MzggMzAwIDI0OS4xMDE1NjIgMzAwIEMgMjA3LjY3OTY4OCAzMDAgMTc0LjEwMTU2MiAyNjYuNDIxODc1IDE3NC4xMDE1NjIgMjI1IEMgMTc0LjEwMTU2MiAxODMuNTc4MTI1IDIwNy42Nzk2ODggMTUwIDI0OS4xMDE1NjIgMTUwIEMgMjkwLjUyMzQzOCAxNTAgMzI0LjEwMTU2MiAxODMuNTc4MTI1IDMyNC4xMDE1NjIgMjI1Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-jupyter-favicon: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMTUyIiBoZWlnaHQ9IjE2NSIgdmlld0JveD0iMCAwIDE1MiAxNjUiIHZlcnNpb249IjEuMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA3ODk0NywgMTEwLjU4MjkyNykiIGQ9Ik03NS45NDIyODQyLDI5LjU4MDQ1NjEgQzQzLjMwMjM5NDcsMjkuNTgwNDU2MSAxNC43OTY3ODMyLDE3LjY1MzQ2MzQgMCwwIEM1LjUxMDgzMjExLDE1Ljg0MDY4MjkgMTUuNzgxNTM4OSwyOS41NjY3NzMyIDI5LjM5MDQ5NDcsMzkuMjc4NDE3MSBDNDIuOTk5Nyw0OC45ODk4NTM3IDU5LjI3MzcsNTQuMjA2NzgwNSA3NS45NjA1Nzg5LDU0LjIwNjc4MDUgQzkyLjY0NzQ1NzksNTQuMjA2NzgwNSAxMDguOTIxNDU4LDQ4Ljk4OTg1MzcgMTIyLjUzMDY2MywzOS4yNzg0MTcxIEMxMzYuMTM5NDUzLDI5LjU2Njc3MzIgMTQ2LjQxMDI4NCwxNS44NDA2ODI5IDE1MS45MjExNTgsMCBDMTM3LjA4Nzg2OCwxNy42NTM0NjM0IDEwOC41ODI1ODksMjkuNTgwNDU2MSA3NS45NDIyODQyLDI5LjU4MDQ1NjEgTDc1Ljk0MjI4NDIsMjkuNTgwNDU2MSBaIiAvPgogICAgPHBhdGggdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMzczNjgsIDAuNzA0ODc4KSIgZD0iTTc1Ljk3ODQ1NzksMjQuNjI2NDA3MyBDMTA4LjYxODc2MywyNC42MjY0MDczIDEzNy4xMjQ0NTgsMzYuNTUzNDQxNSAxNTEuOTIxMTU4LDU0LjIwNjc4MDUgQzE0Ni40MTAyODQsMzguMzY2MjIyIDEzNi4xMzk0NTMsMjQuNjQwMTMxNyAxMjIuNTMwNjYzLDE0LjkyODQ4NzggQzEwOC45MjE0NTgsNS4yMTY4NDM5IDkyLjY0NzQ1NzksMCA3NS45NjA1Nzg5LDAgQzU5LjI3MzcsMCA0Mi45OTk3LDUuMjE2ODQzOSAyOS4zOTA0OTQ3LDE0LjkyODQ4NzggQzE1Ljc4MTUzODksMjQuNjQwMTMxNyA1LjUxMDgzMjExLDM4LjM2NjIyMiAwLDU0LjIwNjc4MDUgQzE0LjgzMzA4MTYsMzYuNTg5OTI5MyA0My4zMzg1Njg0LDI0LjYyNjQwNzMgNzUuOTc4NDU3OSwyNC42MjY0MDczIEw3NS45Nzg0NTc5LDI0LjYyNjQwNzMgWiIgLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-jupyter: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMzkiIGhlaWdodD0iNTEiIHZpZXdCb3g9IjAgMCAzOSA1MSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgtMTYzOCAtMjI4MSkiPgogICAgPGcgY2xhc3M9ImpwLWljb24td2FybjAiIGZpbGw9IiNGMzc3MjYiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5Ljc0IDIzMTEuOTgpIiBkPSJNIDE4LjI2NDYgNy4xMzQxMUMgMTAuNDE0NSA3LjEzNDExIDMuNTU4NzIgNC4yNTc2IDAgMEMgMS4zMjUzOSAzLjgyMDQgMy43OTU1NiA3LjEzMDgxIDcuMDY4NiA5LjQ3MzAzQyAxMC4zNDE3IDExLjgxNTIgMTQuMjU1NyAxMy4wNzM0IDE4LjI2OSAxMy4wNzM0QyAyMi4yODIzIDEzLjA3MzQgMjYuMTk2MyAxMS44MTUyIDI5LjQ2OTQgOS40NzMwM0MgMzIuNzQyNCA3LjEzMDgxIDM1LjIxMjYgMy44MjA0IDM2LjUzOCAwQyAzMi45NzA1IDQuMjU3NiAyNi4xMTQ4IDcuMTM0MTEgMTguMjY0NiA3LjEzNDExWiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM5LjczIDIyODUuNDgpIiBkPSJNIDE4LjI3MzMgNS45MzkzMUMgMjYuMTIzNSA1LjkzOTMxIDMyLjk3OTMgOC44MTU4MyAzNi41MzggMTMuMDczNEMgMzUuMjEyNiA5LjI1MzAzIDMyLjc0MjQgNS45NDI2MiAyOS40Njk0IDMuNjAwNEMgMjYuMTk2MyAxLjI1ODE4IDIyLjI4MjMgMCAxOC4yNjkgMEMgMTQuMjU1NyAwIDEwLjM0MTcgMS4yNTgxOCA3LjA2ODYgMy42MDA0QyAzLjc5NTU2IDUuOTQyNjIgMS4zMjUzOSA5LjI1MzAzIDAgMTMuMDczNEMgMy41Njc0NSA4LjgyNDYzIDEwLjQyMzIgNS45MzkzMSAxOC4yNzMzIDUuOTM5MzFaIi8+CiAgICA8L2c+CiAgICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjY5LjMgMjI4MS4zMSkiIGQ9Ik0gNS44OTM1MyAyLjg0NEMgNS45MTg4OSAzLjQzMTY1IDUuNzcwODUgNC4wMTM2NyA1LjQ2ODE1IDQuNTE2NDVDIDUuMTY1NDUgNS4wMTkyMiA0LjcyMTY4IDUuNDIwMTUgNC4xOTI5OSA1LjY2ODUxQyAzLjY2NDMgNS45MTY4OCAzLjA3NDQ0IDYuMDAxNTEgMi40OTgwNSA1LjkxMTcxQyAxLjkyMTY2IDUuODIxOSAxLjM4NDYzIDUuNTYxNyAwLjk1NDg5OCA1LjE2NDAxQyAwLjUyNTE3IDQuNzY2MzMgMC4yMjIwNTYgNC4yNDkwMyAwLjA4MzkwMzcgMy42Nzc1N0MgLTAuMDU0MjQ4MyAzLjEwNjExIC0wLjAyMTIzIDIuNTA2MTcgMC4xNzg3ODEgMS45NTM2NEMgMC4zNzg3OTMgMS40MDExIDAuNzM2ODA5IDAuOTIwODE3IDEuMjA3NTQgMC41NzM1MzhDIDEuNjc4MjYgMC4yMjYyNTkgMi4yNDA1NSAwLjAyNzU5MTkgMi44MjMyNiAwLjAwMjY3MjI5QyAzLjYwMzg5IC0wLjAzMDcxMTUgNC4zNjU3MyAwLjI0OTc4OSA0Ljk0MTQyIDAuNzgyNTUxQyA1LjUxNzExIDEuMzE1MzEgNS44NTk1NiAyLjA1Njc2IDUuODkzNTMgMi44NDRaIi8+CiAgICAgIDxwYXRoIHRyYW5zZm9ybT0idHJhbnNsYXRlKDE2MzkuOCAyMzIzLjgxKSIgZD0iTSA3LjQyNzg5IDMuNTgzMzhDIDcuNDYwMDggNC4zMjQzIDcuMjczNTUgNS4wNTgxOSA2Ljg5MTkzIDUuNjkyMTNDIDYuNTEwMzEgNi4zMjYwNyA1Ljk1MDc1IDYuODMxNTYgNS4yODQxMSA3LjE0NDZDIDQuNjE3NDcgNy40NTc2MyAzLjg3MzcxIDcuNTY0MTQgMy4xNDcwMiA3LjQ1MDYzQyAyLjQyMDMyIDcuMzM3MTIgMS43NDMzNiA3LjAwODcgMS4yMDE4NCA2LjUwNjk1QyAwLjY2MDMyOCA2LjAwNTIgMC4yNzg2MSA1LjM1MjY4IDAuMTA1MDE3IDQuNjMyMDJDIC0wLjA2ODU3NTcgMy45MTEzNSAtMC4wMjYyMzYxIDMuMTU0OTQgMC4yMjY2NzUgMi40NTg1NkMgMC40Nzk1ODcgMS43NjIxNyAwLjkzMTY5NyAxLjE1NzEzIDEuNTI1NzYgMC43MjAwMzNDIDIuMTE5ODMgMC4yODI5MzUgMi44MjkxNCAwLjAzMzQzOTUgMy41NjM4OSAwLjAwMzEzMzQ0QyA0LjU0NjY3IC0wLjAzNzQwMzMgNS41MDUyOSAwLjMxNjcwNiA2LjIyOTYxIDAuOTg3ODM1QyA2Ljk1MzkzIDEuNjU4OTYgNy4zODQ4NCAyLjU5MjM1IDcuNDI3ODkgMy41ODMzOEwgNy40Mjc4OSAzLjU4MzM4WiIvPgogICAgICA8cGF0aCB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxNjM4LjM2IDIyODYuMDYpIiBkPSJNIDIuMjc0NzEgNC4zOTYyOUMgMS44NDM2MyA0LjQxNTA4IDEuNDE2NzEgNC4zMDQ0NSAxLjA0Nzk5IDQuMDc4NDNDIDAuNjc5MjY4IDMuODUyNCAwLjM4NTMyOCAzLjUyMTE0IDAuMjAzMzcxIDMuMTI2NTZDIDAuMDIxNDEzNiAyLjczMTk4IC0wLjA0MDM3OTggMi4yOTE4MyAwLjAyNTgxMTYgMS44NjE4MUMgMC4wOTIwMDMxIDEuNDMxOCAwLjI4MzIwNCAxLjAzMTI2IDAuNTc1MjEzIDAuNzEwODgzQyAwLjg2NzIyMiAwLjM5MDUxIDEuMjQ2OTEgMC4xNjQ3MDggMS42NjYyMiAwLjA2MjA1OTJDIDIuMDg1NTMgLTAuMDQwNTg5NyAyLjUyNTYxIC0wLjAxNTQ3MTQgMi45MzA3NiAwLjEzNDIzNUMgMy4zMzU5MSAwLjI4Mzk0MSAzLjY4NzkyIDAuNTUxNTA1IDMuOTQyMjIgMC45MDMwNkMgNC4xOTY1MiAxLjI1NDYyIDQuMzQxNjkgMS42NzQzNiA0LjM1OTM1IDIuMTA5MTZDIDQuMzgyOTkgMi42OTEwNyA0LjE3Njc4IDMuMjU4NjkgMy43ODU5NyAzLjY4NzQ2QyAzLjM5NTE2IDQuMTE2MjQgMi44NTE2NiA0LjM3MTE2IDIuMjc0NzEgNC4zOTYyOUwgMi4yNzQ3MSA0LjM5NjI5WiIvPgogICAgPC9nPgogIDwvZz4+Cjwvc3ZnPgo=); + --jp-icon-jupyterlab-wordmark: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyMDAiIHZpZXdCb3g9IjAgMCAxODYwLjggNDc1Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0RTRFNEUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDQ4MC4xMzY0MDEsIDY0LjI3MTQ5MykiPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC4wMDAwMDAsIDU4Ljg3NTU2NikiPgogICAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgwLjA4NzYwMywgMC4xNDAyOTQpIj4KICAgICAgICA8cGF0aCBkPSJNLTQyNi45LDE2OS44YzAsNDguNy0zLjcsNjQuNy0xMy42LDc2LjRjLTEwLjgsMTAtMjUsMTUuNS0zOS43LDE1LjVsMy43LDI5IGMyMi44LDAuMyw0NC44LTcuOSw2MS45LTIzLjFjMTcuOC0xOC41LDI0LTQ0LjEsMjQtODMuM1YwSC00Mjd2MTcwLjFMLTQyNi45LDE2OS44TC00MjYuOSwxNjkuOHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMTU1LjA0NTI5NiwgNTYuODM3MTA0KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuNTYyNDUzLCAxLjc5OTg0MikiPgogICAgICAgIDxwYXRoIGQ9Ik0tMzEyLDE0OGMwLDIxLDAsMzkuNSwxLjcsNTUuNGgtMzEuOGwtMi4xLTMzLjNoLTAuOGMtNi43LDExLjYtMTYuNCwyMS4zLTI4LDI3LjkgYy0xMS42LDYuNi0yNC44LDEwLTM4LjIsOS44Yy0zMS40LDAtNjktMTcuNy02OS04OVYwaDM2LjR2MTEyLjdjMCwzOC43LDExLjYsNjQuNyw0NC42LDY0LjdjMTAuMy0wLjIsMjAuNC0zLjUsMjguOS05LjQgYzguNS01LjksMTUuMS0xNC4zLDE4LjktMjMuOWMyLjItNi4xLDMuMy0xMi41LDMuMy0xOC45VjAuMmgzNi40VjE0OEgtMzEyTC0zMTIsMTQ4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzOTAuMDEzMzIyLCA1My40Nzk2MzgpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS43MDY0NTgsIDAuMjMxNDI1KSI+CiAgICAgICAgPHBhdGggZD0iTS00NzguNiw3MS40YzAtMjYtMC44LTQ3LTEuNy02Ni43aDMyLjdsMS43LDM0LjhoMC44YzcuMS0xMi41LDE3LjUtMjIuOCwzMC4xLTI5LjcgYzEyLjUtNywyNi43LTEwLjMsNDEtOS44YzQ4LjMsMCw4NC43LDQxLjcsODQuNywxMDMuM2MwLDczLjEtNDMuNywxMDkuMi05MSwxMDkuMmMtMTIuMSwwLjUtMjQuMi0yLjItMzUtNy44IGMtMTAuOC01LjYtMTkuOS0xMy45LTI2LjYtMjQuMmgtMC44VjI5MWgtMzZ2LTIyMEwtNDc4LjYsNzEuNEwtNDc4LjYsNzEuNHogTS00NDIuNiwxMjUuNmMwLjEsNS4xLDAuNiwxMC4xLDEuNywxNS4xIGMzLDEyLjMsOS45LDIzLjMsMTkuOCwzMS4xYzkuOSw3LjgsMjIuMSwxMi4xLDM0LjcsMTIuMWMzOC41LDAsNjAuNy0zMS45LDYwLjctNzguNWMwLTQwLjctMjEuMS03NS42LTU5LjUtNzUuNiBjLTEyLjksMC40LTI1LjMsNS4xLTM1LjMsMTMuNGMtOS45LDguMy0xNi45LDE5LjctMTkuNiwzMi40Yy0xLjUsNC45LTIuMywxMC0yLjUsMTUuMVYxMjUuNkwtNDQyLjYsMTI1LjZMLTQ0Mi42LDEyNS42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSg2MDYuNzQwNzI2LCA1Ni44MzcxMDQpIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMC43NTEyMjYsIDEuOTg5Mjk5KSI+CiAgICAgICAgPHBhdGggZD0iTS00NDAuOCwwbDQzLjcsMTIwLjFjNC41LDEzLjQsOS41LDI5LjQsMTIuOCw0MS43aDAuOGMzLjctMTIuMiw3LjktMjcuNywxMi44LTQyLjQgbDM5LjctMTE5LjJoMzguNUwtMzQ2LjksMTQ1Yy0yNiw2OS43LTQzLjcsMTA1LjQtNjguNiwxMjcuMmMtMTIuNSwxMS43LTI3LjksMjAtNDQuNiwyMy45bC05LjEtMzEuMSBjMTEuNy0zLjksMjIuNS0xMC4xLDMxLjgtMTguMWMxMy4yLTExLjEsMjMuNy0yNS4yLDMwLjYtNDEuMmMxLjUtMi44LDIuNS01LjcsMi45LTguOGMtMC4zLTMuMy0xLjItNi42LTIuNS05LjdMLTQ4MC4yLDAuMSBoMzkuN0wtNDQwLjgsMEwtNDQwLjgsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoODIyLjc0ODEwNCwgMC4wMDAwMDApIj4KICAgICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoMS40NjQwNTAsIDAuMzc4OTE0KSI+CiAgICAgICAgPHBhdGggZD0iTS00MTMuNywwdjU4LjNoNTJ2MjguMmgtNTJWMTk2YzAsMjUsNywzOS41LDI3LjMsMzkuNWM3LjEsMC4xLDE0LjItMC43LDIxLjEtMi41IGwxLjcsMjcuN2MtMTAuMywzLjctMjEuMyw1LjQtMzIuMiw1Yy03LjMsMC40LTE0LjYtMC43LTIxLjMtMy40Yy02LjgtMi43LTEyLjktNi44LTE3LjktMTIuMWMtMTAuMy0xMC45LTE0LjEtMjktMTQuMS01Mi45IFY4Ni41aC0zMVY1OC4zaDMxVjkuNkwtNDEzLjcsMEwtNDEzLjcsMHoiLz4KICAgICAgPC9nPgogICAgPC9nPgogICAgPGcgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOTc0LjQzMzI4NiwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAuOTkwMDM0LCAwLjYxMDMzOSkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDQ1LjgsMTEzYzAuOCw1MCwzMi4yLDcwLjYsNjguNiw3MC42YzE5LDAuNiwzNy45LTMsNTUuMy0xMC41bDYuMiwyNi40IGMtMjAuOSw4LjktNDMuNSwxMy4xLTY2LjIsMTIuNmMtNjEuNSwwLTk4LjMtNDEuMi05OC4zLTEwMi41Qy00ODAuMiw0OC4yLTQ0NC43LDAtMzg2LjUsMGM2NS4yLDAsODIuNyw1OC4zLDgyLjcsOTUuNyBjLTAuMSw1LjgtMC41LDExLjUtMS4yLDE3LjJoLTE0MC42SC00NDUuOEwtNDQ1LjgsMTEzeiBNLTMzOS4yLDg2LjZjMC40LTIzLjUtOS41LTYwLjEtNTAuNC02MC4xIGMtMzYuOCwwLTUyLjgsMzQuNC01NS43LDYwLjFILTMzOS4yTC0zMzkuMiw4Ni42TC0zMzkuMiw4Ni42eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgICA8ZyB0cmFuc2Zvcm09InRyYW5zbGF0ZSgxMjAxLjk2MTA1OCwgNTMuNDc5NjM4KSI+CiAgICAgIDxnIHRyYW5zZm9ybT0idHJhbnNsYXRlKDEuMTc5NjQwLCAwLjcwNTA2OCkiPgogICAgICAgIDxwYXRoIGQ9Ik0tNDc4LjYsNjhjMC0yMy45LTAuNC00NC41LTEuNy02My40aDMxLjhsMS4yLDM5LjloMS43YzkuMS0yNy4zLDMxLTQ0LjUsNTUuMy00NC41IGMzLjUtMC4xLDcsMC40LDEwLjMsMS4ydjM0LjhjLTQuMS0wLjktOC4yLTEuMy0xMi40LTEuMmMtMjUuNiwwLTQzLjcsMTkuNy00OC43LDQ3LjRjLTEsNS43LTEuNiwxMS41LTEuNywxNy4ydjEwOC4zaC0zNlY2OCBMLTQ3OC42LDY4eiIvPgogICAgICA8L2c+CiAgICA8L2c+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCIgZmlsbD0iI0YzNzcyNiI+CiAgICA8cGF0aCBkPSJNMTM1Mi4zLDMyNi4yaDM3VjI4aC0zN1YzMjYuMnogTTE2MDQuOCwzMjYuMmMtMi41LTEzLjktMy40LTMxLjEtMy40LTQ4Ljd2LTc2IGMwLTQwLjctMTUuMS04My4xLTc3LjMtODMuMWMtMjUuNiwwLTUwLDcuMS02Ni44LDE4LjFsOC40LDI0LjRjMTQuMy05LjIsMzQtMTUuMSw1My0xNS4xYzQxLjYsMCw0Ni4yLDMwLjIsNDYuMiw0N3Y0LjIgYy03OC42LTAuNC0xMjIuMywyNi41LTEyMi4zLDc1LjZjMCwyOS40LDIxLDU4LjQsNjIuMiw1OC40YzI5LDAsNTAuOS0xNC4zLDYyLjItMzAuMmgxLjNsMi45LDI1LjZIMTYwNC44eiBNMTU2NS43LDI1Ny43IGMwLDMuOC0wLjgsOC0yLjEsMTEuOGMtNS45LDE3LjItMjIuNywzNC00OS4yLDM0Yy0xOC45LDAtMzQuOS0xMS4zLTM0LjktMzUuM2MwLTM5LjUsNDUuOC00Ni42LDg2LjItNDUuOFYyNTcuN3ogTTE2OTguNSwzMjYuMiBsMS43LTMzLjZoMS4zYzE1LjEsMjYuOSwzOC43LDM4LjIsNjguMSwzOC4yYzQ1LjQsMCw5MS4yLTM2LjEsOTEuMi0xMDguOGMwLjQtNjEuNy0zNS4zLTEwMy43LTg1LjctMTAzLjcgYy0zMi44LDAtNTYuMywxNC43LTY5LjMsMzcuNGgtMC44VjI4aC0zNi42djI0NS43YzAsMTguMS0wLjgsMzguNi0xLjcsNTIuNUgxNjk4LjV6IE0xNzA0LjgsMjA4LjJjMC01LjksMS4zLTEwLjksMi4xLTE1LjEgYzcuNi0yOC4xLDMxLjEtNDUuNCw1Ni4zLTQ1LjRjMzkuNSwwLDYwLjUsMzQuOSw2MC41LDc1LjZjMCw0Ni42LTIzLjEsNzguMS02MS44LDc4LjFjLTI2LjksMC00OC4zLTE3LjYtNTUuNS00My4zIGMtMC44LTQuMi0xLjctOC44LTEuNy0xMy40VjIwOC4yeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgZmlsbD0iIzYxNjE2MSIgZD0iTTE1IDlIOXY2aDZWOXptLTIgNGgtMnYtMmgydjJ6bTgtMlY5aC0yVjdjMC0xLjEtLjktMi0yLTJoLTJWM2gtMnYyaC0yVjNIOXYySDdjLTEuMSAwLTIgLjktMiAydjJIM3YyaDJ2MkgzdjJoMnYyYzAgMS4xLjkgMiAyIDJoMnYyaDJ2LTJoMnYyaDJ2LTJoMmMxLjEgMCAyLS45IDItMnYtMmgydi0yaC0ydi0yaDJ6bS00IDZIN1Y3aDEwdjEweiIvPgo8L3N2Zz4K); + --jp-icon-keyboard: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMjAgNUg0Yy0xLjEgMC0xLjk5LjktMS45OSAyTDIgMTdjMCAxLjEuOSAyIDIgMmgxNmMxLjEgMCAyLS45IDItMlY3YzAtMS4xLS45LTItMi0yem0tOSAzaDJ2MmgtMlY4em0wIDNoMnYyaC0ydi0yek04IDhoMnYySDhWOHptMCAzaDJ2Mkg4di0yem0tMSAySDV2LTJoMnYyem0wLTNINVY4aDJ2MnptOSA3SDh2LTJoOHYyem0wLTRoLTJ2LTJoMnYyem0wLTNoLTJWOGgydjJ6bTMgM2gtMnYtMmgydjJ6bTAtM2gtMlY4aDJ2MnoiLz4KPC9zdmc+Cg==); + --jp-icon-launcher: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkgMTlINVY1aDdWM0g1YTIgMiAwIDAwLTIgMnYxNGEyIDIgMCAwMDIgMmgxNGMxLjEgMCAyLS45IDItMnYtN2gtMnY3ek0xNCAzdjJoMy41OWwtOS44MyA5LjgzIDEuNDEgMS40MUwxOSA2LjQxVjEwaDJWM2gtN3oiLz4KPC9zdmc+Cg==); + --jp-icon-line-form: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGZpbGw9IndoaXRlIiBkPSJNNS44OCA0LjEyTDEzLjc2IDEybC03Ljg4IDcuODhMOCAyMmwxMC0xMEw4IDJ6Ii8+Cjwvc3ZnPgo=); + --jp-icon-link: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTMuOSAxMmMwLTEuNzEgMS4zOS0zLjEgMy4xLTMuMWg0VjdIN2MtMi43NiAwLTUgMi4yNC01IDVzMi4yNCA1IDUgNWg0di0xLjlIN2MtMS43MSAwLTMuMS0xLjM5LTMuMS0zLjF6TTggMTNoOHYtMkg4djJ6bTktNmgtNHYxLjloNGMxLjcxIDAgMy4xIDEuMzkgMy4xIDMuMXMtMS4zOSAzLjEtMy4xIDMuMWgtNFYxN2g0YzIuNzYgMCA1LTIuMjQgNS01cy0yLjI0LTUtNS01eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-list: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiM2MTYxNjEiIGQ9Ik0xOSA1djE0SDVWNWgxNG0xLjEtMkgzLjljLS41IDAtLjkuNC0uOS45djE2LjJjMCAuNC40LjkuOS45aDE2LjJjLjQgMCAuOS0uNS45LS45VjMuOWMwLS41LS41LS45LS45LS45ek0xMSA3aDZ2MmgtNlY3em0wIDRoNnYyaC02di0yem0wIDRoNnYyaC02ek03IDdoMnYySDd6bTAgNGgydjJIN3ptMCA0aDJ2Mkg3eiIvPgo8L3N2Zz4=); + --jp-icon-listings-info: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA1MC45NzggNTAuOTc4IiBzdHlsZT0iZW5hYmxlLWJhY2tncm91bmQ6bmV3IDAgMCA1MC45NzggNTAuOTc4OyIgeG1sOnNwYWNlPSJwcmVzZXJ2ZSI+Cgk8Zz4KCQk8cGF0aCBzdHlsZT0iZmlsbDojMDEwMDAyOyIgZD0iTTQzLjUyLDcuNDU4QzM4LjcxMSwyLjY0OCwzMi4zMDcsMCwyNS40ODksMEMxOC42NywwLDEyLjI2NiwyLjY0OCw3LjQ1OCw3LjQ1OAoJCQljLTkuOTQzLDkuOTQxLTkuOTQzLDI2LjExOSwwLDM2LjA2MmM0LjgwOSw0LjgwOSwxMS4yMTIsNy40NTYsMTguMDMxLDcuNDU4YzAsMCwwLjAwMSwwLDAuMDAyLDAKCQkJYzYuODE2LDAsMTMuMjIxLTIuNjQ4LDE4LjAyOS03LjQ1OGM0LjgwOS00LjgwOSw3LjQ1Ny0xMS4yMTIsNy40NTctMTguMDNDNTAuOTc3LDE4LjY3LDQ4LjMyOCwxMi4yNjYsNDMuNTIsNy40NTh6CgkJCSBNNDIuMTA2LDQyLjEwNWMtNC40MzIsNC40MzEtMTAuMzMyLDYuODcyLTE2LjYxNSw2Ljg3MmgtMC4wMDJjLTYuMjg1LTAuMDAxLTEyLjE4Ny0yLjQ0MS0xNi42MTctNi44NzIKCQkJYy05LjE2Mi05LjE2My05LjE2Mi0yNC4wNzEsMC0zMy4yMzNDMTMuMzAzLDQuNDQsMTkuMjA0LDIsMjUuNDg5LDJjNi4yODQsMCwxMi4xODYsMi40NCwxNi42MTcsNi44NzIKCQkJYzQuNDMxLDQuNDMxLDYuODcxLDEwLjMzMiw2Ljg3MSwxNi42MTdDNDguOTc3LDMxLjc3Miw0Ni41MzYsMzcuNjc1LDQyLjEwNiw0Mi4xMDV6Ii8+CgkJPHBhdGggc3R5bGU9ImZpbGw6IzAxMDAwMjsiIGQ9Ik0yMy41NzgsMzIuMjE4Yy0wLjAyMy0xLjczNCwwLjE0My0zLjA1OSwwLjQ5Ni0zLjk3MmMwLjM1My0wLjkxMywxLjExLTEuOTk3LDIuMjcyLTMuMjUzCgkJCWMwLjQ2OC0wLjUzNiwwLjkyMy0xLjA2MiwxLjM2Ny0xLjU3NWMwLjYyNi0wLjc1MywxLjEwNC0xLjQ3OCwxLjQzNi0yLjE3NWMwLjMzMS0wLjcwNywwLjQ5NS0xLjU0MSwwLjQ5NS0yLjUKCQkJYzAtMS4wOTYtMC4yNi0yLjA4OC0wLjc3OS0yLjk3OWMtMC41NjUtMC44NzktMS41MDEtMS4zMzYtMi44MDYtMS4zNjljLTEuODAyLDAuMDU3LTIuOTg1LDAuNjY3LTMuNTUsMS44MzIKCQkJYy0wLjMwMSwwLjUzNS0wLjUwMywxLjE0MS0wLjYwNywxLjgxNGMtMC4xMzksMC43MDctMC4yMDcsMS40MzItMC4yMDcsMi4xNzRoLTIuOTM3Yy0wLjA5MS0yLjIwOCwwLjQwNy00LjExNCwxLjQ5My01LjcxOQoJCQljMS4wNjItMS42NCwyLjg1NS0yLjQ4MSw1LjM3OC0yLjUyN2MyLjE2LDAuMDIzLDMuODc0LDAuNjA4LDUuMTQxLDEuNzU4YzEuMjc4LDEuMTYsMS45MjksMi43NjQsMS45NSw0LjgxMQoJCQljMCwxLjE0Mi0wLjEzNywyLjExMS0wLjQxLDIuOTExYy0wLjMwOSwwLjg0NS0wLjczMSwxLjU5My0xLjI2OCwyLjI0M2MtMC40OTIsMC42NS0xLjA2OCwxLjMxOC0xLjczLDIuMDAyCgkJCWMtMC42NSwwLjY5Ny0xLjMxMywxLjQ3OS0xLjk4NywyLjM0NmMtMC4yMzksMC4zNzctMC40MjksMC43NzctMC41NjUsMS4xOTljLTAuMTYsMC45NTktMC4yMTcsMS45NTEtMC4xNzEsMi45NzkKCQkJQzI2LjU4OSwzMi4yMTgsMjMuNTc4LDMyLjIxOCwyMy41NzgsMzIuMjE4eiBNMjMuNTc4LDM4LjIydi0zLjQ4NGgzLjA3NnYzLjQ4NEgyMy41Nzh6Ii8+Cgk8L2c+Cjwvc3ZnPgo=); + --jp-icon-markdown: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjN0IxRkEyIiBkPSJNNSAxNC45aDEybC02LjEgNnptOS40LTYuOGMwLTEuMy0uMS0yLjktLjEtNC41LS40IDEuNC0uOSAyLjktMS4zIDQuM2wtMS4zIDQuM2gtMkw4LjUgNy45Yy0uNC0xLjMtLjctMi45LTEtNC4zLS4xIDEuNi0uMSAzLjItLjIgNC42TDcgMTIuNEg0LjhsLjctMTFoMy4zTDEwIDVjLjQgMS4yLjcgMi43IDEgMy45LjMtMS4yLjctMi42IDEtMy45bDEuMi0zLjdoMy4zbC42IDExaC0yLjRsLS4zLTQuMnoiLz4KPC9zdmc+Cg==); + --jp-icon-new-folder: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIwIDZoLThsLTItMkg0Yy0xLjExIDAtMS45OS44OS0xLjk5IDJMMiAxOGMwIDEuMTEuODkgMiAyIDJoMTZjMS4xMSAwIDItLjg5IDItMlY4YzAtMS4xMS0uODktMi0yLTJ6bS0xIDhoLTN2M2gtMnYtM2gtM3YtMmgzVjloMnYzaDN2MnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-not-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI1IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDMgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMTkgMTcuMTg0NCAyLjk2OTY4IDE0LjMwMzIgMS44NjA5NCAxMS40NDA5WiIvPgogICAgPHBhdGggY2xhc3M9ImpwLWljb24yIiBzdHJva2U9IiMzMzMzMzMiIHN0cm9rZS13aWR0aD0iMiIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOS4zMTU5MiA5LjMyMDMxKSIgZD0iTTcuMzY4NDIgMEwwIDcuMzY0NzkiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDkuMzE1OTIgMTYuNjgzNikgc2NhbGUoMSAtMSkiIGQ9Ik03LjM2ODQyIDBMMCA3LjM2NDc5Ii8+Cjwvc3ZnPgo=); + --jp-icon-notebook: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi13YXJuMCBqcC1pY29uLXNlbGVjdGFibGUiIGZpbGw9IiNFRjZDMDAiPgogICAgPHBhdGggZD0iTTE4LjcgMy4zdjE1LjRIMy4zVjMuM2gxNS40bTEuNS0xLjVIMS44djE4LjNoMTguM2wuMS0xOC4zeiIvPgogICAgPHBhdGggZD0iTTE2LjUgMTYuNWwtNS40LTQuMy01LjYgNC4zdi0xMWgxMXoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-numbering: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjIiIGhlaWdodD0iMjIiIHZpZXdCb3g9IjAgMCAyOCAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTQgMTlINlYxOS41SDVWMjAuNUg2VjIxSDRWMjJIN1YxOEg0VjE5Wk01IDEwSDZWNkg0VjdINVYxMFpNNCAxM0g1LjhMNCAxNS4xVjE2SDdWMTVINS4yTDcgMTIuOVYxMkg0VjEzWk05IDdWOUgyM1Y3SDlaTTkgMjFIMjNWMTlIOVYyMVpNOSAxNUgyM1YxM0g5VjE1WiIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-offline-bolt: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyIDIuMDJjLTUuNTEgMC05Ljk4IDQuNDctOS45OCA5Ljk4czQuNDcgOS45OCA5Ljk4IDkuOTggOS45OC00LjQ3IDkuOTgtOS45OFMxNy41MSAyLjAyIDEyIDIuMDJ6TTExLjQ4IDIwdi02LjI2SDhMMTMgNHY2LjI2aDMuMzVMMTEuNDggMjB6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-palette: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTE4IDEzVjIwSDRWNkg5LjAyQzkuMDcgNS4yOSA5LjI0IDQuNjIgOS41IDRINEMyLjkgNCAyIDQuOSAyIDZWMjBDMiAyMS4xIDIuOSAyMiA0IDIySDE4QzE5LjEgMjIgMjAgMjEuMSAyMCAyMFYxNUwxOCAxM1pNMTkuMyA4Ljg5QzE5Ljc0IDguMTkgMjAgNy4zOCAyMCA2LjVDMjAgNC4wMSAxNy45OSAyIDE1LjUgMkMxMy4wMSAyIDExIDQuMDEgMTEgNi41QzExIDguOTkgMTMuMDEgMTEgMTUuNDkgMTFDMTYuMzcgMTEgMTcuMTkgMTAuNzQgMTcuODggMTAuM0wyMSAxMy40MkwyMi40MiAxMkwxOS4zIDguODlaTTE1LjUgOUMxNC4xMiA5IDEzIDcuODggMTMgNi41QzEzIDUuMTIgMTQuMTIgNCAxNS41IDRDMTYuODggNCAxOCA1LjEyIDE4IDYuNUMxOCA3Ljg4IDE2Ljg4IDkgMTUuNSA5WiIvPgogICAgPHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBjbGlwLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDZIOS4wMTg5NEM5LjAwNjM5IDYuMTY1MDIgOSA2LjMzMTc2IDkgNi41QzkgOC44MTU3NyAxMC4yMTEgMTAuODQ4NyAxMi4wMzQzIDEySDlWMTRIMTZWMTIuOTgxMUMxNi41NzAzIDEyLjkzNzcgMTcuMTIgMTIuODIwNyAxNy42Mzk2IDEyLjYzOTZMMTggMTNWMjBINFY2Wk04IDhINlYxMEg4VjhaTTYgMTJIOFYxNEg2VjEyWk04IDE2SDZWMThIOFYxNlpNOSAxNkgxNlYxOEg5VjE2WiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-paste: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE5IDJoLTQuMThDMTQuNC44NCAxMy4zIDAgMTIgMGMtMS4zIDAtMi40Ljg0LTIuODIgMkg1Yy0xLjEgMC0yIC45LTIgMnYxNmMwIDEuMS45IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjRjMC0xLjEtLjktMi0yLTJ6bS03IDBjLjU1IDAgMSAuNDUgMSAxcy0uNDUgMS0xIDEtMS0uNDUtMS0xIC40NS0xIDEtMXptNyAxOEg1VjRoMnYzaDEwVjRoMnYxNnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==); + --jp-icon-pdf: url(data:image/svg+xml;base64,PHN2ZwogICB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCAyMiAyMiIgd2lkdGg9IjE2Ij4KICAgIDxwYXRoIHRyYW5zZm9ybT0icm90YXRlKDQ1KSIgY2xhc3M9ImpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iI0ZGMkEyQSIKICAgICAgIGQ9Im0gMjIuMzQ0MzY5LC0zLjAxNjM2NDIgaCA1LjYzODYwNCB2IDEuNTc5MjQzMyBoIC0zLjU0OTIyNyB2IDEuNTA4NjkyOTkgaCAzLjMzNzU3NiBWIDEuNjUwODE1NCBoIC0zLjMzNzU3NiB2IDMuNDM1MjYxMyBoIC0yLjA4OTM3NyB6IG0gLTcuMTM2NDQ0LDEuNTc5MjQzMyB2IDQuOTQzOTU0MyBoIDAuNzQ4OTIgcSAxLjI4MDc2MSwwIDEuOTUzNzAzLC0wLjYzNDk1MzUgMC42NzgzNjksLTAuNjM0OTUzNSAwLjY3ODM2OSwtMS44NDUxNjQxIDAsLTEuMjA0NzgzNTUgLTAuNjcyOTQyLC0xLjgzNDMxMDExIC0wLjY3Mjk0MiwtMC42Mjk1MjY1OSAtMS45NTkxMywtMC42Mjk1MjY1OSB6IG0gLTIuMDg5Mzc3LC0xLjU3OTI0MzMgaCAyLjIwMzM0MyBxIDEuODQ1MTY0LDAgMi43NDYwMzksMC4yNjU5MjA3IDAuOTA2MzAxLDAuMjYwNDkzNyAxLjU1MjEwOCwwLjg5MDAyMDMgMC41Njk4MywwLjU0ODEyMjMgMC44NDY2MDUsMS4yNjQ0ODAwNiAwLjI3Njc3NCwwLjcxNjM1NzgxIDAuMjc2Nzc0LDEuNjIyNjU4OTQgMCwwLjkxNzE1NTEgLTAuMjc2Nzc0LDEuNjM4OTM5OSAtMC4yNzY3NzUsMC43MTYzNTc4IC0wLjg0NjYwNSwxLjI2NDQ4IC0wLjY1MTIzNCwwLjYyOTUyNjYgLTEuNTYyOTYyLDAuODk1NDQ3MyAtMC45MTE3MjgsMC4yNjA0OTM3IC0yLjczNTE4NSwwLjI2MDQ5MzcgaCAtMi4yMDMzNDMgeiBtIC04LjE0NTg1NjUsMCBoIDMuNDY3ODIzIHEgMS41NDY2ODE2LDAgMi4zNzE1Nzg1LDAuNjg5MjIzIDAuODMwMzI0LDAuNjgzNzk2MSAwLjgzMDMyNCwxLjk1MzcwMzE0IDAsMS4yNzUzMzM5NyAtMC44MzAzMjQsMS45NjQ1NTcwNiBRIDkuOTg3MTk2MSwyLjI3NDkxNSA4LjQ0MDUxNDUsMi4yNzQ5MTUgSCA3LjA2MjA2ODQgViA1LjA4NjA3NjcgSCA0Ljk3MjY5MTUgWiBtIDIuMDg5Mzc2OSwxLjUxNDExOTkgdiAyLjI2MzAzOTQzIGggMS4xNTU5NDEgcSAwLjYwNzgxODgsMCAwLjkzODg2MjksLTAuMjkzMDU1NDcgMC4zMzEwNDQxLC0wLjI5ODQ4MjQxIDAuMzMxMDQ0MSwtMC44NDExNzc3MiAwLC0wLjU0MjY5NTMxIC0wLjMzMTA0NDEsLTAuODM1NzUwNzQgLTAuMzMxMDQ0MSwtMC4yOTMwNTU1IC0wLjkzODg2MjksLTAuMjkzMDU1NSB6IgovPgo8L3N2Zz4K); + --jp-icon-python: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1icmFuZDAganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMEQ0N0ExIj4KICAgIDxwYXRoIGQ9Ik0xMS4xIDYuOVY1LjhINi45YzAtLjUgMC0xLjMuMi0xLjYuNC0uNy44LTEuMSAxLjctMS40IDEuNy0uMyAyLjUtLjMgMy45LS4xIDEgLjEgMS45LjkgMS45IDEuOXY0LjJjMCAuNS0uOSAxLjYtMiAxLjZIOC44Yy0xLjUgMC0yLjQgMS40LTIuNCAyLjh2Mi4ySDQuN0MzLjUgMTUuMSAzIDE0IDMgMTMuMVY5Yy0uMS0xIC42LTIgMS44LTIgMS41LS4xIDYuMy0uMSA2LjMtLjF6Ii8+CiAgICA8cGF0aCBkPSJNMTAuOSAxNS4xdjEuMWg0LjJjMCAuNSAwIDEuMy0uMiAxLjYtLjQuNy0uOCAxLjEtMS43IDEuNC0xLjcuMy0yLjUuMy0zLjkuMS0xLS4xLTEuOS0uOS0xLjktMS45di00LjJjMC0uNS45LTEuNiAyLTEuNmgzLjhjMS41IDAgMi40LTEuNCAyLjQtMi44VjYuNmgxLjdDMTguNSA2LjkgMTkgOCAxOSA4LjlWMTNjMCAxLS43IDIuMS0xLjkgMi4xaC02LjJ6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-r-kernel: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjE5NkYzIiBkPSJNNC40IDIuNWMxLjItLjEgMi45LS4zIDQuOS0uMyAyLjUgMCA0LjEuNCA1LjIgMS4zIDEgLjcgMS41IDEuOSAxLjUgMy41IDAgMi0xLjQgMy41LTIuOSA0LjEgMS4yLjQgMS43IDEuNiAyLjIgMyAuNiAxLjkgMSAzLjkgMS4zIDQuNmgtMy44Yy0uMy0uNC0uOC0xLjctMS4yLTMuN3MtMS4yLTIuNi0yLjYtMi42aC0uOXY2LjRINC40VjIuNXptMy43IDYuOWgxLjRjMS45IDAgMi45LS45IDIuOS0yLjNzLTEtMi4zLTIuOC0yLjNjLS43IDAtMS4zIDAtMS42LjJ2NC41aC4xdi0uMXoiLz4KPC9zdmc+Cg==); + --jp-icon-react: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMTUwIDE1MCA1NDEuOSAyOTUuMyI+CiAgPGcgY2xhc3M9ImpwLWljb24tYnJhbmQyIGpwLWljb24tc2VsZWN0YWJsZSIgZmlsbD0iIzYxREFGQiI+CiAgICA8cGF0aCBkPSJNNjY2LjMgMjk2LjVjMC0zMi41LTQwLjctNjMuMy0xMDMuMS04Mi40IDE0LjQtNjMuNiA4LTExNC4yLTIwLjItMTMwLjQtNi41LTMuOC0xNC4xLTUuNi0yMi40LTUuNnYyMi4zYzQuNiAwIDguMy45IDExLjQgMi42IDEzLjYgNy44IDE5LjUgMzcuNSAxNC45IDc1LjctMS4xIDkuNC0yLjkgMTkuMy01LjEgMjkuNC0xOS42LTQuOC00MS04LjUtNjMuNS0xMC45LTEzLjUtMTguNS0yNy41LTM1LjMtNDEuNi01MCAzMi42LTMwLjMgNjMuMi00Ni45IDg0LTQ2LjlWNzhjLTI3LjUgMC02My41IDE5LjYtOTkuOSA1My42LTM2LjQtMzMuOC03Mi40LTUzLjItOTkuOS01My4ydjIyLjNjMjAuNyAwIDUxLjQgMTYuNSA4NCA0Ni42LTE0IDE0LjctMjggMzEuNC00MS4zIDQ5LjktMjIuNiAyLjQtNDQgNi4xLTYzLjYgMTEtMi4zLTEwLTQtMTkuNy01LjItMjktNC43LTM4LjIgMS4xLTY3LjkgMTQuNi03NS44IDMtMS44IDYuOS0yLjYgMTEuNS0yLjZWNzguNWMtOC40IDAtMTYgMS44LTIyLjYgNS42LTI4LjEgMTYuMi0zNC40IDY2LjctMTkuOSAxMzAuMS02Mi4yIDE5LjItMTAyLjcgNDkuOS0xMDIuNyA4Mi4zIDAgMzIuNSA0MC43IDYzLjMgMTAzLjEgODIuNC0xNC40IDYzLjYtOCAxMTQuMiAyMC4yIDEzMC40IDYuNSAzLjggMTQuMSA1LjYgMjIuNSA1LjYgMjcuNSAwIDYzLjUtMTkuNiA5OS45LTUzLjYgMzYuNCAzMy44IDcyLjQgNTMuMiA5OS45IDUzLjIgOC40IDAgMTYtMS44IDIyLjYtNS42IDI4LjEtMTYuMiAzNC40LTY2LjcgMTkuOS0xMzAuMSA2Mi0xOS4xIDEwMi41LTQ5LjkgMTAyLjUtODIuM3ptLTEzMC4yLTY2LjdjLTMuNyAxMi45LTguMyAyNi4yLTEzLjUgMzkuNS00LjEtOC04LjQtMTYtMTMuMS0yNC00LjYtOC05LjUtMTUuOC0xNC40LTIzLjQgMTQuMiAyLjEgMjcuOSA0LjcgNDEgNy45em0tNDUuOCAxMDYuNWMtNy44IDEzLjUtMTUuOCAyNi4zLTI0LjEgMzguMi0xNC45IDEuMy0zMCAyLTQ1LjIgMi0xNS4xIDAtMzAuMi0uNy00NS0xLjktOC4zLTExLjktMTYuNC0yNC42LTI0LjItMzgtNy42LTEzLjEtMTQuNS0yNi40LTIwLjgtMzkuOCA2LjItMTMuNCAxMy4yLTI2LjggMjAuNy0zOS45IDcuOC0xMy41IDE1LjgtMjYuMyAyNC4xLTM4LjIgMTQuOS0xLjMgMzAtMiA0NS4yLTIgMTUuMSAwIDMwLjIuNyA0NSAxLjkgOC4zIDExLjkgMTYuNCAyNC42IDI0LjIgMzggNy42IDEzLjEgMTQuNSAyNi40IDIwLjggMzkuOC02LjMgMTMuNC0xMy4yIDI2LjgtMjAuNyAzOS45em0zMi4zLTEzYzUuNCAxMy40IDEwIDI2LjggMTMuOCAzOS44LTEzLjEgMy4yLTI2LjkgNS45LTQxLjIgOCA0LjktNy43IDkuOC0xNS42IDE0LjQtMjMuNyA0LjYtOCA4LjktMTYuMSAxMy0yNC4xek00MjEuMiA0MzBjLTkuMy05LjYtMTguNi0yMC4zLTI3LjgtMzIgOSAuNCAxOC4yLjcgMjcuNS43IDkuNCAwIDE4LjctLjIgMjcuOC0uNy05IDExLjctMTguMyAyMi40LTI3LjUgMzJ6bS03NC40LTU4LjljLTE0LjItMi4xLTI3LjktNC43LTQxLTcuOSAzLjctMTIuOSA4LjMtMjYuMiAxMy41LTM5LjUgNC4xIDggOC40IDE2IDEzLjEgMjQgNC43IDggOS41IDE1LjggMTQuNCAyMy40ek00MjAuNyAxNjNjOS4zIDkuNiAxOC42IDIwLjMgMjcuOCAzMi05LS40LTE4LjItLjctMjcuNS0uNy05LjQgMC0xOC43LjItMjcuOC43IDktMTEuNyAxOC4zLTIyLjQgMjcuNS0zMnptLTc0IDU4LjljLTQuOSA3LjctOS44IDE1LjYtMTQuNCAyMy43LTQuNiA4LTguOSAxNi0xMyAyNC01LjQtMTMuNC0xMC0yNi44LTEzLjgtMzkuOCAxMy4xLTMuMSAyNi45LTUuOCA0MS4yLTcuOXptLTkwLjUgMTI1LjJjLTM1LjQtMTUuMS01OC4zLTM0LjktNTguMy01MC42IDAtMTUuNyAyMi45LTM1LjYgNTguMy01MC42IDguNi0zLjcgMTgtNyAyNy43LTEwLjEgNS43IDE5LjYgMTMuMiA0MCAyMi41IDYwLjktOS4yIDIwLjgtMTYuNiA0MS4xLTIyLjIgNjAuNi05LjktMy4xLTE5LjMtNi41LTI4LTEwLjJ6TTMxMCA0OTBjLTEzLjYtNy44LTE5LjUtMzcuNS0xNC45LTc1LjcgMS4xLTkuNCAyLjktMTkuMyA1LjEtMjkuNCAxOS42IDQuOCA0MSA4LjUgNjMuNSAxMC45IDEzLjUgMTguNSAyNy41IDM1LjMgNDEuNiA1MC0zMi42IDMwLjMtNjMuMiA0Ni45LTg0IDQ2LjktNC41LS4xLTguMy0xLTExLjMtMi43em0yMzcuMi03Ni4yYzQuNyAzOC4yLTEuMSA2Ny45LTE0LjYgNzUuOC0zIDEuOC02LjkgMi42LTExLjUgMi42LTIwLjcgMC01MS40LTE2LjUtODQtNDYuNiAxNC0xNC43IDI4LTMxLjQgNDEuMy00OS45IDIyLjYtMi40IDQ0LTYuMSA2My42LTExIDIuMyAxMC4xIDQuMSAxOS44IDUuMiAyOS4xem0zOC41LTY2LjdjLTguNiAzLjctMTggNy0yNy43IDEwLjEtNS43LTE5LjYtMTMuMi00MC0yMi41LTYwLjkgOS4yLTIwLjggMTYuNi00MS4xIDIyLjItNjAuNiA5LjkgMy4xIDE5LjMgNi41IDI4LjEgMTAuMiAzNS40IDE1LjEgNTguMyAzNC45IDU4LjMgNTAuNi0uMSAxNS43LTIzIDM1LjYtNTguNCA1MC42ek0zMjAuOCA3OC40eiIvPgogICAgPGNpcmNsZSBjeD0iNDIwLjkiIGN5PSIyOTYuNSIgcj0iNDUuNyIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-redo: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIGhlaWdodD0iMjQiIHZpZXdCb3g9IjAgMCAyNCAyNCIgd2lkdGg9IjE2Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgICA8cGF0aCBkPSJNMCAwaDI0djI0SDB6IiBmaWxsPSJub25lIi8+PHBhdGggZD0iTTE4LjQgMTAuNkMxNi41NSA4Ljk5IDE0LjE1IDggMTEuNSA4Yy00LjY1IDAtOC41OCAzLjAzLTkuOTYgNy4yMkwzLjkgMTZjMS4wNS0zLjE5IDQuMDUtNS41IDcuNi01LjUgMS45NSAwIDMuNzMuNzIgNS4xMiAxLjg4TDEzIDE2aDlWN2wtMy42IDMuNnoiLz4KICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-refresh: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDE4IDE4Ij4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTkgMTMuNWMtMi40OSAwLTQuNS0yLjAxLTQuNS00LjVTNi41MSA0LjUgOSA0LjVjMS4yNCAwIDIuMzYuNTIgMy4xNyAxLjMzTDEwIDhoNVYzbC0xLjc2IDEuNzZDMTIuMTUgMy42OCAxMC42NiAzIDkgMyA1LjY5IDMgMy4wMSA1LjY5IDMuMDEgOVM1LjY5IDE1IDkgMTVjMi45NyAwIDUuNDMtMi4xNiA1LjktNWgtMS41MmMtLjQ2IDItMi4yNCAzLjUtNC4zOCAzLjV6Ii8+CiAgICA8L2c+Cjwvc3ZnPgo=); + --jp-icon-regex: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIwIDIwIj4KICA8ZyBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiM0MTQxNDEiPgogICAgPHJlY3QgeD0iMiIgeT0iMiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2Ii8+CiAgPC9nPgoKICA8ZyBjbGFzcz0ianAtaWNvbi1hY2NlbnQyIiBmaWxsPSIjRkZGIj4KICAgIDxjaXJjbGUgY2xhc3M9InN0MiIgY3g9IjUuNSIgY3k9IjE0LjUiIHI9IjEuNSIvPgogICAgPHJlY3QgeD0iMTIiIHk9IjQiIGNsYXNzPSJzdDIiIHdpZHRoPSIxIiBoZWlnaHQ9IjgiLz4KICAgIDxyZWN0IHg9IjguNSIgeT0iNy41IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjg2NiAtMC41IDAuNSAwLjg2NiAtMi4zMjU1IDcuMzIxOSkiIGNsYXNzPSJzdDIiIHdpZHRoPSI4IiBoZWlnaHQ9IjEiLz4KICAgIDxyZWN0IHg9IjEyIiB5PSI0IiB0cmFuc2Zvcm09Im1hdHJpeCgwLjUgLTAuODY2IDAuODY2IDAuNSAtMC42Nzc5IDE0LjgyNTIpIiBjbGFzcz0ic3QyIiB3aWR0aD0iMSIgaGVpZ2h0PSI4Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-run: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTggNXYxNGwxMS03eiIvPgogICAgPC9nPgo8L3N2Zz4K); + --jp-icon-running: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDUxMiA1MTIiPgogIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICA8cGF0aCBkPSJNMjU2IDhDMTE5IDggOCAxMTkgOCAyNTZzMTExIDI0OCAyNDggMjQ4IDI0OC0xMTEgMjQ4LTI0OFMzOTMgOCAyNTYgOHptOTYgMzI4YzAgOC44LTcuMiAxNi0xNiAxNkgxNzZjLTguOCAwLTE2LTcuMi0xNi0xNlYxNzZjMC04LjggNy4yLTE2IDE2LTE2aDE2MGM4LjggMCAxNiA3LjIgMTYgMTZ2MTYweiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-save: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTE3IDNINWMtMS4xMSAwLTIgLjktMiAydjE0YzAgMS4xLjg5IDIgMiAyaDE0YzEuMSAwIDItLjkgMi0yVjdsLTQtNHptLTUgMTZjLTEuNjYgMC0zLTEuMzQtMy0zczEuMzQtMyAzLTMgMyAxLjM0IDMgMy0xLjM0IDMtMyAzem0zLTEwSDVWNWgxMHY0eiIvPgogICAgPC9nPgo8L3N2Zz4K); + --jp-icon-search: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMTggMTgiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjEsMTAuOWgtMC43bC0wLjItMC4yYzAuOC0wLjksMS4zLTIuMiwxLjMtMy41YzAtMy0yLjQtNS40LTUuNC01LjRTMS44LDQuMiwxLjgsNy4xczIuNCw1LjQsNS40LDUuNCBjMS4zLDAsMi41LTAuNSwzLjUtMS4zbDAuMiwwLjJ2MC43bDQuMSw0LjFsMS4yLTEuMkwxMi4xLDEwLjl6IE03LjEsMTAuOWMtMi4xLDAtMy43LTEuNy0zLjctMy43czEuNy0zLjcsMy43LTMuN3MzLjcsMS43LDMuNywzLjcgUzkuMiwxMC45LDcuMSwxMC45eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-settings: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTkuNDMgMTIuOThjLjA0LS4zMi4wNy0uNjQuMDctLjk4cy0uMDMtLjY2LS4wNy0uOThsMi4xMS0xLjY1Yy4xOS0uMTUuMjQtLjQyLjEyLS42NGwtMi0zLjQ2Yy0uMTItLjIyLS4zOS0uMy0uNjEtLjIybC0yLjQ5IDFjLS41Mi0uNC0xLjA4LS43My0xLjY5LS45OGwtLjM4LTIuNjVBLjQ4OC40ODggMCAwMDE0IDJoLTRjLS4yNSAwLS40Ni4xOC0uNDkuNDJsLS4zOCAyLjY1Yy0uNjEuMjUtMS4xNy41OS0xLjY5Ljk4bC0yLjQ5LTFjLS4yMy0uMDktLjQ5IDAtLjYxLjIybC0yIDMuNDZjLS4xMy4yMi0uMDcuNDkuMTIuNjRsMi4xMSAxLjY1Yy0uMDQuMzItLjA3LjY1LS4wNy45OHMuMDMuNjYuMDcuOThsLTIuMTEgMS42NWMtLjE5LjE1LS4yNC40Mi0uMTIuNjRsMiAzLjQ2Yy4xMi4yMi4zOS4zLjYxLjIybDIuNDktMWMuNTIuNCAxLjA4LjczIDEuNjkuOThsLjM4IDIuNjVjLjAzLjI0LjI0LjQyLjQ5LjQyaDRjLjI1IDAgLjQ2LS4xOC40OS0uNDJsLjM4LTIuNjVjLjYxLS4yNSAxLjE3LS41OSAxLjY5LS45OGwyLjQ5IDFjLjIzLjA5LjQ5IDAgLjYxLS4yMmwyLTMuNDZjLjEyLS4yMi4wNy0uNDktLjEyLS42NGwtMi4xMS0xLjY1ek0xMiAxNS41Yy0xLjkzIDAtMy41LTEuNTctMy41LTMuNXMxLjU3LTMuNSAzLjUtMy41IDMuNSAxLjU3IDMuNSAzLjUtMS41NyAzLjUtMy41IDMuNXoiLz4KPC9zdmc+Cg==); + --jp-icon-spreadsheet: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8cGF0aCBjbGFzcz0ianAtaWNvbi1jb250cmFzdDEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNENBRjUwIiBkPSJNMi4yIDIuMnYxNy42aDE3LjZWMi4ySDIuMnptMTUuNCA3LjdoLTUuNVY0LjRoNS41djUuNXpNOS45IDQuNHY1LjVINC40VjQuNGg1LjV6bS01LjUgNy43aDUuNXY1LjVINC40di01LjV6bTcuNyA1LjV2LTUuNWg1LjV2NS41aC01LjV6Ii8+Cjwvc3ZnPgo=); + --jp-icon-stop: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik02IDZoMTJ2MTJINnoiLz4KICAgIDwvZz4KPC9zdmc+Cg==); + --jp-icon-tab: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTIxIDNIM2MtMS4xIDAtMiAuOS0yIDJ2MTRjMCAxLjEuOSAyIDIgMmgxOGMxLjEgMCAyLS45IDItMlY1YzAtMS4xLS45LTItMi0yem0wIDE2SDNWNWgxMHY0aDh2MTB6Ii8+CiAgPC9nPgo8L3N2Zz4K); + --jp-icon-table-rows: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMSw4SDNWNGgxOFY4eiBNMjEsMTBIM3Y0aDE4VjEweiBNMjEsMTZIM3Y0aDE4VjE2eiIvPgogICAgPC9nPgo8L3N2Zz4=); + --jp-icon-tag: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjgiIGhlaWdodD0iMjgiIHZpZXdCb3g9IjAgMCA0MyAyOCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KCTxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CgkJPHBhdGggZD0iTTI4LjgzMzIgMTIuMzM0TDMyLjk5OTggMTYuNTAwN0wzNy4xNjY1IDEyLjMzNEgyOC44MzMyWiIvPgoJCTxwYXRoIGQ9Ik0xNi4yMDk1IDIxLjYxMDRDMTUuNjg3MyAyMi4xMjk5IDE0Ljg0NDMgMjIuMTI5OSAxNC4zMjQ4IDIxLjYxMDRMNi45ODI5IDE0LjcyNDVDNi41NzI0IDE0LjMzOTQgNi4wODMxMyAxMy42MDk4IDYuMDQ3ODYgMTMuMDQ4MkM1Ljk1MzQ3IDExLjUyODggNi4wMjAwMiA4LjYxOTQ0IDYuMDY2MjEgNy4wNzY5NUM2LjA4MjgxIDYuNTE0NzcgNi41NTU0OCA2LjA0MzQ3IDcuMTE4MDQgNi4wMzA1NUM5LjA4ODYzIDUuOTg0NzMgMTMuMjYzOCA1LjkzNTc5IDEzLjY1MTggNi4zMjQyNUwyMS43MzY5IDEzLjYzOUMyMi4yNTYgMTQuMTU4NSAyMS43ODUxIDE1LjQ3MjQgMjEuMjYyIDE1Ljk5NDZMMTYuMjA5NSAyMS42MTA0Wk05Ljc3NTg1IDguMjY1QzkuMzM1NTEgNy44MjU2NiA4LjYyMzUxIDcuODI1NjYgOC4xODI4IDguMjY1QzcuNzQzNDYgOC43MDU3MSA3Ljc0MzQ2IDkuNDE3MzMgOC4xODI4IDkuODU2NjdDOC42MjM4MiAxMC4yOTY0IDkuMzM1ODIgMTAuMjk2NCA5Ljc3NTg1IDkuODU2NjdDMTAuMjE1NiA5LjQxNzMzIDEwLjIxNTYgOC43MDUzMyA5Ljc3NTg1IDguMjY1WiIvPgoJPC9nPgo8L3N2Zz4K); + --jp-icon-terminal: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0IiA+CiAgICA8cmVjdCBjbGFzcz0ianAtaWNvbjIganAtaWNvbi1zZWxlY3RhYmxlIiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMikiIGZpbGw9IiMzMzMzMzMiLz4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uLWFjY2VudDIganAtaWNvbi1zZWxlY3RhYmxlLWludmVyc2UiIGQ9Ik01LjA1NjY0IDguNzYxNzJDNS4wNTY2NCA4LjU5NzY2IDUuMDMxMjUgOC40NTMxMiA0Ljk4MDQ3IDguMzI4MTJDNC45MzM1OSA4LjE5OTIyIDQuODU1NDcgOC4wODIwMyA0Ljc0NjA5IDcuOTc2NTZDNC42NDA2MiA3Ljg3MTA5IDQuNSA3Ljc3NTM5IDQuMzI0MjIgNy42ODk0NUM0LjE1MjM0IDcuNTk5NjEgMy45NDMzNiA3LjUxMTcyIDMuNjk3MjcgNy40MjU3OEMzLjMwMjczIDcuMjg1MTYgMi45NDMzNiA3LjEzNjcyIDIuNjE5MTQgNi45ODA0N0MyLjI5NDkyIDYuODI0MjIgMi4wMTc1OCA2LjY0MjU4IDEuNzg3MTEgNi40MzU1NUMxLjU2MDU1IDYuMjI4NTIgMS4zODQ3NyA1Ljk4ODI4IDEuMjU5NzcgNS43MTQ4NEMxLjEzNDc3IDUuNDM3NSAxLjA3MjI3IDUuMTA5MzggMS4wNzIyNyA0LjczMDQ3QzEuMDcyMjcgNC4zOTg0NCAxLjEyODkxIDQuMDk1NyAxLjI0MjE5IDMuODIyMjdDMS4zNTU0NyAzLjU0NDkyIDEuNTE1NjIgMy4zMDQ2OSAxLjcyMjY2IDMuMTAxNTZDMS45Mjk2OSAyLjg5ODQ0IDIuMTc5NjkgMi43MzQzNyAyLjQ3MjY2IDIuNjA5MzhDMi43NjU2MiAyLjQ4NDM4IDMuMDkxOCAyLjQwNDMgMy40NTExNyAyLjM2OTE0VjEuMTA5MzhINC4zODg2N1YyLjM4MDg2QzQuNzQwMjMgMi40Mjc3MyA1LjA1NjY0IDIuNTIzNDQgNS4zMzc4OSAyLjY2Nzk3QzUuNjE5MTQgMi44MTI1IDUuODU3NDIgMy4wMDE5NSA2LjA1MjczIDMuMjM2MzNDNi4yNTE5NSAzLjQ2NjggNi40MDQzIDMuNzQwMjMgNi41MDk3NyA0LjA1NjY0QzYuNjE5MTQgNC4zNjkxNCA2LjY3MzgzIDQuNzIwNyA2LjY3MzgzIDUuMTExMzNINS4wNDQ5MkM1LjA0NDkyIDQuNjM4NjcgNC45Mzc1IDQuMjgxMjUgNC43MjI2NiA0LjAzOTA2QzQuNTA3ODEgMy43OTI5NyA0LjIxNjggMy42Njk5MiAzLjg0OTYxIDMuNjY5OTJDMy42NTAzOSAzLjY2OTkyIDMuNDc2NTYgMy42OTcyNyAzLjMyODEyIDMuNzUxOTVDMy4xODM1OSAzLjgwMjczIDMuMDY0NDUgMy44NzY5NSAyLjk3MDcgMy45NzQ2MUMyLjg3Njk1IDQuMDY4MzYgMi44MDY2NCA0LjE3OTY5IDIuNzU5NzcgNC4zMDg1OUMyLjcxNjggNC40Mzc1IDIuNjk1MzEgNC41NzgxMiAyLjY5NTMxIDQuNzMwNDdDMi42OTUzMSA0Ljg4MjgxIDIuNzE2OCA1LjAxOTUzIDIuNzU5NzcgNS4xNDA2MkMyLjgwNjY0IDUuMjU3ODEgMi44ODI4MSA1LjM2NzE5IDIuOTg4MjggNS40Njg3NUMzLjA5NzY2IDUuNTcwMzEgMy4yNDAyMyA1LjY2Nzk3IDMuNDE2MDIgNS43NjE3MkMzLjU5MTggNS44NTE1NiAzLjgxMDU1IDUuOTQzMzYgNC4wNzIyNyA2LjAzNzExQzQuNDY2OCA2LjE4NTU1IDQuODI0MjIgNi4zMzk4NCA1LjE0NDUzIDYuNUM1LjQ2NDg0IDYuNjU2MjUgNS43MzgyOCA2LjgzOTg0IDUuOTY0ODQgNy4wNTA3OEM2LjE5NTMxIDcuMjU3ODEgNi4zNzEwOSA3LjUgNi40OTIxOSA3Ljc3NzM0QzYuNjE3MTkgOC4wNTA3OCA2LjY3OTY5IDguMzc1IDYuNjc5NjkgOC43NUM2LjY3OTY5IDkuMDkzNzUgNi42MjMwNSA5LjQwNDMgNi41MDk3NyA5LjY4MTY0QzYuMzk2NDggOS45NTUwOCA2LjIzNDM4IDEwLjE5MTQgNi4wMjM0NCAxMC4zOTA2QzUuODEyNSAxMC41ODk4IDUuNTU4NTkgMTAuNzUgNS4yNjE3MiAxMC44NzExQzQuOTY0ODQgMTAuOTg4MyA0LjYzMjgxIDExLjA2NDUgNC4yNjU2MiAxMS4wOTk2VjEyLjI0OEgzLjMzMzk4VjExLjA5OTZDMy4wMDE5NSAxMS4wNjg0IDIuNjc5NjkgMTAuOTk2MSAyLjM2NzE5IDEwLjg4MjhDMi4wNTQ2OSAxMC43NjU2IDEuNzc3MzQgMTAuNTk3NyAxLjUzNTE2IDEwLjM3ODlDMS4yOTY4OCAxMC4xNjAyIDEuMTA1NDcgOS44ODQ3NyAwLjk2MDkzOCA5LjU1MjczQzAuODE2NDA2IDkuMjE2OCAwLjc0NDE0MSA4LjgxNDQ1IDAuNzQ0MTQxIDguMzQ1N0gyLjM3ODkxQzIuMzc4OTEgOC42MjY5NSAyLjQxOTkyIDguODYzMjggMi41MDE5NSA5LjA1NDY5QzIuNTgzOTggOS4yNDIxOSAyLjY4OTQ1IDkuMzkyNTggMi44MTgzNiA5LjUwNTg2QzIuOTUxMTcgOS42MTUyMyAzLjEwMTU2IDkuNjkzMzYgMy4yNjk1MyA5Ljc0MDIzQzMuNDM3NSA5Ljc4NzExIDMuNjA5MzggOS44MTA1NSAzLjc4NTE2IDkuODEwNTVDNC4yMDMxMiA5LjgxMDU1IDQuNTE5NTMgOS43MTI4OSA0LjczNDM4IDkuNTE3NThDNC45NDkyMiA5LjMyMjI3IDUuMDU2NjQgOS4wNzAzMSA1LjA1NjY0IDguNzYxNzJaTTEzLjQxOCAxMi4yNzE1SDguMDc0MjJWMTFIMTMuNDE4VjEyLjI3MTVaIiB0cmFuc2Zvcm09InRyYW5zbGF0ZSgzLjk1MjY0IDYpIiBmaWxsPSJ3aGl0ZSIvPgo8L3N2Zz4K); + --jp-icon-text-editor: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8cGF0aCBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIiBkPSJNMTUgMTVIM3YyaDEydi0yem0wLThIM3YyaDEyVjd6TTMgMTNoMTh2LTJIM3Yyem0wIDhoMTh2LTJIM3Yyek0zIDN2MmgxOFYzSDN6Ii8+Cjwvc3ZnPgo=); + --jp-icon-toc: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIyNCIgaGVpZ2h0PSIyNCIgdmlld0JveD0iMCAwIDI0IDI0Ij4KICA8ZyBjbGFzcz0ianAtaWNvbjMganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjNjE2MTYxIj4KICAgIDxwYXRoIGQ9Ik03LDVIMjFWN0g3VjVNNywxM1YxMUgyMVYxM0g3TTQsNC41QTEuNSwxLjUgMCAwLDEgNS41LDZBMS41LDEuNSAwIDAsMSA0LDcuNUExLjUsMS41IDAgMCwxIDIuNSw2QTEuNSwxLjUgMCAwLDEgNCw0LjVNNCwxMC41QTEuNSwxLjUgMCAwLDEgNS41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMy41QTEuNSwxLjUgMCAwLDEgMi41LDEyQTEuNSwxLjUgMCAwLDEgNCwxMC41TTcsMTlWMTdIMjFWMTlIN000LDE2LjVBMS41LDEuNSAwIDAsMSA1LjUsMThBMS41LDEuNSAwIDAsMSA0LDE5LjVBMS41LDEuNSAwIDAsMSAyLjUsMThBMS41LDEuNSAwIDAsMSA0LDE2LjVaIiAvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-tree-view: url(data:image/svg+xml;base64,PHN2ZyBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxnIGNsYXNzPSJqcC1pY29uMyIgZmlsbD0iIzYxNjE2MSI+CiAgICAgICAgPHBhdGggZD0iTTAgMGgyNHYyNEgweiIgZmlsbD0ibm9uZSIvPgogICAgICAgIDxwYXRoIGQ9Ik0yMiAxMVYzaC03djNIOVYzSDJ2OGg3VjhoMnYxMGg0djNoN3YtOGgtN3YzaC0yVjhoMnYzeiIvPgogICAgPC9nPgo8L3N2Zz4=); + --jp-icon-trusted: url(data:image/svg+xml;base64,PHN2ZyBmaWxsPSJub25lIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDI0IDI1Ij4KICAgIDxwYXRoIGNsYXNzPSJqcC1pY29uMiIgc3Ryb2tlPSIjMzMzMzMzIiBzdHJva2Utd2lkdGg9IjIiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDIgMykiIGQ9Ik0xLjg2MDk0IDExLjQ0MDlDMC44MjY0NDggOC43NzAyNyAwLjg2Mzc3OSA2LjA1NzY0IDEuMjQ5MDcgNC4xOTkzMkMyLjQ4MjA2IDMuOTMzNDcgNC4wODA2OCAzLjQwMzQ3IDUuNjAxMDIgMi44NDQ5QzcuMjM1NDkgMi4yNDQ0IDguODU2NjYgMS41ODE1IDkuOTg3NiAxLjA5NTM5QzExLjA1OTcgMS41ODM0MSAxMi42MDk0IDIuMjQ0NCAxNC4yMTggMi44NDMzOUMxNS43NTAzIDMuNDEzOTQgMTcuMzk5NSAzLjk1MjU4IDE4Ljc1MzkgNC4yMTM4NUMxOS4xMzY0IDYuMDcxNzcgMTkuMTcwOSA4Ljc3NzIyIDE4LjEzOSAxMS40NDA5QzE3LjAzMDMgMTQuMzAzMiAxNC42NjY4IDE3LjE4NDQgOS45OTk5OSAxOC45MzU0QzUuMzMzMiAxNy4xODQ0IDIuOTY5NjggMTQuMzAzMiAxLjg2MDk0IDExLjQ0MDlaIi8+CiAgICA8cGF0aCBjbGFzcz0ianAtaWNvbjIiIGZpbGw9IiMzMzMzMzMiIHN0cm9rZT0iIzMzMzMzMyIgdHJhbnNmb3JtPSJ0cmFuc2xhdGUoOCA5Ljg2NzE5KSIgZD0iTTIuODYwMTUgNC44NjUzNUwwLjcyNjU0OSAyLjk5OTU5TDAgMy42MzA0NUwyLjg2MDE1IDYuMTMxNTdMOCAwLjYzMDg3Mkw3LjI3ODU3IDBMMi44NjAxNSA0Ljg2NTM1WiIvPgo8L3N2Zz4K); + --jp-icon-undo: url(data:image/svg+xml;base64,PHN2ZyB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIxNiIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICA8ZyBjbGFzcz0ianAtaWNvbjMiIGZpbGw9IiM2MTYxNjEiPgogICAgPHBhdGggZD0iTTEyLjUgOGMtMi42NSAwLTUuMDUuOTktNi45IDIuNkwyIDd2OWg5bC0zLjYyLTMuNjJjMS4zOS0xLjE2IDMuMTYtMS44OCA1LjEyLTEuODggMy41NCAwIDYuNTUgMi4zMSA3LjYgNS41bDIuMzctLjc4QzIxLjA4IDExLjAzIDE3LjE1IDggMTIuNSA4eiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-vega: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbjEganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjMjEyMTIxIj4KICAgIDxwYXRoIGQ9Ik0xMC42IDUuNGwyLjItMy4ySDIuMnY3LjNsNC02LjZ6Ii8+CiAgICA8cGF0aCBkPSJNMTUuOCAyLjJsLTQuNCA2LjZMNyA2LjNsLTQuOCA4djUuNWgxNy42VjIuMmgtNHptLTcgMTUuNEg1LjV2LTQuNGgzLjN2NC40em00LjQgMEg5LjhWOS44aDMuNHY3Ljh6bTQuNCAwaC0zLjRWNi41aDMuNHYxMS4xeiIvPgogIDwvZz4KPC9zdmc+Cg==); + --jp-icon-yaml: url(data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNiIgdmlld0JveD0iMCAwIDIyIDIyIj4KICA8ZyBjbGFzcz0ianAtaWNvbi1jb250cmFzdDIganAtaWNvbi1zZWxlY3RhYmxlIiBmaWxsPSIjRDgxQjYwIj4KICAgIDxwYXRoIGQ9Ik03LjIgMTguNnYtNS40TDMgNS42aDMuM2wxLjQgMy4xYy4zLjkuNiAxLjYgMSAyLjUuMy0uOC42LTEuNiAxLTIuNWwxLjQtMy4xaDMuNGwtNC40IDcuNnY1LjVsLTIuOS0uMXoiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxNi41IiByPSIyLjEiLz4KICAgIDxjaXJjbGUgY2xhc3M9InN0MCIgY3g9IjE3LjYiIGN5PSIxMSIgcj0iMi4xIi8+CiAgPC9nPgo8L3N2Zz4K); +} + +/* Icon CSS class declarations */ + +.jp-AddIcon { + background-image: var(--jp-icon-add); +} +.jp-BugIcon { + background-image: var(--jp-icon-bug); +} +.jp-BuildIcon { + background-image: var(--jp-icon-build); +} +.jp-CaretDownEmptyIcon { + background-image: var(--jp-icon-caret-down-empty); +} +.jp-CaretDownEmptyThinIcon { + background-image: var(--jp-icon-caret-down-empty-thin); +} +.jp-CaretDownIcon { + background-image: var(--jp-icon-caret-down); +} +.jp-CaretLeftIcon { + background-image: var(--jp-icon-caret-left); +} +.jp-CaretRightIcon { + background-image: var(--jp-icon-caret-right); +} +.jp-CaretUpEmptyThinIcon { + background-image: var(--jp-icon-caret-up-empty-thin); +} +.jp-CaretUpIcon { + background-image: var(--jp-icon-caret-up); +} +.jp-CaseSensitiveIcon { + background-image: var(--jp-icon-case-sensitive); +} +.jp-CheckIcon { + background-image: var(--jp-icon-check); +} +.jp-CircleEmptyIcon { + background-image: var(--jp-icon-circle-empty); +} +.jp-CircleIcon { + background-image: var(--jp-icon-circle); +} +.jp-ClearIcon { + background-image: var(--jp-icon-clear); +} +.jp-CloseIcon { + background-image: var(--jp-icon-close); +} +.jp-CodeIcon { + background-image: var(--jp-icon-code); +} +.jp-ConsoleIcon { + background-image: var(--jp-icon-console); +} +.jp-CopyIcon { + background-image: var(--jp-icon-copy); +} +.jp-CopyrightIcon { + background-image: var(--jp-icon-copyright); +} +.jp-CutIcon { + background-image: var(--jp-icon-cut); +} +.jp-DownloadIcon { + background-image: var(--jp-icon-download); +} +.jp-EditIcon { + background-image: var(--jp-icon-edit); +} +.jp-EllipsesIcon { + background-image: var(--jp-icon-ellipses); +} +.jp-ExtensionIcon { + background-image: var(--jp-icon-extension); +} +.jp-FastForwardIcon { + background-image: var(--jp-icon-fast-forward); +} +.jp-FileIcon { + background-image: var(--jp-icon-file); +} +.jp-FileUploadIcon { + background-image: var(--jp-icon-file-upload); +} +.jp-FilterListIcon { + background-image: var(--jp-icon-filter-list); +} +.jp-FolderIcon { + background-image: var(--jp-icon-folder); +} +.jp-Html5Icon { + background-image: var(--jp-icon-html5); +} +.jp-ImageIcon { + background-image: var(--jp-icon-image); +} +.jp-InspectorIcon { + background-image: var(--jp-icon-inspector); +} +.jp-JsonIcon { + background-image: var(--jp-icon-json); +} +.jp-JuliaIcon { + background-image: var(--jp-icon-julia); +} +.jp-JupyterFaviconIcon { + background-image: var(--jp-icon-jupyter-favicon); +} +.jp-JupyterIcon { + background-image: var(--jp-icon-jupyter); +} +.jp-JupyterlabWordmarkIcon { + background-image: var(--jp-icon-jupyterlab-wordmark); +} +.jp-KernelIcon { + background-image: var(--jp-icon-kernel); +} +.jp-KeyboardIcon { + background-image: var(--jp-icon-keyboard); +} +.jp-LauncherIcon { + background-image: var(--jp-icon-launcher); +} +.jp-LineFormIcon { + background-image: var(--jp-icon-line-form); +} +.jp-LinkIcon { + background-image: var(--jp-icon-link); +} +.jp-ListIcon { + background-image: var(--jp-icon-list); +} +.jp-ListingsInfoIcon { + background-image: var(--jp-icon-listings-info); +} +.jp-MarkdownIcon { + background-image: var(--jp-icon-markdown); +} +.jp-NewFolderIcon { + background-image: var(--jp-icon-new-folder); +} +.jp-NotTrustedIcon { + background-image: var(--jp-icon-not-trusted); +} +.jp-NotebookIcon { + background-image: var(--jp-icon-notebook); +} +.jp-NumberingIcon { + background-image: var(--jp-icon-numbering); +} +.jp-OfflineBoltIcon { + background-image: var(--jp-icon-offline-bolt); +} +.jp-PaletteIcon { + background-image: var(--jp-icon-palette); +} +.jp-PasteIcon { + background-image: var(--jp-icon-paste); +} +.jp-PdfIcon { + background-image: var(--jp-icon-pdf); +} +.jp-PythonIcon { + background-image: var(--jp-icon-python); +} +.jp-RKernelIcon { + background-image: var(--jp-icon-r-kernel); +} +.jp-ReactIcon { + background-image: var(--jp-icon-react); +} +.jp-RedoIcon { + background-image: var(--jp-icon-redo); +} +.jp-RefreshIcon { + background-image: var(--jp-icon-refresh); +} +.jp-RegexIcon { + background-image: var(--jp-icon-regex); +} +.jp-RunIcon { + background-image: var(--jp-icon-run); +} +.jp-RunningIcon { + background-image: var(--jp-icon-running); +} +.jp-SaveIcon { + background-image: var(--jp-icon-save); +} +.jp-SearchIcon { + background-image: var(--jp-icon-search); +} +.jp-SettingsIcon { + background-image: var(--jp-icon-settings); +} +.jp-SpreadsheetIcon { + background-image: var(--jp-icon-spreadsheet); +} +.jp-StopIcon { + background-image: var(--jp-icon-stop); +} +.jp-TabIcon { + background-image: var(--jp-icon-tab); +} +.jp-TableRowsIcon { + background-image: var(--jp-icon-table-rows); +} +.jp-TagIcon { + background-image: var(--jp-icon-tag); +} +.jp-TerminalIcon { + background-image: var(--jp-icon-terminal); +} +.jp-TextEditorIcon { + background-image: var(--jp-icon-text-editor); +} +.jp-TocIcon { + background-image: var(--jp-icon-toc); +} +.jp-TreeViewIcon { + background-image: var(--jp-icon-tree-view); +} +.jp-TrustedIcon { + background-image: var(--jp-icon-trusted); +} +.jp-UndoIcon { + background-image: var(--jp-icon-undo); +} +.jp-VegaIcon { + background-image: var(--jp-icon-vega); +} +.jp-YamlIcon { + background-image: var(--jp-icon-yaml); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * (DEPRECATED) Support for consuming icons as CSS background images + */ + +.jp-Icon, +.jp-MaterialIcon { + background-position: center; + background-repeat: no-repeat; + background-size: 16px; + min-width: 16px; + min-height: 16px; +} + +.jp-Icon-cover { + background-position: center; + background-repeat: no-repeat; + background-size: cover; +} + +/** + * (DEPRECATED) Support for specific CSS icon sizes + */ + +.jp-Icon-16 { + background-size: 16px; + min-width: 16px; + min-height: 16px; +} + +.jp-Icon-18 { + background-size: 18px; + min-width: 18px; + min-height: 18px; +} + +.jp-Icon-20 { + background-size: 20px; + min-width: 20px; + min-height: 20px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Support for icons as inline SVG HTMLElements + */ + +/* recolor the primary elements of an icon */ +.jp-icon0[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon1[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon2[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon3[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon4[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon0[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon1[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon2[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon3[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon4[stroke] { + stroke: var(--jp-inverse-layout-color4); +} +/* recolor the accent elements of an icon */ +.jp-icon-accent0[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-accent1[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-accent2[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-accent3[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-accent4[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-accent0[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-accent1[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-accent2[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-accent3[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-accent4[stroke] { + stroke: var(--jp-layout-color4); +} +/* set the color of an icon to transparent */ +.jp-icon-none[fill] { + fill: none; +} + +.jp-icon-none[stroke] { + stroke: none; +} +/* brand icon colors. Same for light and dark */ +.jp-icon-brand0[fill] { + fill: var(--jp-brand-color0); +} +.jp-icon-brand1[fill] { + fill: var(--jp-brand-color1); +} +.jp-icon-brand2[fill] { + fill: var(--jp-brand-color2); +} +.jp-icon-brand3[fill] { + fill: var(--jp-brand-color3); +} +.jp-icon-brand4[fill] { + fill: var(--jp-brand-color4); +} + +.jp-icon-brand0[stroke] { + stroke: var(--jp-brand-color0); +} +.jp-icon-brand1[stroke] { + stroke: var(--jp-brand-color1); +} +.jp-icon-brand2[stroke] { + stroke: var(--jp-brand-color2); +} +.jp-icon-brand3[stroke] { + stroke: var(--jp-brand-color3); +} +.jp-icon-brand4[stroke] { + stroke: var(--jp-brand-color4); +} +/* warn icon colors. Same for light and dark */ +.jp-icon-warn0[fill] { + fill: var(--jp-warn-color0); +} +.jp-icon-warn1[fill] { + fill: var(--jp-warn-color1); +} +.jp-icon-warn2[fill] { + fill: var(--jp-warn-color2); +} +.jp-icon-warn3[fill] { + fill: var(--jp-warn-color3); +} + +.jp-icon-warn0[stroke] { + stroke: var(--jp-warn-color0); +} +.jp-icon-warn1[stroke] { + stroke: var(--jp-warn-color1); +} +.jp-icon-warn2[stroke] { + stroke: var(--jp-warn-color2); +} +.jp-icon-warn3[stroke] { + stroke: var(--jp-warn-color3); +} +/* icon colors that contrast well with each other and most backgrounds */ +.jp-icon-contrast0[fill] { + fill: var(--jp-icon-contrast-color0); +} +.jp-icon-contrast1[fill] { + fill: var(--jp-icon-contrast-color1); +} +.jp-icon-contrast2[fill] { + fill: var(--jp-icon-contrast-color2); +} +.jp-icon-contrast3[fill] { + fill: var(--jp-icon-contrast-color3); +} + +.jp-icon-contrast0[stroke] { + stroke: var(--jp-icon-contrast-color0); +} +.jp-icon-contrast1[stroke] { + stroke: var(--jp-icon-contrast-color1); +} +.jp-icon-contrast2[stroke] { + stroke: var(--jp-icon-contrast-color2); +} +.jp-icon-contrast3[stroke] { + stroke: var(--jp-icon-contrast-color3); +} + +/* CSS for icons in selected items in the settings editor */ +#setting-editor .jp-PluginList .jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} +#setting-editor + .jp-PluginList + .jp-mod-selected + .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} + +/* CSS for icons in selected filebrowser listing items */ +.jp-DirListing-item.jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} +.jp-DirListing-item.jp-mod-selected .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} + +/* CSS for icons in selected tabs in the sidebar tab manager */ +#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable[fill] { + fill: #fff; +} + +#tab-manager .lm-TabBar-tab.jp-mod-active .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} +#tab-manager + .lm-TabBar-tab.jp-mod-active + .jp-icon-hover + :hover + .jp-icon-selectable[fill] { + fill: var(--jp-brand-color1); +} + +#tab-manager + .lm-TabBar-tab.jp-mod-active + .jp-icon-hover + :hover + .jp-icon-selectable-inverse[fill] { + fill: #fff; +} + +/** + * TODO: come up with non css-hack solution for showing the busy icon on top + * of the close icon + * CSS for complex behavior of close icon of tabs in the sidebar tab manager + */ +#tab-manager + .lm-TabBar-tab.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon3[fill] { + fill: none; +} +#tab-manager + .lm-TabBar-tab.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: var(--jp-inverse-layout-color3); +} + +#tab-manager + .lm-TabBar-tab.jp-mod-dirty.jp-mod-active + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: #fff; +} + +/** +* TODO: come up with non css-hack solution for showing the busy icon on top +* of the close icon +* CSS for complex behavior of close icon of tabs in the main area tabbar +*/ +.lm-DockPanel-tabBar + .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon3[fill] { + fill: none; +} +.lm-DockPanel-tabBar + .lm-TabBar-tab.lm-mod-closable.jp-mod-dirty + > .lm-TabBar-tabCloseIcon + > :not(:hover) + > .jp-icon-busy[fill] { + fill: var(--jp-inverse-layout-color3); +} + +/* CSS for icons in status bar */ +#jp-main-statusbar .jp-mod-selected .jp-icon-selectable[fill] { + fill: #fff; +} + +#jp-main-statusbar .jp-mod-selected .jp-icon-selectable-inverse[fill] { + fill: var(--jp-brand-color1); +} +/* special handling for splash icon CSS. While the theme CSS reloads during + splash, the splash icon can loose theming. To prevent that, we set a + default for its color variable */ +:root { + --jp-warn-color0: var(--md-orange-700); +} + +/* not sure what to do with this one, used in filebrowser listing */ +.jp-DragIcon { + margin-right: 4px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/** + * Support for alt colors for icons as inline SVG HTMLElements + */ + +/* alt recolor the primary elements of an icon */ +.jp-icon-alt .jp-icon0[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-alt .jp-icon1[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-alt .jp-icon2[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-alt .jp-icon3[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-alt .jp-icon4[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-alt .jp-icon0[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-alt .jp-icon1[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-alt .jp-icon2[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-alt .jp-icon3[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-alt .jp-icon4[stroke] { + stroke: var(--jp-layout-color4); +} + +/* alt recolor the accent elements of an icon */ +.jp-icon-alt .jp-icon-accent0[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-alt .jp-icon-accent1[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-alt .jp-icon-accent2[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-alt .jp-icon-accent3[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-alt .jp-icon-accent4[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-alt .jp-icon-accent0[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-alt .jp-icon-accent1[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-alt .jp-icon-accent2[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-alt .jp-icon-accent3[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-alt .jp-icon-accent4[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-icon-hoverShow:not(:hover) svg { + display: none !important; +} + +/** + * Support for hover colors for icons as inline SVG HTMLElements + */ + +/** + * regular colors + */ + +/* recolor the primary elements of an icon */ +.jp-icon-hover :hover .jp-icon0-hover[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-hover :hover .jp-icon1-hover[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-hover :hover .jp-icon2-hover[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-hover :hover .jp-icon3-hover[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-hover :hover .jp-icon4-hover[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-hover :hover .jp-icon0-hover[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-hover :hover .jp-icon1-hover[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-hover :hover .jp-icon2-hover[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-hover :hover .jp-icon3-hover[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-hover :hover .jp-icon4-hover[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/* recolor the accent elements of an icon */ +.jp-icon-hover :hover .jp-icon-accent0-hover[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-hover :hover .jp-icon-accent1-hover[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-hover :hover .jp-icon-accent2-hover[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-hover :hover .jp-icon-accent3-hover[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-hover :hover .jp-icon-accent4-hover[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-hover :hover .jp-icon-accent0-hover[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-hover :hover .jp-icon-accent1-hover[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-hover :hover .jp-icon-accent2-hover[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-hover :hover .jp-icon-accent3-hover[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-hover :hover .jp-icon-accent4-hover[stroke] { + stroke: var(--jp-layout-color4); +} + +/* set the color of an icon to transparent */ +.jp-icon-hover :hover .jp-icon-none-hover[fill] { + fill: none; +} + +.jp-icon-hover :hover .jp-icon-none-hover[stroke] { + stroke: none; +} + +/** + * inverse colors + */ + +/* inverse recolor the primary elements of an icon */ +.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[fill] { + fill: var(--jp-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[fill] { + fill: var(--jp-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[fill] { + fill: var(--jp-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[fill] { + fill: var(--jp-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[fill] { + fill: var(--jp-layout-color4); +} + +.jp-icon-hover.jp-icon-alt :hover .jp-icon0-hover[stroke] { + stroke: var(--jp-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon1-hover[stroke] { + stroke: var(--jp-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon2-hover[stroke] { + stroke: var(--jp-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon3-hover[stroke] { + stroke: var(--jp-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon4-hover[stroke] { + stroke: var(--jp-layout-color4); +} + +/* inverse recolor the accent elements of an icon */ +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[fill] { + fill: var(--jp-inverse-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[fill] { + fill: var(--jp-inverse-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[fill] { + fill: var(--jp-inverse-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[fill] { + fill: var(--jp-inverse-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[fill] { + fill: var(--jp-inverse-layout-color4); +} + +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent0-hover[stroke] { + stroke: var(--jp-inverse-layout-color0); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent1-hover[stroke] { + stroke: var(--jp-inverse-layout-color1); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent2-hover[stroke] { + stroke: var(--jp-inverse-layout-color2); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent3-hover[stroke] { + stroke: var(--jp-inverse-layout-color3); +} +.jp-icon-hover.jp-icon-alt :hover .jp-icon-accent4-hover[stroke] { + stroke: var(--jp-inverse-layout-color4); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-switch { + display: flex; + align-items: center; + padding-left: 4px; + padding-right: 4px; + font-size: var(--jp-ui-font-size1); + background-color: transparent; + color: var(--jp-ui-font-color1); + border: none; + height: 20px; +} + +.jp-switch:hover { + background-color: var(--jp-layout-color2); +} + +.jp-switch-label { + margin-right: 5px; +} + +.jp-switch-track { + cursor: pointer; + background-color: var(--jp-border-color1); + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 34px; + height: 16px; + width: 35px; + position: relative; +} + +.jp-switch-track::before { + content: ''; + position: absolute; + height: 10px; + width: 10px; + margin: 3px; + left: 0px; + background-color: var(--jp-ui-inverse-font-color1); + -webkit-transition: 0.4s; + transition: 0.4s; + border-radius: 50%; +} + +.jp-switch[aria-checked='true'] .jp-switch-track { + background-color: var(--jp-warn-color0); +} + +.jp-switch[aria-checked='true'] .jp-switch-track::before { + /* track width (35) - margins (3 + 3) - thumb width (10) */ + left: 19px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* Sibling imports */ + +/* Override Blueprint's _reset.scss styles */ +html { + box-sizing: unset; +} + +*, +*::before, +*::after { + box-sizing: unset; +} + +body { + color: unset; + font-family: var(--jp-ui-font-family); +} + +p { + margin-top: unset; + margin-bottom: unset; +} + +small { + font-size: unset; +} + +strong { + font-weight: unset; +} + +/* Override Blueprint's _typography.scss styles */ +a { + text-decoration: unset; + color: unset; +} +a:hover { + text-decoration: unset; + color: unset; +} + +/* Override Blueprint's _accessibility.scss styles */ +:focus { + outline: unset; + outline-offset: unset; + -moz-outline-radius: unset; +} + +/* Styles for ui-components */ +.jp-Button { + border-radius: var(--jp-border-radius); + padding: 0px 12px; + font-size: var(--jp-ui-font-size1); +} + +/* Use our own theme for hover styles */ +button.jp-Button.bp3-button.bp3-minimal:hover { + background-color: var(--jp-layout-color2); +} +.jp-Button.minimal { + color: unset !important; +} + +.jp-Button.jp-ToolbarButtonComponent { + text-transform: none; +} + +.jp-InputGroup input { + box-sizing: border-box; + border-radius: 0; + background-color: transparent; + color: var(--jp-ui-font-color0); + box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color); +} + +.jp-InputGroup input:focus { + box-shadow: inset 0 0 0 var(--jp-border-width) + var(--jp-input-active-box-shadow-color), + inset 0 0 0 3px var(--jp-input-active-box-shadow-color); +} + +.jp-InputGroup input::placeholder, +input::placeholder { + color: var(--jp-ui-font-color3); +} + +.jp-BPIcon { + display: inline-block; + vertical-align: middle; + margin: auto; +} + +/* Stop blueprint futzing with our icon fills */ +.bp3-icon.jp-BPIcon > svg:not([fill]) { + fill: var(--jp-inverse-layout-color3); +} + +.jp-InputGroupAction { + padding: 6px; +} + +.jp-HTMLSelect.jp-DefaultStyle select { + background-color: initial; + border: none; + border-radius: 0; + box-shadow: none; + color: var(--jp-ui-font-color0); + display: block; + font-size: var(--jp-ui-font-size1); + height: 24px; + line-height: 14px; + padding: 0 25px 0 10px; + text-align: left; + -moz-appearance: none; + -webkit-appearance: none; +} + +/* Use our own theme for hover and option styles */ +.jp-HTMLSelect.jp-DefaultStyle select:hover, +.jp-HTMLSelect.jp-DefaultStyle select > option { + background-color: var(--jp-layout-color2); + color: var(--jp-ui-font-color0); +} +select { + box-sizing: border-box; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Collapse { + display: flex; + flex-direction: column; + align-items: stretch; + border-top: 1px solid var(--jp-border-color2); + border-bottom: 1px solid var(--jp-border-color2); +} + +.jp-Collapse-header { + padding: 1px 12px; + color: var(--jp-ui-font-color1); + background-color: var(--jp-layout-color1); + font-size: var(--jp-ui-font-size2); +} + +.jp-Collapse-header:hover { + background-color: var(--jp-layout-color2); +} + +.jp-Collapse-contents { + padding: 0px 12px 0px 12px; + background-color: var(--jp-layout-color1); + color: var(--jp-ui-font-color1); + overflow: auto; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-commandpalette-search-height: 28px; +} + +/*----------------------------------------------------------------------------- +| Overall styles +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette { + padding-bottom: 0px; + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); +} + +/*----------------------------------------------------------------------------- +| Modal variant +|----------------------------------------------------------------------------*/ + +.jp-ModalCommandPalette { + position: absolute; + z-index: 10000; + top: 38px; + left: 30%; + margin: 0; + padding: 4px; + width: 40%; + box-shadow: var(--jp-elevation-z4); + border-radius: 4px; + background: var(--jp-layout-color0); +} + +.jp-ModalCommandPalette .lm-CommandPalette { + max-height: 40vh; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-close-icon::after { + display: none; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-header { + display: none; +} + +.jp-ModalCommandPalette .lm-CommandPalette .lm-CommandPalette-item { + margin-left: 4px; + margin-right: 4px; +} + +.jp-ModalCommandPalette + .lm-CommandPalette + .lm-CommandPalette-item.lm-mod-disabled { + display: none; +} + +/*----------------------------------------------------------------------------- +| Search +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette-search { + padding: 4px; + background-color: var(--jp-layout-color1); + z-index: 2; +} + +.lm-CommandPalette-wrapper { + overflow: overlay; + padding: 0px 9px; + background-color: var(--jp-input-active-background); + height: 30px; + box-shadow: inset 0 0 0 var(--jp-border-width) var(--jp-input-border-color); +} + +.lm-CommandPalette.lm-mod-focused .lm-CommandPalette-wrapper { + box-shadow: inset 0 0 0 1px var(--jp-input-active-box-shadow-color), + inset 0 0 0 3px var(--jp-input-active-box-shadow-color); +} + +.jp-SearchIconGroup { + color: white; + background-color: var(--jp-brand-color1); + position: absolute; + top: 4px; + right: 4px; + padding: 5px 5px 1px 5px; +} + +.jp-SearchIconGroup svg { + height: 20px; + width: 20px; +} + +.jp-SearchIconGroup .jp-icon3[fill] { + fill: var(--jp-layout-color0); +} + +.lm-CommandPalette-input { + background: transparent; + width: calc(100% - 18px); + float: left; + border: none; + outline: none; + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + line-height: var(--jp-private-commandpalette-search-height); +} + +.lm-CommandPalette-input::-webkit-input-placeholder, +.lm-CommandPalette-input::-moz-placeholder, +.lm-CommandPalette-input:-ms-input-placeholder { + color: var(--jp-ui-font-color2); + font-size: var(--jp-ui-font-size1); +} + +/*----------------------------------------------------------------------------- +| Results +|----------------------------------------------------------------------------*/ + +.lm-CommandPalette-header:first-child { + margin-top: 0px; +} + +.lm-CommandPalette-header { + border-bottom: solid var(--jp-border-width) var(--jp-border-color2); + color: var(--jp-ui-font-color1); + cursor: pointer; + display: flex; + font-size: var(--jp-ui-font-size0); + font-weight: 600; + letter-spacing: 1px; + margin-top: 8px; + padding: 8px 0 8px 12px; + text-transform: uppercase; +} + +.lm-CommandPalette-header.lm-mod-active { + background: var(--jp-layout-color2); +} + +.lm-CommandPalette-header > mark { + background-color: transparent; + font-weight: bold; + color: var(--jp-ui-font-color1); +} + +.lm-CommandPalette-item { + padding: 4px 12px 4px 4px; + color: var(--jp-ui-font-color1); + font-size: var(--jp-ui-font-size1); + font-weight: 400; + display: flex; +} + +.lm-CommandPalette-item.lm-mod-disabled { + color: var(--jp-ui-font-color2); +} + +.lm-CommandPalette-item.lm-mod-active { + color: var(--jp-ui-inverse-font-color1); + background: var(--jp-brand-color1); +} + +.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark { + color: var(--jp-ui-inverse-font-color0); +} + +.lm-CommandPalette-item.lm-mod-active .jp-icon-selectable[fill] { + fill: var(--jp-layout-color0); +} + +.lm-CommandPalette-item.lm-mod-active .lm-CommandPalette-itemLabel > mark { + color: var(--jp-ui-inverse-font-color0); +} + +.lm-CommandPalette-item.lm-mod-active:hover:not(.lm-mod-disabled) { + color: var(--jp-ui-inverse-font-color1); + background: var(--jp-brand-color1); +} + +.lm-CommandPalette-item:hover:not(.lm-mod-active):not(.lm-mod-disabled) { + background: var(--jp-layout-color2); +} + +.lm-CommandPalette-itemContent { + overflow: hidden; +} + +.lm-CommandPalette-itemLabel > mark { + color: var(--jp-ui-font-color0); + background-color: transparent; + font-weight: bold; +} + +.lm-CommandPalette-item.lm-mod-disabled mark { + color: var(--jp-ui-font-color2); +} + +.lm-CommandPalette-item .lm-CommandPalette-itemIcon { + margin: 0 4px 0 0; + position: relative; + width: 16px; + top: 2px; + flex: 0 0 auto; +} + +.lm-CommandPalette-item.lm-mod-disabled .lm-CommandPalette-itemIcon { + opacity: 0.6; +} + +.lm-CommandPalette-item .lm-CommandPalette-itemShortcut { + flex: 0 0 auto; +} + +.lm-CommandPalette-itemCaption { + display: none; +} + +.lm-CommandPalette-content { + background-color: var(--jp-layout-color1); +} + +.lm-CommandPalette-content:empty:after { + content: 'No results'; + margin: auto; + margin-top: 20px; + width: 100px; + display: block; + font-size: var(--jp-ui-font-size2); + font-family: var(--jp-ui-font-family); + font-weight: lighter; +} + +.lm-CommandPalette-emptyMessage { + text-align: center; + margin-top: 24px; + line-height: 1.32; + padding: 0px 8px; + color: var(--jp-content-font-color3); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Dialog { + position: absolute; + z-index: 10000; + display: flex; + flex-direction: column; + align-items: center; + justify-content: center; + top: 0px; + left: 0px; + margin: 0; + padding: 0; + width: 100%; + height: 100%; + background: var(--jp-dialog-background); +} + +.jp-Dialog-content { + display: flex; + flex-direction: column; + margin-left: auto; + margin-right: auto; + background: var(--jp-layout-color1); + padding: 24px; + padding-bottom: 12px; + min-width: 300px; + min-height: 150px; + max-width: 1000px; + max-height: 500px; + box-sizing: border-box; + box-shadow: var(--jp-elevation-z20); + word-wrap: break-word; + border-radius: var(--jp-border-radius); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color1); + resize: both; +} + +.jp-Dialog-button { + overflow: visible; +} + +button.jp-Dialog-button:focus { + outline: 1px solid var(--jp-brand-color1); + outline-offset: 4px; + -moz-outline-radius: 0px; +} + +button.jp-Dialog-button:focus::-moz-focus-inner { + border: 0; +} + +button.jp-Dialog-close-button { + padding: 0; + height: 100%; + min-width: unset; + min-height: unset; +} + +.jp-Dialog-header { + display: flex; + justify-content: space-between; + flex: 0 0 auto; + padding-bottom: 12px; + font-size: var(--jp-ui-font-size3); + font-weight: 400; + color: var(--jp-ui-font-color0); +} + +.jp-Dialog-body { + display: flex; + flex-direction: column; + flex: 1 1 auto; + font-size: var(--jp-ui-font-size1); + background: var(--jp-layout-color1); + overflow: auto; +} + +.jp-Dialog-footer { + display: flex; + flex-direction: row; + justify-content: flex-end; + flex: 0 0 auto; + margin-left: -12px; + margin-right: -12px; + padding: 12px; +} + +.jp-Dialog-title { + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.jp-Dialog-body > .jp-select-wrapper { + width: 100%; +} + +.jp-Dialog-body > button { + padding: 0px 16px; +} + +.jp-Dialog-body > label { + line-height: 1.4; + color: var(--jp-ui-font-color0); +} + +.jp-Dialog-button.jp-mod-styled:not(:last-child) { + margin-right: 12px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-HoverBox { + position: fixed; +} + +.jp-HoverBox.jp-mod-outofview { + display: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-IFrame { + width: 100%; + height: 100%; +} + +.jp-IFrame > iframe { + border: none; +} + +/* +When drag events occur, `p-mod-override-cursor` is added to the body. +Because iframes steal all cursor events, the following two rules are necessary +to suppress pointer events while resize drags are occurring. There may be a +better solution to this problem. +*/ +body.lm-mod-override-cursor .jp-IFrame { + position: relative; +} + +body.lm-mod-override-cursor .jp-IFrame:before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; +} + +.jp-Input-Boolean-Dialog { + flex-direction: row-reverse; + align-items: end; + width: 100%; +} + +.jp-Input-Boolean-Dialog > label { + flex: 1 1 auto; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-MainAreaWidget > :focus { + outline: none; +} + +/** + * google-material-color v1.2.6 + * https://github.com/danlevan/google-material-color + */ +:root { + --md-red-50: #ffebee; + --md-red-100: #ffcdd2; + --md-red-200: #ef9a9a; + --md-red-300: #e57373; + --md-red-400: #ef5350; + --md-red-500: #f44336; + --md-red-600: #e53935; + --md-red-700: #d32f2f; + --md-red-800: #c62828; + --md-red-900: #b71c1c; + --md-red-A100: #ff8a80; + --md-red-A200: #ff5252; + --md-red-A400: #ff1744; + --md-red-A700: #d50000; + + --md-pink-50: #fce4ec; + --md-pink-100: #f8bbd0; + --md-pink-200: #f48fb1; + --md-pink-300: #f06292; + --md-pink-400: #ec407a; + --md-pink-500: #e91e63; + --md-pink-600: #d81b60; + --md-pink-700: #c2185b; + --md-pink-800: #ad1457; + --md-pink-900: #880e4f; + --md-pink-A100: #ff80ab; + --md-pink-A200: #ff4081; + --md-pink-A400: #f50057; + --md-pink-A700: #c51162; + + --md-purple-50: #f3e5f5; + --md-purple-100: #e1bee7; + --md-purple-200: #ce93d8; + --md-purple-300: #ba68c8; + --md-purple-400: #ab47bc; + --md-purple-500: #9c27b0; + --md-purple-600: #8e24aa; + --md-purple-700: #7b1fa2; + --md-purple-800: #6a1b9a; + --md-purple-900: #4a148c; + --md-purple-A100: #ea80fc; + --md-purple-A200: #e040fb; + --md-purple-A400: #d500f9; + --md-purple-A700: #aa00ff; + + --md-deep-purple-50: #ede7f6; + --md-deep-purple-100: #d1c4e9; + --md-deep-purple-200: #b39ddb; + --md-deep-purple-300: #9575cd; + --md-deep-purple-400: #7e57c2; + --md-deep-purple-500: #673ab7; + --md-deep-purple-600: #5e35b1; + --md-deep-purple-700: #512da8; + --md-deep-purple-800: #4527a0; + --md-deep-purple-900: #311b92; + --md-deep-purple-A100: #b388ff; + --md-deep-purple-A200: #7c4dff; + --md-deep-purple-A400: #651fff; + --md-deep-purple-A700: #6200ea; + + --md-indigo-50: #e8eaf6; + --md-indigo-100: #c5cae9; + --md-indigo-200: #9fa8da; + --md-indigo-300: #7986cb; + --md-indigo-400: #5c6bc0; + --md-indigo-500: #3f51b5; + --md-indigo-600: #3949ab; + --md-indigo-700: #303f9f; + --md-indigo-800: #283593; + --md-indigo-900: #1a237e; + --md-indigo-A100: #8c9eff; + --md-indigo-A200: #536dfe; + --md-indigo-A400: #3d5afe; + --md-indigo-A700: #304ffe; + + --md-blue-50: #e3f2fd; + --md-blue-100: #bbdefb; + --md-blue-200: #90caf9; + --md-blue-300: #64b5f6; + --md-blue-400: #42a5f5; + --md-blue-500: #2196f3; + --md-blue-600: #1e88e5; + --md-blue-700: #1976d2; + --md-blue-800: #1565c0; + --md-blue-900: #0d47a1; + --md-blue-A100: #82b1ff; + --md-blue-A200: #448aff; + --md-blue-A400: #2979ff; + --md-blue-A700: #2962ff; + + --md-light-blue-50: #e1f5fe; + --md-light-blue-100: #b3e5fc; + --md-light-blue-200: #81d4fa; + --md-light-blue-300: #4fc3f7; + --md-light-blue-400: #29b6f6; + --md-light-blue-500: #03a9f4; + --md-light-blue-600: #039be5; + --md-light-blue-700: #0288d1; + --md-light-blue-800: #0277bd; + --md-light-blue-900: #01579b; + --md-light-blue-A100: #80d8ff; + --md-light-blue-A200: #40c4ff; + --md-light-blue-A400: #00b0ff; + --md-light-blue-A700: #0091ea; + + --md-cyan-50: #e0f7fa; + --md-cyan-100: #b2ebf2; + --md-cyan-200: #80deea; + --md-cyan-300: #4dd0e1; + --md-cyan-400: #26c6da; + --md-cyan-500: #00bcd4; + --md-cyan-600: #00acc1; + --md-cyan-700: #0097a7; + --md-cyan-800: #00838f; + --md-cyan-900: #006064; + --md-cyan-A100: #84ffff; + --md-cyan-A200: #18ffff; + --md-cyan-A400: #00e5ff; + --md-cyan-A700: #00b8d4; + + --md-teal-50: #e0f2f1; + --md-teal-100: #b2dfdb; + --md-teal-200: #80cbc4; + --md-teal-300: #4db6ac; + --md-teal-400: #26a69a; + --md-teal-500: #009688; + --md-teal-600: #00897b; + --md-teal-700: #00796b; + --md-teal-800: #00695c; + --md-teal-900: #004d40; + --md-teal-A100: #a7ffeb; + --md-teal-A200: #64ffda; + --md-teal-A400: #1de9b6; + --md-teal-A700: #00bfa5; + + --md-green-50: #e8f5e9; + --md-green-100: #c8e6c9; + --md-green-200: #a5d6a7; + --md-green-300: #81c784; + --md-green-400: #66bb6a; + --md-green-500: #4caf50; + --md-green-600: #43a047; + --md-green-700: #388e3c; + --md-green-800: #2e7d32; + --md-green-900: #1b5e20; + --md-green-A100: #b9f6ca; + --md-green-A200: #69f0ae; + --md-green-A400: #00e676; + --md-green-A700: #00c853; + + --md-light-green-50: #f1f8e9; + --md-light-green-100: #dcedc8; + --md-light-green-200: #c5e1a5; + --md-light-green-300: #aed581; + --md-light-green-400: #9ccc65; + --md-light-green-500: #8bc34a; + --md-light-green-600: #7cb342; + --md-light-green-700: #689f38; + --md-light-green-800: #558b2f; + --md-light-green-900: #33691e; + --md-light-green-A100: #ccff90; + --md-light-green-A200: #b2ff59; + --md-light-green-A400: #76ff03; + --md-light-green-A700: #64dd17; + + --md-lime-50: #f9fbe7; + --md-lime-100: #f0f4c3; + --md-lime-200: #e6ee9c; + --md-lime-300: #dce775; + --md-lime-400: #d4e157; + --md-lime-500: #cddc39; + --md-lime-600: #c0ca33; + --md-lime-700: #afb42b; + --md-lime-800: #9e9d24; + --md-lime-900: #827717; + --md-lime-A100: #f4ff81; + --md-lime-A200: #eeff41; + --md-lime-A400: #c6ff00; + --md-lime-A700: #aeea00; + + --md-yellow-50: #fffde7; + --md-yellow-100: #fff9c4; + --md-yellow-200: #fff59d; + --md-yellow-300: #fff176; + --md-yellow-400: #ffee58; + --md-yellow-500: #ffeb3b; + --md-yellow-600: #fdd835; + --md-yellow-700: #fbc02d; + --md-yellow-800: #f9a825; + --md-yellow-900: #f57f17; + --md-yellow-A100: #ffff8d; + --md-yellow-A200: #ffff00; + --md-yellow-A400: #ffea00; + --md-yellow-A700: #ffd600; + + --md-amber-50: #fff8e1; + --md-amber-100: #ffecb3; + --md-amber-200: #ffe082; + --md-amber-300: #ffd54f; + --md-amber-400: #ffca28; + --md-amber-500: #ffc107; + --md-amber-600: #ffb300; + --md-amber-700: #ffa000; + --md-amber-800: #ff8f00; + --md-amber-900: #ff6f00; + --md-amber-A100: #ffe57f; + --md-amber-A200: #ffd740; + --md-amber-A400: #ffc400; + --md-amber-A700: #ffab00; + + --md-orange-50: #fff3e0; + --md-orange-100: #ffe0b2; + --md-orange-200: #ffcc80; + --md-orange-300: #ffb74d; + --md-orange-400: #ffa726; + --md-orange-500: #ff9800; + --md-orange-600: #fb8c00; + --md-orange-700: #f57c00; + --md-orange-800: #ef6c00; + --md-orange-900: #e65100; + --md-orange-A100: #ffd180; + --md-orange-A200: #ffab40; + --md-orange-A400: #ff9100; + --md-orange-A700: #ff6d00; + + --md-deep-orange-50: #fbe9e7; + --md-deep-orange-100: #ffccbc; + --md-deep-orange-200: #ffab91; + --md-deep-orange-300: #ff8a65; + --md-deep-orange-400: #ff7043; + --md-deep-orange-500: #ff5722; + --md-deep-orange-600: #f4511e; + --md-deep-orange-700: #e64a19; + --md-deep-orange-800: #d84315; + --md-deep-orange-900: #bf360c; + --md-deep-orange-A100: #ff9e80; + --md-deep-orange-A200: #ff6e40; + --md-deep-orange-A400: #ff3d00; + --md-deep-orange-A700: #dd2c00; + + --md-brown-50: #efebe9; + --md-brown-100: #d7ccc8; + --md-brown-200: #bcaaa4; + --md-brown-300: #a1887f; + --md-brown-400: #8d6e63; + --md-brown-500: #795548; + --md-brown-600: #6d4c41; + --md-brown-700: #5d4037; + --md-brown-800: #4e342e; + --md-brown-900: #3e2723; + + --md-grey-50: #fafafa; + --md-grey-100: #f5f5f5; + --md-grey-200: #eeeeee; + --md-grey-300: #e0e0e0; + --md-grey-400: #bdbdbd; + --md-grey-500: #9e9e9e; + --md-grey-600: #757575; + --md-grey-700: #616161; + --md-grey-800: #424242; + --md-grey-900: #212121; + + --md-blue-grey-50: #eceff1; + --md-blue-grey-100: #cfd8dc; + --md-blue-grey-200: #b0bec5; + --md-blue-grey-300: #90a4ae; + --md-blue-grey-400: #78909c; + --md-blue-grey-500: #607d8b; + --md-blue-grey-600: #546e7a; + --md-blue-grey-700: #455a64; + --md-blue-grey-800: #37474f; + --md-blue-grey-900: #263238; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Spinner { + position: absolute; + display: flex; + justify-content: center; + align-items: center; + z-index: 10; + left: 0; + top: 0; + width: 100%; + height: 100%; + background: var(--jp-layout-color0); + outline: none; +} + +.jp-SpinnerContent { + font-size: 10px; + margin: 50px auto; + text-indent: -9999em; + width: 3em; + height: 3em; + border-radius: 50%; + background: var(--jp-brand-color3); + background: linear-gradient( + to right, + #f37626 10%, + rgba(255, 255, 255, 0) 42% + ); + position: relative; + animation: load3 1s infinite linear, fadeIn 1s; +} + +.jp-SpinnerContent:before { + width: 50%; + height: 50%; + background: #f37626; + border-radius: 100% 0 0 0; + position: absolute; + top: 0; + left: 0; + content: ''; +} + +.jp-SpinnerContent:after { + background: var(--jp-layout-color0); + width: 75%; + height: 75%; + border-radius: 50%; + content: ''; + margin: auto; + position: absolute; + top: 0; + left: 0; + bottom: 0; + right: 0; +} + +@keyframes fadeIn { + 0% { + opacity: 0; + } + 100% { + opacity: 1; + } +} + +@keyframes load3 { + 0% { + transform: rotate(0deg); + } + 100% { + transform: rotate(360deg); + } +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +button.jp-mod-styled { + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + border: none; + box-sizing: border-box; + text-align: center; + line-height: 32px; + height: 32px; + padding: 0px 12px; + letter-spacing: 0.8px; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +input.jp-mod-styled { + background: var(--jp-input-background); + height: 28px; + box-sizing: border-box; + border: var(--jp-border-width) solid var(--jp-border-color1); + padding-left: 7px; + padding-right: 7px; + font-size: var(--jp-ui-font-size2); + color: var(--jp-ui-font-color0); + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +input[type='checkbox'].jp-mod-styled { + appearance: checkbox; + -webkit-appearance: checkbox; + -moz-appearance: checkbox; + height: auto; +} + +input.jp-mod-styled:focus { + border: var(--jp-border-width) solid var(--md-blue-500); + box-shadow: inset 0 0 4px var(--md-blue-300); +} + +.jp-FileDialog-Checkbox { + margin-top: 35px; + display: flex; + flex-direction: row; + align-items: end; + width: 100%; +} + +.jp-FileDialog-Checkbox > label { + flex: 1 1 auto; +} + +.jp-select-wrapper { + display: flex; + position: relative; + flex-direction: column; + padding: 1px; + background-color: var(--jp-layout-color1); + height: 28px; + box-sizing: border-box; + margin-bottom: 12px; +} + +.jp-select-wrapper.jp-mod-focused select.jp-mod-styled { + border: var(--jp-border-width) solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); + background-color: var(--jp-input-active-background); +} + +select.jp-mod-styled:hover { + background-color: var(--jp-layout-color1); + cursor: pointer; + color: var(--jp-ui-font-color0); + background-color: var(--jp-input-hover-background); + box-shadow: inset 0 0px 1px rgba(0, 0, 0, 0.5); +} + +select.jp-mod-styled { + flex: 1 1 auto; + height: 32px; + width: 100%; + font-size: var(--jp-ui-font-size2); + background: var(--jp-input-background); + color: var(--jp-ui-font-color0); + padding: 0 25px 0 8px; + border: var(--jp-border-width) solid var(--jp-input-border-color); + border-radius: 0px; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-toolbar-height: calc( + 28px + var(--jp-border-width) + ); /* leave 28px for content */ +} + +.jp-Toolbar { + color: var(--jp-ui-font-color1); + flex: 0 0 auto; + display: flex; + flex-direction: row; + border-bottom: var(--jp-border-width) solid var(--jp-toolbar-border-color); + box-shadow: var(--jp-toolbar-box-shadow); + background: var(--jp-toolbar-background); + min-height: var(--jp-toolbar-micro-height); + padding: 2px; + z-index: 1; + overflow-x: auto; +} + +/* Toolbar items */ + +.jp-Toolbar > .jp-Toolbar-item.jp-Toolbar-spacer { + flex-grow: 1; + flex-shrink: 1; +} + +.jp-Toolbar-item.jp-Toolbar-kernelStatus { + display: inline-block; + width: 32px; + background-repeat: no-repeat; + background-position: center; + background-size: 16px; +} + +.jp-Toolbar > .jp-Toolbar-item { + flex: 0 0 auto; + display: flex; + padding-left: 1px; + padding-right: 1px; + font-size: var(--jp-ui-font-size1); + line-height: var(--jp-private-toolbar-height); + height: 100%; +} + +/* Toolbar buttons */ + +/* This is the div we use to wrap the react component into a Widget */ +div.jp-ToolbarButton { + color: transparent; + border: none; + box-sizing: border-box; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + padding: 0px; + margin: 0px; +} + +button.jp-ToolbarButtonComponent { + background: var(--jp-layout-color1); + border: none; + box-sizing: border-box; + outline: none; + appearance: none; + -webkit-appearance: none; + -moz-appearance: none; + padding: 0px 6px; + margin: 0px; + height: 24px; + border-radius: var(--jp-border-radius); + display: flex; + align-items: center; + text-align: center; + font-size: 14px; + min-width: unset; + min-height: unset; +} + +button.jp-ToolbarButtonComponent:disabled { + opacity: 0.4; +} + +button.jp-ToolbarButtonComponent span { + padding: 0px; + flex: 0 0 auto; +} + +button.jp-ToolbarButtonComponent .jp-ToolbarButtonComponent-label { + font-size: var(--jp-ui-font-size1); + line-height: 100%; + padding-left: 2px; + color: var(--jp-ui-font-color1); +} + +#jp-main-dock-panel[data-mode='single-document'] + .jp-MainAreaWidget + > .jp-Toolbar.jp-Toolbar-micro { + padding: 0; + min-height: 0; +} + +#jp-main-dock-panel[data-mode='single-document'] + .jp-MainAreaWidget + > .jp-Toolbar { + border: none; + box-shadow: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2017, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Copyright (c) 2014-2017, PhosphorJS Contributors +| +| Distributed under the terms of the BSD 3-Clause License. +| +| The full license is in the file LICENSE, distributed with this software. +|----------------------------------------------------------------------------*/ + + +/* <DEPRECATED> */ body.p-mod-override-cursor *, /* </DEPRECATED> */ +body.lm-mod-override-cursor * { + cursor: inherit !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) 2014-2016, Jupyter Development Team. +| +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-JSONEditor { + display: flex; + flex-direction: column; + width: 100%; +} + +.jp-JSONEditor-host { + flex: 1 1 auto; + border: var(--jp-border-width) solid var(--jp-input-border-color); + border-radius: 0px; + background: var(--jp-layout-color0); + min-height: 50px; + padding: 1px; +} + +.jp-JSONEditor.jp-mod-error .jp-JSONEditor-host { + border-color: red; + outline-color: red; +} + +.jp-JSONEditor-header { + display: flex; + flex: 1 0 auto; + padding: 0 0 0 12px; +} + +.jp-JSONEditor-header label { + flex: 0 0 auto; +} + +.jp-JSONEditor-commitButton { + height: 16px; + width: 16px; + background-size: 18px; + background-repeat: no-repeat; + background-position: center; +} + +.jp-JSONEditor-host.jp-mod-focused { + background-color: var(--jp-input-active-background); + border: 1px solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); +} + +.jp-Editor.jp-mod-dropTarget { + border: var(--jp-border-width) solid var(--jp-input-active-border-color); + box-shadow: var(--jp-input-box-shadow); +} + +/* BASICS */ + +.CodeMirror { + /* Set height, width, borders, and global font properties here */ + font-family: monospace; + height: 300px; + color: black; + direction: ltr; +} + +/* PADDING */ + +.CodeMirror-lines { + padding: 4px 0; /* Vertical padding around content */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + padding: 0 4px; /* Horizontal padding of content */ +} + +.CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + background-color: white; /* The little square between H and V scrollbars */ +} + +/* GUTTER */ + +.CodeMirror-gutters { + border-right: 1px solid #ddd; + background-color: #f7f7f7; + white-space: nowrap; +} +.CodeMirror-linenumbers {} +.CodeMirror-linenumber { + padding: 0 3px 0 5px; + min-width: 20px; + text-align: right; + color: #999; + white-space: nowrap; +} + +.CodeMirror-guttermarker { color: black; } +.CodeMirror-guttermarker-subtle { color: #999; } + +/* CURSOR */ + +.CodeMirror-cursor { + border-left: 1px solid black; + border-right: none; + width: 0; +} +/* Shown when moving in bi-directional text */ +.CodeMirror div.CodeMirror-secondarycursor { + border-left: 1px solid silver; +} +.cm-fat-cursor .CodeMirror-cursor { + width: auto; + border: 0 !important; + background: #7e7; +} +.cm-fat-cursor div.CodeMirror-cursors { + z-index: 1; +} +.cm-fat-cursor-mark { + background-color: rgba(20, 255, 20, 0.5); + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; +} +.cm-animate-fat-cursor { + width: auto; + border: 0; + -webkit-animation: blink 1.06s steps(1) infinite; + -moz-animation: blink 1.06s steps(1) infinite; + animation: blink 1.06s steps(1) infinite; + background-color: #7e7; +} +@-moz-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@-webkit-keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} +@keyframes blink { + 0% {} + 50% { background-color: transparent; } + 100% {} +} + +/* Can style cursor different in overwrite (non-insert) mode */ +.CodeMirror-overwrite .CodeMirror-cursor {} + +.cm-tab { display: inline-block; text-decoration: inherit; } + +.CodeMirror-rulers { + position: absolute; + left: 0; right: 0; top: -50px; bottom: 0; + overflow: hidden; +} +.CodeMirror-ruler { + border-left: 1px solid #ccc; + top: 0; bottom: 0; + position: absolute; +} + +/* DEFAULT THEME */ + +.cm-s-default .cm-header {color: blue;} +.cm-s-default .cm-quote {color: #090;} +.cm-negative {color: #d44;} +.cm-positive {color: #292;} +.cm-header, .cm-strong {font-weight: bold;} +.cm-em {font-style: italic;} +.cm-link {text-decoration: underline;} +.cm-strikethrough {text-decoration: line-through;} + +.cm-s-default .cm-keyword {color: #708;} +.cm-s-default .cm-atom {color: #219;} +.cm-s-default .cm-number {color: #164;} +.cm-s-default .cm-def {color: #00f;} +.cm-s-default .cm-variable, +.cm-s-default .cm-punctuation, +.cm-s-default .cm-property, +.cm-s-default .cm-operator {} +.cm-s-default .cm-variable-2 {color: #05a;} +.cm-s-default .cm-variable-3, .cm-s-default .cm-type {color: #085;} +.cm-s-default .cm-comment {color: #a50;} +.cm-s-default .cm-string {color: #a11;} +.cm-s-default .cm-string-2 {color: #f50;} +.cm-s-default .cm-meta {color: #555;} +.cm-s-default .cm-qualifier {color: #555;} +.cm-s-default .cm-builtin {color: #30a;} +.cm-s-default .cm-bracket {color: #997;} +.cm-s-default .cm-tag {color: #170;} +.cm-s-default .cm-attribute {color: #00c;} +.cm-s-default .cm-hr {color: #999;} +.cm-s-default .cm-link {color: #00c;} + +.cm-s-default .cm-error {color: #f00;} +.cm-invalidchar {color: #f00;} + +.CodeMirror-composing { border-bottom: 2px solid; } + +/* Default styles for common addons */ + +div.CodeMirror span.CodeMirror-matchingbracket {color: #0b0;} +div.CodeMirror span.CodeMirror-nonmatchingbracket {color: #a22;} +.CodeMirror-matchingtag { background: rgba(255, 150, 0, .3); } +.CodeMirror-activeline-background {background: #e8f2ff;} + +/* STOP */ + +/* The rest of this file contains styles related to the mechanics of + the editor. You probably shouldn't touch them. */ + +.CodeMirror { + position: relative; + overflow: hidden; + background: white; +} + +.CodeMirror-scroll { + overflow: scroll !important; /* Things will break if this is overridden */ + /* 50px is the magic margin used to hide the element's real scrollbars */ + /* See overflow: hidden in .CodeMirror */ + margin-bottom: -50px; margin-right: -50px; + padding-bottom: 50px; + height: 100%; + outline: none; /* Prevent dragging from highlighting the element */ + position: relative; +} +.CodeMirror-sizer { + position: relative; + border-right: 50px solid transparent; +} + +/* The fake, visible scrollbars. Used to force redraw during scrolling + before actual scrolling happens, thus preventing shaking and + flickering artifacts. */ +.CodeMirror-vscrollbar, .CodeMirror-hscrollbar, .CodeMirror-scrollbar-filler, .CodeMirror-gutter-filler { + position: absolute; + z-index: 6; + display: none; + outline: none; +} +.CodeMirror-vscrollbar { + right: 0; top: 0; + overflow-x: hidden; + overflow-y: scroll; +} +.CodeMirror-hscrollbar { + bottom: 0; left: 0; + overflow-y: hidden; + overflow-x: scroll; +} +.CodeMirror-scrollbar-filler { + right: 0; bottom: 0; +} +.CodeMirror-gutter-filler { + left: 0; bottom: 0; +} + +.CodeMirror-gutters { + position: absolute; left: 0; top: 0; + min-height: 100%; + z-index: 3; +} +.CodeMirror-gutter { + white-space: normal; + height: 100%; + display: inline-block; + vertical-align: top; + margin-bottom: -50px; +} +.CodeMirror-gutter-wrapper { + position: absolute; + z-index: 4; + background: none !important; + border: none !important; +} +.CodeMirror-gutter-background { + position: absolute; + top: 0; bottom: 0; + z-index: 4; +} +.CodeMirror-gutter-elt { + position: absolute; + cursor: default; + z-index: 4; +} +.CodeMirror-gutter-wrapper ::selection { background-color: transparent } +.CodeMirror-gutter-wrapper ::-moz-selection { background-color: transparent } + +.CodeMirror-lines { + cursor: text; + min-height: 1px; /* prevents collapsing before first draw */ +} +.CodeMirror pre.CodeMirror-line, +.CodeMirror pre.CodeMirror-line-like { + /* Reset some styles that the rest of the page might have set */ + -moz-border-radius: 0; -webkit-border-radius: 0; border-radius: 0; + border-width: 0; + background: transparent; + font-family: inherit; + font-size: inherit; + margin: 0; + white-space: pre; + word-wrap: normal; + line-height: inherit; + color: inherit; + z-index: 2; + position: relative; + overflow: visible; + -webkit-tap-highlight-color: transparent; + -webkit-font-variant-ligatures: contextual; + font-variant-ligatures: contextual; +} +.CodeMirror-wrap pre.CodeMirror-line, +.CodeMirror-wrap pre.CodeMirror-line-like { + word-wrap: break-word; + white-space: pre-wrap; + word-break: normal; +} + +.CodeMirror-linebackground { + position: absolute; + left: 0; right: 0; top: 0; bottom: 0; + z-index: 0; +} + +.CodeMirror-linewidget { + position: relative; + z-index: 2; + padding: 0.1px; /* Force widget margins to stay inside of the container */ +} + +.CodeMirror-widget {} + +.CodeMirror-rtl pre { direction: rtl; } + +.CodeMirror-code { + outline: none; +} + +/* Force content-box sizing for the elements where we expect it */ +.CodeMirror-scroll, +.CodeMirror-sizer, +.CodeMirror-gutter, +.CodeMirror-gutters, +.CodeMirror-linenumber { + -moz-box-sizing: content-box; + box-sizing: content-box; +} + +.CodeMirror-measure { + position: absolute; + width: 100%; + height: 0; + overflow: hidden; + visibility: hidden; +} + +.CodeMirror-cursor { + position: absolute; + pointer-events: none; +} +.CodeMirror-measure pre { position: static; } + +div.CodeMirror-cursors { + visibility: hidden; + position: relative; + z-index: 3; +} +div.CodeMirror-dragcursors { + visibility: visible; +} + +.CodeMirror-focused div.CodeMirror-cursors { + visibility: visible; +} + +.CodeMirror-selected { background: #d9d9d9; } +.CodeMirror-focused .CodeMirror-selected { background: #d7d4f0; } +.CodeMirror-crosshair { cursor: crosshair; } +.CodeMirror-line::selection, .CodeMirror-line > span::selection, .CodeMirror-line > span > span::selection { background: #d7d4f0; } +.CodeMirror-line::-moz-selection, .CodeMirror-line > span::-moz-selection, .CodeMirror-line > span > span::-moz-selection { background: #d7d4f0; } + +.cm-searching { + background-color: #ffa; + background-color: rgba(255, 255, 0, .4); +} + +/* Used to force a border model for a node */ +.cm-force-border { padding-right: .1px; } + +@media print { + /* Hide the cursor when printing */ + .CodeMirror div.CodeMirror-cursors { + visibility: hidden; + } +} + +/* See issue #2901 */ +.cm-tab-wrap-hack:after { content: ''; } + +/* Help users use markselection to safely style text background */ +span.CodeMirror-selectedtext { background: none; } + +.CodeMirror-dialog { + position: absolute; + left: 0; right: 0; + background: inherit; + z-index: 15; + padding: .1em .8em; + overflow: hidden; + color: inherit; +} + +.CodeMirror-dialog-top { + border-bottom: 1px solid #eee; + top: 0; +} + +.CodeMirror-dialog-bottom { + border-top: 1px solid #eee; + bottom: 0; +} + +.CodeMirror-dialog input { + border: none; + outline: none; + background: transparent; + width: 20em; + color: inherit; + font-family: monospace; +} + +.CodeMirror-dialog button { + font-size: 70%; +} + +.CodeMirror-foldmarker { + color: blue; + text-shadow: #b9f 1px 1px 2px, #b9f -1px -1px 2px, #b9f 1px -1px 2px, #b9f -1px 1px 2px; + font-family: arial; + line-height: .3; + cursor: pointer; +} +.CodeMirror-foldgutter { + width: .7em; +} +.CodeMirror-foldgutter-open, +.CodeMirror-foldgutter-folded { + cursor: pointer; +} +.CodeMirror-foldgutter-open:after { + content: "\25BE"; +} +.CodeMirror-foldgutter-folded:after { + content: "\25B8"; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.CodeMirror { + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + font-family: var(--jp-code-font-family); + border: 0; + border-radius: 0; + height: auto; + /* Changed to auto to autogrow */ +} + +.CodeMirror pre { + padding: 0 var(--jp-code-padding); +} + +.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-dialog { + background-color: var(--jp-layout-color0); + color: var(--jp-content-font-color1); +} + +/* This causes https://github.com/jupyter/jupyterlab/issues/522 */ +/* May not cause it not because we changed it! */ +.CodeMirror-lines { + padding: var(--jp-code-padding) 0; +} + +.CodeMirror-linenumber { + padding: 0 8px; +} + +.jp-CodeMirrorEditor { + cursor: text; +} + +.jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color); +} + +/* When zoomed out 67% and 33% on a screen of 1440 width x 900 height */ +@media screen and (min-width: 2138px) and (max-width: 4319px) { + .jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width1) solid + var(--jp-editor-cursor-color); + } +} + +/* When zoomed out less than 33% */ +@media screen and (min-width: 4320px) { + .jp-CodeMirrorEditor[data-type='inline'] .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width2) solid + var(--jp-editor-cursor-color); + } +} + +.CodeMirror.jp-mod-readOnly .CodeMirror-cursor { + display: none; +} + +.CodeMirror-gutters { + border-right: 1px solid var(--jp-border-color2); + background-color: var(--jp-layout-color0); +} + +.jp-CollaboratorCursor { + border-left: 5px solid transparent; + border-right: 5px solid transparent; + border-top: none; + border-bottom: 3px solid; + background-clip: content-box; + margin-left: -5px; + margin-right: -5px; +} + +.CodeMirror-selectedtext.cm-searching { + background-color: var(--jp-search-selected-match-background-color) !important; + color: var(--jp-search-selected-match-color) !important; +} + +.cm-searching { + background-color: var( + --jp-search-unselected-match-background-color + ) !important; + color: var(--jp-search-unselected-match-color) !important; +} + +.CodeMirror-focused .CodeMirror-selected { + background-color: var(--jp-editor-selected-focused-background); +} + +.CodeMirror-selected { + background-color: var(--jp-editor-selected-background); +} + +.jp-CollaboratorCursor-hover { + position: absolute; + z-index: 1; + transform: translateX(-50%); + color: white; + border-radius: 3px; + padding-left: 4px; + padding-right: 4px; + padding-top: 1px; + padding-bottom: 1px; + text-align: center; + font-size: var(--jp-ui-font-size1); + white-space: nowrap; +} + +.jp-CodeMirror-ruler { + border-left: 1px dashed var(--jp-border-color2); +} + +/** + * Here is our jupyter theme for CodeMirror syntax highlighting + * This is used in our marked.js syntax highlighting and CodeMirror itself + * The string "jupyter" is set in ../codemirror/widget.DEFAULT_CODEMIRROR_THEME + * This came from the classic notebook, which came form highlight.js/GitHub + */ + +/** + * CodeMirror themes are handling the background/color in this way. This works + * fine for CodeMirror editors outside the notebook, but the notebook styles + * these things differently. + */ +.CodeMirror.cm-s-jupyter { + background: var(--jp-layout-color0); + color: var(--jp-content-font-color1); +} + +/* In the notebook, we want this styling to be handled by its container */ +.jp-CodeConsole .CodeMirror.cm-s-jupyter, +.jp-Notebook .CodeMirror.cm-s-jupyter { + background: transparent; +} + +.cm-s-jupyter .CodeMirror-cursor { + border-left: var(--jp-code-cursor-width0) solid var(--jp-editor-cursor-color); +} +.cm-s-jupyter span.cm-keyword { + color: var(--jp-mirror-editor-keyword-color); + font-weight: bold; +} +.cm-s-jupyter span.cm-atom { + color: var(--jp-mirror-editor-atom-color); +} +.cm-s-jupyter span.cm-number { + color: var(--jp-mirror-editor-number-color); +} +.cm-s-jupyter span.cm-def { + color: var(--jp-mirror-editor-def-color); +} +.cm-s-jupyter span.cm-variable { + color: var(--jp-mirror-editor-variable-color); +} +.cm-s-jupyter span.cm-variable-2 { + color: var(--jp-mirror-editor-variable-2-color); +} +.cm-s-jupyter span.cm-variable-3 { + color: var(--jp-mirror-editor-variable-3-color); +} +.cm-s-jupyter span.cm-punctuation { + color: var(--jp-mirror-editor-punctuation-color); +} +.cm-s-jupyter span.cm-property { + color: var(--jp-mirror-editor-property-color); +} +.cm-s-jupyter span.cm-operator { + color: var(--jp-mirror-editor-operator-color); + font-weight: bold; +} +.cm-s-jupyter span.cm-comment { + color: var(--jp-mirror-editor-comment-color); + font-style: italic; +} +.cm-s-jupyter span.cm-string { + color: var(--jp-mirror-editor-string-color); +} +.cm-s-jupyter span.cm-string-2 { + color: var(--jp-mirror-editor-string-2-color); +} +.cm-s-jupyter span.cm-meta { + color: var(--jp-mirror-editor-meta-color); +} +.cm-s-jupyter span.cm-qualifier { + color: var(--jp-mirror-editor-qualifier-color); +} +.cm-s-jupyter span.cm-builtin { + color: var(--jp-mirror-editor-builtin-color); +} +.cm-s-jupyter span.cm-bracket { + color: var(--jp-mirror-editor-bracket-color); +} +.cm-s-jupyter span.cm-tag { + color: var(--jp-mirror-editor-tag-color); +} +.cm-s-jupyter span.cm-attribute { + color: var(--jp-mirror-editor-attribute-color); +} +.cm-s-jupyter span.cm-header { + color: var(--jp-mirror-editor-header-color); +} +.cm-s-jupyter span.cm-quote { + color: var(--jp-mirror-editor-quote-color); +} +.cm-s-jupyter span.cm-link { + color: var(--jp-mirror-editor-link-color); +} +.cm-s-jupyter span.cm-error { + color: var(--jp-mirror-editor-error-color); +} +.cm-s-jupyter span.cm-hr { + color: #999; +} + +.cm-s-jupyter span.cm-tab { + background: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADAAAAAMCAYAAAAkuj5RAAAAAXNSR0IArs4c6QAAAGFJREFUSMft1LsRQFAQheHPowAKoACx3IgEKtaEHujDjORSgWTH/ZOdnZOcM/sgk/kFFWY0qV8foQwS4MKBCS3qR6ixBJvElOobYAtivseIE120FaowJPN75GMu8j/LfMwNjh4HUpwg4LUAAAAASUVORK5CYII=); + background-position: right; + background-repeat: no-repeat; +} + +.cm-s-jupyter .CodeMirror-activeline-background, +.cm-s-jupyter .CodeMirror-gutter { + background-color: var(--jp-layout-color2); +} + +/* Styles for shared cursors (remote cursor locations and selected ranges) */ +.jp-CodeMirrorEditor .remote-caret { + position: relative; + border-left: 2px solid black; + margin-left: -1px; + margin-right: -1px; + box-sizing: border-box; +} + +.jp-CodeMirrorEditor .remote-caret > div { + white-space: nowrap; + position: absolute; + top: -1.15em; + padding-bottom: 0.05em; + left: -2px; + font-size: 0.95em; + background-color: rgb(250, 129, 0); + font-family: var(--jp-ui-font-family); + font-weight: bold; + line-height: normal; + user-select: none; + color: white; + padding-left: 2px; + padding-right: 2px; + z-index: 3; + transition: opacity 0.3s ease-in-out; +} + +.jp-CodeMirrorEditor .remote-caret.hide-name > div { + transition-delay: 0.7s; + opacity: 0; +} + +.jp-CodeMirrorEditor .remote-caret:hover > div { + opacity: 1; + transition-delay: 0s; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| RenderedText +|----------------------------------------------------------------------------*/ + +:root { + /* This is the padding value to fill the gaps between lines containing spans with background color. */ + --jp-private-code-span-padding: calc( + (var(--jp-code-line-height) - 1) * var(--jp-code-font-size) / 2 + ); +} + +.jp-RenderedText { + text-align: left; + padding-left: var(--jp-code-padding); + line-height: var(--jp-code-line-height); + font-family: var(--jp-code-font-family); +} + +.jp-RenderedText pre, +.jp-RenderedJavaScript pre, +.jp-RenderedHTMLCommon pre { + color: var(--jp-content-font-color1); + font-size: var(--jp-code-font-size); + border: none; + margin: 0px; + padding: 0px; +} + +.jp-RenderedText pre a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} +.jp-RenderedText pre a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} +.jp-RenderedText pre a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* console foregrounds and backgrounds */ +.jp-RenderedText pre .ansi-black-fg { + color: #3e424d; +} +.jp-RenderedText pre .ansi-red-fg { + color: #e75c58; +} +.jp-RenderedText pre .ansi-green-fg { + color: #00a250; +} +.jp-RenderedText pre .ansi-yellow-fg { + color: #ddb62b; +} +.jp-RenderedText pre .ansi-blue-fg { + color: #208ffb; +} +.jp-RenderedText pre .ansi-magenta-fg { + color: #d160c4; +} +.jp-RenderedText pre .ansi-cyan-fg { + color: #60c6c8; +} +.jp-RenderedText pre .ansi-white-fg { + color: #c5c1b4; +} + +.jp-RenderedText pre .ansi-black-bg { + background-color: #3e424d; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-red-bg { + background-color: #e75c58; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-green-bg { + background-color: #00a250; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-yellow-bg { + background-color: #ddb62b; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-blue-bg { + background-color: #208ffb; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-magenta-bg { + background-color: #d160c4; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-cyan-bg { + background-color: #60c6c8; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-white-bg { + background-color: #c5c1b4; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-black-intense-fg { + color: #282c36; +} +.jp-RenderedText pre .ansi-red-intense-fg { + color: #b22b31; +} +.jp-RenderedText pre .ansi-green-intense-fg { + color: #007427; +} +.jp-RenderedText pre .ansi-yellow-intense-fg { + color: #b27d12; +} +.jp-RenderedText pre .ansi-blue-intense-fg { + color: #0065ca; +} +.jp-RenderedText pre .ansi-magenta-intense-fg { + color: #a03196; +} +.jp-RenderedText pre .ansi-cyan-intense-fg { + color: #258f8f; +} +.jp-RenderedText pre .ansi-white-intense-fg { + color: #a1a6b2; +} + +.jp-RenderedText pre .ansi-black-intense-bg { + background-color: #282c36; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-red-intense-bg { + background-color: #b22b31; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-green-intense-bg { + background-color: #007427; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-yellow-intense-bg { + background-color: #b27d12; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-blue-intense-bg { + background-color: #0065ca; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-magenta-intense-bg { + background-color: #a03196; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-cyan-intense-bg { + background-color: #258f8f; + padding: var(--jp-private-code-span-padding) 0; +} +.jp-RenderedText pre .ansi-white-intense-bg { + background-color: #a1a6b2; + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-default-inverse-fg { + color: var(--jp-ui-inverse-font-color0); +} +.jp-RenderedText pre .ansi-default-inverse-bg { + background-color: var(--jp-inverse-layout-color0); + padding: var(--jp-private-code-span-padding) 0; +} + +.jp-RenderedText pre .ansi-bold { + font-weight: bold; +} +.jp-RenderedText pre .ansi-underline { + text-decoration: underline; +} + +.jp-RenderedText[data-mime-type='application/vnd.jupyter.stderr'] { + background: var(--jp-rendermime-error-background); + padding-top: var(--jp-code-padding); +} + +/*----------------------------------------------------------------------------- +| RenderedLatex +|----------------------------------------------------------------------------*/ + +.jp-RenderedLatex { + color: var(--jp-content-font-color1); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); +} + +/* Left-justify outputs.*/ +.jp-OutputArea-output.jp-RenderedLatex { + padding: var(--jp-code-padding); + text-align: left; +} + +/*----------------------------------------------------------------------------- +| RenderedHTML +|----------------------------------------------------------------------------*/ + +.jp-RenderedHTMLCommon { + color: var(--jp-content-font-color1); + font-family: var(--jp-content-font-family); + font-size: var(--jp-content-font-size1); + line-height: var(--jp-content-line-height); + /* Give a bit more R padding on Markdown text to keep line lengths reasonable */ + padding-right: 20px; +} + +.jp-RenderedHTMLCommon em { + font-style: italic; +} + +.jp-RenderedHTMLCommon strong { + font-weight: bold; +} + +.jp-RenderedHTMLCommon u { + text-decoration: underline; +} + +.jp-RenderedHTMLCommon a:link { + text-decoration: none; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:hover { + text-decoration: underline; + color: var(--jp-content-link-color); +} + +.jp-RenderedHTMLCommon a:visited { + text-decoration: none; + color: var(--jp-content-link-color); +} + +/* Headings */ + +.jp-RenderedHTMLCommon h1, +.jp-RenderedHTMLCommon h2, +.jp-RenderedHTMLCommon h3, +.jp-RenderedHTMLCommon h4, +.jp-RenderedHTMLCommon h5, +.jp-RenderedHTMLCommon h6 { + line-height: var(--jp-content-heading-line-height); + font-weight: var(--jp-content-heading-font-weight); + font-style: normal; + margin: var(--jp-content-heading-margin-top) 0 + var(--jp-content-heading-margin-bottom) 0; +} + +.jp-RenderedHTMLCommon h1:first-child, +.jp-RenderedHTMLCommon h2:first-child, +.jp-RenderedHTMLCommon h3:first-child, +.jp-RenderedHTMLCommon h4:first-child, +.jp-RenderedHTMLCommon h5:first-child, +.jp-RenderedHTMLCommon h6:first-child { + margin-top: calc(0.5 * var(--jp-content-heading-margin-top)); +} + +.jp-RenderedHTMLCommon h1:last-child, +.jp-RenderedHTMLCommon h2:last-child, +.jp-RenderedHTMLCommon h3:last-child, +.jp-RenderedHTMLCommon h4:last-child, +.jp-RenderedHTMLCommon h5:last-child, +.jp-RenderedHTMLCommon h6:last-child { + margin-bottom: calc(0.5 * var(--jp-content-heading-margin-bottom)); +} + +.jp-RenderedHTMLCommon h1 { + font-size: var(--jp-content-font-size5); +} + +.jp-RenderedHTMLCommon h2 { + font-size: var(--jp-content-font-size4); +} + +.jp-RenderedHTMLCommon h3 { + font-size: var(--jp-content-font-size3); +} + +.jp-RenderedHTMLCommon h4 { + font-size: var(--jp-content-font-size2); +} + +.jp-RenderedHTMLCommon h5 { + font-size: var(--jp-content-font-size1); +} + +.jp-RenderedHTMLCommon h6 { + font-size: var(--jp-content-font-size0); +} + +/* Lists */ + +.jp-RenderedHTMLCommon ul:not(.list-inline), +.jp-RenderedHTMLCommon ol:not(.list-inline) { + padding-left: 2em; +} + +.jp-RenderedHTMLCommon ul { + list-style: disc; +} + +.jp-RenderedHTMLCommon ul ul { + list-style: square; +} + +.jp-RenderedHTMLCommon ul ul ul { + list-style: circle; +} + +.jp-RenderedHTMLCommon ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol ol { + list-style: upper-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol { + list-style: lower-alpha; +} + +.jp-RenderedHTMLCommon ol ol ol ol { + list-style: lower-roman; +} + +.jp-RenderedHTMLCommon ol ol ol ol ol { + list-style: decimal; +} + +.jp-RenderedHTMLCommon ol, +.jp-RenderedHTMLCommon ul { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon ul ul, +.jp-RenderedHTMLCommon ul ol, +.jp-RenderedHTMLCommon ol ul, +.jp-RenderedHTMLCommon ol ol { + margin-bottom: 0em; +} + +.jp-RenderedHTMLCommon hr { + color: var(--jp-border-color2); + background-color: var(--jp-border-color1); + margin-top: 1em; + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon > pre { + margin: 1.5em 2em; +} + +.jp-RenderedHTMLCommon pre, +.jp-RenderedHTMLCommon code { + border: 0; + background-color: var(--jp-layout-color0); + color: var(--jp-content-font-color1); + font-family: var(--jp-code-font-family); + font-size: inherit; + line-height: var(--jp-code-line-height); + padding: 0; + white-space: pre-wrap; +} + +.jp-RenderedHTMLCommon :not(pre) > code { + background-color: var(--jp-layout-color2); + padding: 1px 5px; +} + +/* Tables */ + +.jp-RenderedHTMLCommon table { + border-collapse: collapse; + border-spacing: 0; + border: none; + color: var(--jp-ui-font-color1); + font-size: 12px; + table-layout: fixed; + margin-left: auto; + margin-right: auto; +} + +.jp-RenderedHTMLCommon thead { + border-bottom: var(--jp-border-width) solid var(--jp-border-color1); + vertical-align: bottom; +} + +.jp-RenderedHTMLCommon td, +.jp-RenderedHTMLCommon th, +.jp-RenderedHTMLCommon tr { + vertical-align: middle; + padding: 0.5em 0.5em; + line-height: normal; + white-space: normal; + max-width: none; + border: none; +} + +.jp-RenderedMarkdown.jp-RenderedHTMLCommon td, +.jp-RenderedMarkdown.jp-RenderedHTMLCommon th { + max-width: none; +} + +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon td, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon th, +:not(.jp-RenderedMarkdown).jp-RenderedHTMLCommon tr { + text-align: right; +} + +.jp-RenderedHTMLCommon th { + font-weight: bold; +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(odd) { + background: var(--jp-layout-color0); +} + +.jp-RenderedHTMLCommon tbody tr:nth-child(even) { + background: var(--jp-rendermime-table-row-background); +} + +.jp-RenderedHTMLCommon tbody tr:hover { + background: var(--jp-rendermime-table-row-hover-background); +} + +.jp-RenderedHTMLCommon table { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon p { + text-align: left; + margin: 0px; +} + +.jp-RenderedHTMLCommon p { + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon img { + -moz-force-broken-image-icon: 1; +} + +/* Restrict to direct children as other images could be nested in other content. */ +.jp-RenderedHTMLCommon > img { + display: block; + margin-left: 0; + margin-right: 0; + margin-bottom: 1em; +} + +/* Change color behind transparent images if they need it... */ +[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-light-background { + background-color: var(--jp-inverse-layout-color1); +} +[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-dark-background { + background-color: var(--jp-inverse-layout-color1); +} +/* ...or leave it untouched if they don't */ +[data-jp-theme-light='false'] .jp-RenderedImage img.jp-needs-dark-background { +} +[data-jp-theme-light='true'] .jp-RenderedImage img.jp-needs-light-background { +} + +.jp-RenderedHTMLCommon img, +.jp-RenderedImage img, +.jp-RenderedHTMLCommon svg, +.jp-RenderedSVG svg { + max-width: 100%; + height: auto; +} + +.jp-RenderedHTMLCommon img.jp-mod-unconfined, +.jp-RenderedImage img.jp-mod-unconfined, +.jp-RenderedHTMLCommon svg.jp-mod-unconfined, +.jp-RenderedSVG svg.jp-mod-unconfined { + max-width: none; +} + +.jp-RenderedHTMLCommon .alert { + padding: var(--jp-notebook-padding); + border: var(--jp-border-width) solid transparent; + border-radius: var(--jp-border-radius); + margin-bottom: 1em; +} + +.jp-RenderedHTMLCommon .alert-info { + color: var(--jp-info-color0); + background-color: var(--jp-info-color3); + border-color: var(--jp-info-color2); +} +.jp-RenderedHTMLCommon .alert-info hr { + border-color: var(--jp-info-color3); +} +.jp-RenderedHTMLCommon .alert-info > p:last-child, +.jp-RenderedHTMLCommon .alert-info > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-warning { + color: var(--jp-warn-color0); + background-color: var(--jp-warn-color3); + border-color: var(--jp-warn-color2); +} +.jp-RenderedHTMLCommon .alert-warning hr { + border-color: var(--jp-warn-color3); +} +.jp-RenderedHTMLCommon .alert-warning > p:last-child, +.jp-RenderedHTMLCommon .alert-warning > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-success { + color: var(--jp-success-color0); + background-color: var(--jp-success-color3); + border-color: var(--jp-success-color2); +} +.jp-RenderedHTMLCommon .alert-success hr { + border-color: var(--jp-success-color3); +} +.jp-RenderedHTMLCommon .alert-success > p:last-child, +.jp-RenderedHTMLCommon .alert-success > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon .alert-danger { + color: var(--jp-error-color0); + background-color: var(--jp-error-color3); + border-color: var(--jp-error-color2); +} +.jp-RenderedHTMLCommon .alert-danger hr { + border-color: var(--jp-error-color3); +} +.jp-RenderedHTMLCommon .alert-danger > p:last-child, +.jp-RenderedHTMLCommon .alert-danger > ul:last-child { + margin-bottom: 0; +} + +.jp-RenderedHTMLCommon blockquote { + margin: 1em 2em; + padding: 0 1em; + border-left: 5px solid var(--jp-border-color2); +} + +a.jp-InternalAnchorLink { + visibility: hidden; + margin-left: 8px; + color: var(--md-blue-800); +} + +h1:hover .jp-InternalAnchorLink, +h2:hover .jp-InternalAnchorLink, +h3:hover .jp-InternalAnchorLink, +h4:hover .jp-InternalAnchorLink, +h5:hover .jp-InternalAnchorLink, +h6:hover .jp-InternalAnchorLink { + visibility: visible; +} + +.jp-RenderedHTMLCommon kbd { + background-color: var(--jp-rendermime-table-row-background); + border: 1px solid var(--jp-border-color0); + border-bottom-color: var(--jp-border-color2); + border-radius: 3px; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.25); + display: inline-block; + font-size: 0.8em; + line-height: 1em; + padding: 0.2em 0.5em; +} + +/* Most direct children of .jp-RenderedHTMLCommon have a margin-bottom of 1.0. + * At the bottom of cells this is a bit too much as there is also spacing + * between cells. Going all the way to 0 gets too tight between markdown and + * code cells. + */ +.jp-RenderedHTMLCommon > *:last-child { + margin-bottom: 0.5em; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-MimeDocument { + outline: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-filebrowser-button-height: 28px; + --jp-private-filebrowser-button-width: 48px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-FileBrowser { + display: flex; + flex-direction: column; + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); +} + +.jp-FileBrowser-toolbar.jp-Toolbar { + border-bottom: none; + height: auto; + margin: var(--jp-toolbar-header-margin); + box-shadow: none; +} + +.jp-BreadCrumbs { + flex: 0 0 auto; + margin: 8px 12px 8px 12px; +} + +.jp-BreadCrumbs-item { + margin: 0px 2px; + padding: 0px 2px; + border-radius: var(--jp-border-radius); + cursor: pointer; +} + +.jp-BreadCrumbs-item:hover { + background-color: var(--jp-layout-color2); +} + +.jp-BreadCrumbs-item:first-child { + margin-left: 0px; +} + +.jp-BreadCrumbs-item.jp-mod-dropTarget { + background-color: var(--jp-brand-color2); + opacity: 0.7; +} + +/*----------------------------------------------------------------------------- +| Buttons +|----------------------------------------------------------------------------*/ + +.jp-FileBrowser-toolbar.jp-Toolbar { + padding: 0px; + margin: 8px 12px 0px 12px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar { + justify-content: flex-start; +} + +.jp-FileBrowser-toolbar.jp-Toolbar .jp-Toolbar-item { + flex: 0 0 auto; + padding-left: 0px; + padding-right: 2px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar .jp-ToolbarButtonComponent { + width: 40px; +} + +.jp-FileBrowser-toolbar.jp-Toolbar + .jp-Toolbar-item:first-child + .jp-ToolbarButtonComponent { + width: 72px; + background: var(--jp-brand-color1); +} + +.jp-FileBrowser-toolbar.jp-Toolbar + .jp-Toolbar-item:first-child + .jp-ToolbarButtonComponent:focus-visible { + background-color: var(--jp-brand-color0); +} + +.jp-FileBrowser-toolbar.jp-Toolbar + .jp-Toolbar-item:first-child + .jp-ToolbarButtonComponent + .jp-icon3 { + fill: white; +} + +/*----------------------------------------------------------------------------- +| Other styles +|----------------------------------------------------------------------------*/ + +.jp-FileDialog.jp-mod-conflict input { + color: var(--jp-error-color1); +} + +.jp-FileDialog .jp-new-name-title { + margin-top: 12px; +} + +.jp-LastModified-hidden { + display: none; +} + +.jp-FileBrowser-filterBox { + padding: 0px; + flex: 0 0 auto; + margin: 8px 12px 0px 12px; +} + +/*----------------------------------------------------------------------------- +| DirListing +|----------------------------------------------------------------------------*/ + +.jp-DirListing { + flex: 1 1 auto; + display: flex; + flex-direction: column; + outline: 0; +} + +.jp-DirListing:focus-visible { + border: 1px solid var(--jp-brand-color1); +} + +.jp-DirListing-header { + flex: 0 0 auto; + display: flex; + flex-direction: row; + overflow: hidden; + border-top: var(--jp-border-width) solid var(--jp-border-color2); + border-bottom: var(--jp-border-width) solid var(--jp-border-color1); + box-shadow: var(--jp-toolbar-box-shadow); + z-index: 2; +} + +.jp-DirListing-headerItem { + padding: 4px 12px 2px 12px; + font-weight: 500; +} + +.jp-DirListing-headerItem:hover { + background: var(--jp-layout-color2); +} + +.jp-DirListing-headerItem.jp-id-name { + flex: 1 0 84px; +} + +.jp-DirListing-headerItem.jp-id-modified { + flex: 0 0 112px; + border-left: var(--jp-border-width) solid var(--jp-border-color2); + text-align: right; +} + +.jp-id-narrow { + display: none; + flex: 0 0 5px; + padding: 4px 4px; + border-left: var(--jp-border-width) solid var(--jp-border-color2); + text-align: right; + color: var(--jp-border-color2); +} + +.jp-DirListing-narrow .jp-id-narrow { + display: block; +} + +.jp-DirListing-narrow .jp-id-modified, +.jp-DirListing-narrow .jp-DirListing-itemModified { + display: none; +} + +.jp-DirListing-headerItem.jp-mod-selected { + font-weight: 600; +} + +/* increase specificity to override bundled default */ +.jp-DirListing-content { + flex: 1 1 auto; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; + background-color: var(--jp-layout-color1); +} + +.jp-DirListing-content mark { + color: var(--jp-ui-font-color0); + background-color: transparent; + font-weight: bold; +} + +.jp-DirListing-content .jp-DirListing-item.jp-mod-selected mark { + color: var(--jp-ui-inverse-font-color0); +} + +/* Style the directory listing content when a user drops a file to upload */ +.jp-DirListing.jp-mod-native-drop .jp-DirListing-content { + outline: 5px dashed rgba(128, 128, 128, 0.5); + outline-offset: -10px; + cursor: copy; +} + +.jp-DirListing-item { + display: flex; + flex-direction: row; + padding: 4px 12px; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.jp-DirListing-item[data-is-dot] { + opacity: 75%; +} + +.jp-DirListing-item.jp-mod-selected { + color: var(--jp-ui-inverse-font-color1); + background: var(--jp-brand-color1); +} + +.jp-DirListing-item.jp-mod-dropTarget { + background: var(--jp-brand-color3); +} + +.jp-DirListing-item:hover:not(.jp-mod-selected) { + background: var(--jp-layout-color2); +} + +.jp-DirListing-itemIcon { + flex: 0 0 20px; + margin-right: 4px; +} + +.jp-DirListing-itemText { + flex: 1 0 64px; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + user-select: none; +} + +.jp-DirListing-itemModified { + flex: 0 0 125px; + text-align: right; +} + +.jp-DirListing-editor { + flex: 1 0 64px; + outline: none; + border: none; +} + +.jp-DirListing-item.jp-mod-running .jp-DirListing-itemIcon:before { + color: var(--jp-success-color1); + content: '\25CF'; + font-size: 8px; + position: absolute; + left: -8px; +} + +.jp-DirListing-item.jp-mod-running.jp-mod-selected + .jp-DirListing-itemIcon:before { + color: var(--jp-ui-inverse-font-color1); +} + +.jp-DirListing-item.lm-mod-drag-image, +.jp-DirListing-item.jp-mod-selected.lm-mod-drag-image { + font-size: var(--jp-ui-font-size1); + padding-left: 4px; + margin-left: 4px; + width: 160px; + background-color: var(--jp-ui-inverse-font-color2); + box-shadow: var(--jp-elevation-z2); + border-radius: 0px; + color: var(--jp-ui-font-color1); + transform: translateX(-40%) translateY(-58%); +} + +.jp-DirListing-deadSpace { + flex: 1 1 auto; + margin: 0; + padding: 0; + list-style-type: none; + overflow: auto; + background-color: var(--jp-layout-color1); +} + +.jp-Document { + min-width: 120px; + min-height: 120px; + outline: none; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { +} + +/*----------------------------------------------------------------------------- +| Main OutputArea +| OutputArea has a list of Outputs +|----------------------------------------------------------------------------*/ + +.jp-OutputArea { + overflow-y: auto; +} + +.jp-OutputArea-child { + display: flex; + flex-direction: row; +} + +body[data-format='mobile'] .jp-OutputArea-child { + flex-direction: column; +} + +.jp-OutputPrompt { + flex: 0 0 var(--jp-cell-prompt-width); + color: var(--jp-cell-outprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + opacity: var(--jp-cell-prompt-opacity); + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +body[data-format='mobile'] .jp-OutputPrompt { + flex: 0 0 auto; + text-align: left; +} + +.jp-OutputArea-output { + height: auto; + overflow: auto; + user-select: text; + -moz-user-select: text; + -webkit-user-select: text; + -ms-user-select: text; +} + +.jp-OutputArea-child .jp-OutputArea-output { + flex-grow: 1; + flex-shrink: 1; +} + +body[data-format='mobile'] .jp-OutputArea-child .jp-OutputArea-output { + margin-left: var(--jp-notebook-padding); +} + +/** + * Isolated output. + */ +.jp-OutputArea-output.jp-mod-isolated { + width: 100%; + display: block; +} + +/* +When drag events occur, `p-mod-override-cursor` is added to the body. +Because iframes steal all cursor events, the following two rules are necessary +to suppress pointer events while resize drags are occurring. There may be a +better solution to this problem. +*/ +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated { + position: relative; +} + +body.lm-mod-override-cursor .jp-OutputArea-output.jp-mod-isolated:before { + content: ''; + position: absolute; + top: 0; + left: 0; + right: 0; + bottom: 0; + background: transparent; +} + +/* pre */ + +.jp-OutputArea-output pre { + border: none; + margin: 0px; + padding: 0px; + overflow-x: auto; + overflow-y: auto; + word-break: break-all; + word-wrap: break-word; + white-space: pre-wrap; +} + +/* tables */ + +.jp-OutputArea-output.jp-RenderedHTMLCommon table { + margin-left: 0; + margin-right: 0; +} + +/* description lists */ + +.jp-OutputArea-output dl, +.jp-OutputArea-output dt, +.jp-OutputArea-output dd { + display: block; +} + +.jp-OutputArea-output dl { + width: 100%; + overflow: hidden; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dt { + font-weight: bold; + float: left; + width: 20%; + padding: 0; + margin: 0; +} + +.jp-OutputArea-output dd { + float: left; + width: 80%; + padding: 0; + margin: 0; +} + +/* Hide the gutter in case of + * - nested output areas (e.g. in the case of output widgets) + * - mirrored output areas + */ +.jp-OutputArea .jp-OutputArea .jp-OutputArea-prompt { + display: none; +} + +/*----------------------------------------------------------------------------- +| executeResult is added to any Output-result for the display of the object +| returned by a cell +|----------------------------------------------------------------------------*/ + +.jp-OutputArea-output.jp-OutputArea-executeResult { + margin-left: 0px; + flex: 1 1 auto; +} + +/* Text output with the Out[] prompt needs a top padding to match the + * alignment of the Out[] prompt itself. + */ +.jp-OutputArea-executeResult .jp-RenderedText.jp-OutputArea-output { + padding-top: var(--jp-code-padding); + border-top: var(--jp-border-width) solid transparent; +} + +/*----------------------------------------------------------------------------- +| The Stdin output +|----------------------------------------------------------------------------*/ + +.jp-OutputArea-stdin { + line-height: var(--jp-code-line-height); + padding-top: var(--jp-code-padding); + display: flex; +} + +.jp-Stdin-prompt { + color: var(--jp-content-font-color0); + padding-right: var(--jp-code-padding); + vertical-align: baseline; + flex: 0 0 auto; +} + +.jp-Stdin-input { + font-family: var(--jp-code-font-family); + font-size: inherit; + color: inherit; + background-color: inherit; + width: 42%; + min-width: 200px; + /* make sure input baseline aligns with prompt */ + vertical-align: baseline; + /* padding + margin = 0.5em between prompt and cursor */ + padding: 0em 0.25em; + margin: 0em 0.25em; + flex: 0 0 70%; +} + +.jp-Stdin-input:focus { + box-shadow: none; +} + +/*----------------------------------------------------------------------------- +| Output Area View +|----------------------------------------------------------------------------*/ + +.jp-LinkedOutputView .jp-OutputArea { + height: 100%; + display: block; +} + +.jp-LinkedOutputView .jp-OutputArea-output:only-child { + height: 100%; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +.jp-Collapser { + flex: 0 0 var(--jp-cell-collapser-width); + padding: 0px; + margin: 0px; + border: none; + outline: none; + background: transparent; + border-radius: var(--jp-border-radius); + opacity: 1; +} + +.jp-Collapser-child { + display: block; + width: 100%; + box-sizing: border-box; + /* height: 100% doesn't work because the height of its parent is computed from content */ + position: absolute; + top: 0px; + bottom: 0px; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Header/Footer +|----------------------------------------------------------------------------*/ + +/* Hidden by zero height by default */ +.jp-CellHeader, +.jp-CellFooter { + height: 0px; + width: 100%; + padding: 0px; + margin: 0px; + border: none; + outline: none; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Input +|----------------------------------------------------------------------------*/ + +/* All input areas */ +.jp-InputArea { + display: flex; + flex-direction: row; + overflow: hidden; +} + +body[data-format='mobile'] .jp-InputArea { + flex-direction: column; +} + +.jp-InputArea-editor { + flex: 1 1 auto; + overflow: hidden; +} + +.jp-InputArea-editor { + /* This is the non-active, default styling */ + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + border-radius: 0px; + background: var(--jp-cell-editor-background); +} + +body[data-format='mobile'] .jp-InputArea-editor { + margin-left: var(--jp-notebook-padding); +} + +.jp-InputPrompt { + flex: 0 0 var(--jp-cell-prompt-width); + color: var(--jp-cell-inprompt-font-color); + font-family: var(--jp-cell-prompt-font-family); + padding: var(--jp-code-padding); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + opacity: var(--jp-cell-prompt-opacity); + line-height: var(--jp-code-line-height); + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; + opacity: var(--jp-cell-prompt-opacity); + /* Right align prompt text, don't wrap to handle large prompt numbers */ + text-align: right; + white-space: nowrap; + overflow: hidden; + text-overflow: ellipsis; + /* Disable text selection */ + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +body[data-format='mobile'] .jp-InputPrompt { + flex: 0 0 auto; + text-align: left; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Placeholder +|----------------------------------------------------------------------------*/ + +.jp-Placeholder { + display: flex; + flex-direction: row; + flex: 1 1 auto; +} + +.jp-Placeholder-prompt { + box-sizing: border-box; +} + +.jp-Placeholder-content { + flex: 1 1 auto; + border: none; + background: transparent; + height: 20px; + box-sizing: border-box; +} + +.jp-Placeholder-content .jp-MoreHorizIcon { + width: 32px; + height: 16px; + border: 1px solid transparent; + border-radius: var(--jp-border-radius); +} + +.jp-Placeholder-content .jp-MoreHorizIcon:hover { + border: 1px solid var(--jp-border-color1); + box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.25); + background-color: var(--jp-layout-color0); +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-cell-scrolling-output-offset: 5px; +} + +/*----------------------------------------------------------------------------- +| Cell +|----------------------------------------------------------------------------*/ + +.jp-Cell { + padding: var(--jp-cell-padding); + margin: 0px; + border: none; + outline: none; + background: transparent; +} + +/*----------------------------------------------------------------------------- +| Common input/output +|----------------------------------------------------------------------------*/ + +.jp-Cell-inputWrapper, +.jp-Cell-outputWrapper { + display: flex; + flex-direction: row; + padding: 0px; + margin: 0px; + /* Added to reveal the box-shadow on the input and output collapsers. */ + overflow: visible; +} + +/* Only input/output areas inside cells */ +.jp-Cell-inputArea, +.jp-Cell-outputArea { + flex: 1 1 auto; +} + +/*----------------------------------------------------------------------------- +| Collapser +|----------------------------------------------------------------------------*/ + +/* Make the output collapser disappear when there is not output, but do so + * in a manner that leaves it in the layout and preserves its width. + */ +.jp-Cell.jp-mod-noOutputs .jp-Cell-outputCollapser { + border: none !important; + background: transparent !important; +} + +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputCollapser { + min-height: var(--jp-cell-collapser-min-height); +} + +/*----------------------------------------------------------------------------- +| Output +|----------------------------------------------------------------------------*/ + +/* Put a space between input and output when there IS output */ +.jp-Cell:not(.jp-mod-noOutputs) .jp-Cell-outputWrapper { + margin-top: 5px; +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-Cell-outputArea { + overflow-y: auto; + max-height: 200px; + box-shadow: inset 0 0 6px 2px rgba(0, 0, 0, 0.3); + margin-left: var(--jp-private-cell-scrolling-output-offset); +} + +.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt { + flex: 0 0 + calc( + var(--jp-cell-prompt-width) - + var(--jp-private-cell-scrolling-output-offset) + ); +} + +/*----------------------------------------------------------------------------- +| CodeCell +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| MarkdownCell +|----------------------------------------------------------------------------*/ + +.jp-MarkdownOutput { + flex: 1 1 auto; + margin-top: 0; + margin-bottom: 0; + padding-left: var(--jp-code-padding); +} + +.jp-MarkdownOutput.jp-RenderedHTMLCommon { + overflow: auto; +} + +.jp-showHiddenCellsButton { + margin-left: calc(var(--jp-cell-prompt-width) + 2 * var(--jp-code-padding)); + margin-top: var(--jp-code-padding); + border: 1px solid var(--jp-border-color2); + background-color: var(--jp-border-color3) !important; + color: var(--jp-content-font-color0) !important; +} + +.jp-showHiddenCellsButton:hover { + background-color: var(--jp-border-color2) !important; +} + +.jp-collapseHeadingButton { + display: none; +} + +.jp-MarkdownCell:hover .jp-collapseHeadingButton { + display: flex; + min-height: var(--jp-cell-collapser-min-height); + position: absolute; + right: 0; + top: 0; + bottom: 0; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Variables +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- + +/*----------------------------------------------------------------------------- +| Styles +|----------------------------------------------------------------------------*/ + +.jp-NotebookPanel-toolbar { + padding: 2px; +} + +.jp-Toolbar-item.jp-Notebook-toolbarCellType .jp-select-wrapper.jp-mod-focused { + border: none; + box-shadow: none; +} + +.jp-Notebook-toolbarCellTypeDropdown select { + height: 24px; + font-size: var(--jp-ui-font-size1); + line-height: 14px; + border-radius: 0; + display: block; +} + +.jp-Notebook-toolbarCellTypeDropdown span { + top: 5px !important; +} + +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Private CSS variables +|----------------------------------------------------------------------------*/ + +:root { + --jp-private-notebook-dragImage-width: 304px; + --jp-private-notebook-dragImage-height: 36px; + --jp-private-notebook-selected-color: var(--md-blue-400); + --jp-private-notebook-active-color: var(--md-green-400); +} + +/*----------------------------------------------------------------------------- +| Imports +|----------------------------------------------------------------------------*/ + +/*----------------------------------------------------------------------------- +| Notebook +|----------------------------------------------------------------------------*/ + +.jp-NotebookPanel { + display: block; + height: 100%; +} + +.jp-NotebookPanel.jp-Document { + min-width: 240px; + min-height: 120px; +} + +.jp-Notebook { + padding: var(--jp-notebook-padding); + outline: none; + overflow: auto; + background: var(--jp-layout-color0); +} + +.jp-Notebook.jp-mod-scrollPastEnd::after { + display: block; + content: ''; + min-height: var(--jp-notebook-scroll-padding); +} + +.jp-MainAreaWidget-ContainStrict .jp-Notebook * { + contain: strict; +} + +.jp-Notebook-render * { + contain: none !important; +} + +.jp-Notebook .jp-Cell { + overflow: visible; +} + +.jp-Notebook .jp-Cell .jp-InputPrompt { + cursor: move; + float: left; +} + +/*----------------------------------------------------------------------------- +| Notebook state related styling +| +| The notebook and cells each have states, here are the possibilities: +| +| - Notebook +| - Command +| - Edit +| - Cell +| - None +| - Active (only one can be active) +| - Selected (the cells actions are applied to) +| - Multiselected (when multiple selected, the cursor) +| - No outputs +|----------------------------------------------------------------------------*/ + +/* Command or edit modes */ + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-InputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +.jp-Notebook .jp-Cell:not(.jp-mod-active) .jp-OutputPrompt { + opacity: var(--jp-cell-prompt-not-active-opacity); + color: var(--jp-cell-prompt-not-active-font-color); +} + +/* cell is active */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser { + background: var(--jp-brand-color1); +} + +/* cell is dirty */ +.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt { + color: var(--jp-warn-color1); +} +.jp-Notebook .jp-Cell.jp-mod-dirty .jp-InputPrompt:before { + color: var(--jp-warn-color1); + content: '•'; +} + +.jp-Notebook .jp-Cell.jp-mod-active.jp-mod-dirty .jp-Collapser { + background: var(--jp-warn-color1); +} + +/* collapser is hovered */ +.jp-Notebook .jp-Cell .jp-Collapser:hover { + box-shadow: var(--jp-elevation-z2); + background: var(--jp-brand-color1); + opacity: var(--jp-cell-collapser-not-active-hover-opacity); +} + +/* cell is active and collapser is hovered */ +.jp-Notebook .jp-Cell.jp-mod-active .jp-Collapser:hover { + background: var(--jp-brand-color0); + opacity: 1; +} + +/* Command mode */ + +.jp-Notebook.jp-mod-commandMode .jp-Cell.jp-mod-selected { + background: var(--jp-notebook-multiselected-color); +} + +.jp-Notebook.jp-mod-commandMode + .jp-Cell.jp-mod-active.jp-mod-selected:not(.jp-mod-multiSelected) { + background: transparent; +} + +/* Edit mode */ + +.jp-Notebook.jp-mod-editMode .jp-Cell.jp-mod-active .jp-InputArea-editor { + border: var(--jp-border-width) solid var(--jp-cell-editor-active-border-color); + box-shadow: var(--jp-input-box-shadow); + background-color: var(--jp-cell-editor-active-background); +} + +/*----------------------------------------------------------------------------- +| Notebook drag and drop +|----------------------------------------------------------------------------*/ + +.jp-Notebook-cell.jp-mod-dropSource { + opacity: 0.5; +} + +.jp-Notebook-cell.jp-mod-dropTarget, +.jp-Notebook.jp-mod-commandMode + .jp-Notebook-cell.jp-mod-active.jp-mod-selected.jp-mod-dropTarget { + border-top-color: var(--jp-private-notebook-selected-color); + border-top-style: solid; + border-top-width: 2px; +} + +.jp-dragImage { + display: block; + flex-direction: row; + width: var(--jp-private-notebook-dragImage-width); + height: var(--jp-private-notebook-dragImage-height); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background); + overflow: visible; +} + +.jp-dragImage-singlePrompt { + box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12); +} + +.jp-dragImage .jp-dragImage-content { + flex: 1 1 auto; + z-index: 2; + font-size: var(--jp-code-font-size); + font-family: var(--jp-code-font-family); + line-height: var(--jp-code-line-height); + padding: var(--jp-code-padding); + border: var(--jp-border-width) solid var(--jp-cell-editor-border-color); + background: var(--jp-cell-editor-background-color); + color: var(--jp-content-font-color3); + text-align: left; + margin: 4px 4px 4px 0px; +} + +.jp-dragImage .jp-dragImage-prompt { + flex: 0 0 auto; + min-width: 36px; + color: var(--jp-cell-inprompt-font-color); + padding: var(--jp-code-padding); + padding-left: 12px; + font-family: var(--jp-cell-prompt-font-family); + letter-spacing: var(--jp-cell-prompt-letter-spacing); + line-height: 1.9; + font-size: var(--jp-code-font-size); + border: var(--jp-border-width) solid transparent; +} + +.jp-dragImage-multipleBack { + z-index: -1; + position: absolute; + height: 32px; + width: 300px; + top: 8px; + left: 8px; + background: var(--jp-layout-color2); + border: var(--jp-border-width) solid var(--jp-input-border-color); + box-shadow: 2px 2px 4px 0px rgba(0, 0, 0, 0.12); +} + +/*----------------------------------------------------------------------------- +| Cell toolbar +|----------------------------------------------------------------------------*/ + +.jp-NotebookTools { + display: block; + min-width: var(--jp-sidebar-min-width); + color: var(--jp-ui-font-color1); + background: var(--jp-layout-color1); + /* This is needed so that all font sizing of children done in ems is + * relative to this base size */ + font-size: var(--jp-ui-font-size1); + overflow: auto; +} + +.jp-NotebookTools-tool { + padding: 0px 12px 0 12px; +} + +.jp-ActiveCellTool { + padding: 12px; + background-color: var(--jp-layout-color1); + border-top: none !important; +} + +.jp-ActiveCellTool .jp-InputArea-prompt { + flex: 0 0 auto; + padding-left: 0px; +} + +.jp-ActiveCellTool .jp-InputArea-editor { + flex: 1 1 auto; + background: var(--jp-cell-editor-background); + border-color: var(--jp-cell-editor-border-color); +} + +.jp-ActiveCellTool .jp-InputArea-editor .CodeMirror { + background: transparent; +} + +.jp-MetadataEditorTool { + flex-direction: column; + padding: 12px 0px 12px 0px; +} + +.jp-RankedPanel > :not(:first-child) { + margin-top: 12px; +} + +.jp-KeySelector select.jp-mod-styled { + font-size: var(--jp-ui-font-size1); + color: var(--jp-ui-font-color0); + border: var(--jp-border-width) solid var(--jp-border-color1); +} + +.jp-KeySelector label, +.jp-MetadataEditorTool label { + line-height: 1.4; +} + +.jp-NotebookTools .jp-select-wrapper { + margin-top: 4px; + margin-bottom: 0px; +} + +.jp-NotebookTools .jp-Collapse { + margin-top: 16px; +} + +/*----------------------------------------------------------------------------- +| Presentation Mode (.jp-mod-presentationMode) +|----------------------------------------------------------------------------*/ + +.jp-mod-presentationMode .jp-Notebook { + --jp-content-font-size1: var(--jp-content-presentation-font-size1); + --jp-code-font-size: var(--jp-code-presentation-font-size); +} + +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-InputPrompt, +.jp-mod-presentationMode .jp-Notebook .jp-Cell .jp-OutputPrompt { + flex: 0 0 110px; +} + +/*----------------------------------------------------------------------------- +| Placeholder +|----------------------------------------------------------------------------*/ + +.jp-Cell-Placeholder { + padding-left: 55px; +} + +.jp-Cell-Placeholder-wrapper { + background: #fff; + border: 1px solid; + border-color: #e5e6e9 #dfe0e4 #d0d1d5; + border-radius: 4px; + -webkit-border-radius: 4px; + margin: 10px 15px; +} + +.jp-Cell-Placeholder-wrapper-inner { + padding: 15px; + position: relative; +} + +.jp-Cell-Placeholder-wrapper-body { + background-repeat: repeat; + background-size: 50% auto; +} + +.jp-Cell-Placeholder-wrapper-body div { + background: #f6f7f8; + background-image: -webkit-linear-gradient( + left, + #f6f7f8 0%, + #edeef1 20%, + #f6f7f8 40%, + #f6f7f8 100% + ); + background-repeat: no-repeat; + background-size: 800px 104px; + height: 104px; + position: relative; +} + +.jp-Cell-Placeholder-wrapper-body div { + position: absolute; + right: 15px; + left: 15px; + top: 15px; +} + +div.jp-Cell-Placeholder-h1 { + top: 20px; + height: 20px; + left: 15px; + width: 150px; +} + +div.jp-Cell-Placeholder-h2 { + left: 15px; + top: 50px; + height: 10px; + width: 100px; +} + +div.jp-Cell-Placeholder-content-1, +div.jp-Cell-Placeholder-content-2, +div.jp-Cell-Placeholder-content-3 { + left: 15px; + right: 15px; + height: 10px; +} + +div.jp-Cell-Placeholder-content-1 { + top: 100px; +} + +div.jp-Cell-Placeholder-content-2 { + top: 120px; +} + +div.jp-Cell-Placeholder-content-3 { + top: 140px; +} + +</style> + + <style type="text/css"> +/*----------------------------------------------------------------------------- +| Copyright (c) Jupyter Development Team. +| Distributed under the terms of the Modified BSD License. +|----------------------------------------------------------------------------*/ + +/* +The following CSS variables define the main, public API for styling JupyterLab. +These variables should be used by all plugins wherever possible. In other +words, plugins should not define custom colors, sizes, etc unless absolutely +necessary. This enables users to change the visual theme of JupyterLab +by changing these variables. + +Many variables appear in an ordered sequence (0,1,2,3). These sequences +are designed to work well together, so for example, `--jp-border-color1` should +be used with `--jp-layout-color1`. The numbers have the following meanings: + +* 0: super-primary, reserved for special emphasis +* 1: primary, most important under normal situations +* 2: secondary, next most important under normal situations +* 3: tertiary, next most important under normal situations + +Throughout JupyterLab, we are mostly following principles from Google's +Material Design when selecting colors. We are not, however, following +all of MD as it is not optimized for dense, information rich UIs. +*/ + +:root { + /* Elevation + * + * We style box-shadows using Material Design's idea of elevation. These particular numbers are taken from here: + * + * https://github.com/material-components/material-components-web + * https://material-components-web.appspot.com/elevation.html + */ + + --jp-shadow-base-lightness: 0; + --jp-shadow-umbra-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.2 + ); + --jp-shadow-penumbra-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.14 + ); + --jp-shadow-ambient-color: rgba( + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + var(--jp-shadow-base-lightness), + 0.12 + ); + --jp-elevation-z0: none; + --jp-elevation-z1: 0px 2px 1px -1px var(--jp-shadow-umbra-color), + 0px 1px 1px 0px var(--jp-shadow-penumbra-color), + 0px 1px 3px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z2: 0px 3px 1px -2px var(--jp-shadow-umbra-color), + 0px 2px 2px 0px var(--jp-shadow-penumbra-color), + 0px 1px 5px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z4: 0px 2px 4px -1px var(--jp-shadow-umbra-color), + 0px 4px 5px 0px var(--jp-shadow-penumbra-color), + 0px 1px 10px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z6: 0px 3px 5px -1px var(--jp-shadow-umbra-color), + 0px 6px 10px 0px var(--jp-shadow-penumbra-color), + 0px 1px 18px 0px var(--jp-shadow-ambient-color); + --jp-elevation-z8: 0px 5px 5px -3px var(--jp-shadow-umbra-color), + 0px 8px 10px 1px var(--jp-shadow-penumbra-color), + 0px 3px 14px 2px var(--jp-shadow-ambient-color); + --jp-elevation-z12: 0px 7px 8px -4px var(--jp-shadow-umbra-color), + 0px 12px 17px 2px var(--jp-shadow-penumbra-color), + 0px 5px 22px 4px var(--jp-shadow-ambient-color); + --jp-elevation-z16: 0px 8px 10px -5px var(--jp-shadow-umbra-color), + 0px 16px 24px 2px var(--jp-shadow-penumbra-color), + 0px 6px 30px 5px var(--jp-shadow-ambient-color); + --jp-elevation-z20: 0px 10px 13px -6px var(--jp-shadow-umbra-color), + 0px 20px 31px 3px var(--jp-shadow-penumbra-color), + 0px 8px 38px 7px var(--jp-shadow-ambient-color); + --jp-elevation-z24: 0px 11px 15px -7px var(--jp-shadow-umbra-color), + 0px 24px 38px 3px var(--jp-shadow-penumbra-color), + 0px 9px 46px 8px var(--jp-shadow-ambient-color); + + /* Borders + * + * The following variables, specify the visual styling of borders in JupyterLab. + */ + + --jp-border-width: 1px; + --jp-border-color0: var(--md-grey-400); + --jp-border-color1: var(--md-grey-400); + --jp-border-color2: var(--md-grey-300); + --jp-border-color3: var(--md-grey-200); + --jp-border-radius: 2px; + + /* UI Fonts + * + * The UI font CSS variables are used for the typography all of the JupyterLab + * user interface elements that are not directly user generated content. + * + * The font sizing here is done assuming that the body font size of --jp-ui-font-size1 + * is applied to a parent element. When children elements, such as headings, are sized + * in em all things will be computed relative to that body size. + */ + + --jp-ui-font-scale-factor: 1.2; + --jp-ui-font-size0: 0.83333em; + --jp-ui-font-size1: 13px; /* Base font size */ + --jp-ui-font-size2: 1.2em; + --jp-ui-font-size3: 1.44em; + + --jp-ui-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, + Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol'; + + /* + * Use these font colors against the corresponding main layout colors. + * In a light theme, these go from dark to light. + */ + + /* Defaults use Material Design specification */ + --jp-ui-font-color0: rgba(0, 0, 0, 1); + --jp-ui-font-color1: rgba(0, 0, 0, 0.87); + --jp-ui-font-color2: rgba(0, 0, 0, 0.54); + --jp-ui-font-color3: rgba(0, 0, 0, 0.38); + + /* + * Use these against the brand/accent/warn/error colors. + * These will typically go from light to darker, in both a dark and light theme. + */ + + --jp-ui-inverse-font-color0: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color1: rgba(255, 255, 255, 1); + --jp-ui-inverse-font-color2: rgba(255, 255, 255, 0.7); + --jp-ui-inverse-font-color3: rgba(255, 255, 255, 0.5); + + /* Content Fonts + * + * Content font variables are used for typography of user generated content. + * + * The font sizing here is done assuming that the body font size of --jp-content-font-size1 + * is applied to a parent element. When children elements, such as headings, are sized + * in em all things will be computed relative to that body size. + */ + + --jp-content-line-height: 1.6; + --jp-content-font-scale-factor: 1.2; + --jp-content-font-size0: 0.83333em; + --jp-content-font-size1: 14px; /* Base font size */ + --jp-content-font-size2: 1.2em; + --jp-content-font-size3: 1.44em; + --jp-content-font-size4: 1.728em; + --jp-content-font-size5: 2.0736em; + + /* This gives a magnification of about 125% in presentation mode over normal. */ + --jp-content-presentation-font-size1: 17px; + + --jp-content-heading-line-height: 1; + --jp-content-heading-margin-top: 1.2em; + --jp-content-heading-margin-bottom: 0.8em; + --jp-content-heading-font-weight: 500; + + /* Defaults use Material Design specification */ + --jp-content-font-color0: rgba(0, 0, 0, 1); + --jp-content-font-color1: rgba(0, 0, 0, 0.87); + --jp-content-font-color2: rgba(0, 0, 0, 0.54); + --jp-content-font-color3: rgba(0, 0, 0, 0.38); + + --jp-content-link-color: var(--md-blue-700); + + --jp-content-font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', + Helvetica, Arial, sans-serif, 'Apple Color Emoji', 'Segoe UI Emoji', + 'Segoe UI Symbol'; + + /* + * Code Fonts + * + * Code font variables are used for typography of code and other monospaces content. + */ + + --jp-code-font-size: 13px; + --jp-code-line-height: 1.3077; /* 17px for 13px base */ + --jp-code-padding: 5px; /* 5px for 13px base, codemirror highlighting needs integer px value */ + --jp-code-font-family-default: Menlo, Consolas, 'DejaVu Sans Mono', monospace; + --jp-code-font-family: var(--jp-code-font-family-default); + + /* This gives a magnification of about 125% in presentation mode over normal. */ + --jp-code-presentation-font-size: 16px; + + /* may need to tweak cursor width if you change font size */ + --jp-code-cursor-width0: 1.4px; + --jp-code-cursor-width1: 2px; + --jp-code-cursor-width2: 4px; + + /* Layout + * + * The following are the main layout colors use in JupyterLab. In a light + * theme these would go from light to dark. + */ + + --jp-layout-color0: white; + --jp-layout-color1: white; + --jp-layout-color2: var(--md-grey-200); + --jp-layout-color3: var(--md-grey-400); + --jp-layout-color4: var(--md-grey-600); + + /* Inverse Layout + * + * The following are the inverse layout colors use in JupyterLab. In a light + * theme these would go from dark to light. + */ + + --jp-inverse-layout-color0: #111111; + --jp-inverse-layout-color1: var(--md-grey-900); + --jp-inverse-layout-color2: var(--md-grey-800); + --jp-inverse-layout-color3: var(--md-grey-700); + --jp-inverse-layout-color4: var(--md-grey-600); + + /* Brand/accent */ + + --jp-brand-color0: var(--md-blue-900); + --jp-brand-color1: var(--md-blue-700); + --jp-brand-color2: var(--md-blue-300); + --jp-brand-color3: var(--md-blue-100); + --jp-brand-color4: var(--md-blue-50); + + --jp-accent-color0: var(--md-green-900); + --jp-accent-color1: var(--md-green-700); + --jp-accent-color2: var(--md-green-300); + --jp-accent-color3: var(--md-green-100); + + /* State colors (warn, error, success, info) */ + + --jp-warn-color0: var(--md-orange-900); + --jp-warn-color1: var(--md-orange-700); + --jp-warn-color2: var(--md-orange-300); + --jp-warn-color3: var(--md-orange-100); + + --jp-error-color0: var(--md-red-900); + --jp-error-color1: var(--md-red-700); + --jp-error-color2: var(--md-red-300); + --jp-error-color3: var(--md-red-100); + + --jp-success-color0: var(--md-green-900); + --jp-success-color1: var(--md-green-700); + --jp-success-color2: var(--md-green-300); + --jp-success-color3: var(--md-green-100); + + --jp-info-color0: var(--md-cyan-900); + --jp-info-color1: var(--md-cyan-700); + --jp-info-color2: var(--md-cyan-300); + --jp-info-color3: var(--md-cyan-100); + + /* Cell specific styles */ + + --jp-cell-padding: 5px; + + --jp-cell-collapser-width: 8px; + --jp-cell-collapser-min-height: 20px; + --jp-cell-collapser-not-active-hover-opacity: 0.6; + + --jp-cell-editor-background: var(--md-grey-100); + --jp-cell-editor-border-color: var(--md-grey-300); + --jp-cell-editor-box-shadow: inset 0 0 2px var(--md-blue-300); + --jp-cell-editor-active-background: var(--jp-layout-color0); + --jp-cell-editor-active-border-color: var(--jp-brand-color1); + + --jp-cell-prompt-width: 64px; + --jp-cell-prompt-font-family: var(--jp-code-font-family-default); + --jp-cell-prompt-letter-spacing: 0px; + --jp-cell-prompt-opacity: 1; + --jp-cell-prompt-not-active-opacity: 0.5; + --jp-cell-prompt-not-active-font-color: var(--md-grey-700); + /* A custom blend of MD grey and blue 600 + * See https://meyerweb.com/eric/tools/color-blend/#546E7A:1E88E5:5:hex */ + --jp-cell-inprompt-font-color: #307fc1; + /* A custom blend of MD grey and orange 600 + * https://meyerweb.com/eric/tools/color-blend/#546E7A:F4511E:5:hex */ + --jp-cell-outprompt-font-color: #bf5b3d; + + /* Notebook specific styles */ + + --jp-notebook-padding: 10px; + --jp-notebook-select-background: var(--jp-layout-color1); + --jp-notebook-multiselected-color: var(--md-blue-50); + + /* The scroll padding is calculated to fill enough space at the bottom of the + notebook to show one single-line cell (with appropriate padding) at the top + when the notebook is scrolled all the way to the bottom. We also subtract one + pixel so that no scrollbar appears if we have just one single-line cell in the + notebook. This padding is to enable a 'scroll past end' feature in a notebook. + */ + --jp-notebook-scroll-padding: calc( + 100% - var(--jp-code-font-size) * var(--jp-code-line-height) - + var(--jp-code-padding) - var(--jp-cell-padding) - 1px + ); + + /* Rendermime styles */ + + --jp-rendermime-error-background: #fdd; + --jp-rendermime-table-row-background: var(--md-grey-100); + --jp-rendermime-table-row-hover-background: var(--md-light-blue-50); + + /* Dialog specific styles */ + + --jp-dialog-background: rgba(0, 0, 0, 0.25); + + /* Console specific styles */ + + --jp-console-padding: 10px; + + /* Toolbar specific styles */ + + --jp-toolbar-border-color: var(--jp-border-color1); + --jp-toolbar-micro-height: 8px; + --jp-toolbar-background: var(--jp-layout-color1); + --jp-toolbar-box-shadow: 0px 0px 2px 0px rgba(0, 0, 0, 0.24); + --jp-toolbar-header-margin: 4px 4px 0px 4px; + --jp-toolbar-active-background: var(--md-grey-300); + + /* Statusbar specific styles */ + + --jp-statusbar-height: 24px; + + /* Input field styles */ + + --jp-input-box-shadow: inset 0 0 2px var(--md-blue-300); + --jp-input-active-background: var(--jp-layout-color1); + --jp-input-hover-background: var(--jp-layout-color1); + --jp-input-background: var(--md-grey-100); + --jp-input-border-color: var(--jp-border-color1); + --jp-input-active-border-color: var(--jp-brand-color1); + --jp-input-active-box-shadow-color: rgba(19, 124, 189, 0.3); + + /* General editor styles */ + + --jp-editor-selected-background: #d9d9d9; + --jp-editor-selected-focused-background: #d7d4f0; + --jp-editor-cursor-color: var(--jp-ui-font-color0); + + /* Code mirror specific styles */ + + --jp-mirror-editor-keyword-color: #008000; + --jp-mirror-editor-atom-color: #88f; + --jp-mirror-editor-number-color: #080; + --jp-mirror-editor-def-color: #00f; + --jp-mirror-editor-variable-color: var(--md-grey-900); + --jp-mirror-editor-variable-2-color: #05a; + --jp-mirror-editor-variable-3-color: #085; + --jp-mirror-editor-punctuation-color: #05a; + --jp-mirror-editor-property-color: #05a; + --jp-mirror-editor-operator-color: #aa22ff; + --jp-mirror-editor-comment-color: #408080; + --jp-mirror-editor-string-color: #ba2121; + --jp-mirror-editor-string-2-color: #708; + --jp-mirror-editor-meta-color: #aa22ff; + --jp-mirror-editor-qualifier-color: #555; + --jp-mirror-editor-builtin-color: #008000; + --jp-mirror-editor-bracket-color: #997; + --jp-mirror-editor-tag-color: #170; + --jp-mirror-editor-attribute-color: #00c; + --jp-mirror-editor-header-color: blue; + --jp-mirror-editor-quote-color: #090; + --jp-mirror-editor-link-color: #00c; + --jp-mirror-editor-error-color: #f00; + --jp-mirror-editor-hr-color: #999; + + /* Vega extension styles */ + + --jp-vega-background: white; + + /* Sidebar-related styles */ + + --jp-sidebar-min-width: 250px; + + /* Search-related styles */ + + --jp-search-toggle-off-opacity: 0.5; + --jp-search-toggle-hover-opacity: 0.8; + --jp-search-toggle-on-opacity: 1; + --jp-search-selected-match-background-color: rgb(245, 200, 0); + --jp-search-selected-match-color: black; + --jp-search-unselected-match-background-color: var( + --jp-inverse-layout-color0 + ); + --jp-search-unselected-match-color: var(--jp-ui-inverse-font-color0); + + /* Icon colors that work well with light or dark backgrounds */ + --jp-icon-contrast-color0: var(--md-purple-600); + --jp-icon-contrast-color1: var(--md-green-600); + --jp-icon-contrast-color2: var(--md-pink-600); + --jp-icon-contrast-color3: var(--md-blue-600); +} +</style> + +<style type="text/css"> +/* Force rendering true colors when outputing to pdf */ +* { + -webkit-print-color-adjust: exact; +} + +/* Misc */ +a.anchor-link { + display: none; +} + +.highlight { + margin: 0.4em; +} + +/* Input area styling */ +.jp-InputArea { + overflow: hidden; +} + +.jp-InputArea-editor { + overflow: hidden; +} + +.CodeMirror pre { + margin: 0; + padding: 0; +} + +/* Using table instead of flexbox so that we can use break-inside property */ +/* CSS rules under this comment should not be required anymore after we move to the JupyterLab 4.0 CSS */ + + +.jp-CodeCell.jp-mod-outputsScrolled .jp-OutputArea-prompt { + min-width: calc( + var(--jp-cell-prompt-width) - var(--jp-private-cell-scrolling-output-offset) + ); +} + +.jp-OutputArea-child { + display: table; + width: 100%; +} + +.jp-OutputPrompt { + display: table-cell; + vertical-align: top; + min-width: var(--jp-cell-prompt-width); +} + +body[data-format='mobile'] .jp-OutputPrompt { + display: table-row; +} + +.jp-OutputArea-output { + display: table-cell; + width: 100%; +} + +body[data-format='mobile'] .jp-OutputArea-child .jp-OutputArea-output { + display: table-row; +} + +.jp-OutputArea-output.jp-OutputArea-executeResult { + width: 100%; +} + +/* Hiding the collapser by default */ +.jp-Collapser { + display: none; +} + +@media print { + .jp-Cell-inputWrapper, + .jp-Cell-outputWrapper { + display: block; + } + + .jp-OutputArea-child { + break-inside: avoid-page; + } +} +</style> + +<!-- Load mathjax --> + <script src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.7/latest.js?config=TeX-AMS_CHTML-full,Safe"> </script> + <!-- MathJax configuration --> + <script type="text/x-mathjax-config"> + init_mathjax = function() { + if (window.MathJax) { + // MathJax loaded + MathJax.Hub.Config({ + TeX: { + equationNumbers: { + autoNumber: "AMS", + useLabelIds: true + } + }, + tex2jax: { + inlineMath: [ ['$','$'], ["\\(","\\)"] ], + displayMath: [ ['$$','$$'], ["\\[","\\]"] ], + processEscapes: true, + processEnvironments: true + }, + displayAlign: 'center', + CommonHTML: { + linebreaks: { + automatic: true + } + } + }); + + MathJax.Hub.Queue(["Typeset", MathJax.Hub]); + } + } + init_mathjax(); + </script> + <!-- End of mathjax configuration --></head> +<body class="jp-Notebook" data-jp-theme-light="true" data-jp-theme-name="JupyterLab Light"> + +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h1 id="A-more-systematic-introduction-to-Prolog">A more systematic introduction to Prolog<a class="anchor-link" href="#A-more-systematic-introduction-to-Prolog">¶</a></h1> +</div> +</div> +</div> +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h3 id="Propositions">Propositions<a class="anchor-link" href="#Propositions">¶</a></h3><p>Prolog programs consist of <b>clauses</b>. +A clause is always terminated by a dot (<code>.</code>). +Propositions start with a lower case letter or you can use quotes to use (almost) arbitrary strings as propositions. +The simplest clauses are facts. Here we define three propositions to be true, for the last two we use quotes:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [13]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">rains</span><span class="p">.</span> +<span class="s s-Atom">'I am not wearing a hat'</span><span class="p">.</span> +<span class="s s-Atom">'The sun is shining'</span><span class="p">.</span> +<span class="nf">beach</span> <span class="o">:-</span> <span class="s s-Atom">fail</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>We can now ask the Prolog system whether the sun is shining:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="s s-Atom">beach</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-red-intense-fg ansi-bold">false</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [15]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-'The sun is shining'</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>More complicated clauses make use of the implication operator <code>:-</code>. They are also called rules. Logically they stipulate that the left-hand side of the clause must be true if the right-hand side is true. The right-hand side can contain multiple propositions separated by commas. The comma can be read as a logical conjunction (and).</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [16]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">carry_umbrella</span> <span class="o">:-</span> <span class="s s-Atom">rains</span><span class="p">,</span> <span class="s s-Atom">'I am not wearing a hat'</span><span class="p">.</span> +<span class="nf">rainbow</span> <span class="o">:-</span> <span class="s s-Atom">rains</span><span class="p">,</span> <span class="s s-Atom">'The sun is shining'</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [17]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="s s-Atom">rainbow</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>The corresponding logic formula to the rule for <code>rainbow</code> is +<code>rainbow ← rains ∧ 'The sun is shining'</code></p> + +</div> +</div> +</div> +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Using propositional logic is limited, but we can for example encode the logic circuit example from the lecture as follows. Note that <code>\+</code> is the Prolog symbol for negation.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [18]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="p">:-</span> <span class="s s-Atom">dynamic</span> <span class="s s-Atom">a</span><span class="o">/</span><span class="mi">0</span><span class="p">,</span><span class="s s-Atom">b</span><span class="o">/</span><span class="mi">0</span><span class="p">,</span><span class="s s-Atom">c</span><span class="o">/</span><span class="mi">0</span><span class="p">,</span><span class="s s-Atom">d</span><span class="o">/</span><span class="mi">0</span><span class="p">,</span><span class="s s-Atom">e</span><span class="o">/</span><span class="mf">0.</span> +<span class="s s-Atom">a</span><span class="p">.</span> <span class="s s-Atom">c</span><span class="p">.</span> <span class="s s-Atom">e</span><span class="p">.</span> +<span class="c1">% first-level circuits</span> + +<span class="nf">and11</span> <span class="o">:-</span> <span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">b</span><span class="p">.</span> +<span class="nf">or11</span> <span class="o">:-</span> <span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">.</span> +<span class="nf">and12</span> <span class="o">:-</span> <span class="s s-Atom">c</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">.</span> +<span class="nf">not1</span> <span class="o">:-</span> <span class="s s-Atom">\+</span> <span class="s s-Atom">e</span><span class="p">.</span> + +<span class="c1">% second-level circuits</span> +<span class="nf">or21</span> <span class="o">:-</span> <span class="s s-Atom">and11</span><span class="p">.</span> +<span class="nf">or21</span> <span class="o">:-</span> <span class="s s-Atom">not1</span><span class="p">.</span> + +<span class="nf">and2</span> <span class="o">:-</span> <span class="s s-Atom">or11</span><span class="p">,</span> <span class="s s-Atom">not1</span><span class="p">.</span> + +<span class="nf">or22</span> <span class="o">:-</span> <span class="s s-Atom">and12</span><span class="p">.</span> +<span class="nf">or22</span> <span class="o">:-</span> <span class="s s-Atom">not1</span><span class="p">.</span> + +<span class="nf">not2</span> <span class="o">:-</span> <span class="s s-Atom">\+</span> <span class="s s-Atom">not1</span><span class="p">.</span> + +<span class="c1">% third-level circuits</span> +<span class="nf">and3</span> <span class="o">:-</span> <span class="s s-Atom">or21</span><span class="p">,</span> <span class="s s-Atom">and2</span><span class="p">.</span> + +<span class="nf">or3</span> <span class="o">:-</span> <span class="s s-Atom">or22</span><span class="p">.</span> +<span class="nf">or3</span> <span class="o">:-</span> <span class="s s-Atom">not2</span><span class="p">.</span> + +<span class="c1">% fourth-level circuits</span> +<span class="nf">or4</span> <span class="o">:-</span> <span class="s s-Atom">and3</span><span class="p">.</span> +<span class="nf">or4</span> <span class="o">:-</span> <span class="s s-Atom">or3</span><span class="p">.</span> + +<span class="nf">and4</span> <span class="o">:-</span> <span class="s s-Atom">or3</span><span class="p">,</span> <span class="s s-Atom">not2</span><span class="p">.</span> + +<span class="c1">% last level</span> +<span class="nf">and5</span> <span class="o">:-</span> <span class="s s-Atom">and4</span><span class="p">,</span> <span class="s s-Atom">or4</span><span class="p">.</span> + +<span class="nf">output</span> <span class="o">:-</span> <span class="s s-Atom">and5</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [19]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-output</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Still, propositional logic is much too limited for most applications. Hence we move to predicate logic.</p> + +</div> +</div> +</div> +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h3 id="Predicates">Predicates<a class="anchor-link" href="#Predicates">¶</a></h3><p>Instead of propositions we can also use predicates with arguments within our clauses. The arguments to predicates denote objects for which the predicate is true. Arguments which start with an upper-case letter are logical variables. Below <code>X</code> is such a variable and it can stand for any object.</p> + +</div> +</div> +</div> +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Prolog provides a few built-in predicates like <code>></code> or <code>=</code> or <code>is</code>.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="mi">2</span><span class="o">></span><span class="mf">3.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-red-intense-fg ansi-bold">false</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [21]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="o">is</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="mi">3</span><span class="o">+</span><span class="mi">2</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = 5</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let us now define our own predicates. +In this case <code>mother/2</code> and <code>grandma/2</code>. +Note: we often use the notation <code>p/n</code> to denote the fact that the predicate <code>p</code> takes <code>n</code> arguments. <code>n</code> is called the arity of <code>p</code>.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [22]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">mother</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">b</span><span class="p">).</span> +<span class="nf">mother</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">).</span> +<span class="nf">grandma</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">mother</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">b</span><span class="p">),</span><span class="nf">mother</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>You can now ask questions about logical consequences of your logic program. In simple queries you provide all arguments:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [23]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">grandma</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [24]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">grandma</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">)</span> <span class="p">;</span> <span class="nf">mother</span><span class="p">(</span><span class="s s-Atom">c</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Logical-variables">Logical variables<a class="anchor-link" href="#Logical-variables">¶</a></h2><p>Variables start with an upper-case letter or an underscore. +Variables are called <code>logical variables</code> in Prolog: once assigned, their value is immutable and cannot be changed (except upon backtracking).</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [25]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">X</span><span class="o">=</span><span class="mf">1.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = 1</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Above we have set the logical variable <code>X</code> to 1. The scope of the name <code>X</code> is a Prolog clause (i.e., a fact or rule or a query). Thus, in the query below we talk about another <code>X</code>:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [26]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">X</span><span class="o">=</span><span class="mf">2.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = 2</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>However, in the same scope we cannot change the value of <code>X</code>, once assigned:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">X</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="nv">X</span><span class="o">=</span><span class="mf">2.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-red-intense-fg ansi-bold">false</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [28]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">X</span><span class="o">=</span><span class="mi">1</span><span class="p">,</span> <span class="nv">X2</span> <span class="o">is</span> <span class="nv">X</span><span class="o">+</span><span class="mf">1.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = 1, +X2 = 2</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Within a clause variables are implicitly unversally quantified. +Let us now define the grandma predicate in a more general fashion:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [29]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">grandma</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">mother</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Z</span><span class="p">),</span> <span class="nf">mother</span><span class="p">(</span><span class="nv">Z</span><span class="p">,</span><span class="nv">Y</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>The above clause is equivalent to this logical formula:</p> +<p><code>∀ X,Y,Z . grandma(X,Y) ← mother(X,Z)∧ mother(Z,Y)</code></p> +<p>Let us query the predicate:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [30]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">grandma</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nv">X</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = c</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>When we have variables in a query, Prolog gives us solutions for variables such that the instantiated predicate calls are logical consequences of your program.</p> +<p>We can find all solutions using the <code>print_table</code> command of our Jupyter kernel:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [31]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_table</span><span class="p">(</span><span class="nf">grandma</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nv">X</span><span class="p">))</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-OutputArea-output " data-mime-type="text/markdown"> +<table> +<thead><tr> +<th style="text-align:left">X</th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:left">c</td> +<td></td> +</tr> +</tbody> +</table> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Prolog also has a built-in predicate called <code>findall</code> which can be used to find all solutions in one go:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [32]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">findall</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">grandma</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nv">X</span><span class="p">),</span><span class="nv">Results</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Results = [c]</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h3 id="Prolog-terms-and-substitutions">Prolog terms and substitutions<a class="anchor-link" href="#Prolog-terms-and-substitutions">¶</a></h3><p>Terms represent data values (aka objects). We have that</p> +<ul> +<li>constants like <code>a</code> and <code>b</code> are terms</li> +<li>variables like <code>X</code> are terms</li> +<li>terms can also be constructed using function symbols</li> +</ul> +<p>A predicate call takes terms as arguments. +E.g. for <code>grandma(a,X)</code> we have the term <code>a</code> as first argument and the term <code>X</code> as second argument.</p> + +</div> +</div> +</div> +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Exercise">Exercise<a class="anchor-link" href="#Exercise">¶</a></h2><p>Let us try exercise 2.1.1 (iii) from the Art of Prolog (<a href="https://mitpress.mit.edu/9780262691635/the-art-of-prolog/">https://mitpress.mit.edu/9780262691635/the-art-of-prolog/</a>), describing the layout of Figure 2.3 using <code>left_of/2</code> and <code>above/2</code>. +<img src="./img/art_prolog_figure_2_3.svg" alt="Figure 2.3: Still life objects"></p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [33]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">left_of</span><span class="p">(</span><span class="s s-Atom">bicycle</span><span class="p">,</span><span class="s s-Atom">camera</span><span class="p">).</span> +<span class="nf">left_of</span><span class="p">(</span><span class="s s-Atom">pencil</span><span class="p">,</span><span class="s s-Atom">hourglass</span><span class="p">).</span> +<span class="nf">left_of</span><span class="p">(</span><span class="s s-Atom">hourglass</span><span class="p">,</span><span class="s s-Atom">butterfly</span><span class="p">).</span> +<span class="nf">left_of</span><span class="p">(</span><span class="s s-Atom">butterfly</span><span class="p">,</span><span class="s s-Atom">fish</span><span class="p">).</span> + +<span class="nf">above</span><span class="p">(</span><span class="s s-Atom">bicycle</span><span class="p">,</span><span class="s s-Atom">pencil</span><span class="p">).</span> +<span class="nf">above</span><span class="p">(</span><span class="s s-Atom">camera</span><span class="p">,</span><span class="s s-Atom">butterfly</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>We can use the Jupyter notebook to render the graph. +The <code>print_transition_graph</code> predicate requires a ternary predicate, +so that we can provide the edge labels:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [34]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">edge</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="s s-Atom">above</span><span class="p">,</span><span class="nv">B</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">above</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="nv">B</span><span class="p">).</span> +<span class="nf">edge</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="s s-Atom">left_of</span><span class="p">,</span><span class="nv">B</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">left_of</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="nv">B</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [35]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">edge</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="nv">B</span><span class="p">,</span><span class="nv">C</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">A = bicycle, +B = above, +C = pencil</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>By calling jupyter:print_transition_graph(PredSpec, FromIdx, ToIdx, LabelIdx), +a transition graph can be created (FromIdx is the number of argument specifying the origin, ToIdx the destination and LabelIdx the label).</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [36]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_transition_graph</span><span class="p">(</span><span class="s s-Atom">edge</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span> <span class="mi">2</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output " data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 10.0.1 (20240210.2158) + --> +<!-- Pages: 1 --> +<svg width="173pt" height="418pt" + viewBox="0.00 0.00 173.28 417.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 413.5)"> +<polygon fill="white" stroke="none" points="-4,4 -4,-413.5 169.28,-413.5 169.28,4 -4,4"/> +<!-- bicycle --> +<g id="node1" class="node"> +<title>bicycle</title> +<ellipse fill="none" stroke="black" cx="89.23" cy="-391.5" rx="37.53" ry="18"/> +<text text-anchor="middle" x="89.23" y="-386.45" font-family="Times,serif" font-size="14.00">bicycle</text> +</g> +<!-- pencil --> +<g id="node2" class="node"> +<title>pencil</title> +<ellipse fill="none" stroke="black" cx="56.23" cy="-303" rx="33.44" ry="18"/> +<text text-anchor="middle" x="56.23" y="-297.95" font-family="Times,serif" font-size="14.00">pencil</text> +</g> +<!-- bicycle->pencil --> +<g id="edge1" class="edge"> +<title>bicycle->pencil</title> +<path fill="none" stroke="black" d="M77.71,-373.99C74.18,-368.33 70.55,-361.82 67.98,-355.5 65.01,-348.16 62.71,-339.92 60.96,-332.21"/> +<polygon fill="black" stroke="black" points="64.43,-331.71 59.02,-322.6 57.57,-333.1 64.43,-331.71"/> +<text text-anchor="middle" x="83.36" y="-342.2" font-family="Times,serif" font-size="14.00">above</text> +</g> +<!-- camera --> +<g id="node3" class="node"> +<title>camera</title> +<ellipse fill="none" stroke="black" cx="127.23" cy="-249" rx="38.04" ry="18"/> +<text text-anchor="middle" x="127.23" y="-243.95" font-family="Times,serif" font-size="14.00">camera</text> +</g> +<!-- bicycle->camera --> +<g id="edge3" class="edge"> +<title>bicycle->camera</title> +<path fill="none" stroke="black" d="M94.79,-373.47C96.59,-367.77 98.56,-361.38 100.23,-355.5 107.63,-329.54 115.17,-299.72 120.4,-278.42"/> +<polygon fill="black" stroke="black" points="123.8,-279.27 122.76,-268.72 117,-277.61 123.8,-279.27"/> +<text text-anchor="middle" x="122.23" y="-342.2" font-family="Times,serif" font-size="14.00">left_of</text> +</g> +<!-- hourglass --> +<g id="node5" class="node"> +<title>hourglass</title> +<ellipse fill="none" stroke="black" cx="46.23" cy="-195" rx="46.23" ry="18"/> +<text text-anchor="middle" x="46.23" y="-189.95" font-family="Times,serif" font-size="14.00">hourglass</text> +</g> +<!-- pencil->hourglass --> +<g id="edge4" class="edge"> +<title>pencil->hourglass</title> +<path fill="none" stroke="black" d="M49.22,-285.2C47.19,-279.53 45.25,-273.08 44.23,-267 41.92,-253.12 42.07,-237.52 42.94,-224.48"/> +<polygon fill="black" stroke="black" points="46.4,-225.11 43.76,-214.85 39.42,-224.52 46.4,-225.11"/> +<text text-anchor="middle" x="62.23" y="-243.95" font-family="Times,serif" font-size="14.00">left_of</text> +</g> +<!-- butterfly --> +<g id="node4" class="node"> +<title>butterfly</title> +<ellipse fill="none" stroke="black" cx="87.23" cy="-106.5" rx="42.65" ry="18"/> +<text text-anchor="middle" x="87.23" y="-101.45" font-family="Times,serif" font-size="14.00">butterfly</text> +</g> +<!-- camera->butterfly --> +<g id="edge2" class="edge"> +<title>camera->butterfly</title> +<path fill="none" stroke="black" d="M126.66,-230.61C125.45,-209.21 121.72,-172.07 110.23,-142.5 109.05,-139.45 107.57,-136.39 105.94,-133.42"/> +<polygon fill="black" stroke="black" points="109.02,-131.76 100.79,-125.09 103.07,-135.44 109.02,-131.76"/> +<text text-anchor="middle" x="140.36" y="-189.95" font-family="Times,serif" font-size="14.00">above</text> +</g> +<!-- fish --> +<g id="node6" class="node"> +<title>fish</title> +<ellipse fill="none" stroke="black" cx="87.23" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="87.23" y="-12.95" font-family="Times,serif" font-size="14.00">fish</text> +</g> +<!-- butterfly->fish --> +<g id="edge6" class="edge"> +<title>butterfly->fish</title> +<path fill="none" stroke="black" d="M87.23,-88.41C87.23,-76.76 87.23,-61.05 87.23,-47.52"/> +<polygon fill="black" stroke="black" points="90.73,-47.86 87.23,-37.86 83.73,-47.86 90.73,-47.86"/> +<text text-anchor="middle" x="105.23" y="-57.2" font-family="Times,serif" font-size="14.00">left_of</text> +</g> +<!-- hourglass->butterfly --> +<g id="edge5" class="edge"> +<title>hourglass->butterfly</title> +<path fill="none" stroke="black" d="M54.33,-176.91C60.01,-164.94 67.71,-148.7 74.23,-134.93"/> +<polygon fill="black" stroke="black" points="77.38,-136.46 78.5,-125.92 71.06,-133.46 77.38,-136.46"/> +<text text-anchor="middle" x="88.23" y="-145.7" font-family="Times,serif" font-size="14.00">left_of</text> +</g> +</g> +</svg> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>We now define the predicates <code>right_of</code> and <code>below</code> in terms of the existing predicates:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [37]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">right_of</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">left_of</span><span class="p">(</span><span class="nv">Y</span><span class="p">,</span><span class="nv">X</span><span class="p">).</span> +<span class="nf">below</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">above</span><span class="p">(</span><span class="nv">Y</span><span class="p">,</span><span class="nv">X</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [38]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_table</span><span class="p">(</span><span class="nf">right_of</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">))</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-OutputArea-output " data-mime-type="text/markdown"> +<table> +<thead><tr> +<th style="text-align:left">X</th> +<th style="text-align:left">Y</th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:left">camera</td> +<td style="text-align:left">bicycle</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">hourglass</td> +<td style="text-align:left">pencil</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">butterfly</td> +<td style="text-align:left">hourglass</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">fish</td> +<td style="text-align:left">butterfly</td> +<td></td> +</tr> +</tbody> +</table> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [39]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="c1">% next(A,B) :- above(A,B); below(A,B) ; left_of(A,B) ; right_of(A,B).</span> +<span class="nf">next</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="nv">B</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">edge</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="nv">B</span><span class="p">).</span> +<span class="nf">next</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="nv">B</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">edge</span><span class="p">(</span><span class="nv">B</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="nv">A</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [40]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_table</span><span class="p">(</span><span class="nf">next</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">))</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-OutputArea-output " data-mime-type="text/markdown"> +<table> +<thead><tr> +<th style="text-align:left">X</th> +<th style="text-align:left">Y</th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:left">bicycle</td> +<td style="text-align:left">pencil</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">camera</td> +<td style="text-align:left">butterfly</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">bicycle</td> +<td style="text-align:left">camera</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">pencil</td> +<td style="text-align:left">hourglass</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">hourglass</td> +<td style="text-align:left">butterfly</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">butterfly</td> +<td style="text-align:left">fish</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">pencil</td> +<td style="text-align:left">bicycle</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">butterfly</td> +<td style="text-align:left">camera</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">camera</td> +<td style="text-align:left">bicycle</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">hourglass</td> +<td style="text-align:left">pencil</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">butterfly</td> +<td style="text-align:left">hourglass</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">fish</td> +<td style="text-align:left">butterfly</td> +<td></td> +</tr> +</tbody> +</table> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Recursion">Recursion<a class="anchor-link" href="#Recursion">¶</a></h2><p>Recursion is also allowed in Prolog rules. +We now define the simple graph of Figure 2.4 of the Art of Prolog as Prolog facts.</p> +<p>Note that Prolog allows the same predicate name to be used with multiple arities. +Above we have defined <code>edge/3</code>, below we define <code>edge/2</code>. For Prolog these two +predicates are different and there is no confusion within the Prolog system. +However, for programmers it can be a bit tricky to read code which uses +the same predicate name with multiple arities.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [41]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">edge</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">b</span><span class="p">).</span> <span class="nf">edge</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">).</span> +<span class="nf">edge</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">).</span> <span class="nf">edge</span><span class="p">(</span><span class="s s-Atom">c</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">).</span> +<span class="nf">edge</span><span class="p">(</span><span class="s s-Atom">d</span><span class="p">,</span><span class="s s-Atom">e</span><span class="p">).</span> +<span class="nf">edge</span><span class="p">(</span><span class="s s-Atom">f</span><span class="p">,</span><span class="s s-Atom">g</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>With the underscore we indicate that we are not interested in an argument; it is an anonymous logical variable. Here we use this to find the last element of a list:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [42]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_transition_graph</span><span class="p">(</span><span class="s s-Atom">edge</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output " data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 10.0.1 (20240210.2158) + --> +<!-- Pages: 1 --> +<svg width="206pt" height="260pt" + viewBox="0.00 0.00 206.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> +<polygon fill="white" stroke="none" points="-4,4 -4,-256 202,-256 202,4 -4,4"/> +<!-- a --> +<g id="node1" class="node"> +<title>a</title> +<ellipse fill="none" stroke="black" cx="63" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="63" y="-228.95" font-family="Times,serif" font-size="14.00">a</text> +</g> +<!-- b --> +<g id="node2" class="node"> +<title>b</title> +<ellipse fill="none" stroke="black" cx="27" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-156.95" font-family="Times,serif" font-size="14.00">b</text> +</g> +<!-- a->b --> +<g id="edge1" class="edge"> +<title>a->b</title> +<path fill="none" stroke="black" d="M54.65,-216.76C50.42,-208.55 45.19,-198.37 40.42,-189.09"/> +<polygon fill="black" stroke="black" points="43.68,-187.79 36,-180.49 37.46,-190.99 43.68,-187.79"/> +</g> +<!-- c --> +<g id="node3" class="node"> +<title>c</title> +<ellipse fill="none" stroke="black" cx="99" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-156.95" font-family="Times,serif" font-size="14.00">c</text> +</g> +<!-- a->c --> +<g id="edge2" class="edge"> +<title>a->c</title> +<path fill="none" stroke="black" d="M71.35,-216.76C75.58,-208.55 80.81,-198.37 85.58,-189.09"/> +<polygon fill="black" stroke="black" points="88.54,-190.99 90,-180.49 82.32,-187.79 88.54,-190.99"/> +</g> +<!-- d --> +<g id="node4" class="node"> +<title>d</title> +<ellipse fill="none" stroke="black" cx="63" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="63" y="-84.95" font-family="Times,serif" font-size="14.00">d</text> +</g> +<!-- b->d --> +<g id="edge3" class="edge"> +<title>b->d</title> +<path fill="none" stroke="black" d="M35.35,-144.76C39.58,-136.55 44.81,-126.37 49.58,-117.09"/> +<polygon fill="black" stroke="black" points="52.54,-118.99 54,-108.49 46.32,-115.79 52.54,-118.99"/> +</g> +<!-- c->d --> +<g id="edge4" class="edge"> +<title>c->d</title> +<path fill="none" stroke="black" d="M90.65,-144.76C86.42,-136.55 81.19,-126.37 76.42,-117.09"/> +<polygon fill="black" stroke="black" points="79.68,-115.79 72,-108.49 73.46,-118.99 79.68,-115.79"/> +</g> +<!-- e --> +<g id="node5" class="node"> +<title>e</title> +<ellipse fill="none" stroke="black" cx="63" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="63" y="-12.95" font-family="Times,serif" font-size="14.00">e</text> +</g> +<!-- d->e --> +<g id="edge5" class="edge"> +<title>d->e</title> +<path fill="none" stroke="black" d="M63,-71.7C63,-64.41 63,-55.73 63,-47.54"/> +<polygon fill="black" stroke="black" points="66.5,-47.62 63,-37.62 59.5,-47.62 66.5,-47.62"/> +</g> +<!-- f --> +<g id="node6" class="node"> +<title>f</title> +<ellipse fill="none" stroke="black" cx="171" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-228.95" font-family="Times,serif" font-size="14.00">f</text> +</g> +<!-- g --> +<g id="node7" class="node"> +<title>g</title> +<ellipse fill="none" stroke="black" cx="171" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-156.95" font-family="Times,serif" font-size="14.00">g</text> +</g> +<!-- f->g --> +<g id="edge6" class="edge"> +<title>f->g</title> +<path fill="none" stroke="black" d="M171,-215.7C171,-208.41 171,-199.73 171,-191.54"/> +<polygon fill="black" stroke="black" points="174.5,-191.62 171,-181.62 167.5,-191.62 174.5,-191.62"/> +</g> +</g> +</svg> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [44]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">conn</span><span class="p">(</span><span class="nv">A</span><span class="p">,</span><span class="nv">A</span><span class="p">)</span> <span class="p">:-</span> <span class="s s-Atom">true</span><span class="p">.</span> +<span class="c1">%conn(X,Y) :- edge(X,Y).</span> +<span class="nf">conn</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">edge</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Z</span><span class="p">),</span> <span class="nf">conn</span><span class="p">(</span><span class="nv">Z</span><span class="p">,</span><span class="nv">Y</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [45]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_table</span><span class="p">(</span><span class="nf">conn</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nv">X</span><span class="p">)).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-OutputArea-output " data-mime-type="text/markdown"> +<table> +<thead><tr> +<th style="text-align:left">X</th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:left">a</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">b</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">d</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">e</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">c</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">d</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">e</td> +<td></td> +</tr> +</tbody> +</table> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [46]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">findall</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span> <span class="nf">conn</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nv">X</span><span class="p">),</span><span class="nv">Ls</span><span class="p">),</span> <span class="nf">length</span><span class="p">(</span><span class="nv">Ls</span><span class="p">,</span><span class="nv">Len</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Ls = [a,b,d,e,c,d,e], +Len = 7</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let us now try and define the transitive and reflexive closure of edge.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [47]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">connected</span><span class="p">(</span><span class="nv">N</span><span class="p">,</span><span class="nv">N</span><span class="p">).</span> +<span class="nf">connected</span><span class="p">(</span><span class="nv">N1</span><span class="p">,</span><span class="nv">N2</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">edge</span><span class="p">(</span><span class="nv">N1</span><span class="p">,</span><span class="nv">Link</span><span class="p">),</span> <span class="nf">connected</span><span class="p">(</span><span class="nv">Link</span><span class="p">,</span><span class="nv">N2</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [48]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">connected</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nv">X</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = a</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [49]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_transition_graph</span><span class="p">(</span><span class="s s-Atom">connected</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output " data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 10.0.1 (20240210.2158) + --> +<!-- Pages: 1 --> +<svg width="344pt" height="260pt" + viewBox="0.00 0.00 343.56 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> +<polygon fill="white" stroke="none" points="-4,4 -4,-256 339.56,-256 339.56,4 -4,4"/> +<!-- _22252 --> +<g id="node1" class="node"> +<title>_22252</title> +<ellipse fill="none" stroke="black" cx="38.56" cy="-234" rx="38.56" ry="18"/> +<text text-anchor="middle" x="38.56" y="-228.95" font-family="Times,serif" font-size="14.00">_22252</text> +</g> +<!-- _22252->_22252 --> +<g id="edge1" class="edge"> +<title>_22252->_22252</title> +<path fill="none" stroke="black" d="M66.2,-246.9C81.29,-249.2 95.11,-244.9 95.11,-234 95.11,-225.91 87.5,-221.46 77.4,-220.64"/> +<polygon fill="black" stroke="black" points="77.56,-217.13 67.71,-221.04 77.85,-224.12 77.56,-217.13"/> +</g> +<!-- a --> +<g id="node2" class="node"> +<title>a</title> +<ellipse fill="none" stroke="black" cx="140.56" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="140.56" y="-228.95" font-family="Times,serif" font-size="14.00">a</text> +</g> +<!-- b --> +<g id="node3" class="node"> +<title>b</title> +<ellipse fill="none" stroke="black" cx="108.56" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="108.56" y="-156.95" font-family="Times,serif" font-size="14.00">b</text> +</g> +<!-- a->b --> +<g id="edge2" class="edge"> +<title>a->b</title> +<path fill="none" stroke="black" d="M132.97,-216.41C129.35,-208.48 124.91,-198.78 120.82,-189.84"/> +<polygon fill="black" stroke="black" points="124.06,-188.49 116.71,-180.85 117.69,-191.4 124.06,-188.49"/> +</g> +<!-- d --> +<g id="node4" class="node"> +<title>d</title> +<ellipse fill="none" stroke="black" cx="172.56" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="172.56" y="-84.95" font-family="Times,serif" font-size="14.00">d</text> +</g> +<!-- a->d --> +<g id="edge3" class="edge"> +<title>a->d</title> +<path fill="none" stroke="black" d="M139.87,-215.59C142.81,-191.24 152.55,-146.81 161.01,-118.11"/> +<polygon fill="black" stroke="black" points="164.31,-119.27 163.96,-108.68 157.63,-117.18 164.31,-119.27"/> +</g> +<!-- a->d --> +<g id="edge6" class="edge"> +<title>a->d</title> +<path fill="none" stroke="black" d="M148.81,-216.43C156.76,-192.64 167.05,-148.47 171.68,-119.41"/> +<polygon fill="black" stroke="black" points="175.1,-120.24 173.04,-109.84 168.17,-119.25 175.1,-120.24"/> +</g> +<!-- e --> +<g id="node5" class="node"> +<title>e</title> +<ellipse fill="none" stroke="black" cx="108.56" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="108.56" y="-12.95" font-family="Times,serif" font-size="14.00">e</text> +</g> +<!-- a->e --> +<g id="edge4" class="edge"> +<title>a->e</title> +<path fill="none" stroke="black" d="M116.67,-225.31C98,-216.84 74.07,-201.52 63.56,-180 41.34,-134.52 66.95,-75.11 87.91,-42.67"/> +<polygon fill="black" stroke="black" points="90.56,-44.99 93.34,-34.77 84.79,-41.02 90.56,-44.99"/> +</g> +<!-- a->e --> +<g id="edge7" class="edge"> +<title>a->e</title> +<path fill="none" stroke="black" d="M122.34,-220.44C108.31,-211.49 90.29,-197.89 81.56,-180 60.1,-136.07 83.26,-79.14 98.41,-46.08"/> +<polygon fill="black" stroke="black" points="101.5,-47.75 102.53,-37.21 95.15,-44.81 101.5,-47.75"/> +</g> +<!-- c --> +<g id="node6" class="node"> +<title>c</title> +<ellipse fill="none" stroke="black" cx="236.56" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="236.56" y="-156.95" font-family="Times,serif" font-size="14.00">c</text> +</g> +<!-- a->c --> +<g id="edge5" class="edge"> +<title>a->c</title> +<path fill="none" stroke="black" d="M158.16,-220.16C172.55,-209.67 193.13,-194.66 209.6,-182.66"/> +<polygon fill="black" stroke="black" points="211.49,-185.61 217.51,-176.89 207.37,-179.95 211.49,-185.61"/> +</g> +<!-- b->d --> +<g id="edge8" class="edge"> +<title>b->d</title> +<path fill="none" stroke="black" d="M122.13,-146.15C130.61,-136.87 141.72,-124.73 151.35,-114.19"/> +<polygon fill="black" stroke="black" points="153.82,-116.68 157.98,-106.94 148.65,-111.96 153.82,-116.68"/> +</g> +<!-- b->e --> +<g id="edge9" class="edge"> +<title>b->e</title> +<path fill="none" stroke="black" d="M108.56,-143.59C108.56,-119.61 108.56,-76.14 108.56,-47.42"/> +<polygon fill="black" stroke="black" points="112.06,-47.62 108.56,-37.62 105.06,-47.62 112.06,-47.62"/> +</g> +<!-- d->e --> +<g id="edge12" class="edge"> +<title>d->e</title> +<path fill="none" stroke="black" d="M158.98,-74.15C150.5,-64.87 139.39,-52.73 129.76,-42.19"/> +<polygon fill="black" stroke="black" points="132.46,-39.96 123.13,-34.94 127.3,-44.68 132.46,-39.96"/> +</g> +<!-- c->d --> +<g id="edge10" class="edge"> +<title>c->d</title> +<path fill="none" stroke="black" d="M222.98,-146.15C214.5,-136.87 203.39,-124.73 193.76,-114.19"/> +<polygon fill="black" stroke="black" points="196.46,-111.96 187.13,-106.94 191.3,-116.68 196.46,-111.96"/> +</g> +<!-- c->e --> +<g id="edge11" class="edge"> +<title>c->e</title> +<path fill="none" stroke="black" d="M235.03,-143.75C232.5,-124.33 225.86,-92.79 208.56,-72 191.75,-51.81 165.22,-38.25 143.71,-29.91"/> +<polygon fill="black" stroke="black" points="145.02,-26.66 134.42,-26.53 142.62,-33.23 145.02,-26.66"/> +</g> +<!-- f --> +<g id="node7" class="node"> +<title>f</title> +<ellipse fill="none" stroke="black" cx="308.56" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="308.56" y="-228.95" font-family="Times,serif" font-size="14.00">f</text> +</g> +<!-- g --> +<g id="node8" class="node"> +<title>g</title> +<ellipse fill="none" stroke="black" cx="308.56" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="308.56" y="-156.95" font-family="Times,serif" font-size="14.00">g</text> +</g> +<!-- f->g --> +<g id="edge13" class="edge"> +<title>f->g</title> +<path fill="none" stroke="black" d="M308.56,-215.7C308.56,-208.41 308.56,-199.73 308.56,-191.54"/> +<polygon fill="black" stroke="black" points="312.06,-191.62 308.56,-181.62 305.06,-191.62 312.06,-191.62"/> +</g> +</g> +</svg> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>How should we adapt the definition to only provide the transitive (non-reflexive) closure?</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [50]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">conn1</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">edge</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">).</span> +<span class="nf">conn1</span><span class="p">(</span><span class="nv">N1</span><span class="p">,</span><span class="nv">N2</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">edge</span><span class="p">(</span><span class="nv">N1</span><span class="p">,</span><span class="nv">Link</span><span class="p">),</span> <span class="nf">conn1</span><span class="p">(</span><span class="nv">Link</span><span class="p">,</span><span class="nv">N2</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [51]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">conn1</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nv">X</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = b</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [52]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_transition_graph</span><span class="p">(</span><span class="s s-Atom">conn1</span><span class="o">/</span><span class="mi">2</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span><span class="mi">0</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output " data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 10.0.1 (20240210.2158) + --> +<!-- Pages: 1 --> +<svg width="318pt" height="260pt" + viewBox="0.00 0.00 318.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> +<polygon fill="white" stroke="none" points="-4,4 -4,-256 314,-256 314,4 -4,4"/> +<!-- a --> +<g id="node1" class="node"> +<title>a</title> +<ellipse fill="none" stroke="black" cx="123" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="123" y="-228.95" font-family="Times,serif" font-size="14.00">a</text> +</g> +<!-- b --> +<g id="node2" class="node"> +<title>b</title> +<ellipse fill="none" stroke="black" cx="27" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-156.95" font-family="Times,serif" font-size="14.00">b</text> +</g> +<!-- a->b --> +<g id="edge1" class="edge"> +<title>a->b</title> +<path fill="none" stroke="black" d="M105.39,-220.16C91,-209.67 70.42,-194.66 53.96,-182.66"/> +<polygon fill="black" stroke="black" points="56.19,-179.95 46.04,-176.89 52.06,-185.61 56.19,-179.95"/> +</g> +<!-- c --> +<g id="node3" class="node"> +<title>c</title> +<ellipse fill="none" stroke="black" cx="155" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="155" y="-156.95" font-family="Times,serif" font-size="14.00">c</text> +</g> +<!-- a->c --> +<g id="edge2" class="edge"> +<title>a->c</title> +<path fill="none" stroke="black" d="M130.58,-216.41C134.21,-208.48 138.64,-198.78 142.73,-189.84"/> +<polygon fill="black" stroke="black" points="145.87,-191.4 146.84,-180.85 139.5,-188.49 145.87,-191.4"/> +</g> +<!-- d --> +<g id="node4" class="node"> +<title>d</title> +<ellipse fill="none" stroke="black" cx="91" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="91" y="-84.95" font-family="Times,serif" font-size="14.00">d</text> +</g> +<!-- a->d --> +<g id="edge7" class="edge"> +<title>a->d</title> +<path fill="none" stroke="black" d="M114.74,-216.43C106.8,-192.64 96.51,-148.47 91.87,-119.41"/> +<polygon fill="black" stroke="black" points="95.39,-119.25 90.51,-109.84 88.46,-120.24 95.39,-119.25"/> +</g> +<!-- a->d --> +<g id="edge9" class="edge"> +<title>a->d</title> +<path fill="none" stroke="black" d="M123.69,-215.59C120.74,-191.24 111,-146.81 102.55,-118.11"/> +<polygon fill="black" stroke="black" points="105.93,-117.18 99.6,-108.68 99.24,-119.27 105.93,-117.18"/> +</g> +<!-- e --> +<g id="node5" class="node"> +<title>e</title> +<ellipse fill="none" stroke="black" cx="155" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="155" y="-12.95" font-family="Times,serif" font-size="14.00">e</text> +</g> +<!-- a->e --> +<g id="edge8" class="edge"> +<title>a->e</title> +<path fill="none" stroke="black" d="M141.22,-220.44C155.25,-211.49 173.26,-197.89 182,-180 203.46,-136.07 180.29,-79.14 165.14,-46.08"/> +<polygon fill="black" stroke="black" points="168.41,-44.81 161.02,-37.21 162.06,-47.75 168.41,-44.81"/> +</g> +<!-- a->e --> +<g id="edge10" class="edge"> +<title>a->e</title> +<path fill="none" stroke="black" d="M146.88,-225.31C165.55,-216.84 189.49,-201.52 200,-180 222.21,-134.52 196.6,-75.11 175.65,-42.67"/> +<polygon fill="black" stroke="black" points="178.76,-41.02 170.21,-34.77 173,-44.99 178.76,-41.02"/> +</g> +<!-- b->d --> +<g id="edge3" class="edge"> +<title>b->d</title> +<path fill="none" stroke="black" d="M40.57,-146.15C49.06,-136.87 60.17,-124.73 69.8,-114.19"/> +<polygon fill="black" stroke="black" points="72.26,-116.68 76.43,-106.94 67.09,-111.96 72.26,-116.68"/> +</g> +<!-- b->e --> +<g id="edge11" class="edge"> +<title>b->e</title> +<path fill="none" stroke="black" d="M28.53,-143.75C31.05,-124.33 37.7,-92.79 55,-72 71.8,-51.81 98.33,-38.25 119.84,-29.91"/> +<polygon fill="black" stroke="black" points="120.93,-33.23 129.13,-26.53 118.54,-26.66 120.93,-33.23"/> +</g> +<!-- c->d --> +<g id="edge4" class="edge"> +<title>c->d</title> +<path fill="none" stroke="black" d="M141.43,-146.15C132.94,-136.87 121.83,-124.73 112.2,-114.19"/> +<polygon fill="black" stroke="black" points="114.91,-111.96 105.57,-106.94 109.74,-116.68 114.91,-111.96"/> +</g> +<!-- c->e --> +<g id="edge12" class="edge"> +<title>c->e</title> +<path fill="none" stroke="black" d="M155,-143.59C155,-119.61 155,-76.14 155,-47.42"/> +<polygon fill="black" stroke="black" points="158.5,-47.62 155,-37.62 151.5,-47.62 158.5,-47.62"/> +</g> +<!-- d->e --> +<g id="edge5" class="edge"> +<title>d->e</title> +<path fill="none" stroke="black" d="M104.57,-74.15C113.06,-64.87 124.17,-52.73 133.8,-42.19"/> +<polygon fill="black" stroke="black" points="136.26,-44.68 140.43,-34.94 131.09,-39.96 136.26,-44.68"/> +</g> +<!-- f --> +<g id="node6" class="node"> +<title>f</title> +<ellipse fill="none" stroke="black" cx="283" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="283" y="-228.95" font-family="Times,serif" font-size="14.00">f</text> +</g> +<!-- g --> +<g id="node7" class="node"> +<title>g</title> +<ellipse fill="none" stroke="black" cx="283" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="283" y="-156.95" font-family="Times,serif" font-size="14.00">g</text> +</g> +<!-- f->g --> +<g id="edge6" class="edge"> +<title>f->g</title> +<path fill="none" stroke="black" d="M283,-215.7C283,-208.41 283,-199.73 283,-191.54"/> +<polygon fill="black" stroke="black" points="286.5,-191.62 283,-181.62 279.5,-191.62 286.5,-191.62"/> +</g> +</g> +</svg> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Arithmetic">Arithmetic<a class="anchor-link" href="#Arithmetic">¶</a></h2><p>Prolog provides integers and floating point numbers as primitive data structures. +With the <code>is</code> predicate we can for example compute with those numbers:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [53]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">X</span> <span class="o">is</span> <span class="mi">2</span><span class="s s-Atom">^</span><span class="mf">200.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = 1606938044258990275541962092341162602522202993782792835301376</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [54]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">X</span> <span class="o">is</span> <span class="mf">1.0</span><span class="o">+</span><span class="mf">1.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = 2.0</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h1 id="Compound-data-values">Compound data values<a class="anchor-link" href="#Compound-data-values">¶</a></h1><p>So far we have seen these primitive Prolog data values:</p> +<ul> +<li>constants (called atoms in Prolog) like <code>a</code> and <code>b</code></li> +<li>integers</li> +<li>floats</li> +</ul> +<p>More complex data values can be wrapped in so-called functors (also called function symbols). +Like predicates they have an arity and take terms as arguments. +Unlike predicates, they denote a value and not a logical truth value.</p> +<p>This can be confusing to beginners: whether something is a predicate or functor depends on the position in the Prolog file:</p> +<ul> +<li>top-level symbols in Prolog clauses are predicates</li> +<li>arguments to predicates and functors only contain functors</li> +</ul> +<p>Functors have many uses in Prolog. The can be used for simple records up to recursive data structures like lists or trees.</p> +<p>Below we first use the functor <code>employe/2</code> as a simple record.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [55]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">construct</span><span class="p">(</span><span class="nv">Name</span><span class="p">,</span><span class="nv">Department</span><span class="p">,</span><span class="nf">employe</span><span class="p">(</span><span class="nv">Name</span><span class="p">,</span><span class="nv">Department</span><span class="p">)).</span> + +<span class="nf">get_name</span><span class="p">(</span><span class="nf">employe</span><span class="p">(</span><span class="nv">Name</span><span class="p">,</span><span class="k">_</span><span class="p">),</span><span class="nv">Name</span><span class="p">).</span> +<span class="nf">get_dept</span><span class="p">(</span><span class="nf">employe</span><span class="p">(</span><span class="k">_</span><span class="p">,</span><span class="nv">Dept</span><span class="p">),</span><span class="nv">Dept</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [56]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">construct</span><span class="p">(</span><span class="s s-Atom">peter</span><span class="p">,</span><span class="s s-Atom">cs</span><span class="p">,</span><span class="nv">E1</span><span class="p">),</span> <span class="nf">construct</span><span class="p">(</span><span class="s s-Atom">mary</span><span class="p">,</span><span class="s s-Atom">cs</span><span class="p">,</span><span class="nv">E2</span><span class="p">),</span> <span class="nf">get_name</span><span class="p">(</span><span class="nv">E1</span><span class="p">,</span><span class="nv">N1</span><span class="p">),</span> <span class="nf">get_dept</span><span class="p">(</span><span class="nv">E2</span><span class="p">,</span><span class="nv">D2</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">E1 = employe(peter,cs), +E2 = employe(mary,cs), +N1 = peter, +D2 = cs</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let us work out a small database example using such compound terms for data abstraction:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [57]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="c1">% Facts for courses with time slot and location:</span> +<span class="nf">course</span><span class="p">(</span><span class="s s-Atom">logic_programming</span><span class="p">,</span><span class="nf">time</span><span class="p">(</span><span class="s s-Atom">tuesday</span><span class="p">,</span><span class="mi">1430</span><span class="p">,</span><span class="mi">1600</span><span class="p">),</span><span class="nf">location</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="s s-Atom">'5F'</span><span class="p">)).</span> +<span class="nf">course</span><span class="p">(</span><span class="s s-Atom">sks</span><span class="p">,</span><span class="nf">time</span><span class="p">(</span><span class="s s-Atom">monday</span><span class="p">,</span><span class="mi">1430</span><span class="p">,</span><span class="mi">1600</span><span class="p">),</span><span class="nf">location</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="s s-Atom">'5G'</span><span class="p">)).</span> +<span class="nf">course</span><span class="p">(</span><span class="s s-Atom">drones</span><span class="p">,</span><span class="nf">time</span><span class="p">(</span><span class="s s-Atom">thursday</span><span class="p">,</span><span class="mi">1430</span><span class="p">,</span><span class="mi">1600</span><span class="p">),</span><span class="nf">location</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="s s-Atom">'12.O2.55'</span><span class="p">)).</span> +<span class="nf">course</span><span class="p">(</span><span class="s s-Atom">navigating_tomorrow</span><span class="p">,</span><span class="nf">time</span><span class="p">(</span><span class="s s-Atom">thursday</span><span class="p">,</span><span class="mi">1430</span><span class="p">,</span><span class="mi">1600</span><span class="p">),</span><span class="nf">location</span><span class="p">(</span><span class="mi">25</span><span class="p">,</span><span class="s s-Atom">'12.O2.21'</span><span class="p">)).</span> +<span class="c1">% separate facts about which programme the courses belong to (can be multiple):</span> +<span class="nf">programme</span><span class="p">(</span><span class="s s-Atom">logic_programming</span><span class="p">,</span><span class="s s-Atom">bachelor_cs</span><span class="p">).</span> +<span class="nf">programme</span><span class="p">(</span><span class="s s-Atom">logic_programming</span><span class="p">,</span><span class="s s-Atom">master_dsai</span><span class="p">).</span> +<span class="nf">programme</span><span class="p">(</span><span class="s s-Atom">sks</span><span class="p">,</span><span class="s s-Atom">master_cs</span><span class="p">).</span> +<span class="nf">programme</span><span class="p">(</span><span class="s s-Atom">navigating_tomorrow</span><span class="p">,</span><span class="s s-Atom">bachelor_cs</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let us try and write a predicate for:</p> +<ul> +<li>which courses take place on a particular day</li> +<li>which courses take place in a particular building (e.g., 25)</li> +<li>which courses are available for multiple programmes</li> +<li>which courses are in conflict (time-wise)</li> +<li>on which days there are courses a given programme (e.g., bachelor_cs).</li> +</ul> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Here is a solution. You will see that the compound term encoding of times and buildings +has some advantages and drawbacks over a flatter representation such as course/6 with 6 arguments:</p> + +<pre><code>course(logic_programming,tuesday,1430,1600,25,'5F').</code></pre> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [58]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">day</span><span class="p">(</span><span class="nv">Lect</span><span class="p">,</span><span class="nv">Day</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">course</span><span class="p">(</span><span class="nv">Lect</span><span class="p">,</span><span class="nf">time</span><span class="p">(</span><span class="nv">Day</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="k">_</span><span class="p">),</span><span class="k">_</span><span class="p">).</span> +<span class="nf">building</span><span class="p">(</span><span class="nv">Lect</span><span class="p">,</span><span class="nv">Bldg</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">course</span><span class="p">(</span><span class="nv">Lect</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="nf">location</span><span class="p">(</span><span class="nv">Bldg</span><span class="p">,</span><span class="k">_</span><span class="p">)).</span> +<span class="nf">multi</span><span class="p">(</span><span class="nv">Lect</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">course</span><span class="p">(</span><span class="nv">Lect</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="k">_</span><span class="p">),</span> <span class="nf">programme</span><span class="p">(</span><span class="nv">Lect</span><span class="p">,</span><span class="nv">P1</span><span class="p">),</span> <span class="nf">programme</span><span class="p">(</span><span class="nv">Lect</span><span class="p">,</span><span class="nv">P2</span><span class="p">),</span> <span class="nv">P1</span><span class="s s-Atom">\=</span><span class="nv">P2</span><span class="p">.</span> +<span class="nf">conflict</span><span class="p">(</span><span class="nv">L1</span><span class="p">,</span><span class="nv">L2</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">course</span><span class="p">(</span><span class="nv">L1</span><span class="p">,</span><span class="nv">T</span><span class="p">,</span><span class="k">_</span><span class="p">),</span> <span class="nf">course</span><span class="p">(</span><span class="nv">L2</span><span class="p">,</span><span class="nv">T</span><span class="p">,</span><span class="k">_</span><span class="p">),</span> <span class="nv">L1</span><span class="s s-Atom">\=</span><span class="nv">L2</span><span class="p">.</span> +<span class="nf">lecture_day</span><span class="p">(</span><span class="nv">Day</span><span class="p">,</span><span class="nv">Progr</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">course</span><span class="p">(</span><span class="nv">L1</span><span class="p">,</span><span class="nf">time</span><span class="p">(</span><span class="nv">Day</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="k">_</span><span class="p">),</span><span class="k">_</span><span class="p">),</span> <span class="nf">programme</span><span class="p">(</span><span class="nv">L1</span><span class="p">,</span><span class="nv">Progr</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [59]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">multi</span><span class="p">(</span><span class="nv">L</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">L = logic_programming</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [60]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">conflict</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = drones, +Y = navigating_tomorrow</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [61]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">findall</span><span class="p">(</span><span class="nv">D</span><span class="p">,</span><span class="nf">lecture_day</span><span class="p">(</span><span class="nv">D</span><span class="p">,</span><span class="s s-Atom">bachelor_cs</span><span class="p">),</span><span class="nv">L</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">L = [tuesday,thursday]</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Peano-Arithmetic">Peano Arithmetic<a class="anchor-link" href="#Peano-Arithmetic">¶</a></h2><p>The arguments to a functor can in term also make use of a functor.</p> +<p>We can also use functors of arity 1. (Functors of arity 0 are simply constants, i.e., atoms in Prolog terminology.) +This can be used to represent natural numbers:</p> +<ul> +<li>we can represent zero using the atom <code>zero/0</code></li> +<li>we can represent the successor of a number using a functor <code>s/1</code> </li> +</ul> +<p>Thus the number 1 is represented by the term <code>s(zero)</code> and the number 2 by <code>s(s(zero))</code>.</p> +<p>How could one write predicates to check if a term is a valid natural number in that representation? +E.g., <code>s(zero)</code> is valid, <code>s(a)</code> is not. +How could one write addition and multiplication predicate to add or multiply two numbers?</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>A possible solution is this one. +This is also called Peano arithmetic. Note, that contrary to built-in arithmetic (using is/2), these predicates are reversible</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [68]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">nat</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">).</span> +<span class="nf">nat</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nv">X</span><span class="p">))</span> <span class="p">:-</span> <span class="nf">nat</span><span class="p">(</span><span class="nv">X</span><span class="p">).</span> + +<span class="nf">plus</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">,</span><span class="nv">X</span><span class="p">,</span><span class="nv">X</span><span class="p">).</span> +<span class="nf">plus</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nv">X</span><span class="p">),</span><span class="nv">Y</span><span class="p">,</span><span class="nf">s</span><span class="p">(</span><span class="nv">Z</span><span class="p">))</span> <span class="p">:-</span> <span class="nf">plus</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">,</span><span class="nv">Z</span><span class="p">).</span> + +<span class="nf">mult</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="s s-Atom">zero</span><span class="p">).</span> +<span class="nf">mult</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nv">X</span><span class="p">),</span><span class="nv">Y</span><span class="p">,</span><span class="nv">Z</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">mult</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">,</span><span class="nv">XY</span><span class="p">),</span> <span class="nf">plus</span><span class="p">(</span><span class="nv">Y</span><span class="p">,</span><span class="nv">XY</span><span class="p">,</span><span class="nv">Z</span><span class="p">).</span> <span class="c1">% (x+1)*y = x*y + y</span> + +<span class="nf">exp</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">,</span><span class="nf">s</span><span class="p">(</span><span class="k">_</span><span class="p">),</span><span class="s s-Atom">zero</span><span class="p">).</span> +<span class="nf">exp</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="k">_</span><span class="p">),</span><span class="s s-Atom">zero</span><span class="p">,</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">)).</span> +<span class="nf">exp</span><span class="p">(</span><span class="nv">Y</span><span class="p">,</span><span class="nf">s</span><span class="p">(</span><span class="nv">X</span><span class="p">),</span><span class="nv">Z</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">exp</span><span class="p">(</span><span class="nv">Y</span><span class="p">,</span><span class="nv">X</span><span class="p">,</span><span class="nv">YX</span><span class="p">),</span> <span class="nf">mult</span><span class="p">(</span><span class="nv">YX</span><span class="p">,</span><span class="nv">Y</span><span class="p">,</span><span class="nv">Z</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [69]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">plus</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">)),</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">),</span><span class="nv">R</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">R = s(s(s(zero)))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [70]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">mult</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">)),</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">))),</span><span class="nv">R</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">R = s(s(s(s(s(s(zero))))))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [71]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">exp</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">)),</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">))),</span><span class="nv">R</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">R = s(s(s(s(s(s(s(s(zero))))))))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [72]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">plus</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">),</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">))).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = s(zero)</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [73]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">mult</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">),</span><span class="nf">s</span><span class="p">(</span><span class="nf">s</span><span class="p">(</span><span class="s s-Atom">zero</span><span class="p">))).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = s(s(zero))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Recursive-Data-Structures">Recursive Data Structures<a class="anchor-link" href="#Recursive-Data-Structures">¶</a></h2><p>Compound terms can be used the represent complex data structures, as will see below. +First, think on how one could represent a list of objects, say a list of length 2 containing <code>a</code> and <code>b</code>.</p> +<p>One could for example represent a list in Prolog by using +a functor <code>cons/2</code> to denote a non-empty list and <code>nil/0</code> to denote +an empty list. +(Remember, a functor of arity 0 is simply a constant (aka atom in Prolog).) +So a list of length two with a and b as elements can be represented as follows:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [74]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">Mylist</span> <span class="o">=</span> <span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">)).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Mylist = cons(a,cons(b,nil))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let us now try and define some useful predicates for our data type:</p> +<ul> +<li>is_empty/1 to check if something is the empty list</li> +<li>is_list/1 to check if something is a list</li> +<li>head/1 to get the first element of a list</li> +<li>element_of/2 to check if something is an element of a list</li> +<li>last/1 to get the last elemetn of a list</li> +</ul> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [75]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">is_empty</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">)</span> <span class="p">:-</span> <span class="s s-Atom">true</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>This should succeed:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [76]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">is_empty</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">is_empty</span><span class="p">(</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">)).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-red-intense-fg ansi-bold">false</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let us now define is_list0 (is_list is predefined):</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [78]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">is_list0</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">).</span> +<span class="nf">is_list0</span><span class="p">(</span><span class="nf">cons</span><span class="p">(</span><span class="k">_</span><span class="p">,</span><span class="nv">B</span><span class="p">))</span> <span class="p">:-</span> <span class="nf">is_list0</span><span class="p">(</span><span class="nv">B</span><span class="p">).</span> + +<span class="nf">is_non_empty_list</span><span class="p">(</span><span class="nf">cons</span><span class="p">(</span><span class="k">_</span><span class="p">,</span><span class="nv">B</span><span class="p">))</span> <span class="p">:-</span> <span class="nf">is_list0</span><span class="p">(</span><span class="nv">B</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [79]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span><span class="nf">is_list0</span><span class="p">(</span><span class="nf">cons</span><span class="p">(</span><span class="nf">employe</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">cs</span><span class="p">),</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [80]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">head</span><span class="p">(</span><span class="nv">First</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="nv">First</span><span class="p">,</span><span class="k">_</span><span class="p">))</span> <span class="p">:-</span> <span class="s s-Atom">true</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [81]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">head</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="nf">employe</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">b</span><span class="p">),</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = employe(a,b)</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [82]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">element_of</span><span class="p">(</span><span class="nv">First</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="nv">First</span><span class="p">,</span><span class="k">_</span><span class="p">)).</span> +<span class="nf">element_of</span><span class="p">(</span><span class="nv">H</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="k">_</span><span class="p">,</span><span class="nv">T</span><span class="p">))</span> <span class="p">:-</span> <span class="nf">element_of</span><span class="p">(</span><span class="nv">H</span><span class="p">,</span><span class="nv">T</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [83]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">element_of</span><span class="p">(</span><span class="s s-Atom">c</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="nv">Y</span><span class="p">))).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Y = cons(c,_8970)</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [84]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="s s-Atom">retry</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Y = cons(_8968,cons(c,_8976))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [85]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">element_of</span><span class="p">(</span><span class="nv">First</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">First = a</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [86]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_table</span><span class="p">(</span><span class="nf">element_of</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))))</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-OutputArea-output " data-mime-type="text/markdown"> +<table> +<thead><tr> +<th style="text-align:left">X</th> +</tr> +</thead> +<tbody> +<tr> +<td style="text-align:left">a</td> +<td></td> +</tr> +<tr> +<td style="text-align:left">b</td> +<td></td> +</tr> +</tbody> +</table> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [87]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">last0</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">)).</span> +<span class="nf">last0</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="k">_</span><span class="p">,</span><span class="nv">Y</span><span class="p">))</span> <span class="p">:-</span> <span class="nf">last0</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Y</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [88]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">last0</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">a</span><span class="p">,</span><span class="nf">cons</span><span class="p">(</span><span class="s s-Atom">b</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">X = b</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Exercise: write predicates prefix/2 and suffix/2 which is true if the first argument is a prefix or suffix of the second one.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Trees">Trees<a class="anchor-link" href="#Trees">¶</a></h2><p>As a quick example let us represent binary trees using compound Prolog terms. +For this we use a ternary functor <code>tree/3</code>. +It has three arguments:</p> +<ul> +<li>the left sub-tree</li> +<li>the information at the root of the tree</li> +<li>the right sub-tree +We also need the empty tree, which we represent by <code>nil</code>.</li> +</ul> +<p>For example, how would you represent this tree: +<img src="./img/simple_tree.png" alt="Simple Tree"></p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [89]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">Mytree</span> <span class="o">=</span> <span class="nf">tree</span><span class="p">(</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">),</span> <span class="s s-Atom">b</span><span class="p">,</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">,</span><span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Mytree = tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>Let us now try to write a predicate which reverses (mirrors) the tree, swapping left and right children:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [90]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">revtree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">).</span> +<span class="nf">revtree</span><span class="p">(</span><span class="nf">tree</span><span class="p">(</span><span class="nv">L</span><span class="p">,</span><span class="nv">Info</span><span class="p">,</span><span class="nv">R</span><span class="p">),</span><span class="nf">tree</span><span class="p">(</span><span class="nv">RR</span><span class="p">,</span><span class="nv">Info</span><span class="p">,</span><span class="nv">RL</span><span class="p">))</span> <span class="p">:-</span> <span class="nf">revtree</span><span class="p">(</span><span class="nv">L</span><span class="p">,</span><span class="nv">RL</span><span class="p">),</span> <span class="nf">revtree</span><span class="p">(</span><span class="nv">R</span><span class="p">,</span><span class="nv">RR</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [91]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">Mytree</span> <span class="o">=</span> <span class="nf">tree</span><span class="p">(</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">),</span> <span class="s s-Atom">b</span><span class="p">,</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">,</span><span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))),</span> + <span class="nf">revtree</span><span class="p">(</span><span class="nv">Mytree</span><span class="p">,</span><span class="nv">Result</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Mytree = tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil))), +Result = tree(tree(tree(nil,d,nil),c,nil),b,tree(nil,a,nil))</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<h2 id="Optional-Appendix:-Visualising-data-values-as-trees">Optional Appendix: Visualising data values as trees<a class="anchor-link" href="#Optional-Appendix:-Visualising-data-values-as-trees">¶</a></h2><p>Below we try to use the Jupyter graph visualisation to represent data values +in a tree-like fashion.</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [92]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="p">:-</span> <span class="nf">use_module</span><span class="p">(</span><span class="nf">library</span><span class="p">(</span><span class="s s-Atom">lists</span><span class="p">)).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>We define a subtree relation, using the =.. built-in predicate, which deconstructs a term +by generating a list consisting of the function symbol and all its arguments:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [93]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">)</span> <span class="s s-Atom">=..</span> <span class="nv">List</span><span class="p">.</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">List = [tree,nil,a,nil]</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>We can now define a subtree relation:</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [94]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">subtree</span><span class="p">(</span><span class="nv">Term</span><span class="p">,</span><span class="nv">Nr</span><span class="p">,</span><span class="nv">SubTerm</span><span class="p">)</span> <span class="p">:-</span> <span class="nv">Term</span> <span class="s s-Atom">=..</span> <span class="p">[</span><span class="k">_</span><span class="p">|</span><span class="nv">List</span><span class="p">],</span> <span class="nf">nth1</span><span class="p">(</span><span class="nv">Nr</span><span class="p">,</span><span class="nv">List</span><span class="p">,</span><span class="nv">SubTerm</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [95]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">Mytree</span> <span class="o">=</span> <span class="nf">tree</span><span class="p">(</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">),</span> <span class="s s-Atom">b</span><span class="p">,</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">,</span><span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))),</span> + <span class="nf">subtree</span><span class="p">(</span><span class="nv">Mytree</span><span class="p">,</span><span class="nv">Nr</span><span class="p">,</span><span class="nv">SubTerm</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Mytree = tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil))), +Nr = 1, +SubTerm = tree(nil,a,nil)</span></pre> +</div> + +</div> + +</div> + +</div> + +</div> +<div class="jp-Cell jp-MarkdownCell jp-Notebook-cell"> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"><div class="jp-InputPrompt jp-InputArea-prompt"> +</div><div class="jp-RenderedHTMLCommon jp-RenderedMarkdown jp-MarkdownOutput " data-mime-type="text/markdown"> +<p>For the Jupyter graph visualisation we also need to restrict this relation and define a set of terms of interest. +Indeed, otherwise there are infinitely many terms.</p> +<p>For this we define the transitive and reflexive closure of the subtree relation and only consider subtrees of a given starting term (here <code>tree( tree(nil,a,nil), b, tree(nil,c,tree(nil,d,nil)))</code>).</p> + +</div> +</div> +</div> +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [96]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nf">rec_subtree</span><span class="p">(</span><span class="nv">Term</span><span class="p">,</span><span class="nv">Sub</span><span class="p">)</span> <span class="p">:-</span> <span class="nv">Term</span> <span class="o">=</span> <span class="nv">Sub</span><span class="p">.</span> +<span class="nf">rec_subtree</span><span class="p">(</span><span class="nv">Term</span><span class="p">,</span><span class="nv">Sub</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">subtree</span><span class="p">(</span><span class="nv">Term</span><span class="p">,</span><span class="k">_</span><span class="p">,</span><span class="nv">X</span><span class="p">),</span> <span class="nf">rec_subtree</span><span class="p">(</span><span class="nv">X</span><span class="p">,</span><span class="nv">Sub</span><span class="p">).</span> + +<span class="nf">of_interest</span><span class="p">(</span><span class="nv">Term</span><span class="p">)</span> <span class="p">:-</span> <span class="nf">rec_subtree</span><span class="p">(</span><span class="nf">tree</span><span class="p">(</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">),</span> <span class="s s-Atom">b</span><span class="p">,</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">,</span><span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))),</span><span class="nv">Term</span><span class="p">).</span> + +<span class="nf">subt</span><span class="p">(</span><span class="nv">Term</span><span class="p">,</span><span class="nv">Nr</span><span class="p">,</span><span class="nv">SubTerm</span><span class="p">)</span> <span class="p">:-</span> + <span class="nf">of_interest</span><span class="p">(</span><span class="nv">Term</span><span class="p">),</span> <span class="c1">% only consider subterms of the above term as nodes</span> + <span class="nf">subtree</span><span class="p">(</span><span class="nv">Term</span><span class="p">,</span><span class="nv">Nr</span><span class="p">,</span><span class="nv">SubTerm</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [97]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="s s-Atom">?-</span> <span class="nv">Mytree</span> <span class="o">=</span> <span class="nf">tree</span><span class="p">(</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">a</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">),</span> <span class="s s-Atom">b</span><span class="p">,</span> <span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">c</span><span class="p">,</span><span class="nf">tree</span><span class="p">(</span><span class="s s-Atom">nil</span><span class="p">,</span><span class="s s-Atom">d</span><span class="p">,</span><span class="s s-Atom">nil</span><span class="p">))),</span> + <span class="nf">subtree</span><span class="p">(</span><span class="nv">Mytree</span><span class="p">,</span><span class="nv">Nr</span><span class="p">,</span><span class="nv">SubTerm</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">Mytree = tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil))), +Nr = 1, +SubTerm = tree(nil,a,nil)</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [98]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span><span class="nn">jupyter</span><span class="p">:</span><span class="nf">print_transition_graph</span><span class="p">(</span><span class="s s-Atom">subt</span><span class="o">/</span><span class="mi">3</span><span class="p">,</span> <span class="mi">1</span><span class="p">,</span> <span class="mi">3</span><span class="p">,</span><span class="mi">2</span><span class="p">).</span> +</pre></div> + + </div> +</div> +</div> +</div> + +<div class="jp-Cell-outputWrapper"> +<div class="jp-Collapser jp-OutputCollapser jp-Cell-outputCollapser"> +</div> + + +<div class="jp-OutputArea jp-Cell-outputArea"> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + +<div class="jp-RenderedSVG jp-OutputArea-output " data-mime-type="image/svg+xml"> +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" + "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 10.0.1 (20240210.2158) + --> +<!-- Pages: 1 --> +<svg width="474pt" height="310pt" + viewBox="0.00 0.00 474.31 309.50" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 305.5)"> +<polygon fill="white" stroke="none" points="-4,4 -4,-305.5 470.31,-305.5 470.31,4 -4,4"/> +<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil))) --> +<g id="node1" class="node"> +<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))</title> +<ellipse fill="none" stroke="black" cx="177.26" cy="-283.5" rx="177.26" ry="18"/> +<text text-anchor="middle" x="177.26" y="-278.45" font-family="Times,serif" font-size="14.00">tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))</text> +</g> +<!-- tree(nil,a,nil) --> +<g id="node2" class="node"> +<title>tree(nil,a,nil)</title> +<ellipse fill="none" stroke="black" cx="153.26" cy="-106.5" rx="59.54" ry="18"/> +<text text-anchor="middle" x="153.26" y="-101.45" font-family="Times,serif" font-size="14.00">tree(nil,a,nil)</text> +</g> +<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,a,nil) --> +<g id="edge1" class="edge"> +<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,a,nil)</title> +<path fill="none" stroke="black" d="M162.84,-265.22C152.71,-251.89 140.02,-232.49 134.51,-213 127.17,-187.05 134.15,-156.67 141.59,-135.19"/> +<polygon fill="black" stroke="black" points="144.81,-136.56 145.03,-125.96 138.26,-134.11 144.81,-136.56"/> +<text text-anchor="middle" x="138.63" y="-189.95" font-family="Times,serif" font-size="14.00">1</text> +</g> +<!-- b --> +<g id="node3" class="node"> +<title>b</title> +<ellipse fill="none" stroke="black" cx="177.26" cy="-195" rx="27" ry="18"/> +<text text-anchor="middle" x="177.26" y="-189.95" font-family="Times,serif" font-size="14.00">b</text> +</g> +<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->b --> +<g id="edge2" class="edge"> +<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->b</title> +<path fill="none" stroke="black" d="M177.26,-265.41C177.26,-253.76 177.26,-238.05 177.26,-224.52"/> +<polygon fill="black" stroke="black" points="180.76,-224.86 177.26,-214.86 173.76,-224.86 180.76,-224.86"/> +<text text-anchor="middle" x="180.63" y="-234.2" font-family="Times,serif" font-size="14.00">2</text> +</g> +<!-- tree(nil,c,tree(nil,d,nil)) --> +<g id="node4" class="node"> +<title>tree(nil,c,tree(nil,d,nil))</title> +<ellipse fill="none" stroke="black" cx="321.26" cy="-195" rx="98.95" ry="18"/> +<text text-anchor="middle" x="321.26" y="-189.95" font-family="Times,serif" font-size="14.00">tree(nil,c,tree(nil,d,nil))</text> +</g> +<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,c,tree(nil,d,nil)) --> +<g id="edge3" class="edge"> +<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,c,tree(nil,d,nil))</title> +<path fill="none" stroke="black" d="M205.71,-265.41C228.18,-251.91 259.73,-232.96 284.18,-218.27"/> +<polygon fill="black" stroke="black" points="285.78,-221.4 292.55,-213.25 282.17,-215.4 285.78,-221.4"/> +<text text-anchor="middle" x="264.63" y="-234.2" font-family="Times,serif" font-size="14.00">3</text> +</g> +<!-- nil --> +<g id="node5" class="node"> +<title>nil</title> +<ellipse fill="none" stroke="black" cx="249.26" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="249.26" y="-12.95" font-family="Times,serif" font-size="14.00">nil</text> +</g> +<!-- tree(nil,a,nil)->nil --> +<g id="edge4" class="edge"> +<title>tree(nil,a,nil)->nil</title> +<path fill="none" stroke="black" d="M165.03,-88.6C172.93,-77.97 183.96,-64.34 195.51,-54 202.7,-47.56 211.19,-41.46 219.27,-36.22"/> +<polygon fill="black" stroke="black" points="220.89,-39.33 227.53,-31.08 217.19,-33.39 220.89,-39.33"/> +<text text-anchor="middle" x="198.63" y="-57.2" font-family="Times,serif" font-size="14.00">1</text> +</g> +<!-- tree(nil,a,nil)->nil --> +<g id="edge6" class="edge"> +<title>tree(nil,a,nil)->nil</title> +<path fill="none" stroke="black" d="M177.45,-89.73C185.62,-84.02 194.59,-77.3 202.26,-70.5 211.76,-62.07 221.38,-51.89 229.41,-42.81"/> +<polygon fill="black" stroke="black" points="231.97,-45.21 235.87,-35.36 226.68,-40.63 231.97,-45.21"/> +<text text-anchor="middle" x="221.63" y="-57.2" font-family="Times,serif" font-size="14.00">3</text> +</g> +<!-- a --> +<g id="node6" class="node"> +<title>a</title> +<ellipse fill="none" stroke="black" cx="153.26" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="153.26" y="-12.95" font-family="Times,serif" font-size="14.00">a</text> +</g> +<!-- tree(nil,a,nil)->a --> +<g id="edge5" class="edge"> +<title>tree(nil,a,nil)->a</title> +<path fill="none" stroke="black" d="M153.26,-88.41C153.26,-76.76 153.26,-61.05 153.26,-47.52"/> +<polygon fill="black" stroke="black" points="156.76,-47.86 153.26,-37.86 149.76,-47.86 156.76,-47.86"/> +<text text-anchor="middle" x="156.63" y="-57.2" font-family="Times,serif" font-size="14.00">2</text> +</g> +<!-- tree(nil,c,tree(nil,d,nil))->nil --> +<g id="edge7" class="edge"> +<title>tree(nil,c,tree(nil,d,nil))->nil</title> +<path fill="none" stroke="black" d="M299.88,-176.97C285.51,-164.19 267.6,-145.36 258.51,-124.5 247.85,-100.04 246.3,-69.41 246.96,-47.46"/> +<polygon fill="black" stroke="black" points="250.44,-47.93 247.44,-37.77 243.45,-47.59 250.44,-47.93"/> +<text text-anchor="middle" x="261.63" y="-101.45" font-family="Times,serif" font-size="14.00">1</text> +</g> +<!-- c --> +<g id="node7" class="node"> +<title>c</title> +<ellipse fill="none" stroke="black" cx="301.26" cy="-106.5" rx="27" ry="18"/> +<text text-anchor="middle" x="301.26" y="-101.45" font-family="Times,serif" font-size="14.00">c</text> +</g> +<!-- tree(nil,c,tree(nil,d,nil))->c --> +<g id="edge8" class="edge"> +<title>tree(nil,c,tree(nil,d,nil))->c</title> +<path fill="none" stroke="black" d="M316.14,-176.62C314.56,-171.02 312.88,-164.77 311.51,-159 309.73,-151.55 308.02,-143.45 306.51,-135.92"/> +<polygon fill="black" stroke="black" points="309.97,-135.38 304.64,-126.22 303.1,-136.71 309.97,-135.38"/> +<text text-anchor="middle" x="314.63" y="-145.7" font-family="Times,serif" font-size="14.00">2</text> +</g> +<!-- tree(nil,d,nil) --> +<g id="node8" class="node"> +<title>tree(nil,d,nil)</title> +<ellipse fill="none" stroke="black" cx="406.26" cy="-106.5" rx="60.05" ry="18"/> +<text text-anchor="middle" x="406.26" y="-101.45" font-family="Times,serif" font-size="14.00">tree(nil,d,nil)</text> +</g> +<!-- tree(nil,c,tree(nil,d,nil))->tree(nil,d,nil) --> +<g id="edge9" class="edge"> +<title>tree(nil,c,tree(nil,d,nil))->tree(nil,d,nil)</title> +<path fill="none" stroke="black" d="M338.05,-176.91C350.59,-164.15 367.91,-146.53 381.95,-132.23"/> +<polygon fill="black" stroke="black" points="384.21,-134.93 388.73,-125.34 379.22,-130.02 384.21,-134.93"/> +<text text-anchor="middle" x="374.63" y="-145.7" font-family="Times,serif" font-size="14.00">3</text> +</g> +<!-- tree(nil,d,nil)->nil --> +<g id="edge10" class="edge"> +<title>tree(nil,d,nil)->nil</title> +<path fill="none" stroke="black" d="M373.45,-91.18C360.24,-85.15 344.97,-77.83 331.51,-70.5 313.06,-60.45 293.07,-47.98 277.42,-37.82"/> +<polygon fill="black" stroke="black" points="279.36,-34.91 269.08,-32.36 275.53,-40.77 279.36,-34.91"/> +<text text-anchor="middle" x="334.63" y="-57.2" font-family="Times,serif" font-size="14.00">1</text> +</g> +<!-- tree(nil,d,nil)->nil --> +<g id="edge12" class="edge"> +<title>tree(nil,d,nil)->nil</title> +<path fill="none" stroke="black" d="M387.59,-89.14C374.45,-78.19 356.08,-64 338.26,-54 321.15,-44.4 300.88,-36.21 284.01,-30.17"/> +<polygon fill="black" stroke="black" points="285.51,-26.98 274.91,-27.01 283.21,-33.6 285.51,-26.98"/> +<text text-anchor="middle" x="364.63" y="-57.2" font-family="Times,serif" font-size="14.00">3</text> +</g> +<!-- d --> +<g id="node9" class="node"> +<title>d</title> +<ellipse fill="none" stroke="black" cx="406.26" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="406.26" y="-12.95" font-family="Times,serif" font-size="14.00">d</text> +</g> +<!-- tree(nil,d,nil)->d --> +<g id="edge11" class="edge"> +<title>tree(nil,d,nil)->d</title> +<path fill="none" stroke="black" d="M406.26,-88.41C406.26,-76.76 406.26,-61.05 406.26,-47.52"/> +<polygon fill="black" stroke="black" points="409.76,-47.86 406.26,-37.86 402.76,-47.86 409.76,-47.86"/> +<text text-anchor="middle" x="409.63" y="-57.2" font-family="Times,serif" font-size="14.00">2</text> +</g> +</g> +</svg> + +</div> + +</div> + +<div class="jp-OutputArea-child"> + + + <div class="jp-OutputPrompt jp-OutputArea-prompt"></div> + + + + +<div class="jp-RenderedText jp-OutputArea-output " data-mime-type="text/plain"> +<pre><span class="ansi-bold">true</span></pre> +</div> + +</div> + +</div> + +</div> + +</div><div class="jp-Cell jp-CodeCell jp-Notebook-cell jp-mod-noOutputs "> +<div class="jp-Cell-inputWrapper"> +<div class="jp-Collapser jp-InputCollapser jp-Cell-inputCollapser"> +</div> +<div class="jp-InputArea jp-Cell-inputArea"> +<div class="jp-InputPrompt jp-InputArea-prompt">In [ ]:</div> +<div class="jp-CodeMirrorEditor jp-Editor jp-InputArea-editor" data-type="inline"> + <div class="CodeMirror cm-s-jupyter"> +<div class=" highlight hl-Prolog"><pre><span></span> +</pre></div> + + </div> +</div> +</div> +</div> + +</div> +</body> + + + + + + + +</html> diff --git a/logic_programming/2_IntroProlog.ipynb b/logic_programming/2_IntroProlog.ipynb index 06d4722..1ac53e3 100644 --- a/logic_programming/2_IntroProlog.ipynb +++ b/logic_programming/2_IntroProlog.ipynb @@ -22,7 +22,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 13, "id": "93e05f7b-a91c-4262-861e-a399e094b710", "metadata": { "vscode": { @@ -71,7 +71,7 @@ }, { "cell_type": "code", - "execution_count": 4, + "execution_count": 15, "id": "20b05b2c", "metadata": { "vscode": { @@ -103,7 +103,7 @@ }, { "cell_type": "code", - "execution_count": 5, + "execution_count": 16, "id": "2b8b84a0", "metadata": { "vscode": { @@ -118,7 +118,7 @@ }, { "cell_type": "code", - "execution_count": 6, + "execution_count": 17, "id": "4e6314e8", "metadata": { "vscode": { @@ -149,6 +149,87 @@ "`rainbow ← rains ∧ 'The sun is shining'`" ] }, + { + "cell_type": "markdown", + "id": "7eeb709b", + "metadata": {}, + "source": [ + "Using propositional logic is limited, but we can for example encode the logic circuit example from the lecture as follows. Note that ```\\+``` is the Prolog symbol for negation." + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "46e4fea5", + "metadata": {}, + "outputs": [], + "source": [ + ":- dynamic a/0,b/0,c/0,d/0,e/0.\n", + "a. c. e.\n", + "% first-level circuits\n", + "\n", + "and11 :- a,b.\n", + "or11 :- b,c.\n", + "and12 :- c,d.\n", + "not1 :- \\+ e.\n", + "\n", + "% second-level circuits\n", + "or21 :- and11.\n", + "or21 :- not1.\n", + "\n", + "and2 :- or11, not1.\n", + "\n", + "or22 :- and12.\n", + "or22 :- not1.\n", + "\n", + "not2 :- \\+ not1.\n", + "\n", + "% third-level circuits\n", + "and3 :- or21, and2.\n", + "\n", + "or3 :- or22.\n", + "or3 :- not2.\n", + "\n", + "% fourth-level circuits\n", + "or4 :- and3.\n", + "or4 :- or3.\n", + "\n", + "and4 :- or3, not2.\n", + "\n", + "% last level\n", + "and5 :- and4, or4.\n", + "\n", + "output :- and5." + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "id": "e137f152", + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\u001b[1mtrue" + ] + }, + "metadata": {}, + "output_type": "display_data" + } + ], + "source": [ + "?-output." + ] + }, + { + "cell_type": "markdown", + "id": "349b3e69", + "metadata": {}, + "source": [ + "Still, propositional logic is much too limited for most applications. Hence we move to predicate logic." + ] + }, { "cell_type": "markdown", "id": "d7254b1b", @@ -192,7 +273,7 @@ }, { "cell_type": "code", - "execution_count": 53, + "execution_count": 21, "id": "600c0ea6", "metadata": { "vscode": { @@ -226,99 +307,14 @@ }, { "cell_type": "code", - "execution_count": 54, + "execution_count": 22, "id": "1d6eed4f", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:mother/2 were retracted (click to expand)</summary><pre>:- dynamic mother/2.\n", - "\n", - "mother(a, b).\n", - "mother(b, c).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:mother/2 were retracted:\n", - ":- dynamic mother/2.\n", - "\n", - "mother(a, b).\n", - "mother(b, c).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:mother/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:grandma/2 were retracted (click to expand)</summary><pre>:- dynamic grandma/2.\n", - "\n", - "grandma(A, B) :-\n", - " mother(A, C),\n", - " mother(C, B).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:grandma/2 were retracted:\n", - ":- dynamic grandma/2.\n", - "\n", - "grandma(A, B) :-\n", - " mother(A, C),\n", - " mother(C, B).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:grandma/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "mother(a,b).\n", "mother(b,c).\n", @@ -335,7 +331,7 @@ }, { "cell_type": "code", - "execution_count": 55, + "execution_count": 23, "id": "a2ab9e95", "metadata": { "vscode": { @@ -359,7 +355,7 @@ }, { "cell_type": "code", - "execution_count": 56, + "execution_count": 24, "id": "838bc91a", "metadata": { "vscode": { @@ -393,7 +389,7 @@ }, { "cell_type": "code", - "execution_count": 57, + "execution_count": 25, "id": "93e47505", "metadata": { "vscode": { @@ -425,7 +421,7 @@ }, { "cell_type": "code", - "execution_count": 58, + "execution_count": 26, "id": "0c4d96e2", "metadata": { "vscode": { @@ -481,7 +477,7 @@ }, { "cell_type": "code", - "execution_count": 60, + "execution_count": 28, "id": "d9369af3", "metadata": { "vscode": { @@ -515,58 +511,14 @@ }, { "cell_type": "code", - "execution_count": 61, + "execution_count": 29, "id": "7fd70461", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:grandma/2 were retracted (click to expand)</summary><pre>:- dynamic grandma/2.\n", - "\n", - "grandma(a, c) :-\n", - " mother(a, b),\n", - " mother(b, c).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:grandma/2 were retracted:\n", - ":- dynamic grandma/2.\n", - "\n", - "grandma(a, c) :-\n", - " mother(a, b),\n", - " mother(b, c).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:grandma/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "grandma(X,Y) :- mother(X,Z), mother(Z,Y)." ] @@ -585,7 +537,7 @@ }, { "cell_type": "code", - "execution_count": 62, + "execution_count": 30, "id": "81724623", "metadata": { "vscode": { @@ -619,7 +571,7 @@ }, { "cell_type": "code", - "execution_count": 63, + "execution_count": 31, "id": "4d656338", "metadata": { "vscode": { @@ -667,7 +619,7 @@ }, { "cell_type": "code", - "execution_count": 64, + "execution_count": 32, "id": "a7478245", "metadata": { "vscode": { @@ -717,7 +669,7 @@ }, { "cell_type": "code", - "execution_count": 10, + "execution_count": 33, "id": "9e3be61b", "metadata": { "vscode": { @@ -747,7 +699,7 @@ }, { "cell_type": "code", - "execution_count": 11, + "execution_count": 34, "id": "6781d789", "metadata": { "vscode": { @@ -762,7 +714,7 @@ }, { "cell_type": "code", - "execution_count": 12, + "execution_count": 35, "id": "bb98ad05", "metadata": { "vscode": { @@ -788,7 +740,7 @@ }, { "cell_type": "markdown", - "id": "c137912e", + "id": "74b3c8d1", "metadata": {}, "source": [ "By calling jupyter:print_transition_graph(PredSpec, FromIdx, ToIdx, LabelIdx),\n", @@ -797,7 +749,7 @@ }, { "cell_type": "code", - "execution_count": 68, + "execution_count": 36, "id": "186fe078", "metadata": { "vscode": { @@ -811,102 +763,102 @@ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", - "<!-- Generated by graphviz version 6.0.1 (20220911.1526)\n", + "<!-- Generated by graphviz version 10.0.1 (20240210.2158)\n", " -->\n", "<!-- Pages: 1 -->\n", - "<svg width=\"168pt\" height=\"413pt\"\n", - " viewBox=\"0.00 0.00 167.59 413.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 409)\">\n", - "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-409 163.59,-409 163.59,4 -4,4\"/>\n", + "<svg width=\"173pt\" height=\"418pt\"\n", + " viewBox=\"0.00 0.00 173.28 417.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 413.5)\">\n", + "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-413.5 169.28,-413.5 169.28,4 -4,4\"/>\n", "<!-- bicycle -->\n", "<g id=\"node1\" class=\"node\">\n", "<title>bicycle</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"86.2\" cy=\"-387\" rx=\"36.29\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"86.2\" y=\"-383.3\" font-family=\"Times,serif\" font-size=\"14.00\">bicycle</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"89.23\" cy=\"-391.5\" rx=\"37.53\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"89.23\" y=\"-386.45\" font-family=\"Times,serif\" font-size=\"14.00\">bicycle</text>\n", "</g>\n", "<!-- pencil -->\n", "<g id=\"node2\" class=\"node\">\n", "<title>pencil</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"54.2\" cy=\"-300\" rx=\"32.49\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"54.2\" y=\"-296.3\" font-family=\"Times,serif\" font-size=\"14.00\">pencil</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"56.23\" cy=\"-303\" rx=\"33.44\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"56.23\" y=\"-297.95\" font-family=\"Times,serif\" font-size=\"14.00\">pencil</text>\n", "</g>\n", "<!-- bicycle->pencil -->\n", "<g id=\"edge1\" class=\"edge\">\n", "<title>bicycle->pencil</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M73.75,-370.02C69.83,-364.3 65.84,-357.62 63.2,-351 60.35,-343.87 58.4,-335.82 57.07,-328.28\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"60.49,-327.51 55.56,-318.14 53.57,-328.54 60.49,-327.51\"/>\n", - "<text text-anchor=\"middle\" x=\"79.7\" y=\"-339.8\" font-family=\"Times,serif\" font-size=\"14.00\">above</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M77.71,-373.99C74.18,-368.33 70.55,-361.82 67.98,-355.5 65.01,-348.16 62.71,-339.92 60.96,-332.21\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"64.43,-331.71 59.02,-322.6 57.57,-333.1 64.43,-331.71\"/>\n", + "<text text-anchor=\"middle\" x=\"83.36\" y=\"-342.2\" font-family=\"Times,serif\" font-size=\"14.00\">above</text>\n", "</g>\n", "<!-- camera -->\n", "<g id=\"node3\" class=\"node\">\n", "<title>camera</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"123.2\" cy=\"-246\" rx=\"36.29\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"123.2\" y=\"-242.3\" font-family=\"Times,serif\" font-size=\"14.00\">camera</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"127.23\" cy=\"-249\" rx=\"38.04\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"127.23\" y=\"-243.95\" font-family=\"Times,serif\" font-size=\"14.00\">camera</text>\n", "</g>\n", "<!-- bicycle->camera -->\n", "<g id=\"edge3\" class=\"edge\">\n", "<title>bicycle->camera</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M91.16,-368.93C92.8,-363.24 94.6,-356.85 96.2,-351 103.33,-324.83 111.07,-294.83 116.43,-273.8\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"119.86,-274.52 118.93,-263.97 113.07,-272.8 119.86,-274.52\"/>\n", - "<text text-anchor=\"middle\" x=\"117.7\" y=\"-339.8\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M94.79,-373.47C96.59,-367.77 98.56,-361.38 100.23,-355.5 107.63,-329.54 115.17,-299.72 120.4,-278.42\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"123.8,-279.27 122.76,-268.72 117,-277.61 123.8,-279.27\"/>\n", + "<text text-anchor=\"middle\" x=\"122.23\" y=\"-342.2\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", "</g>\n", "<!-- hourglass -->\n", "<g id=\"node5\" class=\"node\">\n", "<title>hourglass</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"44.2\" cy=\"-192\" rx=\"44.39\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"44.2\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">hourglass</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"46.23\" cy=\"-195\" rx=\"46.23\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"46.23\" y=\"-189.95\" font-family=\"Times,serif\" font-size=\"14.00\">hourglass</text>\n", "</g>\n", "<!-- pencil->hourglass -->\n", "<g id=\"edge4\" class=\"edge\">\n", "<title>pencil->hourglass</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M46.6,-282.25C44.4,-276.58 42.3,-270.12 41.2,-264 38.61,-249.63 39.06,-233.37 40.29,-220.04\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"43.77,-220.39 41.4,-210.07 36.81,-219.62 43.77,-220.39\"/>\n", - "<text text-anchor=\"middle\" x=\"59.7\" y=\"-242.3\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M49.22,-285.2C47.19,-279.53 45.25,-273.08 44.23,-267 41.92,-253.12 42.07,-237.52 42.94,-224.48\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"46.4,-225.11 43.76,-214.85 39.42,-224.52 46.4,-225.11\"/>\n", + "<text text-anchor=\"middle\" x=\"62.23\" y=\"-243.95\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", "</g>\n", "<!-- butterfly -->\n", "<g id=\"node4\" class=\"node\">\n", "<title>butterfly</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"84.2\" cy=\"-105\" rx=\"40.89\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"84.2\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">butterfly</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"87.23\" cy=\"-106.5\" rx=\"42.65\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"87.23\" y=\"-101.45\" font-family=\"Times,serif\" font-size=\"14.00\">butterfly</text>\n", "</g>\n", "<!-- camera->butterfly -->\n", "<g id=\"edge2\" class=\"edge\">\n", "<title>camera->butterfly</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M122.78,-227.86C121.78,-206.77 118.41,-170.16 107.2,-141 105.9,-137.64 104.25,-134.27 102.43,-131.02\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"105.24,-128.92 96.98,-122.29 99.3,-132.63 105.24,-128.92\"/>\n", - "<text text-anchor=\"middle\" x=\"137.7\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">above</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M126.66,-230.61C125.45,-209.21 121.72,-172.07 110.23,-142.5 109.05,-139.45 107.57,-136.39 105.94,-133.42\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"109.02,-131.76 100.79,-125.09 103.07,-135.44 109.02,-131.76\"/>\n", + "<text text-anchor=\"middle\" x=\"140.36\" y=\"-189.95\" font-family=\"Times,serif\" font-size=\"14.00\">above</text>\n", "</g>\n", "<!-- fish -->\n", "<g id=\"node6\" class=\"node\">\n", "<title>fish</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"84.2\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"84.2\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">fish</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"87.23\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"87.23\" y=\"-12.95\" font-family=\"Times,serif\" font-size=\"14.00\">fish</text>\n", "</g>\n", "<!-- butterfly->fish -->\n", "<g id=\"edge6\" class=\"edge\">\n", "<title>butterfly->fish</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M84.2,-86.8C84.2,-75.16 84.2,-59.55 84.2,-46.24\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"87.7,-46.18 84.2,-36.18 80.7,-46.18 87.7,-46.18\"/>\n", - "<text text-anchor=\"middle\" x=\"102.7\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M87.23,-88.41C87.23,-76.76 87.23,-61.05 87.23,-47.52\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"90.73,-47.86 87.23,-37.86 83.73,-47.86 90.73,-47.86\"/>\n", + "<text text-anchor=\"middle\" x=\"105.23\" y=\"-57.2\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", "</g>\n", "<!-- hourglass->butterfly -->\n", "<g id=\"edge5\" class=\"edge\">\n", "<title>hourglass->butterfly</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M52.1,-174.21C57.74,-162.22 65.44,-145.85 71.89,-132.16\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"75.22,-133.3 76.31,-122.76 68.88,-130.32 75.22,-133.3\"/>\n", - "<text text-anchor=\"middle\" x=\"84.7\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M54.33,-176.91C60.01,-164.94 67.71,-148.7 74.23,-134.93\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"77.38,-136.46 78.5,-125.92 71.06,-133.46 77.38,-136.46\"/>\n", + "<text text-anchor=\"middle\" x=\"88.23\" y=\"-145.7\" font-family=\"Times,serif\" font-size=\"14.00\">left_of</text>\n", "</g>\n", "</g>\n", "</svg>\n" ], "text/plain": [ "digraph {\n", - " \"bicycle\" -> \"pencil\" [label=\"above\"]\n", - " \"camera\" -> \"butterfly\" [label=\"above\"]\n", - " \"bicycle\" -> \"camera\" [label=\"left_of\"]\n", - " \"pencil\" -> \"hourglass\" [label=\"left_of\"]\n", - " \"hourglass\" -> \"butterfly\" [label=\"left_of\"]\n", - " \"butterfly\" -> \"fish\" [label=\"left_of\"]\n", + " \"bicycle\" -> \"pencil\" [label=\"above\", color=\"black\", style=\"solid\"]\n", + " \"camera\" -> \"butterfly\" [label=\"above\", color=\"black\", style=\"solid\"]\n", + " \"bicycle\" -> \"camera\" [label=\"left_of\", color=\"black\", style=\"solid\"]\n", + " \"pencil\" -> \"hourglass\" [label=\"left_of\", color=\"black\", style=\"solid\"]\n", + " \"hourglass\" -> \"butterfly\" [label=\"left_of\", color=\"black\", style=\"solid\"]\n", + " \"butterfly\" -> \"fish\" [label=\"left_of\", color=\"black\", style=\"solid\"]\n", "}" ] }, @@ -937,97 +889,14 @@ }, { "cell_type": "code", - "execution_count": 69, + "execution_count": 37, "id": "de721f76", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:right_of/2 were retracted (click to expand)</summary><pre>:- dynamic right_of/2.\n", - "\n", - "right_of(A, B) :-\n", - " left_of(B, A).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:right_of/2 were retracted:\n", - ":- dynamic right_of/2.\n", - "\n", - "right_of(A, B) :-\n", - " left_of(B, A).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:right_of/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:below/2 were retracted (click to expand)</summary><pre>:- dynamic below/2.\n", - "\n", - "below(A, B) :-\n", - " above(B, A).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:below/2 were retracted:\n", - ":- dynamic below/2.\n", - "\n", - "below(A, B) :-\n", - " above(B, A).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:below/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "right_of(X,Y) :- left_of(Y,X).\n", "below(X,Y) :- above(Y,X)." @@ -1035,7 +904,7 @@ }, { "cell_type": "code", - "execution_count": 70, + "execution_count": 38, "id": "ea9e3961", "metadata": { "vscode": { @@ -1081,60 +950,14 @@ }, { "cell_type": "code", - "execution_count": 71, + "execution_count": 39, "id": "9febc43e", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:next/2 were retracted (click to expand)</summary><pre>:- dynamic next/2.\n", - "\n", - "next(A, B) :-\n", - " edge(A, _, B).\n", - "next(A, B) :-\n", - " edge(B, _, A).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:next/2 were retracted:\n", - ":- dynamic next/2.\n", - "\n", - "next(A, B) :-\n", - " edge(A, _, B).\n", - "next(A, B) :-\n", - " edge(B, _, A).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:next/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "% next(A,B) :- above(A,B); below(A,B) ; left_of(A,B) ; right_of(A,B).\n", "next(A,B) :- edge(A,_,B).\n", @@ -1143,7 +966,7 @@ }, { "cell_type": "code", - "execution_count": 72, + "execution_count": 40, "id": "180088b8", "metadata": { "vscode": { @@ -1222,7 +1045,7 @@ }, { "cell_type": "code", - "execution_count": 44, + "execution_count": 41, "id": "12f78859", "metadata": { "vscode": { @@ -1247,7 +1070,7 @@ }, { "cell_type": "code", - "execution_count": 45, + "execution_count": 42, "id": "99bfae95", "metadata": { "vscode": { @@ -1379,82 +1202,14 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "b400c8fa", - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "\u001b[1;31mERROR: call/1: Unknown procedure: jupyter:print_transition_graph/1\n", - "ERROR: However, there are definitions for:\n", - "ERROR: jupyter:print_transition_graph/4\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], - "source": [ - "jupyter:print_transition_graph(edge/2)." - ] - }, - { - "cell_type": "code", - "execution_count": 75, + "execution_count": 44, "id": "7a790ea4", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:conn/2 were retracted (click to expand)</summary><pre>:- dynamic conn/2.\n", - "\n", - "conn(A, A).\n", - "conn(A, B) :-\n", - " edge(A, C),\n", - " conn(C, B).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:conn/2 were retracted:\n", - ":- dynamic conn/2.\n", - "\n", - "conn(A, A).\n", - "conn(A, B) :-\n", - " edge(A, C),\n", - " conn(C, B).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:conn/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "conn(A,A) :- true.\n", "%conn(X,Y) :- edge(X,Y).\n", @@ -1463,7 +1218,7 @@ }, { "cell_type": "code", - "execution_count": 76, + "execution_count": 45, "id": "440d2412", "metadata": { "vscode": { @@ -1515,7 +1270,7 @@ }, { "cell_type": "code", - "execution_count": 77, + "execution_count": 46, "id": "f50f25de", "metadata": { "vscode": { @@ -1548,60 +1303,14 @@ }, { "cell_type": "code", - "execution_count": 78, + "execution_count": 47, "id": "5627c07e", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:connected/2 were retracted (click to expand)</summary><pre>:- dynamic connected/2.\n", - "\n", - "connected(A, A).\n", - "connected(A, B) :-\n", - " edge(A, C),\n", - " connected(C, B).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:connected/2 were retracted:\n", - ":- dynamic connected/2.\n", - "\n", - "connected(A, A).\n", - "connected(A, B) :-\n", - " edge(A, C),\n", - " connected(C, B).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:connected/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "connected(N,N).\n", "connected(N1,N2) :- edge(N1,Link), connected(Link,N2)." @@ -1609,7 +1318,7 @@ }, { "cell_type": "code", - "execution_count": 79, + "execution_count": 48, "id": "428e3101", "metadata": { "vscode": { @@ -1633,7 +1342,7 @@ }, { "cell_type": "code", - "execution_count": 80, + "execution_count": 49, "id": "ae00f8b8", "metadata": { "vscode": { @@ -1647,145 +1356,145 @@ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", - "<!-- Generated by graphviz version 6.0.1 (20220911.1526)\n", + "<!-- Generated by graphviz version 10.0.1 (20240210.2158)\n", " -->\n", "<!-- Pages: 1 -->\n", - "<svg width=\"340pt\" height=\"260pt\"\n", - " viewBox=\"0.00 0.00 340.05 260.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<svg width=\"344pt\" height=\"260pt\"\n", + " viewBox=\"0.00 0.00 343.56 260.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 256)\">\n", - "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-256 336.05,-256 336.05,4 -4,4\"/>\n", - "<!-- _20642 -->\n", + "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-256 339.56,-256 339.56,4 -4,4\"/>\n", + "<!-- _22252 -->\n", "<g id=\"node1\" class=\"node\">\n", - "<title>_20642</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"37.05\" cy=\"-234\" rx=\"37.09\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"37.05\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">_20642</text>\n", + "<title>_22252</title>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"38.56\" cy=\"-234\" rx=\"38.56\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"38.56\" y=\"-228.95\" font-family=\"Times,serif\" font-size=\"14.00\">_22252</text>\n", "</g>\n", - "<!-- _20642->_20642 -->\n", + "<!-- _22252->_22252 -->\n", "<g id=\"edge1\" class=\"edge\">\n", - "<title>_20642->_20642</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M63.38,-246.81C78.29,-249.31 92.09,-245.04 92.09,-234 92.09,-225.55 84,-221.06 73.52,-220.55\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"73.14,-217.07 63.38,-221.19 73.58,-224.05 73.14,-217.07\"/>\n", + "<title>_22252->_22252</title>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M66.2,-246.9C81.29,-249.2 95.11,-244.9 95.11,-234 95.11,-225.91 87.5,-221.46 77.4,-220.64\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"77.56,-217.13 67.71,-221.04 77.85,-224.12 77.56,-217.13\"/>\n", "</g>\n", "<!-- a -->\n", "<g id=\"node2\" class=\"node\">\n", "<title>a</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"137.05\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"137.05\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">a</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"140.56\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"140.56\" y=\"-228.95\" font-family=\"Times,serif\" font-size=\"14.00\">a</text>\n", "</g>\n", "<!-- b -->\n", "<g id=\"node3\" class=\"node\">\n", "<title>b</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"105.05\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"105.05\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">b</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"108.56\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"108.56\" y=\"-156.95\" font-family=\"Times,serif\" font-size=\"14.00\">b</text>\n", "</g>\n", "<!-- a->b -->\n", "<g id=\"edge2\" class=\"edge\">\n", "<title>a->b</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M129.46,-216.41C125.68,-208.13 121.01,-197.92 116.78,-188.66\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"119.92,-187.11 112.58,-179.47 113.55,-190.02 119.92,-187.11\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M132.97,-216.41C129.35,-208.48 124.91,-198.78 120.82,-189.84\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"124.06,-188.49 116.71,-180.85 117.69,-191.4 124.06,-188.49\"/>\n", "</g>\n", "<!-- d -->\n", "<g id=\"node4\" class=\"node\">\n", "<title>d</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"169.05\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"169.05\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"172.56\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"172.56\" y=\"-84.95\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- a->d -->\n", "<g id=\"edge3\" class=\"edge\">\n", "<title>a->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M136.32,-215.87C139.26,-191.3 149.24,-145.85 157.8,-117.08\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"161.21,-117.9 160.87,-107.31 154.54,-115.8 161.21,-117.9\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M139.87,-215.59C142.81,-191.24 152.55,-146.81 161.01,-118.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"164.31,-119.27 163.96,-108.68 157.63,-117.18 164.31,-119.27\"/>\n", "</g>\n", "<!-- a->d -->\n", "<g id=\"edge6\" class=\"edge\">\n", "<title>a->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M145.21,-216.71C153.26,-192.7 163.77,-147.53 168.34,-118.37\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"171.81,-118.82 169.74,-108.43 164.88,-117.84 171.81,-118.82\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M148.81,-216.43C156.76,-192.64 167.05,-148.47 171.68,-119.41\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"175.1,-120.24 173.04,-109.84 168.17,-119.25 175.1,-120.24\"/>\n", "</g>\n", "<!-- e -->\n", "<g id=\"node5\" class=\"node\">\n", "<title>e</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"105.05\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"105.05\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">e</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"108.56\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"108.56\" y=\"-12.95\" font-family=\"Times,serif\" font-size=\"14.00\">e</text>\n", "</g>\n", "<!-- a->e -->\n", "<g id=\"edge4\" class=\"edge\">\n", "<title>a->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M113.16,-225.31C94.49,-216.84 70.56,-201.52 60.05,-180 37.64,-134.13 63.89,-74.08 84.94,-41.84\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"87.88,-43.74 90.69,-33.52 82.12,-39.75 87.88,-43.74\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M116.67,-225.31C98,-216.84 74.07,-201.52 63.56,-180 41.34,-134.52 66.95,-75.11 87.91,-42.67\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"90.56,-44.99 93.34,-34.77 84.79,-41.02 90.56,-44.99\"/>\n", "</g>\n", "<!-- a->e -->\n", "<g id=\"edge7\" class=\"edge\">\n", "<title>a->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M118.83,-220.44C104.8,-211.49 86.78,-197.89 78.05,-180 56.4,-135.69 80.16,-78.15 95.3,-45.22\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"98.62,-46.38 99.66,-35.84 92.27,-43.43 98.62,-46.38\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M122.34,-220.44C108.31,-211.49 90.29,-197.89 81.56,-180 60.1,-136.07 83.26,-79.14 98.41,-46.08\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"101.5,-47.75 102.53,-37.21 95.15,-44.81 101.5,-47.75\"/>\n", "</g>\n", "<!-- c -->\n", "<g id=\"node6\" class=\"node\">\n", "<title>c</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"233.05\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"233.05\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">c</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"236.56\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"236.56\" y=\"-156.95\" font-family=\"Times,serif\" font-size=\"14.00\">c</text>\n", "</g>\n", "<!-- a->c -->\n", "<g id=\"edge5\" class=\"edge\">\n", "<title>a->c</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M154.65,-220.16C169.4,-209.41 190.66,-193.91 207.32,-181.76\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"209.53,-184.48 215.55,-175.76 205.41,-178.82 209.53,-184.48\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M158.16,-220.16C172.55,-209.67 193.13,-194.66 209.6,-182.66\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"211.49,-185.61 217.51,-176.89 207.37,-179.95 211.49,-185.61\"/>\n", "</g>\n", "<!-- b->d -->\n", "<g id=\"edge8\" class=\"edge\">\n", "<title>b->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M118.62,-146.15C127.36,-136.6 138.88,-123.99 148.7,-113.25\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"151.33,-115.57 155.49,-105.82 146.16,-110.84 151.33,-115.57\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M122.13,-146.15C130.61,-136.87 141.72,-124.73 151.35,-114.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"153.82,-116.68 157.98,-106.94 148.65,-111.96 153.82,-116.68\"/>\n", "</g>\n", "<!-- b->e -->\n", "<g id=\"edge9\" class=\"edge\">\n", "<title>b->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M105.05,-143.87C105.05,-119.67 105.05,-75.21 105.05,-46.39\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"108.55,-46.19 105.05,-36.19 101.55,-46.19 108.55,-46.19\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M108.56,-143.59C108.56,-119.61 108.56,-76.14 108.56,-47.42\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"112.06,-47.62 108.56,-37.62 105.06,-47.62 112.06,-47.62\"/>\n", "</g>\n", "<!-- d->e -->\n", "<g id=\"edge12\" class=\"edge\">\n", "<title>d->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M155.47,-74.15C146.73,-64.6 135.21,-51.99 125.39,-41.25\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"127.93,-38.84 118.6,-33.82 122.76,-43.57 127.93,-38.84\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M158.98,-74.15C150.5,-64.87 139.39,-52.73 129.76,-42.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"132.46,-39.96 123.13,-34.94 127.3,-44.68 132.46,-39.96\"/>\n", "</g>\n", "<!-- c->d -->\n", "<g id=\"edge10\" class=\"edge\">\n", "<title>c->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M219.47,-146.15C210.73,-136.6 199.21,-123.99 189.39,-113.25\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"191.93,-110.84 182.6,-105.82 186.76,-115.57 191.93,-110.84\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M222.98,-146.15C214.5,-136.87 203.39,-124.73 193.76,-114.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"196.46,-111.96 187.13,-106.94 191.3,-116.68 196.46,-111.96\"/>\n", "</g>\n", "<!-- c->e -->\n", "<g id=\"edge11\" class=\"edge\">\n", "<title>c->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M231.52,-143.75C228.99,-124.33 222.35,-92.79 205.05,-72 187.93,-51.44 160.74,-37.76 139.03,-29.45\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"140.09,-26.11 129.49,-26.01 137.71,-32.7 140.09,-26.11\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M235.03,-143.75C232.5,-124.33 225.86,-92.79 208.56,-72 191.75,-51.81 165.22,-38.25 143.71,-29.91\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"145.02,-26.66 134.42,-26.53 142.62,-33.23 145.02,-26.66\"/>\n", "</g>\n", "<!-- f -->\n", "<g id=\"node7\" class=\"node\">\n", "<title>f</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"305.05\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"305.05\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">f</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"308.56\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"308.56\" y=\"-228.95\" font-family=\"Times,serif\" font-size=\"14.00\">f</text>\n", "</g>\n", "<!-- g -->\n", "<g id=\"node8\" class=\"node\">\n", "<title>g</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"305.05\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"305.05\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">g</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"308.56\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"308.56\" y=\"-156.95\" font-family=\"Times,serif\" font-size=\"14.00\">g</text>\n", "</g>\n", "<!-- f->g -->\n", "<g id=\"edge13\" class=\"edge\">\n", "<title>f->g</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M305.05,-215.7C305.05,-207.98 305.05,-198.71 305.05,-190.11\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"308.55,-190.1 305.05,-180.1 301.55,-190.1 308.55,-190.1\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M308.56,-215.7C308.56,-208.41 308.56,-199.73 308.56,-191.54\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"312.06,-191.62 308.56,-181.62 305.06,-191.62 312.06,-191.62\"/>\n", "</g>\n", "</g>\n", "</svg>\n" ], "text/plain": [ "digraph {\n", - " \"_20642\" -> \"_20642\"\n", + " \"_22252\" -> \"_22252\"\n", " \"a\" -> \"b\"\n", " \"a\" -> \"d\"\n", " \"a\" -> \"e\"\n", @@ -1828,62 +1537,14 @@ }, { "cell_type": "code", - "execution_count": 81, + "execution_count": 50, "id": "4ac0a146", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:conn1/2 were retracted (click to expand)</summary><pre>:- dynamic conn1/2.\n", - "\n", - "conn1(A, B) :-\n", - " edge(A, B).\n", - "conn1(A, B) :-\n", - " edge(A, C),\n", - " conn1(C, B).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:conn1/2 were retracted:\n", - ":- dynamic conn1/2.\n", - "\n", - "conn1(A, B) :-\n", - " edge(A, B).\n", - "conn1(A, B) :-\n", - " edge(A, C),\n", - " conn1(C, B).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:conn1/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "conn1(X,Y) :- edge(X,Y).\n", "conn1(N1,N2) :- edge(N1,Link), conn1(Link,N2)." @@ -1891,7 +1552,7 @@ }, { "cell_type": "code", - "execution_count": 82, + "execution_count": 51, "id": "713979ea", "metadata": { "vscode": { @@ -1915,7 +1576,7 @@ }, { "cell_type": "code", - "execution_count": 83, + "execution_count": 52, "id": "edfb9af1", "metadata": { "vscode": { @@ -1929,7 +1590,7 @@ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", - "<!-- Generated by graphviz version 6.0.1 (20220911.1526)\n", + "<!-- Generated by graphviz version 10.0.1 (20240210.2158)\n", " -->\n", "<!-- Pages: 1 -->\n", "<svg width=\"318pt\" height=\"260pt\"\n", @@ -1940,115 +1601,115 @@ "<g id=\"node1\" class=\"node\">\n", "<title>a</title>\n", "<ellipse fill=\"none\" stroke=\"black\" cx=\"123\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"123\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">a</text>\n", + "<text text-anchor=\"middle\" x=\"123\" y=\"-228.95\" font-family=\"Times,serif\" font-size=\"14.00\">a</text>\n", "</g>\n", "<!-- b -->\n", "<g id=\"node2\" class=\"node\">\n", "<title>b</title>\n", "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">b</text>\n", + "<text text-anchor=\"middle\" x=\"27\" y=\"-156.95\" font-family=\"Times,serif\" font-size=\"14.00\">b</text>\n", "</g>\n", "<!-- a->b -->\n", "<g id=\"edge1\" class=\"edge\">\n", "<title>a->b</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M105.39,-220.16C90.64,-209.41 69.39,-193.91 52.73,-181.76\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"54.64,-178.82 44.5,-175.76 50.51,-184.48 54.64,-178.82\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M105.39,-220.16C91,-209.67 70.42,-194.66 53.96,-182.66\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"56.19,-179.95 46.04,-176.89 52.06,-185.61 56.19,-179.95\"/>\n", "</g>\n", "<!-- c -->\n", "<g id=\"node3\" class=\"node\">\n", "<title>c</title>\n", "<ellipse fill=\"none\" stroke=\"black\" cx=\"155\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"155\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">c</text>\n", + "<text text-anchor=\"middle\" x=\"155\" y=\"-156.95\" font-family=\"Times,serif\" font-size=\"14.00\">c</text>\n", "</g>\n", "<!-- a->c -->\n", "<g id=\"edge2\" class=\"edge\">\n", "<title>a->c</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M130.58,-216.41C134.37,-208.13 139.03,-197.92 143.27,-188.66\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"146.5,-190.02 147.47,-179.47 140.13,-187.11 146.5,-190.02\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M130.58,-216.41C134.21,-208.48 138.64,-198.78 142.73,-189.84\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"145.87,-191.4 146.84,-180.85 139.5,-188.49 145.87,-191.4\"/>\n", "</g>\n", "<!-- d -->\n", "<g id=\"node4\" class=\"node\">\n", "<title>d</title>\n", "<ellipse fill=\"none\" stroke=\"black\" cx=\"91\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"91\" y=\"-86.3\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<text text-anchor=\"middle\" x=\"91\" y=\"-84.95\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- a->d -->\n", "<g id=\"edge7\" class=\"edge\">\n", "<title>a->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M114.84,-216.71C106.78,-192.7 96.28,-147.53 91.71,-118.37\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"95.17,-117.84 90.31,-108.43 88.24,-118.82 95.17,-117.84\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M114.74,-216.43C106.8,-192.64 96.51,-148.47 91.87,-119.41\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"95.39,-119.25 90.51,-109.84 88.46,-120.24 95.39,-119.25\"/>\n", "</g>\n", "<!-- a->d -->\n", "<g id=\"edge9\" class=\"edge\">\n", "<title>a->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M123.72,-215.87C120.78,-191.3 110.8,-145.85 102.25,-117.08\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"105.51,-115.8 99.17,-107.31 98.83,-117.9 105.51,-115.8\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M123.69,-215.59C120.74,-191.24 111,-146.81 102.55,-118.11\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"105.93,-117.18 99.6,-108.68 99.24,-119.27 105.93,-117.18\"/>\n", "</g>\n", "<!-- e -->\n", "<g id=\"node5\" class=\"node\">\n", "<title>e</title>\n", "<ellipse fill=\"none\" stroke=\"black\" cx=\"155\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"155\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">e</text>\n", + "<text text-anchor=\"middle\" x=\"155\" y=\"-12.95\" font-family=\"Times,serif\" font-size=\"14.00\">e</text>\n", "</g>\n", "<!-- a->e -->\n", "<g id=\"edge8\" class=\"edge\">\n", "<title>a->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M141.22,-220.44C155.25,-211.49 173.26,-197.89 182,-180 203.65,-135.69 179.89,-78.15 164.75,-45.22\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"167.77,-43.43 160.39,-35.84 161.43,-46.38 167.77,-43.43\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M141.22,-220.44C155.25,-211.49 173.26,-197.89 182,-180 203.46,-136.07 180.29,-79.14 165.14,-46.08\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"168.41,-44.81 161.02,-37.21 162.06,-47.75 168.41,-44.81\"/>\n", "</g>\n", "<!-- a->e -->\n", "<g id=\"edge10\" class=\"edge\">\n", "<title>a->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M146.88,-225.31C165.55,-216.84 189.49,-201.52 200,-180 222.41,-134.13 196.16,-74.08 175.11,-41.84\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"177.92,-39.75 169.36,-33.52 172.16,-43.74 177.92,-39.75\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M146.88,-225.31C165.55,-216.84 189.49,-201.52 200,-180 222.21,-134.52 196.6,-75.11 175.65,-42.67\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"178.76,-41.02 170.21,-34.77 173,-44.99 178.76,-41.02\"/>\n", "</g>\n", "<!-- b->d -->\n", "<g id=\"edge3\" class=\"edge\">\n", "<title>b->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M40.57,-146.15C49.31,-136.6 60.83,-123.99 70.66,-113.25\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"73.28,-115.57 77.45,-105.82 68.12,-110.84 73.28,-115.57\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M40.57,-146.15C49.06,-136.87 60.17,-124.73 69.8,-114.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"72.26,-116.68 76.43,-106.94 67.09,-111.96 72.26,-116.68\"/>\n", "</g>\n", "<!-- b->e -->\n", "<g id=\"edge11\" class=\"edge\">\n", "<title>b->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M28.53,-143.75C31.05,-124.33 37.7,-92.79 55,-72 72.11,-51.44 99.31,-37.76 121.02,-29.45\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"122.34,-32.7 130.56,-26.01 119.96,-26.11 122.34,-32.7\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M28.53,-143.75C31.05,-124.33 37.7,-92.79 55,-72 71.8,-51.81 98.33,-38.25 119.84,-29.91\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"120.93,-33.23 129.13,-26.53 118.54,-26.66 120.93,-33.23\"/>\n", "</g>\n", "<!-- c->d -->\n", "<g id=\"edge4\" class=\"edge\">\n", "<title>c->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M141.43,-146.15C132.69,-136.6 121.17,-123.99 111.34,-113.25\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"113.88,-110.84 104.55,-105.82 108.72,-115.57 113.88,-110.84\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M141.43,-146.15C132.94,-136.87 121.83,-124.73 112.2,-114.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"114.91,-111.96 105.57,-106.94 109.74,-116.68 114.91,-111.96\"/>\n", "</g>\n", "<!-- c->e -->\n", "<g id=\"edge12\" class=\"edge\">\n", "<title>c->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M155,-143.87C155,-119.67 155,-75.21 155,-46.39\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"158.5,-46.19 155,-36.19 151.5,-46.19 158.5,-46.19\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M155,-143.59C155,-119.61 155,-76.14 155,-47.42\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"158.5,-47.62 155,-37.62 151.5,-47.62 158.5,-47.62\"/>\n", "</g>\n", "<!-- d->e -->\n", "<g id=\"edge5\" class=\"edge\">\n", "<title>d->e</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M104.57,-74.15C113.31,-64.6 124.83,-51.99 134.66,-41.25\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"137.28,-43.57 141.45,-33.82 132.12,-38.84 137.28,-43.57\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M104.57,-74.15C113.06,-64.87 124.17,-52.73 133.8,-42.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"136.26,-44.68 140.43,-34.94 131.09,-39.96 136.26,-44.68\"/>\n", "</g>\n", "<!-- f -->\n", "<g id=\"node6\" class=\"node\">\n", "<title>f</title>\n", "<ellipse fill=\"none\" stroke=\"black\" cx=\"283\" cy=\"-234\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"283\" y=\"-230.3\" font-family=\"Times,serif\" font-size=\"14.00\">f</text>\n", + "<text text-anchor=\"middle\" x=\"283\" y=\"-228.95\" font-family=\"Times,serif\" font-size=\"14.00\">f</text>\n", "</g>\n", "<!-- g -->\n", "<g id=\"node7\" class=\"node\">\n", "<title>g</title>\n", "<ellipse fill=\"none\" stroke=\"black\" cx=\"283\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"283\" y=\"-158.3\" font-family=\"Times,serif\" font-size=\"14.00\">g</text>\n", + "<text text-anchor=\"middle\" x=\"283\" y=\"-156.95\" font-family=\"Times,serif\" font-size=\"14.00\">g</text>\n", "</g>\n", "<!-- f->g -->\n", "<g id=\"edge6\" class=\"edge\">\n", "<title>f->g</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M283,-215.7C283,-207.98 283,-198.71 283,-190.11\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"286.5,-190.1 283,-180.1 279.5,-190.1 286.5,-190.1\"/>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M283,-215.7C283,-208.41 283,-199.73 283,-191.54\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"286.5,-191.62 283,-181.62 279.5,-191.62 286.5,-191.62\"/>\n", "</g>\n", "</g>\n", "</svg>\n" @@ -2099,7 +1760,7 @@ }, { "cell_type": "code", - "execution_count": 84, + "execution_count": 53, "id": "04ea12a1", "metadata": { "vscode": { @@ -2123,7 +1784,7 @@ }, { "cell_type": "code", - "execution_count": 85, + "execution_count": 54, "id": "6056f98a", "metadata": { "vscode": { @@ -2172,7 +1833,7 @@ }, { "cell_type": "code", - "execution_count": 13, + "execution_count": 55, "id": "d4664fd8", "metadata": { "vscode": { @@ -2190,7 +1851,7 @@ }, { "cell_type": "code", - "execution_count": 14, + "execution_count": 56, "id": "08715fa2", "metadata": { "vscode": { @@ -2217,7 +1878,7 @@ }, { "cell_type": "markdown", - "id": "43452d97", + "id": "0b9c268b", "metadata": {}, "source": [ "Let us work out a small database example using such compound terms for data abstraction:" @@ -2225,8 +1886,8 @@ }, { "cell_type": "code", - "execution_count": 25, - "id": "e9ff8860", + "execution_count": 57, + "id": "96c11101", "metadata": {}, "outputs": [], "source": [ @@ -2244,7 +1905,7 @@ }, { "cell_type": "markdown", - "id": "3dc100cb", + "id": "51907e39", "metadata": {}, "source": [ "Let us try and write a predicate for:\n", @@ -2258,7 +1919,7 @@ { "cell_type": "code", "execution_count": null, - "id": "fbed4b05", + "id": "a8a5625e", "metadata": {}, "outputs": [], "source": [] @@ -2266,14 +1927,14 @@ { "cell_type": "code", "execution_count": null, - "id": "7f506936", + "id": "149e358b", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", - "id": "c34b9d8c", + "id": "aec2105d", "metadata": {}, "source": [ "Here is a solution. You will see that the compound term encoding of times and buildings\n", @@ -2285,8 +1946,8 @@ }, { "cell_type": "code", - "execution_count": 21, - "id": "74a9e660", + "execution_count": 58, + "id": "cc7b8797", "metadata": {}, "outputs": [], "source": [ @@ -2307,8 +1968,8 @@ }, { "cell_type": "code", - "execution_count": 19, - "id": "3cddfd08", + "execution_count": 59, + "id": "9d4f0001", "metadata": {}, "outputs": [ { @@ -2327,8 +1988,8 @@ }, { "cell_type": "code", - "execution_count": 22, - "id": "9271f0d7", + "execution_count": 60, + "id": "45f00463", "metadata": {}, "outputs": [ { @@ -2348,8 +2009,8 @@ }, { "cell_type": "code", - "execution_count": 24, - "id": "d7b8619e", + "execution_count": 61, + "id": "ea56ead2", "metadata": {}, "outputs": [ { @@ -2390,7 +2051,7 @@ { "cell_type": "code", "execution_count": null, - "id": "7d1a7bf2", + "id": "cef93eeb", "metadata": {}, "outputs": [], "source": [] @@ -2398,14 +2059,14 @@ { "cell_type": "code", "execution_count": null, - "id": "1735fe4c", + "id": "e031e64c", "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", - "id": "dbc89f40", + "id": "52bc63a8", "metadata": {}, "source": [ "A possible solution is this one.\n", @@ -2414,8 +2075,8 @@ }, { "cell_type": "code", - "execution_count": 38, - "id": "d44c70af", + "execution_count": 68, + "id": "09e61f7e", "metadata": {}, "outputs": [], "source": [ @@ -2439,8 +2100,8 @@ }, { "cell_type": "code", - "execution_count": 39, - "id": "6e96b7aa", + "execution_count": 69, + "id": "990174c1", "metadata": {}, "outputs": [ { @@ -2459,8 +2120,8 @@ }, { "cell_type": "code", - "execution_count": 40, - "id": "d119214f", + "execution_count": 70, + "id": "a37beda4", "metadata": {}, "outputs": [ { @@ -2479,8 +2140,8 @@ }, { "cell_type": "code", - "execution_count": 41, - "id": "b3c9b644", + "execution_count": 71, + "id": "52900216", "metadata": {}, "outputs": [ { @@ -2499,8 +2160,8 @@ }, { "cell_type": "code", - "execution_count": 42, - "id": "e61cc47b", + "execution_count": 72, + "id": "4b8f4ae7", "metadata": {}, "outputs": [ { @@ -2519,8 +2180,8 @@ }, { "cell_type": "code", - "execution_count": 43, - "id": "747d23d1", + "execution_count": 73, + "id": "fe699c18", "metadata": {}, "outputs": [ { @@ -2539,7 +2200,7 @@ }, { "cell_type": "markdown", - "id": "15942ef6", + "id": "71792fd2", "metadata": {}, "source": [ "## Recursive Data Structures\n", @@ -2556,7 +2217,7 @@ }, { "cell_type": "code", - "execution_count": 88, + "execution_count": 74, "id": "313194bb", "metadata": { "vscode": { @@ -2593,54 +2254,14 @@ }, { "cell_type": "code", - "execution_count": 89, + "execution_count": 75, "id": "e0eed7cc", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/html": [ - "\n", - " <style>\n", - " details {\n", - " font-family: Menlo, Consolas, 'DejaVu Sans Mono', monospace; font-size: 13px;\n", - " }\n", - "\n", - " details > summary {\n", - " cursor: pointer;\n", - " }\n", - " </style>\n", - " <details><summary>Previously defined clauses of user:is_empty/1 were retracted (click to expand)</summary><pre>:- dynamic is_empty/1.\n", - "\n", - "is_empty(nil).\n", - "</pre></details>" - ], - "text/plain": [ - "Previously defined clauses of user:is_empty/1 were retracted:\n", - ":- dynamic is_empty/1.\n", - "\n", - "is_empty(nil).\n" - ] - }, - "metadata": { - "application/json": {} - }, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:is_empty/1\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "is_empty(nil) :- true." ] @@ -2655,7 +2276,7 @@ }, { "cell_type": "code", - "execution_count": 90, + "execution_count": 76, "id": "82f68320", "metadata": { "vscode": { @@ -2711,33 +2332,14 @@ }, { "cell_type": "code", - "execution_count": 92, + "execution_count": 78, "id": "c2615402", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "% Asserting clauses for user:is_list0/1\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:is_non_empty_list/1\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "is_list0(nil).\n", "is_list0(cons(_,B)) :- is_list0(B).\n", @@ -2747,7 +2349,7 @@ }, { "cell_type": "code", - "execution_count": 93, + "execution_count": 79, "id": "d2b8accc", "metadata": { "vscode": { @@ -2771,31 +2373,21 @@ }, { "cell_type": "code", - "execution_count": 94, + "execution_count": 80, "id": "9cf37f7f", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "% Asserting clauses for user:head/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "head(First,cons(First,_)) :- true." ] }, { "cell_type": "code", - "execution_count": 95, + "execution_count": 81, "id": "05f68119", "metadata": { "vscode": { @@ -2819,24 +2411,14 @@ }, { "cell_type": "code", - "execution_count": 96, + "execution_count": 82, "id": "bef84acb", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "% Asserting clauses for user:element_of/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "element_of(First,cons(First,_)).\n", "element_of(H,cons(_,T)) :- element_of(H,T)." @@ -2844,7 +2426,7 @@ }, { "cell_type": "code", - "execution_count": 97, + "execution_count": 83, "id": "b1707b0f", "metadata": { "vscode": { @@ -2855,7 +2437,7 @@ { "data": { "text/plain": [ - "\u001b[1mY = cons(c,_18628)" + "\u001b[1mY = cons(c,_8970)" ] }, "metadata": {}, @@ -2868,7 +2450,7 @@ }, { "cell_type": "code", - "execution_count": 98, + "execution_count": 84, "id": "0cdcb148", "metadata": { "vscode": { @@ -2879,16 +2461,7 @@ { "data": { "text/plain": [ - "% Retrying goal: element_of(c,cons(a,cons(b,Y)))\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "\u001b[1mY = cons(_18626,cons(c,_18634))" + "\u001b[1mY = cons(_8968,cons(c,_8976))" ] }, "metadata": {}, @@ -2901,7 +2474,7 @@ }, { "cell_type": "code", - "execution_count": 99, + "execution_count": 85, "id": "4365798d", "metadata": { "vscode": { @@ -2925,7 +2498,7 @@ }, { "cell_type": "code", - "execution_count": 100, + "execution_count": 86, "id": "097687f9", "metadata": { "vscode": { @@ -2967,24 +2540,14 @@ }, { "cell_type": "code", - "execution_count": 101, + "execution_count": 87, "id": "e3c67e2b", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "% Asserting clauses for user:last0/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "last0(X,cons(X,nil)).\n", "last0(X,cons(_,Y)) :- last0(X,Y)." @@ -2992,7 +2555,7 @@ }, { "cell_type": "code", - "execution_count": 102, + "execution_count": 88, "id": "1c91221d", "metadata": { "vscode": { @@ -3016,7 +2579,7 @@ }, { "cell_type": "markdown", - "id": "34c38129", + "id": "e8582b42", "metadata": {}, "source": [ "Exercise: write predicates prefix/2 and suffix/2 which is true if the first argument is a prefix or suffix of the second one." @@ -3025,7 +2588,7 @@ { "cell_type": "code", "execution_count": null, - "id": "9a65d023", + "id": "58013688", "metadata": {}, "outputs": [], "source": [] @@ -3033,7 +2596,7 @@ { "cell_type": "code", "execution_count": null, - "id": "df88c4bd", + "id": "e7c6f995", "metadata": {}, "outputs": [], "source": [] @@ -3059,7 +2622,7 @@ }, { "cell_type": "code", - "execution_count": 103, + "execution_count": 89, "id": "0dcf1d4c", "metadata": { "vscode": { @@ -3083,7 +2646,7 @@ }, { "cell_type": "markdown", - "id": "8ac0d99f", + "id": "bf99403d", "metadata": {}, "source": [ "Let us now try to write a predicate which reverses (mirrors) the tree, swapping left and right children:" @@ -3091,24 +2654,14 @@ }, { "cell_type": "code", - "execution_count": 104, + "execution_count": 90, "id": "52fb0c11", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "% Asserting clauses for user:revtree/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "revtree(nil,nil).\n", "revtree(tree(L,Info,R),tree(RR,Info,RL)) :- revtree(L,RL), revtree(R,RR)." @@ -3116,7 +2669,7 @@ }, { "cell_type": "code", - "execution_count": 105, + "execution_count": 91, "id": "c3a7cd35", "metadata": { "vscode": { @@ -3153,7 +2706,7 @@ }, { "cell_type": "code", - "execution_count": 106, + "execution_count": 92, "id": "ffe1cbc6", "metadata": { "vscode": { @@ -3176,7 +2729,7 @@ }, { "cell_type": "code", - "execution_count": 107, + "execution_count": 93, "id": "39fc2aab", "metadata": { "vscode": { @@ -3208,40 +2761,21 @@ }, { "cell_type": "code", - "execution_count": 116, + "execution_count": 94, "id": "536475da", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "\u001b[1;31m% The Prolog server was restarted" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:subtree/3\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "subtree(Term,Nr,SubTerm) :- Term =.. [_|List], nth1(Nr,List,SubTerm)." ] }, { "cell_type": "code", - "execution_count": 117, + "execution_count": 95, "id": "eb820f56", "metadata": { "vscode": { @@ -3279,42 +2813,14 @@ }, { "cell_type": "code", - "execution_count": 118, + "execution_count": 96, "id": "4b4732c1", "metadata": { "vscode": { "languageId": "prolog" } }, - "outputs": [ - { - "data": { - "text/plain": [ - "% Asserting clauses for user:rec_subtree/2\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:of_interest/1\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - }, - { - "data": { - "text/plain": [ - "% Asserting clauses for user:subt/3\n" - ] - }, - "metadata": {}, - "output_type": "display_data" - } - ], + "outputs": [], "source": [ "rec_subtree(Term,Sub) :- Term = Sub.\n", "rec_subtree(Term,Sub) :- subtree(Term,_,X), rec_subtree(X,Sub).\n", @@ -3328,7 +2834,7 @@ }, { "cell_type": "code", - "execution_count": 119, + "execution_count": 97, "id": "2992249a", "metadata": { "vscode": { @@ -3355,7 +2861,7 @@ }, { "cell_type": "code", - "execution_count": 120, + "execution_count": 98, "id": "2b76644b", "metadata": { "vscode": { @@ -3369,168 +2875,168 @@ "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n", "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n", " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n", - "<!-- Generated by graphviz version 6.0.1 (20220911.1526)\n", + "<!-- Generated by graphviz version 10.0.1 (20240210.2158)\n", " -->\n", "<!-- Pages: 1 -->\n", - "<svg width=\"459pt\" height=\"305pt\"\n", - " viewBox=\"0.00 0.00 458.83 305.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", - "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 301)\">\n", - "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-301 454.83,-301 454.83,4 -4,4\"/>\n", + "<svg width=\"474pt\" height=\"310pt\"\n", + " viewBox=\"0.00 0.00 474.31 309.50\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n", + "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 305.5)\">\n", + "<polygon fill=\"white\" stroke=\"none\" points=\"-4,4 -4,-305.5 470.31,-305.5 470.31,4 -4,4\"/>\n", "<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil))) -->\n", "<g id=\"node1\" class=\"node\">\n", "<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"168.99\" cy=\"-279\" rx=\"168.97\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"168.99\" y=\"-275.3\" font-family=\"Times,serif\" font-size=\"14.00\">tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"177.26\" cy=\"-283.5\" rx=\"177.26\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"177.26\" y=\"-278.45\" font-family=\"Times,serif\" font-size=\"14.00\">tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))</text>\n", "</g>\n", "<!-- tree(nil,a,nil) -->\n", "<g id=\"node2\" class=\"node\">\n", "<title>tree(nil,a,nil)</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"144.99\" cy=\"-105\" rx=\"57.39\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"144.99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">tree(nil,a,nil)</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"153.26\" cy=\"-106.5\" rx=\"59.54\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"153.26\" y=\"-101.45\" font-family=\"Times,serif\" font-size=\"14.00\">tree(nil,a,nil)</text>\n", "</g>\n", "<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,a,nil) -->\n", "<g id=\"edge1\" class=\"edge\">\n", "<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,a,nil)</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M154.28,-260.89C144.13,-247.89 131.5,-229.05 125.99,-210 118.49,-184.13 125.83,-153.74 133.46,-132.52\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"136.73,-133.77 137.05,-123.18 130.2,-131.26 136.73,-133.77\"/>\n", - "<text text-anchor=\"middle\" x=\"129.49\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M162.84,-265.22C152.71,-251.89 140.02,-232.49 134.51,-213 127.17,-187.05 134.15,-156.67 141.59,-135.19\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"144.81,-136.56 145.03,-125.96 138.26,-134.11 144.81,-136.56\"/>\n", + "<text text-anchor=\"middle\" x=\"138.63\" y=\"-189.95\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- b -->\n", "<g id=\"node3\" class=\"node\">\n", "<title>b</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"168.99\" cy=\"-192\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"168.99\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">b</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"177.26\" cy=\"-195\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"177.26\" y=\"-189.95\" font-family=\"Times,serif\" font-size=\"14.00\">b</text>\n", "</g>\n", "<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->b -->\n", "<g id=\"edge2\" class=\"edge\">\n", "<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->b</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M168.99,-260.8C168.99,-249.16 168.99,-233.55 168.99,-220.24\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"172.49,-220.18 168.99,-210.18 165.49,-220.18 172.49,-220.18\"/>\n", - "<text text-anchor=\"middle\" x=\"172.49\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M177.26,-265.41C177.26,-253.76 177.26,-238.05 177.26,-224.52\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"180.76,-224.86 177.26,-214.86 173.76,-224.86 180.76,-224.86\"/>\n", + "<text text-anchor=\"middle\" x=\"180.63\" y=\"-234.2\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- tree(nil,c,tree(nil,d,nil)) -->\n", "<g id=\"node4\" class=\"node\">\n", "<title>tree(nil,c,tree(nil,d,nil))</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"308.99\" cy=\"-192\" rx=\"94.78\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"308.99\" y=\"-188.3\" font-family=\"Times,serif\" font-size=\"14.00\">tree(nil,c,tree(nil,d,nil))</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"321.26\" cy=\"-195\" rx=\"98.95\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"321.26\" y=\"-189.95\" font-family=\"Times,serif\" font-size=\"14.00\">tree(nil,c,tree(nil,d,nil))</text>\n", "</g>\n", "<!-- tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,c,tree(nil,d,nil)) -->\n", "<g id=\"edge3\" class=\"edge\">\n", "<title>tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))->tree(nil,c,tree(nil,d,nil))</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M196.64,-261.21C218.55,-247.91 249.31,-229.23 273.11,-214.78\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"275.13,-217.65 281.86,-209.47 271.5,-211.67 275.13,-217.65\"/>\n", - "<text text-anchor=\"middle\" x=\"250.49\" y=\"-231.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M205.71,-265.41C228.18,-251.91 259.73,-232.96 284.18,-218.27\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"285.78,-221.4 292.55,-213.25 282.17,-215.4 285.78,-221.4\"/>\n", + "<text text-anchor=\"middle\" x=\"264.63\" y=\"-234.2\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- nil -->\n", "<g id=\"node5\" class=\"node\">\n", "<title>nil</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"237.99\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"237.99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">nil</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"249.26\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"249.26\" y=\"-12.95\" font-family=\"Times,serif\" font-size=\"14.00\">nil</text>\n", "</g>\n", "<!-- tree(nil,a,nil)->nil -->\n", "<g id=\"edge4\" class=\"edge\">\n", "<title>tree(nil,a,nil)->nil</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M156.03,-87.08C163.24,-76.8 173.27,-63.82 183.99,-54 191.5,-47.11 200.53,-40.68 209.03,-35.27\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"210.91,-38.22 217.61,-30.01 207.25,-32.25 210.91,-38.22\"/>\n", - "<text text-anchor=\"middle\" x=\"187.49\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M165.03,-88.6C172.93,-77.97 183.96,-64.34 195.51,-54 202.7,-47.56 211.19,-41.46 219.27,-36.22\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"220.89,-39.33 227.53,-31.08 217.19,-33.39 220.89,-39.33\"/>\n", + "<text text-anchor=\"middle\" x=\"198.63\" y=\"-57.2\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- tree(nil,a,nil)->nil -->\n", "<g id=\"edge6\" class=\"edge\">\n", "<title>tree(nil,a,nil)->nil</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M167.11,-88.33C174.88,-82.53 183.53,-75.72 190.99,-69 200.43,-60.49 210.17,-50.38 218.32,-41.49\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"220.92,-43.83 225.02,-34.06 215.72,-39.14 220.92,-43.83\"/>\n", - "<text text-anchor=\"middle\" x=\"208.49\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M177.45,-89.73C185.62,-84.02 194.59,-77.3 202.26,-70.5 211.76,-62.07 221.38,-51.89 229.41,-42.81\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"231.97,-45.21 235.87,-35.36 226.68,-40.63 231.97,-45.21\"/>\n", + "<text text-anchor=\"middle\" x=\"221.63\" y=\"-57.2\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- a -->\n", "<g id=\"node6\" class=\"node\">\n", "<title>a</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"144.99\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"144.99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">a</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"153.26\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"153.26\" y=\"-12.95\" font-family=\"Times,serif\" font-size=\"14.00\">a</text>\n", "</g>\n", "<!-- tree(nil,a,nil)->a -->\n", "<g id=\"edge5\" class=\"edge\">\n", "<title>tree(nil,a,nil)->a</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M144.99,-86.8C144.99,-75.16 144.99,-59.55 144.99,-46.24\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"148.49,-46.18 144.99,-36.18 141.49,-46.18 148.49,-46.18\"/>\n", - "<text text-anchor=\"middle\" x=\"148.49\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M153.26,-88.41C153.26,-76.76 153.26,-61.05 153.26,-47.52\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"156.76,-47.86 153.26,-37.86 149.76,-47.86 156.76,-47.86\"/>\n", + "<text text-anchor=\"middle\" x=\"156.63\" y=\"-57.2\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- tree(nil,c,tree(nil,d,nil))->nil -->\n", "<g id=\"edge7\" class=\"edge\">\n", "<title>tree(nil,c,tree(nil,d,nil))->nil</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M287.86,-174.39C273.66,-161.9 255.96,-143.49 246.99,-123 236.29,-98.57 234.91,-67.87 235.68,-46.17\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"239.18,-46.19 236.22,-36.02 232.19,-45.82 239.18,-46.19\"/>\n", - "<text text-anchor=\"middle\" x=\"250.49\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M299.88,-176.97C285.51,-164.19 267.6,-145.36 258.51,-124.5 247.85,-100.04 246.3,-69.41 246.96,-47.46\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"250.44,-47.93 247.44,-37.77 243.45,-47.59 250.44,-47.93\"/>\n", + "<text text-anchor=\"middle\" x=\"261.63\" y=\"-101.45\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- c -->\n", "<g id=\"node7\" class=\"node\">\n", "<title>c</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"289.99\" cy=\"-105\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"289.99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">c</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"301.26\" cy=\"-106.5\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"301.26\" y=\"-101.45\" font-family=\"Times,serif\" font-size=\"14.00\">c</text>\n", "</g>\n", "<!-- tree(nil,c,tree(nil,d,nil))->c -->\n", "<g id=\"edge8\" class=\"edge\">\n", "<title>tree(nil,c,tree(nil,d,nil))->c</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M303.76,-174C302.11,-168.31 300.36,-161.91 298.99,-156 297.28,-148.64 295.7,-140.61 294.37,-133.18\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"297.8,-132.47 292.65,-123.21 290.9,-133.66 297.8,-132.47\"/>\n", - "<text text-anchor=\"middle\" x=\"302.49\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M316.14,-176.62C314.56,-171.02 312.88,-164.77 311.51,-159 309.73,-151.55 308.02,-143.45 306.51,-135.92\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"309.97,-135.38 304.64,-126.22 303.1,-136.71 309.97,-135.38\"/>\n", + "<text text-anchor=\"middle\" x=\"314.63\" y=\"-145.7\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "<!-- tree(nil,d,nil) -->\n", "<g id=\"node8\" class=\"node\">\n", "<title>tree(nil,d,nil)</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"392.99\" cy=\"-105\" rx=\"57.69\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"392.99\" y=\"-101.3\" font-family=\"Times,serif\" font-size=\"14.00\">tree(nil,d,nil)</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"406.26\" cy=\"-106.5\" rx=\"60.05\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"406.26\" y=\"-101.45\" font-family=\"Times,serif\" font-size=\"14.00\">tree(nil,d,nil)</text>\n", "</g>\n", "<!-- tree(nil,c,tree(nil,d,nil))->tree(nil,d,nil) -->\n", "<g id=\"edge9\" class=\"edge\">\n", "<title>tree(nil,c,tree(nil,d,nil))->tree(nil,d,nil)</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M325.58,-174.21C338.09,-161.55 355.41,-144.03 369.36,-129.91\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"372.17,-132.04 376.71,-122.47 367.19,-127.12 372.17,-132.04\"/>\n", - "<text text-anchor=\"middle\" x=\"359.49\" y=\"-144.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M338.05,-176.91C350.59,-164.15 367.91,-146.53 381.95,-132.23\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"384.21,-134.93 388.73,-125.34 379.22,-130.02 384.21,-134.93\"/>\n", + "<text text-anchor=\"middle\" x=\"374.63\" y=\"-145.7\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- tree(nil,d,nil)->nil -->\n", "<g id=\"edge10\" class=\"edge\">\n", "<title>tree(nil,d,nil)->nil</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M361.27,-89.94C348.03,-83.83 332.6,-76.39 318.99,-69 300.65,-59.05 280.71,-46.75 265.19,-36.85\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"266.92,-33.8 256.62,-31.32 263.13,-39.68 266.92,-33.8\"/>\n", - "<text text-anchor=\"middle\" x=\"322.49\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M373.45,-91.18C360.24,-85.15 344.97,-77.83 331.51,-70.5 313.06,-60.45 293.07,-47.98 277.42,-37.82\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"279.36,-34.91 269.08,-32.36 275.53,-40.77 279.36,-34.91\"/>\n", + "<text text-anchor=\"middle\" x=\"334.63\" y=\"-57.2\" font-family=\"Times,serif\" font-size=\"14.00\">1</text>\n", "</g>\n", "<!-- tree(nil,d,nil)->nil -->\n", "<g id=\"edge12\" class=\"edge\">\n", "<title>tree(nil,d,nil)->nil</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M374.26,-87.92C361.31,-77.34 343.34,-63.7 325.99,-54 308.71,-44.34 288.22,-36.03 271.37,-29.93\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"272.51,-26.62 261.91,-26.6 270.18,-33.22 272.51,-26.62\"/>\n", - "<text text-anchor=\"middle\" x=\"352.49\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M387.59,-89.14C374.45,-78.19 356.08,-64 338.26,-54 321.15,-44.4 300.88,-36.21 284.01,-30.17\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"285.51,-26.98 274.91,-27.01 283.21,-33.6 285.51,-26.98\"/>\n", + "<text text-anchor=\"middle\" x=\"364.63\" y=\"-57.2\" font-family=\"Times,serif\" font-size=\"14.00\">3</text>\n", "</g>\n", "<!-- d -->\n", "<g id=\"node9\" class=\"node\">\n", "<title>d</title>\n", - "<ellipse fill=\"none\" stroke=\"black\" cx=\"392.99\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", - "<text text-anchor=\"middle\" x=\"392.99\" y=\"-14.3\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", + "<ellipse fill=\"none\" stroke=\"black\" cx=\"406.26\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n", + "<text text-anchor=\"middle\" x=\"406.26\" y=\"-12.95\" font-family=\"Times,serif\" font-size=\"14.00\">d</text>\n", "</g>\n", "<!-- tree(nil,d,nil)->d -->\n", "<g id=\"edge11\" class=\"edge\">\n", "<title>tree(nil,d,nil)->d</title>\n", - "<path fill=\"none\" stroke=\"black\" d=\"M392.99,-86.8C392.99,-75.16 392.99,-59.55 392.99,-46.24\"/>\n", - "<polygon fill=\"black\" stroke=\"black\" points=\"396.49,-46.18 392.99,-36.18 389.49,-46.18 396.49,-46.18\"/>\n", - "<text text-anchor=\"middle\" x=\"396.49\" y=\"-57.8\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", + "<path fill=\"none\" stroke=\"black\" d=\"M406.26,-88.41C406.26,-76.76 406.26,-61.05 406.26,-47.52\"/>\n", + "<polygon fill=\"black\" stroke=\"black\" points=\"409.76,-47.86 406.26,-37.86 402.76,-47.86 409.76,-47.86\"/>\n", + "<text text-anchor=\"middle\" x=\"409.63\" y=\"-57.2\" font-family=\"Times,serif\" font-size=\"14.00\">2</text>\n", "</g>\n", "</g>\n", "</svg>\n" ], "text/plain": [ "digraph {\n", - " \"tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))\" -> \"tree(nil,a,nil)\" [label=\"1\"]\n", - " \"tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))\" -> \"b\" [label=\"2\"]\n", - " \"tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))\" -> \"tree(nil,c,tree(nil,d,nil))\" [label=\"3\"]\n", - " \"tree(nil,a,nil)\" -> \"nil\" [label=\"1\"]\n", - " \"tree(nil,a,nil)\" -> \"a\" [label=\"2\"]\n", - " \"tree(nil,a,nil)\" -> \"nil\" [label=\"3\"]\n", - " \"tree(nil,c,tree(nil,d,nil))\" -> \"nil\" [label=\"1\"]\n", - " \"tree(nil,c,tree(nil,d,nil))\" -> \"c\" [label=\"2\"]\n", - " \"tree(nil,c,tree(nil,d,nil))\" -> \"tree(nil,d,nil)\" [label=\"3\"]\n", - " \"tree(nil,d,nil)\" -> \"nil\" [label=\"1\"]\n", - " \"tree(nil,d,nil)\" -> \"d\" [label=\"2\"]\n", - " \"tree(nil,d,nil)\" -> \"nil\" [label=\"3\"]\n", + " \"tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))\" -> \"tree(nil,a,nil)\" [label=\"1\", color=\"black\", style=\"solid\"]\n", + " \"tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))\" -> \"b\" [label=\"2\", color=\"black\", style=\"solid\"]\n", + " \"tree(tree(nil,a,nil),b,tree(nil,c,tree(nil,d,nil)))\" -> \"tree(nil,c,tree(nil,d,nil))\" [label=\"3\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,a,nil)\" -> \"nil\" [label=\"1\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,a,nil)\" -> \"a\" [label=\"2\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,a,nil)\" -> \"nil\" [label=\"3\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,c,tree(nil,d,nil))\" -> \"nil\" [label=\"1\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,c,tree(nil,d,nil))\" -> \"c\" [label=\"2\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,c,tree(nil,d,nil))\" -> \"tree(nil,d,nil)\" [label=\"3\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,d,nil)\" -> \"nil\" [label=\"1\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,d,nil)\" -> \"d\" [label=\"2\", color=\"black\", style=\"solid\"]\n", + " \"tree(nil,d,nil)\" -> \"nil\" [label=\"3\", color=\"black\", style=\"solid\"]\n", "}" ] }, -- GitLab