From f7212e188313a64c8e619c31b3f0014155d99278 Mon Sep 17 00:00:00 2001 From: zeptodoctor <44736852+zeptodoctor@users.noreply.github.com> Date: Fri, 13 Dec 2024 15:07:52 +0000 Subject: [PATCH] build based on 5260921 --- stable | 2 +- v0.16 | 2 +- v0.16.8/assets/documenter.js | 260 + v0.16.8/assets/logo.png | Bin 0 -> 296505 bytes v0.16.8/assets/search.js | 247 + v0.16.8/assets/themes/documenter-dark.css | 7628 +++++++++++++++++ v0.16.8/assets/themes/documenter-light.css | 7614 ++++++++++++++++ v0.16.8/assets/themeswap.js | 42 + v0.16.8/dev/index.html | 37 + v0.16.8/generated/annulus.html | 2709 ++++++ v0.16.8/generated/annulus/index.html | 38 + .../automaticdifferentiation/index.html | 19 + v0.16.8/generated/chebyshev/index.html | 19 + v0.16.8/generated/disk/index.html | 189 + v0.16.8/generated/dunklxu.html | 6845 +++++++++++++++ v0.16.8/generated/halfrange.html | 3032 +++++++ v0.16.8/generated/halfrange/index.html | 94 + .../generated/nonlocaldiffusion/index.html | 69 + v0.16.8/generated/padua/index.html | 16 + v0.16.8/generated/proriol.html | 2705 ++++++ v0.16.8/generated/semiclassical.html | 3028 +++++++ v0.16.8/generated/semiclassical/index.html | 94 + v0.16.8/generated/semiclassical1.html | 3028 +++++++ v0.16.8/generated/sphere/index.html | 133 + v0.16.8/generated/sphere1.html | 4432 ++++++++++ v0.16.8/generated/sphere2.html | 4432 ++++++++++ v0.16.8/generated/sphere3.html | 4432 ++++++++++ v0.16.8/generated/spinweighted/index.html | 56 + v0.16.8/generated/subspaceangles/index.html | 24 + v0.16.8/generated/triangle/index.html | 182 + v0.16.8/generated/zernike.html | 6485 ++++++++++++++ v0.16.8/index.html | 2 + v0.16.8/search/index.html | 2 + v0.16.8/search_index.js | 3 + v0.16.8/siteinfo.js | 1 + 35 files changed, 57899 insertions(+), 2 deletions(-) create mode 100644 v0.16.8/assets/documenter.js create mode 100644 v0.16.8/assets/logo.png create mode 100644 v0.16.8/assets/search.js create mode 100644 v0.16.8/assets/themes/documenter-dark.css create mode 100644 v0.16.8/assets/themes/documenter-light.css create mode 100644 v0.16.8/assets/themeswap.js create mode 100644 v0.16.8/dev/index.html create mode 100644 v0.16.8/generated/annulus.html create mode 100644 v0.16.8/generated/annulus/index.html create mode 100644 v0.16.8/generated/automaticdifferentiation/index.html create mode 100644 v0.16.8/generated/chebyshev/index.html create mode 100644 v0.16.8/generated/disk/index.html create mode 100644 v0.16.8/generated/dunklxu.html create mode 100644 v0.16.8/generated/halfrange.html create mode 100644 v0.16.8/generated/halfrange/index.html create mode 100644 v0.16.8/generated/nonlocaldiffusion/index.html create mode 100644 v0.16.8/generated/padua/index.html create mode 100644 v0.16.8/generated/proriol.html create mode 100644 v0.16.8/generated/semiclassical.html create mode 100644 v0.16.8/generated/semiclassical/index.html create mode 100644 v0.16.8/generated/semiclassical1.html create mode 100644 v0.16.8/generated/sphere/index.html create mode 100644 v0.16.8/generated/sphere1.html create mode 100644 v0.16.8/generated/sphere2.html create mode 100644 v0.16.8/generated/sphere3.html create mode 100644 v0.16.8/generated/spinweighted/index.html create mode 100644 v0.16.8/generated/subspaceangles/index.html create mode 100644 v0.16.8/generated/triangle/index.html create mode 100644 v0.16.8/generated/zernike.html create mode 100644 v0.16.8/index.html create mode 100644 v0.16.8/search/index.html create mode 100644 v0.16.8/search_index.js create mode 100644 v0.16.8/siteinfo.js diff --git a/stable b/stable index 95347157..05602755 120000 --- a/stable +++ b/stable @@ -1 +1 @@ -v0.16.7 \ No newline at end of file +v0.16.8 \ No newline at end of file diff --git a/v0.16 b/v0.16 index 95347157..05602755 120000 --- a/v0.16 +++ b/v0.16 @@ -1 +1 @@ -v0.16.7 \ No newline at end of file +v0.16.8 \ No newline at end of file diff --git a/v0.16.8/assets/documenter.js b/v0.16.8/assets/documenter.js new file mode 100644 index 00000000..22f0f9a0 --- /dev/null +++ b/v0.16.8/assets/documenter.js @@ -0,0 +1,260 @@ +// Generated by Documenter.jl +requirejs.config({ + paths: { + 'highlight-julia': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia.min', + 'headroom': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/headroom.min', + 'jqueryui': 'https://cdnjs.cloudflare.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min', + 'katex-auto-render': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/contrib/auto-render.min', + 'jquery': 'https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min', + 'headroom-jquery': 'https://cdnjs.cloudflare.com/ajax/libs/headroom/0.10.3/jQuery.headroom.min', + 'katex': 'https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.11.1/katex.min', + 'highlight': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/highlight.min', + 'highlight-julia-repl': 'https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.15.10/languages/julia-repl.min', + }, + shim: { + "highlight-julia": { + "deps": [ + "highlight" + ] + }, + "katex-auto-render": { + "deps": [ + "katex" + ] + }, + "headroom-jquery": { + "deps": [ + "jquery", + "headroom" + ] + }, + "highlight-julia-repl": { + "deps": [ + "highlight" + ] + } +} +}); +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'katex', 'katex-auto-render'], function($, katex, renderMathInElement) { +$(document).ready(function() { + renderMathInElement( + document.body, + { + "delimiters": [ + { + "left": "$", + "right": "$", + "display": false + }, + { + "left": "$$", + "right": "$$", + "display": true + }, + { + "left": "\\[", + "right": "\\]", + "display": true + } + ] +} + + ); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'highlight', 'highlight-julia', 'highlight-julia-repl'], function($, hljs) { +$(document).ready(function() { + hljs.initHighlighting(); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery', 'headroom', 'headroom-jquery'], function($, Headroom) { + +// Manages the top navigation bar (hides it when the user starts scrolling down on the +// mobile). +window.Headroom = Headroom; // work around buggy module loading? +$(document).ready(function() { + $('#documenter .docs-navbar').headroom({ + "tolerance": {"up": 10, "down": 10}, + }); +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Modal settings dialog +$(document).ready(function() { + var settings = $('#documenter-settings'); + $('#documenter-settings-button').click(function(){ + settings.toggleClass('is-active'); + }); + // Close the dialog if X is clicked + $('#documenter-settings button.delete').click(function(){ + settings.removeClass('is-active'); + }); + // Close dialog if ESC is pressed + $(document).keyup(function(e) { + if (e.keyCode == 27) settings.removeClass('is-active'); + }); +}); + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// Manages the showing and hiding of the sidebar. +$(document).ready(function() { + var sidebar = $("#documenter > .docs-sidebar"); + var sidebar_button = $("#documenter-sidebar-button") + sidebar_button.click(function(ev) { + ev.preventDefault(); + sidebar.toggleClass('visible'); + if (sidebar.hasClass('visible')) { + // Makes sure that the current menu item is visible in the sidebar. + $("#documenter .docs-menu a.is-active").focus(); + } + }); + $("#documenter > .docs-main").bind('click', function(ev) { + if ($(ev.target).is(sidebar_button)) { + return; + } + if (sidebar.hasClass('visible')) { + sidebar.removeClass('visible'); + } + }); +}) + +// Resizes the package name / sitename in the sidebar if it is too wide. +// Inspired by: https://github.com/davatron5000/FitText.js +$(document).ready(function() { + e = $("#documenter .docs-autofit"); + function resize() { + var L = parseInt(e.css('max-width'), 10); + var L0 = e.width(); + if(L0 > L) { + var h0 = parseInt(e.css('font-size'), 10); + e.css('font-size', L * h0 / L0); + // TODO: make sure it survives resizes? + } + } + // call once and then register events + resize(); + $(window).resize(resize); + $(window).on('orientationchange', resize); +}); + +// Scroll the navigation bar to the currently selected menu item +$(document).ready(function() { + var sidebar = $("#documenter .docs-menu").get(0); + var active = $("#documenter .docs-menu .is-active").get(0); + if(typeof active !== 'undefined') { + sidebar.scrollTop = active.offsetTop - sidebar.offsetTop - 15; + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +function set_theme(theme) { + var active = null; + var disabled = []; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + var themename = ss.ownerNode.getAttribute("data-theme-name"); + if(themename === null) continue; // ignore non-theme stylesheets + // Find the active theme + if(themename === theme) active = ss; + else disabled.push(ss); + } + if(active !== null) { + active.disabled = false; + if(active.ownerNode.getAttribute("data-theme-primary") === null) { + document.getElementsByTagName('html')[0].className = "theme--" + theme; + } else { + document.getElementsByTagName('html')[0].className = ""; + } + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } + + // Store the theme in localStorage + if(typeof(window.localStorage) !== "undefined") { + window.localStorage.setItem("documenter-theme", theme); + } else { + console.error("Browser does not support window.localStorage"); + } +} + +// Theme picker setup +$(document).ready(function() { + // onchange callback + $('#documenter-themepicker').change(function themepick_callback(ev){ + var themename = $('#documenter-themepicker option:selected').attr('value'); + set_theme(themename); + }); + + // Make sure that the themepicker displays the correct theme when the theme is retrieved + // from localStorage + if(typeof(window.localStorage) !== "undefined") { + var theme = window.localStorage.getItem("documenter-theme"); + if(theme !== null) { + $('#documenter-themepicker option').each(function(i,e) { + e.selected = (e.value === theme); + }) + } + } +}) + +}) +//////////////////////////////////////////////////////////////////////////////// +require(['jquery'], function($) { + +// update the version selector with info from the siteinfo.js and ../versions.js files +$(document).ready(function() { + var version_selector = $("#documenter .docs-version-selector"); + var version_selector_select = $("#documenter .docs-version-selector select"); + + version_selector_select.change(function(x) { + target_href = version_selector_select.children("option:selected").get(0).value; + window.location.href = target_href; + }); + + // add the current version to the selector based on siteinfo.js, but only if the selector is empty + if (typeof DOCUMENTER_CURRENT_VERSION !== 'undefined' && $('#version-selector > option').length == 0) { + var option = $(""); + version_selector_select.append(option); + } + + if (typeof DOC_VERSIONS !== 'undefined') { + var existing_versions = version_selector_select.children("option"); + var existing_versions_texts = existing_versions.map(function(i,x){return x.text}); + DOC_VERSIONS.forEach(function(each) { + var version_url = documenterBaseURL + "/../" + each; + var existing_id = $.inArray(each, existing_versions_texts); + // if not already in the version selector, add it as a new option, + // otherwise update the old option with the URL and enable it + if (existing_id == -1) { + var option = $(""); + version_selector_select.append(option); + } else { + var option = existing_versions[existing_id]; + option.value = version_url; + option.disabled = false; + } + }); + } + + // only show the version selector if the selector has been populated + if (version_selector_select.children("option").length > 0) { + version_selector.toggleClass("visible"); + } +}) + +}) diff --git a/v0.16.8/assets/logo.png b/v0.16.8/assets/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..86f00ed5746563bdc8ad98ef98f951e4a3583cb5 GIT binary patch literal 296505 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 + // MIT License + function parseUri (str) { + var o = parseUri.options, + m = o.parser[o.strictMode ? "strict" : "loose"].exec(str), + uri = {}, + i = 14; + + while (i--) uri[o.key[i]] = m[i] || ""; + + uri[o.q.name] = {}; + uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) { + if ($1) uri[o.q.name][$1] = $2; + }); + + return uri; + }; + parseUri.options = { + strictMode: false, + key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"], + q: { + name: "queryKey", + parser: /(?:^|&)([^&=]*)=?([^&]*)/g + }, + parser: { + strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/, + loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/ + } + }; + + $("#search-form").submit(function(e) { + e.preventDefault() + }) + + // list below is the lunr 2.1.3 list minus the intersect with names(Base) + // (all, any, get, in, is, only, which) and (do, else, for, let, where, while, with) + // ideally we'd just filter the original list but it's not available as a variable + lunr.stopWordFilter = lunr.generateStopWordFilter([ + 'a', + 'able', + 'about', + 'across', + 'after', + 'almost', + 'also', + 'am', + 'among', + 'an', + 'and', + 'are', + 'as', + 'at', + 'be', + 'because', + 'been', + 'but', + 'by', + 'can', + 'cannot', + 'could', + 'dear', + 'did', + 'does', + 'either', + 'ever', + 'every', + 'from', + 'got', + 'had', + 'has', + 'have', + 'he', + 'her', + 'hers', + 'him', + 'his', + 'how', + 'however', + 'i', + 'if', + 'into', + 'it', + 'its', + 'just', + 'least', + 'like', + 'likely', + 'may', + 'me', + 'might', + 'most', + 'must', + 'my', + 'neither', + 'no', + 'nor', + 'not', + 'of', + 'off', + 'often', + 'on', + 'or', + 'other', + 'our', + 'own', + 'rather', + 'said', + 'say', + 'says', + 'she', + 'should', + 'since', + 'so', + 'some', + 'than', + 'that', + 'the', + 'their', + 'them', + 'then', + 'there', + 'these', + 'they', + 'this', + 'tis', + 'to', + 'too', + 'twas', + 'us', + 'wants', + 'was', + 'we', + 'were', + 'what', + 'when', + 'who', + 'whom', + 'why', + 'will', + 'would', + 'yet', + 'you', + 'your' + ]) + + // add . as a separator, because otherwise "title": "Documenter.Anchors.add!" + // would not find anything if searching for "add!", only for the entire qualification + lunr.tokenizer.separator = /[\s\-\.]+/ + + // custom trimmer that doesn't strip @ and !, which are used in julia macro and function names + lunr.trimmer = function (token) { + return token.update(function (s) { + return s.replace(/^[^a-zA-Z0-9@!]+/, '').replace(/[^a-zA-Z0-9@!]+$/, '') + }) + } + + lunr.Pipeline.registerFunction(lunr.stopWordFilter, 'juliaStopWordFilter') + lunr.Pipeline.registerFunction(lunr.trimmer, 'juliaTrimmer') + + var index = lunr(function () { + this.ref('location') + this.field('title',{boost: 100}) + this.field('text') + documenterSearchIndex['docs'].forEach(function(e) { + this.add(e) + }, this) + }) + var store = {} + + documenterSearchIndex['docs'].forEach(function(e) { + store[e.location] = {title: e.title, category: e.category} + }) + + $(function(){ + searchresults = $('#documenter-search-results'); + searchinfo = $('#documenter-search-info'); + searchbox = $('#documenter-search-query'); + function update_search(querystring) { + tokens = lunr.tokenizer(querystring) + results = index.query(function (q) { + tokens.forEach(function (t) { + q.term(t.toString(), { + fields: ["title"], + boost: 100, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["title"], + boost: 10, + usePipeline: true, + editDistance: 2, + wildcard: lunr.Query.wildcard.NONE + }) + q.term(t.toString(), { + fields: ["text"], + boost: 1, + usePipeline: true, + editDistance: 0, + wildcard: lunr.Query.wildcard.NONE + }) + }) + }) + searchinfo.text("Number of results: " + results.length) + searchresults.empty() + results.forEach(function(result) { + data = store[result.ref] + link = $(''+data.title+'') + link.attr('href', documenterBaseURL+'/'+result.ref) + cat = $('('+data.category+')') + li = $('

  • ').append(link).append(" ").append(cat) + searchresults.append(li) + }) + } + + function update_search_box() { + querystring = searchbox.val() + update_search(querystring) + } + + searchbox.keyup(_.debounce(update_search_box, 250)) + searchbox.change(update_search_box) + + search_query_uri = parseUri(window.location).queryKey["q"] + if(search_query_uri !== undefined) { + search_query = decodeURIComponent(search_query_uri.replace(/\+/g, '%20')) + searchbox.val(search_query) + } + update_search_box(); + }) +}) + +}) diff --git a/v0.16.8/assets/themes/documenter-dark.css b/v0.16.8/assets/themes/documenter-dark.css new file mode 100644 index 00000000..1c370f22 --- /dev/null +++ b/v0.16.8/assets/themes/documenter-dark.css @@ -0,0 +1,7628 @@ +@charset "UTF-8"; +/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ +@keyframes spinAround { + from { + transform: rotate(0deg); } + to { + transform: rotate(359deg); } } + +html.theme--documenter-dark .delete, html.theme--documenter-dark .modal-close, .is-unselectable, html.theme--documenter-dark .button, html.theme--documenter-dark .file, html.theme--documenter-dark .breadcrumb, html.theme--documenter-dark .pagination-previous, +html.theme--documenter-dark .pagination-next, +html.theme--documenter-dark .pagination-link, +html.theme--documenter-dark .pagination-ellipsis, html.theme--documenter-dark .tabs { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after, html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after { + border: 3px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: 0.625em; + margin-top: -0.4375em; + pointer-events: none; + position: absolute; + top: 50%; + transform: rotate(-45deg); + transform-origin: center; + width: 0.625em; } + +html.theme--documenter-dark .box:not(:last-child), html.theme--documenter-dark .content:not(:last-child), html.theme--documenter-dark .notification:not(:last-child), html.theme--documenter-dark .progress:not(:last-child), html.theme--documenter-dark .table:not(:last-child), html.theme--documenter-dark .table-container:not(:last-child), html.theme--documenter-dark .title:not(:last-child), +html.theme--documenter-dark .subtitle:not(:last-child), html.theme--documenter-dark .block:not(:last-child), html.theme--documenter-dark .highlight:not(:last-child), html.theme--documenter-dark .breadcrumb:not(:last-child), html.theme--documenter-dark .level:not(:last-child), html.theme--documenter-dark .list:not(:last-child), html.theme--documenter-dark .message:not(:last-child), html.theme--documenter-dark .tabs:not(:last-child), html.theme--documenter-dark .admonition:not(:last-child) { + margin-bottom: 1.5rem; } + +html.theme--documenter-dark .delete, html.theme--documenter-dark .modal-close { + -moz-appearance: none; + -webkit-appearance: none; + background-color: rgba(10, 10, 10, 0.2); + border: none; + border-radius: 290486px; + cursor: pointer; + pointer-events: auto; + display: inline-block; + flex-grow: 0; + flex-shrink: 0; + font-size: 0; + height: 20px; + max-height: 20px; + max-width: 20px; + min-height: 20px; + min-width: 20px; + outline: none; + position: relative; + vertical-align: top; + width: 20px; } + html.theme--documenter-dark .delete::before, html.theme--documenter-dark .modal-close::before, html.theme--documenter-dark .delete::after, html.theme--documenter-dark .modal-close::after { + background-color: white; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + html.theme--documenter-dark .delete::before, html.theme--documenter-dark .modal-close::before { + height: 2px; + width: 50%; } + html.theme--documenter-dark .delete::after, html.theme--documenter-dark .modal-close::after { + height: 50%; + width: 2px; } + html.theme--documenter-dark .delete:hover, html.theme--documenter-dark .modal-close:hover, html.theme--documenter-dark .delete:focus, html.theme--documenter-dark .modal-close:focus { + background-color: rgba(10, 10, 10, 0.3); } + html.theme--documenter-dark .delete:active, html.theme--documenter-dark .modal-close:active { + background-color: rgba(10, 10, 10, 0.4); } + html.theme--documenter-dark .is-small.delete, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.delete, html.theme--documenter-dark .is-small.modal-close, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.modal-close { + height: 16px; + max-height: 16px; + max-width: 16px; + min-height: 16px; + min-width: 16px; + width: 16px; } + html.theme--documenter-dark .is-medium.delete, html.theme--documenter-dark .is-medium.modal-close { + height: 24px; + max-height: 24px; + max-width: 24px; + min-height: 24px; + min-width: 24px; + width: 24px; } + html.theme--documenter-dark .is-large.delete, html.theme--documenter-dark .is-large.modal-close { + height: 32px; + max-height: 32px; + max-width: 32px; + min-height: 32px; + min-width: 32px; + width: 32px; } + +html.theme--documenter-dark .button.is-loading::after, html.theme--documenter-dark .loader, html.theme--documenter-dark .select.is-loading::after, html.theme--documenter-dark .control.is-loading::after { + animation: spinAround 500ms infinite linear; + border: 2px solid #dbdee0; + border-radius: 290486px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: 1em; + position: relative; + width: 1em; } + +.is-overlay, html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, +html.theme--documenter-dark .image.is-square .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, +html.theme--documenter-dark .image.is-1by1 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, +html.theme--documenter-dark .image.is-5by4 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, +html.theme--documenter-dark .image.is-4by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, +html.theme--documenter-dark .image.is-3by2 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, +html.theme--documenter-dark .image.is-5by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, +html.theme--documenter-dark .image.is-16by9 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, +html.theme--documenter-dark .image.is-2by1 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, +html.theme--documenter-dark .image.is-3by1 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, +html.theme--documenter-dark .image.is-4by5 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, +html.theme--documenter-dark .image.is-3by4 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, +html.theme--documenter-dark .image.is-2by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, +html.theme--documenter-dark .image.is-3by5 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, +html.theme--documenter-dark .image.is-9by16 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, +html.theme--documenter-dark .image.is-1by2 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, +html.theme--documenter-dark .image.is-1by3 .has-ratio, +html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, html.theme--documenter-dark .modal, html.theme--documenter-dark .modal-background, html.theme--documenter-dark .hero-video { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; } + +html.theme--documenter-dark .button, html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea, html.theme--documenter-dark .select select, html.theme--documenter-dark .file-cta, +html.theme--documenter-dark .file-name, html.theme--documenter-dark .pagination-previous, +html.theme--documenter-dark .pagination-next, +html.theme--documenter-dark .pagination-link, +html.theme--documenter-dark .pagination-ellipsis { + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 1px solid transparent; + border-radius: 0.4em; + box-shadow: none; + display: inline-flex; + font-size: 15px; + height: 2.25em; + justify-content: flex-start; + line-height: 1.5; + padding-bottom: calc(0.375em - 1px); + padding-left: calc(0.625em - 1px); + padding-right: calc(0.625em - 1px); + padding-top: calc(0.375em - 1px); + position: relative; + vertical-align: top; } + html.theme--documenter-dark .button:focus, html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .file-cta:focus, + html.theme--documenter-dark .file-name:focus, html.theme--documenter-dark .pagination-previous:focus, + html.theme--documenter-dark .pagination-next:focus, + html.theme--documenter-dark .pagination-link:focus, + html.theme--documenter-dark .pagination-ellipsis:focus, html.theme--documenter-dark .is-focused.button, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .is-focused.file-cta, + html.theme--documenter-dark .is-focused.file-name, html.theme--documenter-dark .is-focused.pagination-previous, + html.theme--documenter-dark .is-focused.pagination-next, + html.theme--documenter-dark .is-focused.pagination-link, + html.theme--documenter-dark .is-focused.pagination-ellipsis, html.theme--documenter-dark .button:active, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .file-cta:active, + html.theme--documenter-dark .file-name:active, html.theme--documenter-dark .pagination-previous:active, + html.theme--documenter-dark .pagination-next:active, + html.theme--documenter-dark .pagination-link:active, + html.theme--documenter-dark .pagination-ellipsis:active, html.theme--documenter-dark .is-active.button, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .select select.is-active, html.theme--documenter-dark .is-active.file-cta, + html.theme--documenter-dark .is-active.file-name, html.theme--documenter-dark .is-active.pagination-previous, + html.theme--documenter-dark .is-active.pagination-next, + html.theme--documenter-dark .is-active.pagination-link, + html.theme--documenter-dark .is-active.pagination-ellipsis { + outline: none; } + html.theme--documenter-dark .button[disabled], html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .select select[disabled], html.theme--documenter-dark .file-cta[disabled], + html.theme--documenter-dark .file-name[disabled], html.theme--documenter-dark .pagination-previous[disabled], + html.theme--documenter-dark .pagination-next[disabled], + html.theme--documenter-dark .pagination-link[disabled], + html.theme--documenter-dark .pagination-ellipsis[disabled], + fieldset[disabled] html.theme--documenter-dark .button, + html.theme--documenter-dark fieldset[disabled] .button, + fieldset[disabled] html.theme--documenter-dark .input, + html.theme--documenter-dark fieldset[disabled] .input, + fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, + fieldset[disabled] html.theme--documenter-dark .textarea, + html.theme--documenter-dark fieldset[disabled] .textarea, + fieldset[disabled] html.theme--documenter-dark .select select, + html.theme--documenter-dark .select fieldset[disabled] select, + fieldset[disabled] html.theme--documenter-dark .file-cta, + html.theme--documenter-dark fieldset[disabled] .file-cta, + fieldset[disabled] html.theme--documenter-dark .file-name, + html.theme--documenter-dark fieldset[disabled] .file-name, + fieldset[disabled] html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark fieldset[disabled] .pagination-previous, + fieldset[disabled] html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark fieldset[disabled] .pagination-next, + fieldset[disabled] html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark fieldset[disabled] .pagination-link, + fieldset[disabled] html.theme--documenter-dark .pagination-ellipsis, + html.theme--documenter-dark fieldset[disabled] .pagination-ellipsis { + cursor: not-allowed; } + +/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; } + +ul { + list-style: none; } + +button, +input, +select, +textarea { + margin: 0; } + +html { + box-sizing: border-box; } + +*, *::before, *::after { + box-sizing: inherit; } + +img, +embed, +iframe, +object, +video { + height: auto; + max-width: 100%; } + +audio { + max-width: 100%; } + +iframe { + border: 0; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + td:not([align]), + th:not([align]) { + text-align: left; } + +.is-clearfix::after { + clear: both; + content: " "; + display: table; } + +.is-pulled-left { + float: left !important; } + +.is-pulled-right { + float: right !important; } + +.is-clipped { + overflow: hidden !important; } + +.is-size-1 { + font-size: 3rem !important; } + +.is-size-2 { + font-size: 2.5rem !important; } + +.is-size-3 { + font-size: 2rem !important; } + +.is-size-4 { + font-size: 1.5rem !important; } + +.is-size-5 { + font-size: 1.25rem !important; } + +.is-size-6 { + font-size: 15px !important; } + +.is-size-7, html.theme--documenter-dark .docstring > section > a.docs-sourcelink { + font-size: 0.85em !important; } + +@media screen and (max-width: 768px) { + .is-size-1-mobile { + font-size: 3rem !important; } + .is-size-2-mobile { + font-size: 2.5rem !important; } + .is-size-3-mobile { + font-size: 2rem !important; } + .is-size-4-mobile { + font-size: 1.5rem !important; } + .is-size-5-mobile { + font-size: 1.25rem !important; } + .is-size-6-mobile { + font-size: 15px !important; } + .is-size-7-mobile { + font-size: 0.85em !important; } } + +@media screen and (min-width: 769px), print { + .is-size-1-tablet { + font-size: 3rem !important; } + .is-size-2-tablet { + font-size: 2.5rem !important; } + .is-size-3-tablet { + font-size: 2rem !important; } + .is-size-4-tablet { + font-size: 1.5rem !important; } + .is-size-5-tablet { + font-size: 1.25rem !important; } + .is-size-6-tablet { + font-size: 15px !important; } + .is-size-7-tablet { + font-size: 0.85em !important; } } + +@media screen and (max-width: 1055px) { + .is-size-1-touch { + font-size: 3rem !important; } + .is-size-2-touch { + font-size: 2.5rem !important; } + .is-size-3-touch { + font-size: 2rem !important; } + .is-size-4-touch { + font-size: 1.5rem !important; } + .is-size-5-touch { + font-size: 1.25rem !important; } + .is-size-6-touch { + font-size: 15px !important; } + .is-size-7-touch { + font-size: 0.85em !important; } } + +@media screen and (min-width: 1056px) { + .is-size-1-desktop { + font-size: 3rem !important; } + .is-size-2-desktop { + font-size: 2.5rem !important; } + .is-size-3-desktop { + font-size: 2rem !important; } + .is-size-4-desktop { + font-size: 1.5rem !important; } + .is-size-5-desktop { + font-size: 1.25rem !important; } + .is-size-6-desktop { + font-size: 15px !important; } + .is-size-7-desktop { + font-size: 0.85em !important; } } + +@media screen and (min-width: 1216px) { + .is-size-1-widescreen { + font-size: 3rem !important; } + .is-size-2-widescreen { + font-size: 2.5rem !important; } + .is-size-3-widescreen { + font-size: 2rem !important; } + .is-size-4-widescreen { + font-size: 1.5rem !important; } + .is-size-5-widescreen { + font-size: 1.25rem !important; } + .is-size-6-widescreen { + font-size: 15px !important; } + .is-size-7-widescreen { + font-size: 0.85em !important; } } + +@media screen and (min-width: 1408px) { + .is-size-1-fullhd { + font-size: 3rem !important; } + .is-size-2-fullhd { + font-size: 2.5rem !important; } + .is-size-3-fullhd { + font-size: 2rem !important; } + .is-size-4-fullhd { + font-size: 1.5rem !important; } + .is-size-5-fullhd { + font-size: 1.25rem !important; } + .is-size-6-fullhd { + font-size: 15px !important; } + .is-size-7-fullhd { + font-size: 0.85em !important; } } + +.has-text-centered { + text-align: center !important; } + +.has-text-justified { + text-align: justify !important; } + +.has-text-left { + text-align: left !important; } + +.has-text-right { + text-align: right !important; } + +@media screen and (max-width: 768px) { + .has-text-centered-mobile { + text-align: center !important; } } + +@media screen and (min-width: 769px), print { + .has-text-centered-tablet { + text-align: center !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-centered-tablet-only { + text-align: center !important; } } + +@media screen and (max-width: 1055px) { + .has-text-centered-touch { + text-align: center !important; } } + +@media screen and (min-width: 1056px) { + .has-text-centered-desktop { + text-align: center !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-centered-desktop-only { + text-align: center !important; } } + +@media screen and (min-width: 1216px) { + .has-text-centered-widescreen { + text-align: center !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-centered-widescreen-only { + text-align: center !important; } } + +@media screen and (min-width: 1408px) { + .has-text-centered-fullhd { + text-align: center !important; } } + +@media screen and (max-width: 768px) { + .has-text-justified-mobile { + text-align: justify !important; } } + +@media screen and (min-width: 769px), print { + .has-text-justified-tablet { + text-align: justify !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-justified-tablet-only { + text-align: justify !important; } } + +@media screen and (max-width: 1055px) { + .has-text-justified-touch { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) { + .has-text-justified-desktop { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-justified-desktop-only { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) { + .has-text-justified-widescreen { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-justified-widescreen-only { + text-align: justify !important; } } + +@media screen and (min-width: 1408px) { + .has-text-justified-fullhd { + text-align: justify !important; } } + +@media screen and (max-width: 768px) { + .has-text-left-mobile { + text-align: left !important; } } + +@media screen and (min-width: 769px), print { + .has-text-left-tablet { + text-align: left !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-left-tablet-only { + text-align: left !important; } } + +@media screen and (max-width: 1055px) { + .has-text-left-touch { + text-align: left !important; } } + +@media screen and (min-width: 1056px) { + .has-text-left-desktop { + text-align: left !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-left-desktop-only { + text-align: left !important; } } + +@media screen and (min-width: 1216px) { + .has-text-left-widescreen { + text-align: left !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-left-widescreen-only { + text-align: left !important; } } + +@media screen and (min-width: 1408px) { + .has-text-left-fullhd { + text-align: left !important; } } + +@media screen and (max-width: 768px) { + .has-text-right-mobile { + text-align: right !important; } } + +@media screen and (min-width: 769px), print { + .has-text-right-tablet { + text-align: right !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-right-tablet-only { + text-align: right !important; } } + +@media screen and (max-width: 1055px) { + .has-text-right-touch { + text-align: right !important; } } + +@media screen and (min-width: 1056px) { + .has-text-right-desktop { + text-align: right !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-right-desktop-only { + text-align: right !important; } } + +@media screen and (min-width: 1216px) { + .has-text-right-widescreen { + text-align: right !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-right-widescreen-only { + text-align: right !important; } } + +@media screen and (min-width: 1408px) { + .has-text-right-fullhd { + text-align: right !important; } } + +.is-capitalized { + text-transform: capitalize !important; } + +.is-lowercase { + text-transform: lowercase !important; } + +.is-uppercase { + text-transform: uppercase !important; } + +.is-italic { + font-style: italic !important; } + +.has-text-white { + color: white !important; } + +a.has-text-white:hover, a.has-text-white:focus { + color: #e6e6e6 !important; } + +.has-background-white { + background-color: white !important; } + +.has-text-black { + color: #0a0a0a !important; } + +a.has-text-black:hover, a.has-text-black:focus { + color: black !important; } + +.has-background-black { + background-color: #0a0a0a !important; } + +.has-text-light { + color: #ecf0f1 !important; } + +a.has-text-light:hover, a.has-text-light:focus { + color: #cfd9db !important; } + +.has-background-light { + background-color: #ecf0f1 !important; } + +.has-text-dark { + color: #282f2f !important; } + +a.has-text-dark:hover, a.has-text-dark:focus { + color: #111414 !important; } + +.has-background-dark { + background-color: #282f2f !important; } + +.has-text-primary { + color: #375a7f !important; } + +a.has-text-primary:hover, a.has-text-primary:focus { + color: #28415b !important; } + +.has-background-primary { + background-color: #375a7f !important; } + +.has-text-link { + color: #1abc9c !important; } + +a.has-text-link:hover, a.has-text-link:focus { + color: #148f77 !important; } + +.has-background-link { + background-color: #1abc9c !important; } + +.has-text-info { + color: #024c7d !important; } + +a.has-text-info:hover, a.has-text-info:focus { + color: #012d4b !important; } + +.has-background-info { + background-color: #024c7d !important; } + +.has-text-success { + color: #008438 !important; } + +a.has-text-success:hover, a.has-text-success:focus { + color: #005122 !important; } + +.has-background-success { + background-color: #008438 !important; } + +.has-text-warning { + color: #ad8100 !important; } + +a.has-text-warning:hover, a.has-text-warning:focus { + color: #7a5b00 !important; } + +.has-background-warning { + background-color: #ad8100 !important; } + +.has-text-danger { + color: #9e1b0d !important; } + +a.has-text-danger:hover, a.has-text-danger:focus { + color: #6f1309 !important; } + +.has-background-danger { + background-color: #9e1b0d !important; } + +.has-text-black-bis { + color: #121212 !important; } + +.has-background-black-bis { + background-color: #121212 !important; } + +.has-text-black-ter { + color: #242424 !important; } + +.has-background-black-ter { + background-color: #242424 !important; } + +.has-text-grey-darker { + color: #282f2f !important; } + +.has-background-grey-darker { + background-color: #282f2f !important; } + +.has-text-grey-dark { + color: #343c3d !important; } + +.has-background-grey-dark { + background-color: #343c3d !important; } + +.has-text-grey { + color: #5e6d6f !important; } + +.has-background-grey { + background-color: #5e6d6f !important; } + +.has-text-grey-light { + color: #8c9b9d !important; } + +.has-background-grey-light { + background-color: #8c9b9d !important; } + +.has-text-grey-lighter { + color: #dbdee0 !important; } + +.has-background-grey-lighter { + background-color: #dbdee0 !important; } + +.has-text-white-ter { + color: #ecf0f1 !important; } + +.has-background-white-ter { + background-color: #ecf0f1 !important; } + +.has-text-white-bis { + color: #fafafa !important; } + +.has-background-white-bis { + background-color: #fafafa !important; } + +.has-text-weight-light { + font-weight: 300 !important; } + +.has-text-weight-normal { + font-weight: 400 !important; } + +.has-text-weight-medium { + font-weight: 500 !important; } + +.has-text-weight-semibold { + font-weight: 600 !important; } + +.has-text-weight-bold { + font-weight: 700 !important; } + +.is-family-primary { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-secondary { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-sans-serif { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-monospace { + font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-family-code { + font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-block { + display: block !important; } + +@media screen and (max-width: 768px) { + .is-block-mobile { + display: block !important; } } + +@media screen and (min-width: 769px), print { + .is-block-tablet { + display: block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-block-tablet-only { + display: block !important; } } + +@media screen and (max-width: 1055px) { + .is-block-touch { + display: block !important; } } + +@media screen and (min-width: 1056px) { + .is-block-desktop { + display: block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-block-desktop-only { + display: block !important; } } + +@media screen and (min-width: 1216px) { + .is-block-widescreen { + display: block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-block-widescreen-only { + display: block !important; } } + +@media screen and (min-width: 1408px) { + .is-block-fullhd { + display: block !important; } } + +.is-flex { + display: flex !important; } + +@media screen and (max-width: 768px) { + .is-flex-mobile { + display: flex !important; } } + +@media screen and (min-width: 769px), print { + .is-flex-tablet { + display: flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-flex-tablet-only { + display: flex !important; } } + +@media screen and (max-width: 1055px) { + .is-flex-touch { + display: flex !important; } } + +@media screen and (min-width: 1056px) { + .is-flex-desktop { + display: flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-flex-desktop-only { + display: flex !important; } } + +@media screen and (min-width: 1216px) { + .is-flex-widescreen { + display: flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-flex-widescreen-only { + display: flex !important; } } + +@media screen and (min-width: 1408px) { + .is-flex-fullhd { + display: flex !important; } } + +.is-inline { + display: inline !important; } + +@media screen and (max-width: 768px) { + .is-inline-mobile { + display: inline !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-tablet { + display: inline !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-tablet-only { + display: inline !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-touch { + display: inline !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-desktop { + display: inline !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-desktop-only { + display: inline !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-widescreen { + display: inline !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-widescreen-only { + display: inline !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-fullhd { + display: inline !important; } } + +.is-inline-block { + display: inline-block !important; } + +@media screen and (max-width: 768px) { + .is-inline-block-mobile { + display: inline-block !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-block-tablet { + display: inline-block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-block-tablet-only { + display: inline-block !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-block-touch { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-block-desktop { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-block-desktop-only { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-block-widescreen { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-block-widescreen-only { + display: inline-block !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-block-fullhd { + display: inline-block !important; } } + +.is-inline-flex { + display: inline-flex !important; } + +@media screen and (max-width: 768px) { + .is-inline-flex-mobile { + display: inline-flex !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-flex-tablet { + display: inline-flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-flex-tablet-only { + display: inline-flex !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-flex-touch { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-flex-desktop { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-flex-desktop-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-flex-widescreen { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-flex-widescreen-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-flex-fullhd { + display: inline-flex !important; } } + +.is-hidden { + display: none !important; } + +.is-sr-only { + border: none !important; + clip: rect(0, 0, 0, 0) !important; + height: 0.01em !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 0.01em !important; } + +@media screen and (max-width: 768px) { + .is-hidden-mobile { + display: none !important; } } + +@media screen and (min-width: 769px), print { + .is-hidden-tablet { + display: none !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-hidden-tablet-only { + display: none !important; } } + +@media screen and (max-width: 1055px) { + .is-hidden-touch { + display: none !important; } } + +@media screen and (min-width: 1056px) { + .is-hidden-desktop { + display: none !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-hidden-desktop-only { + display: none !important; } } + +@media screen and (min-width: 1216px) { + .is-hidden-widescreen { + display: none !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-hidden-widescreen-only { + display: none !important; } } + +@media screen and (min-width: 1408px) { + .is-hidden-fullhd { + display: none !important; } } + +.is-invisible { + visibility: hidden !important; } + +@media screen and (max-width: 768px) { + .is-invisible-mobile { + visibility: hidden !important; } } + +@media screen and (min-width: 769px), print { + .is-invisible-tablet { + visibility: hidden !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-invisible-tablet-only { + visibility: hidden !important; } } + +@media screen and (max-width: 1055px) { + .is-invisible-touch { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) { + .is-invisible-desktop { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-invisible-desktop-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) { + .is-invisible-widescreen { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-invisible-widescreen-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1408px) { + .is-invisible-fullhd { + visibility: hidden !important; } } + +.is-marginless { + margin: 0 !important; } + +.is-paddingless { + padding: 0 !important; } + +.is-radiusless { + border-radius: 0 !important; } + +.is-shadowless { + box-shadow: none !important; } + +.is-relative { + position: relative !important; } + +html.theme--documenter-dark { + /* This file contain the overall layout. + * + * The main container is
    that is identified by id #documenter. + */ + /* a11y-dark theme */ + /* Based on the Tomorrow Night Eighties theme: https://github.com/isagalaev/highlight.js/blob/master/src/styles/tomorrow-night-eighties.css */ + /* @author: ericwbailey */ + /* Comment */ + /* Red */ + /* Orange */ + /* Yellow */ + /* Green */ + /* Blue */ + /* Purple */ } + html.theme--documenter-dark html { + background-color: #1f2424; + font-size: 16px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + min-width: 300px; + overflow-x: auto; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; } + html.theme--documenter-dark article, + html.theme--documenter-dark aside, + html.theme--documenter-dark figure, + html.theme--documenter-dark footer, + html.theme--documenter-dark header, + html.theme--documenter-dark hgroup, + html.theme--documenter-dark section { + display: block; } + html.theme--documenter-dark body, + html.theme--documenter-dark button, + html.theme--documenter-dark input, + html.theme--documenter-dark select, + html.theme--documenter-dark textarea { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } + html.theme--documenter-dark code, + html.theme--documenter-dark pre { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; + font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } + html.theme--documenter-dark body { + color: #fff; + font-size: 1em; + font-weight: 400; + line-height: 1.5; } + html.theme--documenter-dark a { + color: #1abc9c; + cursor: pointer; + text-decoration: none; } + html.theme--documenter-dark a strong { + color: currentColor; } + html.theme--documenter-dark a:hover { + color: #1dd2af; } + html.theme--documenter-dark code { + background-color: rgba(255, 255, 255, 0.05); + color: #e74c3c; + font-size: 0.875em; + font-weight: normal; + padding: 0.1em; } + html.theme--documenter-dark hr { + background-color: #282f2f; + border: none; + display: block; + height: 2px; + margin: 1.5rem 0; } + html.theme--documenter-dark img { + height: auto; + max-width: 100%; } + html.theme--documenter-dark input[type="checkbox"], + html.theme--documenter-dark input[type="radio"] { + vertical-align: baseline; } + html.theme--documenter-dark small { + font-size: 0.875em; } + html.theme--documenter-dark span { + font-style: inherit; + font-weight: inherit; } + html.theme--documenter-dark strong { + color: #f2f2f2; + font-weight: 700; } + html.theme--documenter-dark fieldset { + border: none; } + html.theme--documenter-dark pre { + -webkit-overflow-scrolling: touch; + background-color: #282f2f; + color: #fff; + font-size: 0.875em; + overflow-x: auto; + padding: 1.25rem 1.5rem; + white-space: pre; + word-wrap: normal; } + html.theme--documenter-dark pre code { + background-color: transparent; + color: currentColor; + font-size: 1em; + padding: 0; } + html.theme--documenter-dark table td, + html.theme--documenter-dark table th { + vertical-align: top; } + html.theme--documenter-dark table td:not([align]), + html.theme--documenter-dark table th:not([align]) { + text-align: left; } + html.theme--documenter-dark table th { + color: #f2f2f2; } + html.theme--documenter-dark .box { + background-color: #343c3d; + border-radius: 8px; + box-shadow: none; + color: #fff; + display: block; + padding: 1.25rem; } + html.theme--documenter-dark a.box:hover, html.theme--documenter-dark a.box:focus { + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #1abc9c; } + html.theme--documenter-dark a.box:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #1abc9c; } + html.theme--documenter-dark .button { + background-color: #282f2f; + border-color: #4c5759; + border-width: 1px; + color: #375a7f; + cursor: pointer; + justify-content: center; + padding-bottom: calc(0.375em - 1px); + padding-left: 0.75em; + padding-right: 0.75em; + padding-top: calc(0.375em - 1px); + text-align: center; + white-space: nowrap; } + html.theme--documenter-dark .button strong { + color: inherit; } + html.theme--documenter-dark .button .icon, html.theme--documenter-dark .button .icon.is-small, html.theme--documenter-dark .button #documenter .docs-sidebar form.docs-search > input.icon, html.theme--documenter-dark #documenter .docs-sidebar .button form.docs-search > input.icon, html.theme--documenter-dark .button .icon.is-medium, html.theme--documenter-dark .button .icon.is-large { + height: 1.5em; + width: 1.5em; } + html.theme--documenter-dark .button .icon:first-child:not(:last-child) { + margin-left: calc(-0.375em - 1px); + margin-right: 0.1875em; } + html.theme--documenter-dark .button .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: calc(-0.375em - 1px); } + html.theme--documenter-dark .button .icon:first-child:last-child { + margin-left: calc(-0.375em - 1px); + margin-right: calc(-0.375em - 1px); } + html.theme--documenter-dark .button:hover, html.theme--documenter-dark .button.is-hovered { + border-color: #8c9b9d; + color: #f2f2f2; } + html.theme--documenter-dark .button:focus, html.theme--documenter-dark .button.is-focused { + border-color: #8c9b9d; + color: #17a689; } + html.theme--documenter-dark .button:focus:not(:active), html.theme--documenter-dark .button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .button:active, html.theme--documenter-dark .button.is-active { + border-color: #343c3d; + color: #f2f2f2; } + html.theme--documenter-dark .button.is-text { + background-color: transparent; + border-color: transparent; + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .button.is-text:hover, html.theme--documenter-dark .button.is-text.is-hovered, html.theme--documenter-dark .button.is-text:focus, html.theme--documenter-dark .button.is-text.is-focused { + background-color: #282f2f; + color: #f2f2f2; } + html.theme--documenter-dark .button.is-text:active, html.theme--documenter-dark .button.is-text.is-active { + background-color: #1d2122; + color: #f2f2f2; } + html.theme--documenter-dark .button.is-text[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-text { + background-color: transparent; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-white { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white:hover, html.theme--documenter-dark .button.is-white.is-hovered { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white:focus, html.theme--documenter-dark .button.is-white.is-focused { + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white:focus:not(:active), html.theme--documenter-dark .button.is-white.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white.is-active { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-white { + background-color: white; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-white.is-inverted { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .button.is-white.is-inverted:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-hovered { + background-color: black; } + html.theme--documenter-dark .button.is-white.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; + color: white; } + html.theme--documenter-dark .button.is-white.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + html.theme--documenter-dark .button.is-white.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-outlined.is-focused { + background-color: white; + border-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white.is-outlined.is-loading::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-white.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-white.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-focused { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-white.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black:hover, html.theme--documenter-dark .button.is-black.is-hovered { + background-color: #040404; + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black:focus, html.theme--documenter-dark .button.is-black.is-focused { + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black:focus:not(:active), html.theme--documenter-dark .button.is-black.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black.is-active { + background-color: black; + border-color: transparent; + color: white; } + html.theme--documenter-dark .button.is-black[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-black.is-inverted { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-inverted:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-black.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted { + background-color: white; + border-color: transparent; + box-shadow: none; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-loading::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-outlined.is-focused { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .button.is-black.is-outlined.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-black.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + html.theme--documenter-dark .button.is-black.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-focused { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + html.theme--documenter-dark .button.is-black.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + html.theme--documenter-dark .button.is-light { + background-color: #ecf0f1; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light:hover, html.theme--documenter-dark .button.is-light.is-hovered { + background-color: #e5eaec; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light:focus, html.theme--documenter-dark .button.is-light.is-focused { + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light:focus:not(:active), html.theme--documenter-dark .button.is-light.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } + html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light.is-active { + background-color: #dde4e6; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .button.is-light[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-light { + background-color: #ecf0f1; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-light.is-inverted { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-inverted:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-hovered { + background-color: #1d2122; } + html.theme--documenter-dark .button.is-light.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted { + background-color: #282f2f; + border-color: transparent; + box-shadow: none; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-loading::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-light.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-outlined.is-focused { + background-color: #ecf0f1; + border-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .button.is-light.is-outlined.is-loading::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-light.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-light.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-light.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + box-shadow: none; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #282f2f; + color: #282f2f; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-focused { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-light.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #282f2f; + box-shadow: none; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark, html.theme--documenter-dark .content kbd.button { + background-color: #282f2f; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover, html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered { + background-color: #232829; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused { + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark:focus:not(:active), html.theme--documenter-dark .content kbd.button:focus:not(:active), html.theme--documenter-dark .button.is-dark.is-focused:not(:active), html.theme--documenter-dark .content kbd.button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } + html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active { + background-color: #1d2122; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark[disabled], html.theme--documenter-dark .content kbd.button[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-dark, + fieldset[disabled] html.theme--documenter-dark .content kbd.button { + background-color: #282f2f; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-dark.is-inverted, html.theme--documenter-dark .content kbd.button.is-inverted { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-inverted:hover, html.theme--documenter-dark .content kbd.button.is-inverted:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-hovered { + background-color: #dde4e6; } + html.theme--documenter-dark .button.is-dark.is-inverted[disabled], html.theme--documenter-dark .content kbd.button.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted, + fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted { + background-color: #ecf0f1; + border-color: transparent; + box-shadow: none; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-loading::after, html.theme--documenter-dark .content kbd.button.is-loading::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-dark.is-outlined, html.theme--documenter-dark .content kbd.button.is-outlined { + background-color: transparent; + border-color: #282f2f; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-outlined.is-focused { + background-color: #282f2f; + border-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark.is-outlined.is-loading::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ecf0f1 #ecf0f1 !important; } + html.theme--documenter-dark .button.is-dark.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-outlined, + fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-outlined { + background-color: transparent; + border-color: #282f2f; + box-shadow: none; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:hover, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined:focus, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-focused { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #282f2f #282f2f !important; } + html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined[disabled], html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-dark.is-inverted.is-outlined, + fieldset[disabled] html.theme--documenter-dark .content kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: #ecf0f1; + box-shadow: none; + color: #ecf0f1; } + html.theme--documenter-dark .button.is-primary, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { + background-color: #375a7f; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink { + background-color: #335476; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary:focus:not(:active), html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus:not(:active), html.theme--documenter-dark .button.is-primary.is-focused:not(:active), html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { + box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } + html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink { + background-color: #2f4d6d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-primary[disabled], html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-primary, + fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink { + background-color: #375a7f; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-primary.is-inverted, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-inverted:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-primary.is-inverted[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted, + fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-loading.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-primary.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #375a7f; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { + background-color: #375a7f; + border-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .button.is-primary.is-outlined.is-loading::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { + border-color: transparent transparent #375a7f #375a7f !important; } + html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-primary.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-outlined, + fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #375a7f; + box-shadow: none; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:hover, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined:focus, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { + background-color: #fff; + color: #375a7f; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #375a7f #375a7f !important; } + html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined[disabled], html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-primary.is-inverted.is-outlined, + fieldset[disabled] html.theme--documenter-dark .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-link { + background-color: #1abc9c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link:hover, html.theme--documenter-dark .button.is-link.is-hovered { + background-color: #18b193; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link:focus, html.theme--documenter-dark .button.is-link.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link:focus:not(:active), html.theme--documenter-dark .button.is-link.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link.is-active { + background-color: #17a689; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-link[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-link { + background-color: #1abc9c; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-link.is-inverted { + background-color: #fff; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-inverted:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-link.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-link.is-outlined { + background-color: transparent; + border-color: #1abc9c; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-outlined.is-focused { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .button.is-link.is-outlined.is-loading::after { + border-color: transparent transparent #1abc9c #1abc9c !important; } + html.theme--documenter-dark .button.is-link.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-link.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-link.is-outlined { + background-color: transparent; + border-color: #1abc9c; + box-shadow: none; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #1abc9c; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #1abc9c #1abc9c !important; } + html.theme--documenter-dark .button.is-link.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-info { + background-color: #024c7d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info:hover, html.theme--documenter-dark .button.is-info.is-hovered { + background-color: #024470; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info:focus, html.theme--documenter-dark .button.is-info.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info:focus:not(:active), html.theme--documenter-dark .button.is-info.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } + html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info.is-active { + background-color: #023d64; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-info[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-info { + background-color: #024c7d; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-info.is-inverted { + background-color: #fff; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-inverted:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-info.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-info.is-outlined { + background-color: transparent; + border-color: #024c7d; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-outlined.is-focused { + background-color: #024c7d; + border-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .button.is-info.is-outlined.is-loading::after { + border-color: transparent transparent #024c7d #024c7d !important; } + html.theme--documenter-dark .button.is-info.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-info.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-info.is-outlined { + background-color: transparent; + border-color: #024c7d; + box-shadow: none; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #024c7d; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #024c7d #024c7d !important; } + html.theme--documenter-dark .button.is-info.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-success { + background-color: #008438; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success:hover, html.theme--documenter-dark .button.is-success.is-hovered { + background-color: #007733; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success:focus, html.theme--documenter-dark .button.is-success.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success:focus:not(:active), html.theme--documenter-dark .button.is-success.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } + html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success.is-active { + background-color: #006b2d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-success[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-success { + background-color: #008438; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-success.is-inverted { + background-color: #fff; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-inverted:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-success.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-success.is-outlined { + background-color: transparent; + border-color: #008438; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-outlined.is-focused { + background-color: #008438; + border-color: #008438; + color: #fff; } + html.theme--documenter-dark .button.is-success.is-outlined.is-loading::after { + border-color: transparent transparent #008438 #008438 !important; } + html.theme--documenter-dark .button.is-success.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-success.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-success.is-outlined { + background-color: transparent; + border-color: #008438; + box-shadow: none; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #008438; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #008438 #008438 !important; } + html.theme--documenter-dark .button.is-success.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-warning { + background-color: #ad8100; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning:hover, html.theme--documenter-dark .button.is-warning.is-hovered { + background-color: #a07700; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning:focus, html.theme--documenter-dark .button.is-warning.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning:focus:not(:active), html.theme--documenter-dark .button.is-warning.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } + html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning.is-active { + background-color: #946e00; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-warning[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-warning { + background-color: #ad8100; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-warning.is-inverted { + background-color: #fff; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-inverted:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-warning.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ad8100; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-outlined.is-focused { + background-color: #ad8100; + border-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .button.is-warning.is-outlined.is-loading::after { + border-color: transparent transparent #ad8100 #ad8100 !important; } + html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-warning.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ad8100; + box-shadow: none; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #ad8100; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ad8100 #ad8100 !important; } + html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-danger { + background-color: #9e1b0d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger:hover, html.theme--documenter-dark .button.is-danger.is-hovered { + background-color: #92190c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger:focus, html.theme--documenter-dark .button.is-danger.is-focused { + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger:focus:not(:active), html.theme--documenter-dark .button.is-danger.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } + html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger.is-active { + background-color: #86170b; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .button.is-danger[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-danger { + background-color: #9e1b0d; + border-color: transparent; + box-shadow: none; } + html.theme--documenter-dark .button.is-danger.is-inverted { + background-color: #fff; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-inverted:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-hovered { + background-color: #f2f2f2; } + html.theme--documenter-dark .button.is-danger.is-inverted[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-danger.is-outlined { + background-color: transparent; + border-color: #9e1b0d; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-outlined.is-focused { + background-color: #9e1b0d; + border-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .button.is-danger.is-outlined.is-loading::after { + border-color: transparent transparent #9e1b0d #9e1b0d !important; } + html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + html.theme--documenter-dark .button.is-danger.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-outlined { + background-color: transparent; + border-color: #9e1b0d; + box-shadow: none; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:hover, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-hovered, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined:focus, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #9e1b0d; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #9e1b0d #9e1b0d !important; } + html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined[disabled], + fieldset[disabled] html.theme--documenter-dark .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + html.theme--documenter-dark .button.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .button.is-normal { + font-size: 15px; } + html.theme--documenter-dark .button.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .button.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .button[disabled], + fieldset[disabled] html.theme--documenter-dark .button { + background-color: #8c9b9d; + border-color: #dbdee0; + box-shadow: none; + opacity: 0.5; } + html.theme--documenter-dark .button.is-fullwidth { + display: flex; + width: 100%; } + html.theme--documenter-dark .button.is-loading { + color: transparent !important; + pointer-events: none; } + html.theme--documenter-dark .button.is-loading::after { + position: absolute; + left: calc(50% - (1em / 2)); + top: calc(50% - (1em / 2)); + position: absolute !important; } + html.theme--documenter-dark .button.is-static { + background-color: #282f2f; + border-color: #5e6d6f; + color: #dbdee0; + box-shadow: none; + pointer-events: none; } + html.theme--documenter-dark .button.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + html.theme--documenter-dark .buttons { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + html.theme--documenter-dark .buttons .button { + margin-bottom: 0.5rem; } + html.theme--documenter-dark .buttons .button:not(:last-child):not(.is-fullwidth) { + margin-right: 0.5rem; } + html.theme--documenter-dark .buttons:last-child { + margin-bottom: -0.5rem; } + html.theme--documenter-dark .buttons:not(:last-child) { + margin-bottom: 1rem; } + html.theme--documenter-dark .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { + font-size: 1.25rem; } + html.theme--documenter-dark .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { + font-size: 1.5rem; } + html.theme--documenter-dark .buttons.has-addons .button:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .buttons.has-addons .button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + margin-right: -1px; } + html.theme--documenter-dark .buttons.has-addons .button:last-child { + margin-right: 0; } + html.theme--documenter-dark .buttons.has-addons .button:hover, html.theme--documenter-dark .buttons.has-addons .button.is-hovered { + z-index: 2; } + html.theme--documenter-dark .buttons.has-addons .button:focus, html.theme--documenter-dark .buttons.has-addons .button.is-focused, html.theme--documenter-dark .buttons.has-addons .button:active, html.theme--documenter-dark .buttons.has-addons .button.is-active, html.theme--documenter-dark .buttons.has-addons .button.is-selected { + z-index: 3; } + html.theme--documenter-dark .buttons.has-addons .button:focus:hover, html.theme--documenter-dark .buttons.has-addons .button.is-focused:hover, html.theme--documenter-dark .buttons.has-addons .button:active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-active:hover, html.theme--documenter-dark .buttons.has-addons .button.is-selected:hover { + z-index: 4; } + html.theme--documenter-dark .buttons.has-addons .button.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .buttons.is-centered { + justify-content: center; } + html.theme--documenter-dark .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + html.theme--documenter-dark .buttons.is-right { + justify-content: flex-end; } + html.theme--documenter-dark .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + html.theme--documenter-dark .container { + flex-grow: 1; + margin: 0 auto; + position: relative; + width: auto; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .container { + max-width: 992px; } + html.theme--documenter-dark .container.is-fluid { + margin-left: 32px; + margin-right: 32px; + max-width: none; } } + @media screen and (max-width: 1215px) { + html.theme--documenter-dark .container.is-widescreen { + max-width: 1152px; } } + @media screen and (max-width: 1407px) { + html.theme--documenter-dark .container.is-fullhd { + max-width: 1344px; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .container { + max-width: 1152px; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .container { + max-width: 1344px; } } + html.theme--documenter-dark .content li + li { + margin-top: 0.25em; } + html.theme--documenter-dark .content p:not(:last-child), + html.theme--documenter-dark .content dl:not(:last-child), + html.theme--documenter-dark .content ol:not(:last-child), + html.theme--documenter-dark .content ul:not(:last-child), + html.theme--documenter-dark .content blockquote:not(:last-child), + html.theme--documenter-dark .content pre:not(:last-child), + html.theme--documenter-dark .content table:not(:last-child) { + margin-bottom: 1em; } + html.theme--documenter-dark .content h1, + html.theme--documenter-dark .content h2, + html.theme--documenter-dark .content h3, + html.theme--documenter-dark .content h4, + html.theme--documenter-dark .content h5, + html.theme--documenter-dark .content h6 { + color: #f2f2f2; + font-weight: 600; + line-height: 1.125; } + html.theme--documenter-dark .content h1 { + font-size: 2em; + margin-bottom: 0.5em; } + html.theme--documenter-dark .content h1:not(:first-child) { + margin-top: 1em; } + html.theme--documenter-dark .content h2 { + font-size: 1.75em; + margin-bottom: 0.5714em; } + html.theme--documenter-dark .content h2:not(:first-child) { + margin-top: 1.1428em; } + html.theme--documenter-dark .content h3 { + font-size: 1.5em; + margin-bottom: 0.6666em; } + html.theme--documenter-dark .content h3:not(:first-child) { + margin-top: 1.3333em; } + html.theme--documenter-dark .content h4 { + font-size: 1.25em; + margin-bottom: 0.8em; } + html.theme--documenter-dark .content h5 { + font-size: 1.125em; + margin-bottom: 0.8888em; } + html.theme--documenter-dark .content h6 { + font-size: 1em; + margin-bottom: 1em; } + html.theme--documenter-dark .content blockquote { + background-color: #282f2f; + border-left: 5px solid #5e6d6f; + padding: 1.25em 1.5em; } + html.theme--documenter-dark .content ol { + list-style-position: outside; + margin-left: 2em; + margin-top: 1em; } + html.theme--documenter-dark .content ol:not([type]) { + list-style-type: decimal; } + html.theme--documenter-dark .content ol:not([type]).is-lower-alpha { + list-style-type: lower-alpha; } + html.theme--documenter-dark .content ol:not([type]).is-lower-roman { + list-style-type: lower-roman; } + html.theme--documenter-dark .content ol:not([type]).is-upper-alpha { + list-style-type: upper-alpha; } + html.theme--documenter-dark .content ol:not([type]).is-upper-roman { + list-style-type: upper-roman; } + html.theme--documenter-dark .content ul { + list-style: disc outside; + margin-left: 2em; + margin-top: 1em; } + html.theme--documenter-dark .content ul ul { + list-style-type: circle; + margin-top: 0.5em; } + html.theme--documenter-dark .content ul ul ul { + list-style-type: square; } + html.theme--documenter-dark .content dd { + margin-left: 2em; } + html.theme--documenter-dark .content figure { + margin-left: 2em; + margin-right: 2em; + text-align: center; } + html.theme--documenter-dark .content figure:not(:first-child) { + margin-top: 2em; } + html.theme--documenter-dark .content figure:not(:last-child) { + margin-bottom: 2em; } + html.theme--documenter-dark .content figure img { + display: inline-block; } + html.theme--documenter-dark .content figure figcaption { + font-style: italic; } + html.theme--documenter-dark .content pre { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding: 0.7rem 0.5rem; + white-space: pre; + word-wrap: normal; } + html.theme--documenter-dark .content sup, + html.theme--documenter-dark .content sub { + font-size: 75%; } + html.theme--documenter-dark .content table { + width: 100%; } + html.theme--documenter-dark .content table td, + html.theme--documenter-dark .content table th { + border: 1px solid #5e6d6f; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + html.theme--documenter-dark .content table th { + color: #f2f2f2; } + html.theme--documenter-dark .content table th:not([align]) { + text-align: left; } + html.theme--documenter-dark .content table thead td, + html.theme--documenter-dark .content table thead th { + border-width: 0 0 2px; + color: #f2f2f2; } + html.theme--documenter-dark .content table tfoot td, + html.theme--documenter-dark .content table tfoot th { + border-width: 2px 0 0; + color: #f2f2f2; } + html.theme--documenter-dark .content table tbody tr:last-child td, + html.theme--documenter-dark .content table tbody tr:last-child th { + border-bottom-width: 0; } + html.theme--documenter-dark .content .tabs li + li { + margin-top: 0; } + html.theme--documenter-dark .content.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.content { + font-size: 0.85em; } + html.theme--documenter-dark .content.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .content.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .icon { + align-items: center; + display: inline-flex; + justify-content: center; + height: 1.5rem; + width: 1.5rem; } + html.theme--documenter-dark .icon.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.icon { + height: 1rem; + width: 1rem; } + html.theme--documenter-dark .icon.is-medium { + height: 2rem; + width: 2rem; } + html.theme--documenter-dark .icon.is-large { + height: 3rem; + width: 3rem; } + html.theme--documenter-dark .image, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { + display: block; + position: relative; } + html.theme--documenter-dark .image img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img { + display: block; + height: auto; + width: 100%; } + html.theme--documenter-dark .image img.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img img.is-rounded { + border-radius: 290486px; } + html.theme--documenter-dark .image.is-square img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square img, + html.theme--documenter-dark .image.is-square .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, html.theme--documenter-dark .image.is-1by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 img, + html.theme--documenter-dark .image.is-1by1 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, html.theme--documenter-dark .image.is-5by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 img, + html.theme--documenter-dark .image.is-5by4 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, html.theme--documenter-dark .image.is-4by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 img, + html.theme--documenter-dark .image.is-4by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, html.theme--documenter-dark .image.is-3by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 img, + html.theme--documenter-dark .image.is-3by2 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, html.theme--documenter-dark .image.is-5by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 img, + html.theme--documenter-dark .image.is-5by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, html.theme--documenter-dark .image.is-16by9 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 img, + html.theme--documenter-dark .image.is-16by9 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, html.theme--documenter-dark .image.is-2by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 img, + html.theme--documenter-dark .image.is-2by1 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, html.theme--documenter-dark .image.is-3by1 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 img, + html.theme--documenter-dark .image.is-3by1 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, html.theme--documenter-dark .image.is-4by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 img, + html.theme--documenter-dark .image.is-4by5 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, html.theme--documenter-dark .image.is-3by4 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 img, + html.theme--documenter-dark .image.is-3by4 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, html.theme--documenter-dark .image.is-2by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 img, + html.theme--documenter-dark .image.is-2by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, html.theme--documenter-dark .image.is-3by5 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 img, + html.theme--documenter-dark .image.is-3by5 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, html.theme--documenter-dark .image.is-9by16 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 img, + html.theme--documenter-dark .image.is-9by16 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, html.theme--documenter-dark .image.is-1by2 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 img, + html.theme--documenter-dark .image.is-1by2 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, html.theme--documenter-dark .image.is-1by3 img, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 img, + html.theme--documenter-dark .image.is-1by3 .has-ratio, + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { + height: 100%; + width: 100%; } + html.theme--documenter-dark .image.is-square, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-square, html.theme--documenter-dark .image.is-1by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by1 { + padding-top: 100%; } + html.theme--documenter-dark .image.is-5by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by4 { + padding-top: 80%; } + html.theme--documenter-dark .image.is-4by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by3 { + padding-top: 75%; } + html.theme--documenter-dark .image.is-3by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by2 { + padding-top: 66.6666%; } + html.theme--documenter-dark .image.is-5by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-5by3 { + padding-top: 60%; } + html.theme--documenter-dark .image.is-16by9, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16by9 { + padding-top: 56.25%; } + html.theme--documenter-dark .image.is-2by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by1 { + padding-top: 50%; } + html.theme--documenter-dark .image.is-3by1, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by1 { + padding-top: 33.3333%; } + html.theme--documenter-dark .image.is-4by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-4by5 { + padding-top: 125%; } + html.theme--documenter-dark .image.is-3by4, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by4 { + padding-top: 133.3333%; } + html.theme--documenter-dark .image.is-2by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-2by3 { + padding-top: 150%; } + html.theme--documenter-dark .image.is-3by5, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-3by5 { + padding-top: 166.6666%; } + html.theme--documenter-dark .image.is-9by16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-9by16 { + padding-top: 177.7777%; } + html.theme--documenter-dark .image.is-1by2, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by2 { + padding-top: 200%; } + html.theme--documenter-dark .image.is-1by3, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-1by3 { + padding-top: 300%; } + html.theme--documenter-dark .image.is-16x16, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-16x16 { + height: 16px; + width: 16px; } + html.theme--documenter-dark .image.is-24x24, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-24x24 { + height: 24px; + width: 24px; } + html.theme--documenter-dark .image.is-32x32, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-32x32 { + height: 32px; + width: 32px; } + html.theme--documenter-dark .image.is-48x48, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-48x48 { + height: 48px; + width: 48px; } + html.theme--documenter-dark .image.is-64x64, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-64x64 { + height: 64px; + width: 64px; } + html.theme--documenter-dark .image.is-96x96, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-96x96 { + height: 96px; + width: 96px; } + html.theme--documenter-dark .image.is-128x128, html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img.is-128x128 { + height: 128px; + width: 128px; } + html.theme--documenter-dark .notification { + background-color: #282f2f; + border-radius: 0.4em; + padding: 1.25rem 2.5rem 1.25rem 1.5rem; + position: relative; } + html.theme--documenter-dark .notification a:not(.button):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + html.theme--documenter-dark .notification strong { + color: currentColor; } + html.theme--documenter-dark .notification code, + html.theme--documenter-dark .notification pre { + background: white; } + html.theme--documenter-dark .notification pre code { + background: transparent; } + html.theme--documenter-dark .notification > .delete { + position: absolute; + right: 0.5rem; + top: 0.5rem; } + html.theme--documenter-dark .notification .title, + html.theme--documenter-dark .notification .subtitle, + html.theme--documenter-dark .notification .content { + color: currentColor; } + html.theme--documenter-dark .notification.is-white { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .notification.is-black { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .notification.is-light { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .notification.is-dark, html.theme--documenter-dark .content kbd.notification { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .notification.is-primary, html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .notification.is-link { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .notification.is-info { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .notification.is-success { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .notification.is-warning { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .notification.is-danger { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .progress { + -moz-appearance: none; + -webkit-appearance: none; + border: none; + border-radius: 290486px; + display: block; + height: 15px; + overflow: hidden; + padding: 0; + width: 100%; } + html.theme--documenter-dark .progress::-webkit-progress-bar { + background-color: #5e6d6f; } + html.theme--documenter-dark .progress::-webkit-progress-value { + background-color: #dbdee0; } + html.theme--documenter-dark .progress::-moz-progress-bar { + background-color: #dbdee0; } + html.theme--documenter-dark .progress::-ms-fill { + background-color: #dbdee0; + border: none; } + html.theme--documenter-dark .progress.is-white::-webkit-progress-value { + background-color: white; } + html.theme--documenter-dark .progress.is-white::-moz-progress-bar { + background-color: white; } + html.theme--documenter-dark .progress.is-white::-ms-fill { + background-color: white; } + html.theme--documenter-dark .progress.is-white:indeterminate { + background-image: linear-gradient(to right, white 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-black::-webkit-progress-value { + background-color: #0a0a0a; } + html.theme--documenter-dark .progress.is-black::-moz-progress-bar { + background-color: #0a0a0a; } + html.theme--documenter-dark .progress.is-black::-ms-fill { + background-color: #0a0a0a; } + html.theme--documenter-dark .progress.is-black:indeterminate { + background-image: linear-gradient(to right, #0a0a0a 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-light::-webkit-progress-value { + background-color: #ecf0f1; } + html.theme--documenter-dark .progress.is-light::-moz-progress-bar { + background-color: #ecf0f1; } + html.theme--documenter-dark .progress.is-light::-ms-fill { + background-color: #ecf0f1; } + html.theme--documenter-dark .progress.is-light:indeterminate { + background-image: linear-gradient(to right, #ecf0f1 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-dark::-webkit-progress-value, html.theme--documenter-dark .content kbd.progress::-webkit-progress-value { + background-color: #282f2f; } + html.theme--documenter-dark .progress.is-dark::-moz-progress-bar, html.theme--documenter-dark .content kbd.progress::-moz-progress-bar { + background-color: #282f2f; } + html.theme--documenter-dark .progress.is-dark::-ms-fill, html.theme--documenter-dark .content kbd.progress::-ms-fill { + background-color: #282f2f; } + html.theme--documenter-dark .progress.is-dark:indeterminate, html.theme--documenter-dark .content kbd.progress:indeterminate { + background-image: linear-gradient(to right, #282f2f 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-primary::-webkit-progress-value, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { + background-color: #375a7f; } + html.theme--documenter-dark .progress.is-primary::-moz-progress-bar, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { + background-color: #375a7f; } + html.theme--documenter-dark .progress.is-primary::-ms-fill, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink::-ms-fill { + background-color: #375a7f; } + html.theme--documenter-dark .progress.is-primary:indeterminate, html.theme--documenter-dark .docstring > section > a.progress.docs-sourcelink:indeterminate { + background-image: linear-gradient(to right, #375a7f 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-link::-webkit-progress-value { + background-color: #1abc9c; } + html.theme--documenter-dark .progress.is-link::-moz-progress-bar { + background-color: #1abc9c; } + html.theme--documenter-dark .progress.is-link::-ms-fill { + background-color: #1abc9c; } + html.theme--documenter-dark .progress.is-link:indeterminate { + background-image: linear-gradient(to right, #1abc9c 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-info::-webkit-progress-value { + background-color: #024c7d; } + html.theme--documenter-dark .progress.is-info::-moz-progress-bar { + background-color: #024c7d; } + html.theme--documenter-dark .progress.is-info::-ms-fill { + background-color: #024c7d; } + html.theme--documenter-dark .progress.is-info:indeterminate { + background-image: linear-gradient(to right, #024c7d 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-success::-webkit-progress-value { + background-color: #008438; } + html.theme--documenter-dark .progress.is-success::-moz-progress-bar { + background-color: #008438; } + html.theme--documenter-dark .progress.is-success::-ms-fill { + background-color: #008438; } + html.theme--documenter-dark .progress.is-success:indeterminate { + background-image: linear-gradient(to right, #008438 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-warning::-webkit-progress-value { + background-color: #ad8100; } + html.theme--documenter-dark .progress.is-warning::-moz-progress-bar { + background-color: #ad8100; } + html.theme--documenter-dark .progress.is-warning::-ms-fill { + background-color: #ad8100; } + html.theme--documenter-dark .progress.is-warning:indeterminate { + background-image: linear-gradient(to right, #ad8100 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress.is-danger::-webkit-progress-value { + background-color: #9e1b0d; } + html.theme--documenter-dark .progress.is-danger::-moz-progress-bar { + background-color: #9e1b0d; } + html.theme--documenter-dark .progress.is-danger::-ms-fill { + background-color: #9e1b0d; } + html.theme--documenter-dark .progress.is-danger:indeterminate { + background-image: linear-gradient(to right, #9e1b0d 30%, #5e6d6f 30%); } + html.theme--documenter-dark .progress:indeterminate { + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-name: moveIndeterminate; + animation-timing-function: linear; + background-color: #5e6d6f; + background-image: linear-gradient(to right, #fff 30%, #5e6d6f 30%); + background-position: top left; + background-repeat: no-repeat; + background-size: 150% 150%; } + html.theme--documenter-dark .progress:indeterminate::-webkit-progress-bar { + background-color: transparent; } + html.theme--documenter-dark .progress:indeterminate::-moz-progress-bar { + background-color: transparent; } + html.theme--documenter-dark .progress.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.progress { + height: 0.85em; } + html.theme--documenter-dark .progress.is-medium { + height: 1.25rem; } + html.theme--documenter-dark .progress.is-large { + height: 1.5rem; } + +@keyframes moveIndeterminate { + from { + background-position: 200% 0; } + to { + background-position: -200% 0; } } + html.theme--documenter-dark .table { + background-color: #343c3d; + color: #fff; } + html.theme--documenter-dark .table td, + html.theme--documenter-dark .table th { + border: 1px solid #5e6d6f; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + html.theme--documenter-dark .table td.is-white, + html.theme--documenter-dark .table th.is-white { + background-color: white; + border-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .table td.is-black, + html.theme--documenter-dark .table th.is-black { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .table td.is-light, + html.theme--documenter-dark .table th.is-light { + background-color: #ecf0f1; + border-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .table td.is-dark, + html.theme--documenter-dark .table th.is-dark { + background-color: #282f2f; + border-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .table td.is-primary, + html.theme--documenter-dark .table th.is-primary { + background-color: #375a7f; + border-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .table td.is-link, + html.theme--documenter-dark .table th.is-link { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .table td.is-info, + html.theme--documenter-dark .table th.is-info { + background-color: #024c7d; + border-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .table td.is-success, + html.theme--documenter-dark .table th.is-success { + background-color: #008438; + border-color: #008438; + color: #fff; } + html.theme--documenter-dark .table td.is-warning, + html.theme--documenter-dark .table th.is-warning { + background-color: #ad8100; + border-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .table td.is-danger, + html.theme--documenter-dark .table th.is-danger { + background-color: #9e1b0d; + border-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .table td.is-narrow, + html.theme--documenter-dark .table th.is-narrow { + white-space: nowrap; + width: 1%; } + html.theme--documenter-dark .table td.is-selected, + html.theme--documenter-dark .table th.is-selected { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .table td.is-selected a, + html.theme--documenter-dark .table td.is-selected strong, + html.theme--documenter-dark .table th.is-selected a, + html.theme--documenter-dark .table th.is-selected strong { + color: currentColor; } + html.theme--documenter-dark .table th { + color: #f2f2f2; } + html.theme--documenter-dark .table th:not([align]) { + text-align: left; } + html.theme--documenter-dark .table tr.is-selected { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .table tr.is-selected a, + html.theme--documenter-dark .table tr.is-selected strong { + color: currentColor; } + html.theme--documenter-dark .table tr.is-selected td, + html.theme--documenter-dark .table tr.is-selected th { + border-color: #fff; + color: currentColor; } + html.theme--documenter-dark .table thead { + background-color: transparent; } + html.theme--documenter-dark .table thead td, + html.theme--documenter-dark .table thead th { + border-width: 0 0 2px; + color: #f2f2f2; } + html.theme--documenter-dark .table tfoot { + background-color: transparent; } + html.theme--documenter-dark .table tfoot td, + html.theme--documenter-dark .table tfoot th { + border-width: 2px 0 0; + color: #f2f2f2; } + html.theme--documenter-dark .table tbody { + background-color: transparent; } + html.theme--documenter-dark .table tbody tr:last-child td, + html.theme--documenter-dark .table tbody tr:last-child th { + border-bottom-width: 0; } + html.theme--documenter-dark .table.is-bordered td, + html.theme--documenter-dark .table.is-bordered th { + border-width: 1px; } + html.theme--documenter-dark .table.is-bordered tr:last-child td, + html.theme--documenter-dark .table.is-bordered tr:last-child th { + border-bottom-width: 1px; } + html.theme--documenter-dark .table.is-fullwidth { + width: 100%; } + html.theme--documenter-dark .table.is-hoverable tbody tr:not(.is-selected):hover { + background-color: #282f2f; } + html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { + background-color: #282f2f; } + html.theme--documenter-dark .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { + background-color: #2d3435; } + html.theme--documenter-dark .table.is-narrow td, + html.theme--documenter-dark .table.is-narrow th { + padding: 0.25em 0.5em; } + html.theme--documenter-dark .table.is-striped tbody tr:not(.is-selected):nth-child(even) { + background-color: #282f2f; } + html.theme--documenter-dark .table-container { + -webkit-overflow-scrolling: touch; + overflow: auto; + overflow-y: hidden; + max-width: 100%; } + html.theme--documenter-dark .tags { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + html.theme--documenter-dark .tags .tag, html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags .content kbd, html.theme--documenter-dark .content .tags kbd { + margin-bottom: 0.5rem; } + html.theme--documenter-dark .tags .tag:not(:last-child), html.theme--documenter-dark .tags .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags .content kbd:not(:last-child), html.theme--documenter-dark .content .tags kbd:not(:last-child) { + margin-right: 0.5rem; } + html.theme--documenter-dark .tags:last-child { + margin-bottom: -0.5rem; } + html.theme--documenter-dark .tags:not(:last-child) { + margin-bottom: 1rem; } + html.theme--documenter-dark .tags.are-medium .tag:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large), html.theme--documenter-dark .tags.are-medium .content kbd:not(.is-normal):not(.is-large), html.theme--documenter-dark .content .tags.are-medium kbd:not(.is-normal):not(.is-large) { + font-size: 15px; } + html.theme--documenter-dark .tags.are-large .tag:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium), html.theme--documenter-dark .tags.are-large .content kbd:not(.is-normal):not(.is-medium), html.theme--documenter-dark .content .tags.are-large kbd:not(.is-normal):not(.is-medium) { + font-size: 1.25rem; } + html.theme--documenter-dark .tags.is-centered { + justify-content: center; } + html.theme--documenter-dark .tags.is-centered .tag, html.theme--documenter-dark .tags.is-centered .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags.is-centered .content kbd, html.theme--documenter-dark .content .tags.is-centered kbd { + margin-right: 0.25rem; + margin-left: 0.25rem; } + html.theme--documenter-dark .tags.is-right { + justify-content: flex-end; } + html.theme--documenter-dark .tags.is-right .tag:not(:first-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:first-child) { + margin-left: 0.5rem; } + html.theme--documenter-dark .tags.is-right .tag:not(:last-child), html.theme--documenter-dark .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags.is-right .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.is-right kbd:not(:last-child) { + margin-right: 0; } + html.theme--documenter-dark .tags.has-addons .tag, html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .tags.has-addons .content kbd, html.theme--documenter-dark .content .tags.has-addons kbd { + margin-right: 0; } + html.theme--documenter-dark .tags.has-addons .tag:not(:first-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:first-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:first-child) { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .tags.has-addons .tag:not(:last-child), html.theme--documenter-dark .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child), html.theme--documenter-dark .tags.has-addons .content kbd:not(:last-child), html.theme--documenter-dark .content .tags.has-addons kbd:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .tag:not(body), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body), html.theme--documenter-dark .content kbd:not(body) { + align-items: center; + background-color: #282f2f; + border-radius: 0.4em; + color: #fff; + display: inline-flex; + font-size: 0.85em; + height: 2em; + justify-content: center; + line-height: 1.5; + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + html.theme--documenter-dark .tag:not(body) .delete, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .delete, html.theme--documenter-dark .content kbd:not(body) .delete { + margin-left: 0.25rem; + margin-right: -0.375rem; } + html.theme--documenter-dark .tag:not(body).is-white, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-white, html.theme--documenter-dark .content kbd:not(body).is-white { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .tag:not(body).is-black, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-black, html.theme--documenter-dark .content kbd:not(body).is-black { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .tag:not(body).is-light, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-light, html.theme--documenter-dark .content kbd:not(body).is-light { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .tag:not(body).is-dark, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-dark, html.theme--documenter-dark .content kbd:not(body) { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .tag:not(body).is-primary, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body), html.theme--documenter-dark .content kbd:not(body).is-primary { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .tag:not(body).is-link, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-link, html.theme--documenter-dark .content kbd:not(body).is-link { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .tag:not(body).is-info, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-info, html.theme--documenter-dark .content kbd:not(body).is-info { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .tag:not(body).is-success, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-success, html.theme--documenter-dark .content kbd:not(body).is-success { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .tag:not(body).is-warning, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-warning, html.theme--documenter-dark .content kbd:not(body).is-warning { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .tag:not(body).is-danger, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-danger, html.theme--documenter-dark .content kbd:not(body).is-danger { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .tag:not(body).is-normal, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-normal, html.theme--documenter-dark .content kbd:not(body).is-normal { + font-size: 0.85em; } + html.theme--documenter-dark .tag:not(body).is-medium, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-medium, html.theme--documenter-dark .content kbd:not(body).is-medium { + font-size: 15px; } + html.theme--documenter-dark .tag:not(body).is-large, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-large, html.theme--documenter-dark .content kbd:not(body).is-large { + font-size: 1.25rem; } + html.theme--documenter-dark .tag:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child), html.theme--documenter-dark .content kbd:not(body) .icon:first-child:not(:last-child) { + margin-left: -0.375em; + margin-right: 0.1875em; } + html.theme--documenter-dark .tag:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child), html.theme--documenter-dark .content kbd:not(body) .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: -0.375em; } + html.theme--documenter-dark .tag:not(body) .icon:first-child:last-child, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child, html.theme--documenter-dark .content kbd:not(body) .icon:first-child:last-child { + margin-left: -0.375em; + margin-right: -0.375em; } + html.theme--documenter-dark .tag:not(body).is-delete, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete, html.theme--documenter-dark .content kbd:not(body).is-delete { + margin-left: 1px; + padding: 0; + position: relative; + width: 2em; } + html.theme--documenter-dark .tag:not(body).is-delete::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::before, html.theme--documenter-dark .content kbd:not(body).is-delete::before, html.theme--documenter-dark .tag:not(body).is-delete::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::after, html.theme--documenter-dark .content kbd:not(body).is-delete::after { + background-color: currentColor; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + html.theme--documenter-dark .tag:not(body).is-delete::before, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::before, html.theme--documenter-dark .content kbd:not(body).is-delete::before { + height: 1px; + width: 50%; } + html.theme--documenter-dark .tag:not(body).is-delete::after, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete::after, html.theme--documenter-dark .content kbd:not(body).is-delete::after { + height: 50%; + width: 1px; } + html.theme--documenter-dark .tag:not(body).is-delete:hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:hover, html.theme--documenter-dark .content kbd:not(body).is-delete:hover, html.theme--documenter-dark .tag:not(body).is-delete:focus, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:focus, html.theme--documenter-dark .content kbd:not(body).is-delete:focus { + background-color: #1d2122; } + html.theme--documenter-dark .tag:not(body).is-delete:active, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-delete:active, html.theme--documenter-dark .content kbd:not(body).is-delete:active { + background-color: #111414; } + html.theme--documenter-dark .tag:not(body).is-rounded, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:not(body).is-rounded, html.theme--documenter-dark .content kbd:not(body).is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.tag:not(body) { + border-radius: 290486px; } + html.theme--documenter-dark a.tag:hover, html.theme--documenter-dark .docstring > section > a.docs-sourcelink:hover { + text-decoration: underline; } + html.theme--documenter-dark .title, + html.theme--documenter-dark .subtitle { + word-break: break-word; } + html.theme--documenter-dark .title em, + html.theme--documenter-dark .title span, + html.theme--documenter-dark .subtitle em, + html.theme--documenter-dark .subtitle span { + font-weight: inherit; } + html.theme--documenter-dark .title sub, + html.theme--documenter-dark .subtitle sub { + font-size: 0.75em; } + html.theme--documenter-dark .title sup, + html.theme--documenter-dark .subtitle sup { + font-size: 0.75em; } + html.theme--documenter-dark .title .tag, html.theme--documenter-dark .title .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .title .content kbd, html.theme--documenter-dark .content .title kbd, + html.theme--documenter-dark .subtitle .tag, + html.theme--documenter-dark .subtitle .docstring > section > a.docs-sourcelink, + html.theme--documenter-dark .subtitle .content kbd, + html.theme--documenter-dark .content .subtitle kbd { + vertical-align: middle; } + html.theme--documenter-dark .title { + color: #fff; + font-size: 2rem; + font-weight: 500; + line-height: 1.125; } + html.theme--documenter-dark .title strong { + color: inherit; + font-weight: inherit; } + html.theme--documenter-dark .title + .highlight { + margin-top: -0.75rem; } + html.theme--documenter-dark .title:not(.is-spaced) + .subtitle { + margin-top: -1.25rem; } + html.theme--documenter-dark .title.is-1 { + font-size: 3rem; } + html.theme--documenter-dark .title.is-2 { + font-size: 2.5rem; } + html.theme--documenter-dark .title.is-3 { + font-size: 2rem; } + html.theme--documenter-dark .title.is-4 { + font-size: 1.5rem; } + html.theme--documenter-dark .title.is-5 { + font-size: 1.25rem; } + html.theme--documenter-dark .title.is-6 { + font-size: 15px; } + html.theme--documenter-dark .title.is-7 { + font-size: 0.85em; } + html.theme--documenter-dark .subtitle { + color: #8c9b9d; + font-size: 1.25rem; + font-weight: 400; + line-height: 1.25; } + html.theme--documenter-dark .subtitle strong { + color: #8c9b9d; + font-weight: 600; } + html.theme--documenter-dark .subtitle:not(.is-spaced) + .title { + margin-top: -1.25rem; } + html.theme--documenter-dark .subtitle.is-1 { + font-size: 3rem; } + html.theme--documenter-dark .subtitle.is-2 { + font-size: 2.5rem; } + html.theme--documenter-dark .subtitle.is-3 { + font-size: 2rem; } + html.theme--documenter-dark .subtitle.is-4 { + font-size: 1.5rem; } + html.theme--documenter-dark .subtitle.is-5 { + font-size: 1.25rem; } + html.theme--documenter-dark .subtitle.is-6 { + font-size: 15px; } + html.theme--documenter-dark .subtitle.is-7 { + font-size: 0.85em; } + html.theme--documenter-dark .heading { + display: block; + font-size: 11px; + letter-spacing: 1px; + margin-bottom: 5px; + text-transform: uppercase; } + html.theme--documenter-dark .highlight { + font-weight: 400; + max-width: 100%; + overflow: hidden; + padding: 0; } + html.theme--documenter-dark .highlight pre { + overflow: auto; + max-width: 100%; } + html.theme--documenter-dark .number { + align-items: center; + background-color: #282f2f; + border-radius: 290486px; + display: inline-flex; + font-size: 1.25rem; + height: 2em; + justify-content: center; + margin-right: 1.5rem; + min-width: 2.5em; + padding: 0.25rem 0.5rem; + text-align: center; + vertical-align: top; } + html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea, html.theme--documenter-dark .select select { + background-color: #1f2424; + border-color: #5e6d6f; + border-radius: 0.4em; + color: #dbdee0; } + html.theme--documenter-dark .input::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, html.theme--documenter-dark .textarea::-moz-placeholder, html.theme--documenter-dark .select select::-moz-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .input::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, html.theme--documenter-dark .textarea::-webkit-input-placeholder, html.theme--documenter-dark .select select::-webkit-input-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .input:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, html.theme--documenter-dark .textarea:-moz-placeholder, html.theme--documenter-dark .select select:-moz-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .input:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, html.theme--documenter-dark .textarea:-ms-input-placeholder, html.theme--documenter-dark .select select:-ms-input-placeholder { + color: rgba(219, 222, 224, 0.3); } + html.theme--documenter-dark .input:hover, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:hover, html.theme--documenter-dark .textarea:hover, html.theme--documenter-dark .select select:hover, html.theme--documenter-dark .is-hovered.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-hovered, html.theme--documenter-dark .is-hovered.textarea, html.theme--documenter-dark .select select.is-hovered { + border-color: #8c9b9d; } + html.theme--documenter-dark .input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:focus, html.theme--documenter-dark .textarea:focus, html.theme--documenter-dark .select select:focus, html.theme--documenter-dark .is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-focused, html.theme--documenter-dark .is-focused.textarea, html.theme--documenter-dark .select select.is-focused, html.theme--documenter-dark .input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:active, html.theme--documenter-dark .textarea:active, html.theme--documenter-dark .select select:active, html.theme--documenter-dark .is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-active, html.theme--documenter-dark .is-active.textarea, html.theme--documenter-dark .select select.is-active { + border-color: #1abc9c; + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .input[disabled], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled], html.theme--documenter-dark .textarea[disabled], html.theme--documenter-dark .select select[disabled], + fieldset[disabled] html.theme--documenter-dark .input, + fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, + fieldset[disabled] html.theme--documenter-dark .textarea, + fieldset[disabled] html.theme--documenter-dark .select select { + background-color: #8c9b9d; + border-color: #282f2f; + box-shadow: none; + color: white; } + html.theme--documenter-dark .input[disabled]::-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, html.theme--documenter-dark .textarea[disabled]::-moz-placeholder, html.theme--documenter-dark .select select[disabled]::-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark .input::-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark .textarea::-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark .select select::-moz-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .input[disabled]::-webkit-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .textarea[disabled]::-webkit-input-placeholder, html.theme--documenter-dark .select select[disabled]::-webkit-input-placeholder, + fieldset[disabled] html.theme--documenter-dark .input::-webkit-input-placeholder, + fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, + fieldset[disabled] html.theme--documenter-dark .textarea::-webkit-input-placeholder, + fieldset[disabled] html.theme--documenter-dark .select select::-webkit-input-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .input[disabled]:-moz-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, html.theme--documenter-dark .textarea[disabled]:-moz-placeholder, html.theme--documenter-dark .select select[disabled]:-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark .input:-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark .textarea:-moz-placeholder, + fieldset[disabled] html.theme--documenter-dark .select select:-moz-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .input[disabled]:-ms-input-placeholder, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, html.theme--documenter-dark .textarea[disabled]:-ms-input-placeholder, html.theme--documenter-dark .select select[disabled]:-ms-input-placeholder, + fieldset[disabled] html.theme--documenter-dark .input:-ms-input-placeholder, + fieldset[disabled] html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, + fieldset[disabled] html.theme--documenter-dark .textarea:-ms-input-placeholder, + fieldset[disabled] html.theme--documenter-dark .select select:-ms-input-placeholder { + color: rgba(255, 255, 255, 0.3); } + html.theme--documenter-dark .input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .textarea { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + max-width: 100%; + width: 100%; } + html.theme--documenter-dark .input[readonly], html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input[readonly], html.theme--documenter-dark .textarea[readonly] { + box-shadow: none; } + html.theme--documenter-dark .is-white.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white, html.theme--documenter-dark .is-white.textarea { + border-color: white; } + html.theme--documenter-dark .is-white.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:focus, html.theme--documenter-dark .is-white.textarea:focus, html.theme--documenter-dark .is-white.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white.is-focused, html.theme--documenter-dark .is-white.is-focused.textarea, html.theme--documenter-dark .is-white.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white:active, html.theme--documenter-dark .is-white.textarea:active, html.theme--documenter-dark .is-white.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-white.is-active, html.theme--documenter-dark .is-white.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + html.theme--documenter-dark .is-black.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black, html.theme--documenter-dark .is-black.textarea { + border-color: #0a0a0a; } + html.theme--documenter-dark .is-black.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:focus, html.theme--documenter-dark .is-black.textarea:focus, html.theme--documenter-dark .is-black.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black.is-focused, html.theme--documenter-dark .is-black.is-focused.textarea, html.theme--documenter-dark .is-black.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black:active, html.theme--documenter-dark .is-black.textarea:active, html.theme--documenter-dark .is-black.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-black.is-active, html.theme--documenter-dark .is-black.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + html.theme--documenter-dark .is-light.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light, html.theme--documenter-dark .is-light.textarea { + border-color: #ecf0f1; } + html.theme--documenter-dark .is-light.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:focus, html.theme--documenter-dark .is-light.textarea:focus, html.theme--documenter-dark .is-light.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light.is-focused, html.theme--documenter-dark .is-light.is-focused.textarea, html.theme--documenter-dark .is-light.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light:active, html.theme--documenter-dark .is-light.textarea:active, html.theme--documenter-dark .is-light.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-light.is-active, html.theme--documenter-dark .is-light.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } + html.theme--documenter-dark .is-dark.input, html.theme--documenter-dark .content kbd.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark, html.theme--documenter-dark .is-dark.textarea, html.theme--documenter-dark .content kbd.textarea { + border-color: #282f2f; } + html.theme--documenter-dark .is-dark.input:focus, html.theme--documenter-dark .content kbd.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:focus, html.theme--documenter-dark .is-dark.textarea:focus, html.theme--documenter-dark .content kbd.textarea:focus, html.theme--documenter-dark .is-dark.is-focused.input, html.theme--documenter-dark .content kbd.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark.is-focused, html.theme--documenter-dark .is-dark.is-focused.textarea, html.theme--documenter-dark .content kbd.is-focused.textarea, html.theme--documenter-dark .is-dark.input:active, html.theme--documenter-dark .content kbd.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark:active, html.theme--documenter-dark .is-dark.textarea:active, html.theme--documenter-dark .content kbd.textarea:active, html.theme--documenter-dark .is-dark.is-active.input, html.theme--documenter-dark .content kbd.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-dark.is-active, html.theme--documenter-dark .is-dark.is-active.textarea, html.theme--documenter-dark .content kbd.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } + html.theme--documenter-dark .is-primary.input, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary, html.theme--documenter-dark .is-primary.textarea, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink { + border-color: #375a7f; } + html.theme--documenter-dark .is-primary.input:focus, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:focus, html.theme--documenter-dark .is-primary.textarea:focus, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:focus, html.theme--documenter-dark .is-primary.is-focused.input, html.theme--documenter-dark .docstring > section > a.is-focused.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary.is-focused, html.theme--documenter-dark .is-primary.is-focused.textarea, html.theme--documenter-dark .docstring > section > a.is-focused.textarea.docs-sourcelink, html.theme--documenter-dark .is-primary.input:active, html.theme--documenter-dark .docstring > section > a.input.docs-sourcelink:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary:active, html.theme--documenter-dark .is-primary.textarea:active, html.theme--documenter-dark .docstring > section > a.textarea.docs-sourcelink:active, html.theme--documenter-dark .is-primary.is-active.input, html.theme--documenter-dark .docstring > section > a.is-active.input.docs-sourcelink, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-primary.is-active, html.theme--documenter-dark .is-primary.is-active.textarea, html.theme--documenter-dark .docstring > section > a.is-active.textarea.docs-sourcelink { + box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } + html.theme--documenter-dark .is-link.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link, html.theme--documenter-dark .is-link.textarea { + border-color: #1abc9c; } + html.theme--documenter-dark .is-link.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:focus, html.theme--documenter-dark .is-link.textarea:focus, html.theme--documenter-dark .is-link.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link.is-focused, html.theme--documenter-dark .is-link.is-focused.textarea, html.theme--documenter-dark .is-link.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link:active, html.theme--documenter-dark .is-link.textarea:active, html.theme--documenter-dark .is-link.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-link.is-active, html.theme--documenter-dark .is-link.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .is-info.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info, html.theme--documenter-dark .is-info.textarea { + border-color: #024c7d; } + html.theme--documenter-dark .is-info.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:focus, html.theme--documenter-dark .is-info.textarea:focus, html.theme--documenter-dark .is-info.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info.is-focused, html.theme--documenter-dark .is-info.is-focused.textarea, html.theme--documenter-dark .is-info.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info:active, html.theme--documenter-dark .is-info.textarea:active, html.theme--documenter-dark .is-info.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-info.is-active, html.theme--documenter-dark .is-info.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } + html.theme--documenter-dark .is-success.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success, html.theme--documenter-dark .is-success.textarea { + border-color: #008438; } + html.theme--documenter-dark .is-success.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:focus, html.theme--documenter-dark .is-success.textarea:focus, html.theme--documenter-dark .is-success.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success.is-focused, html.theme--documenter-dark .is-success.is-focused.textarea, html.theme--documenter-dark .is-success.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success:active, html.theme--documenter-dark .is-success.textarea:active, html.theme--documenter-dark .is-success.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-success.is-active, html.theme--documenter-dark .is-success.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } + html.theme--documenter-dark .is-warning.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning, html.theme--documenter-dark .is-warning.textarea { + border-color: #ad8100; } + html.theme--documenter-dark .is-warning.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:focus, html.theme--documenter-dark .is-warning.textarea:focus, html.theme--documenter-dark .is-warning.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning.is-focused, html.theme--documenter-dark .is-warning.is-focused.textarea, html.theme--documenter-dark .is-warning.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning:active, html.theme--documenter-dark .is-warning.textarea:active, html.theme--documenter-dark .is-warning.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-warning.is-active, html.theme--documenter-dark .is-warning.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } + html.theme--documenter-dark .is-danger.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger, html.theme--documenter-dark .is-danger.textarea { + border-color: #9e1b0d; } + html.theme--documenter-dark .is-danger.input:focus, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:focus, html.theme--documenter-dark .is-danger.textarea:focus, html.theme--documenter-dark .is-danger.is-focused.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger.is-focused, html.theme--documenter-dark .is-danger.is-focused.textarea, html.theme--documenter-dark .is-danger.input:active, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger:active, html.theme--documenter-dark .is-danger.textarea:active, html.theme--documenter-dark .is-danger.is-active.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-danger.is-active, html.theme--documenter-dark .is-danger.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } + html.theme--documenter-dark .is-small.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark .is-small.textarea { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .is-medium.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-medium, html.theme--documenter-dark .is-medium.textarea { + font-size: 1.25rem; } + html.theme--documenter-dark .is-large.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-large, html.theme--documenter-dark .is-large.textarea { + font-size: 1.5rem; } + html.theme--documenter-dark .is-fullwidth.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-fullwidth, html.theme--documenter-dark .is-fullwidth.textarea { + display: block; + width: 100%; } + html.theme--documenter-dark .is-inline.input, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-inline, html.theme--documenter-dark .is-inline.textarea { + display: inline; + width: auto; } + html.theme--documenter-dark .input.is-rounded, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + html.theme--documenter-dark .input.is-static, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.is-static { + background-color: transparent; + border-color: transparent; + box-shadow: none; + padding-left: 0; + padding-right: 0; } + html.theme--documenter-dark .textarea { + display: block; + max-width: 100%; + min-width: 100%; + padding: 0.625em; + resize: vertical; } + html.theme--documenter-dark .textarea:not([rows]) { + max-height: 600px; + min-height: 120px; } + html.theme--documenter-dark .textarea[rows] { + height: initial; } + html.theme--documenter-dark .textarea.has-fixed-size { + resize: none; } + html.theme--documenter-dark .checkbox, html.theme--documenter-dark .radio { + cursor: pointer; + display: inline-block; + line-height: 1.25; + position: relative; } + html.theme--documenter-dark .checkbox input, html.theme--documenter-dark .radio input { + cursor: pointer; } + html.theme--documenter-dark .checkbox:hover, html.theme--documenter-dark .radio:hover { + color: #8c9b9d; } + html.theme--documenter-dark .checkbox[disabled], html.theme--documenter-dark .radio[disabled], + fieldset[disabled] html.theme--documenter-dark .checkbox, + fieldset[disabled] html.theme--documenter-dark .radio { + color: white; + cursor: not-allowed; } + html.theme--documenter-dark .radio + .radio { + margin-left: 0.5em; } + html.theme--documenter-dark .select { + display: inline-block; + max-width: 100%; + position: relative; + vertical-align: top; } + html.theme--documenter-dark .select:not(.is-multiple) { + height: 2.25em; } + html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading)::after { + border-color: #1abc9c; + right: 1.125em; + z-index: 4; } + html.theme--documenter-dark .select.is-rounded select, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select select { + border-radius: 290486px; + padding-left: 1em; } + html.theme--documenter-dark .select select { + cursor: pointer; + display: block; + font-size: 1em; + max-width: 100%; + outline: none; } + html.theme--documenter-dark .select select::-ms-expand { + display: none; } + html.theme--documenter-dark .select select[disabled]:hover, + fieldset[disabled] html.theme--documenter-dark .select select:hover { + border-color: #282f2f; } + html.theme--documenter-dark .select select:not([multiple]) { + padding-right: 2.5em; } + html.theme--documenter-dark .select select[multiple] { + height: auto; + padding: 0; } + html.theme--documenter-dark .select select[multiple] option { + padding: 0.5em 1em; } + html.theme--documenter-dark .select:not(.is-multiple):not(.is-loading):hover::after { + border-color: #8c9b9d; } + html.theme--documenter-dark .select.is-white:not(:hover)::after { + border-color: white; } + html.theme--documenter-dark .select.is-white select { + border-color: white; } + html.theme--documenter-dark .select.is-white select:hover, html.theme--documenter-dark .select.is-white select.is-hovered { + border-color: #f2f2f2; } + html.theme--documenter-dark .select.is-white select:focus, html.theme--documenter-dark .select.is-white select.is-focused, html.theme--documenter-dark .select.is-white select:active, html.theme--documenter-dark .select.is-white select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + html.theme--documenter-dark .select.is-black:not(:hover)::after { + border-color: #0a0a0a; } + html.theme--documenter-dark .select.is-black select { + border-color: #0a0a0a; } + html.theme--documenter-dark .select.is-black select:hover, html.theme--documenter-dark .select.is-black select.is-hovered { + border-color: black; } + html.theme--documenter-dark .select.is-black select:focus, html.theme--documenter-dark .select.is-black select.is-focused, html.theme--documenter-dark .select.is-black select:active, html.theme--documenter-dark .select.is-black select.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + html.theme--documenter-dark .select.is-light:not(:hover)::after { + border-color: #ecf0f1; } + html.theme--documenter-dark .select.is-light select { + border-color: #ecf0f1; } + html.theme--documenter-dark .select.is-light select:hover, html.theme--documenter-dark .select.is-light select.is-hovered { + border-color: #dde4e6; } + html.theme--documenter-dark .select.is-light select:focus, html.theme--documenter-dark .select.is-light select.is-focused, html.theme--documenter-dark .select.is-light select:active, html.theme--documenter-dark .select.is-light select.is-active { + box-shadow: 0 0 0 0.125em rgba(236, 240, 241, 0.25); } + html.theme--documenter-dark .select.is-dark:not(:hover)::after, html.theme--documenter-dark .content kbd.select:not(:hover)::after { + border-color: #282f2f; } + html.theme--documenter-dark .select.is-dark select, html.theme--documenter-dark .content kbd.select select { + border-color: #282f2f; } + html.theme--documenter-dark .select.is-dark select:hover, html.theme--documenter-dark .content kbd.select select:hover, html.theme--documenter-dark .select.is-dark select.is-hovered, html.theme--documenter-dark .content kbd.select select.is-hovered { + border-color: #1d2122; } + html.theme--documenter-dark .select.is-dark select:focus, html.theme--documenter-dark .content kbd.select select:focus, html.theme--documenter-dark .select.is-dark select.is-focused, html.theme--documenter-dark .content kbd.select select.is-focused, html.theme--documenter-dark .select.is-dark select:active, html.theme--documenter-dark .content kbd.select select:active, html.theme--documenter-dark .select.is-dark select.is-active, html.theme--documenter-dark .content kbd.select select.is-active { + box-shadow: 0 0 0 0.125em rgba(40, 47, 47, 0.25); } + html.theme--documenter-dark .select.is-primary:not(:hover)::after, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink:not(:hover)::after { + border-color: #375a7f; } + html.theme--documenter-dark .select.is-primary select, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select { + border-color: #375a7f; } + html.theme--documenter-dark .select.is-primary select:hover, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:hover, html.theme--documenter-dark .select.is-primary select.is-hovered, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-hovered { + border-color: #2f4d6d; } + html.theme--documenter-dark .select.is-primary select:focus, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:focus, html.theme--documenter-dark .select.is-primary select.is-focused, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-focused, html.theme--documenter-dark .select.is-primary select:active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select:active, html.theme--documenter-dark .select.is-primary select.is-active, html.theme--documenter-dark .docstring > section > a.select.docs-sourcelink select.is-active { + box-shadow: 0 0 0 0.125em rgba(55, 90, 127, 0.25); } + html.theme--documenter-dark .select.is-link:not(:hover)::after { + border-color: #1abc9c; } + html.theme--documenter-dark .select.is-link select { + border-color: #1abc9c; } + html.theme--documenter-dark .select.is-link select:hover, html.theme--documenter-dark .select.is-link select.is-hovered { + border-color: #17a689; } + html.theme--documenter-dark .select.is-link select:focus, html.theme--documenter-dark .select.is-link select.is-focused, html.theme--documenter-dark .select.is-link select:active, html.theme--documenter-dark .select.is-link select.is-active { + box-shadow: 0 0 0 0.125em rgba(26, 188, 156, 0.25); } + html.theme--documenter-dark .select.is-info:not(:hover)::after { + border-color: #024c7d; } + html.theme--documenter-dark .select.is-info select { + border-color: #024c7d; } + html.theme--documenter-dark .select.is-info select:hover, html.theme--documenter-dark .select.is-info select.is-hovered { + border-color: #023d64; } + html.theme--documenter-dark .select.is-info select:focus, html.theme--documenter-dark .select.is-info select.is-focused, html.theme--documenter-dark .select.is-info select:active, html.theme--documenter-dark .select.is-info select.is-active { + box-shadow: 0 0 0 0.125em rgba(2, 76, 125, 0.25); } + html.theme--documenter-dark .select.is-success:not(:hover)::after { + border-color: #008438; } + html.theme--documenter-dark .select.is-success select { + border-color: #008438; } + html.theme--documenter-dark .select.is-success select:hover, html.theme--documenter-dark .select.is-success select.is-hovered { + border-color: #006b2d; } + html.theme--documenter-dark .select.is-success select:focus, html.theme--documenter-dark .select.is-success select.is-focused, html.theme--documenter-dark .select.is-success select:active, html.theme--documenter-dark .select.is-success select.is-active { + box-shadow: 0 0 0 0.125em rgba(0, 132, 56, 0.25); } + html.theme--documenter-dark .select.is-warning:not(:hover)::after { + border-color: #ad8100; } + html.theme--documenter-dark .select.is-warning select { + border-color: #ad8100; } + html.theme--documenter-dark .select.is-warning select:hover, html.theme--documenter-dark .select.is-warning select.is-hovered { + border-color: #946e00; } + html.theme--documenter-dark .select.is-warning select:focus, html.theme--documenter-dark .select.is-warning select.is-focused, html.theme--documenter-dark .select.is-warning select:active, html.theme--documenter-dark .select.is-warning select.is-active { + box-shadow: 0 0 0 0.125em rgba(173, 129, 0, 0.25); } + html.theme--documenter-dark .select.is-danger:not(:hover)::after { + border-color: #9e1b0d; } + html.theme--documenter-dark .select.is-danger select { + border-color: #9e1b0d; } + html.theme--documenter-dark .select.is-danger select:hover, html.theme--documenter-dark .select.is-danger select.is-hovered { + border-color: #86170b; } + html.theme--documenter-dark .select.is-danger select:focus, html.theme--documenter-dark .select.is-danger select.is-focused, html.theme--documenter-dark .select.is-danger select:active, html.theme--documenter-dark .select.is-danger select.is-active { + box-shadow: 0 0 0 0.125em rgba(158, 27, 13, 0.25); } + html.theme--documenter-dark .select.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select { + border-radius: 3px; + font-size: 0.85em; } + html.theme--documenter-dark .select.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .select.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .select.is-disabled::after { + border-color: white; } + html.theme--documenter-dark .select.is-fullwidth { + width: 100%; } + html.theme--documenter-dark .select.is-fullwidth select { + width: 100%; } + html.theme--documenter-dark .select.is-loading::after { + margin-top: 0; + position: absolute; + right: 0.625em; + top: 0.625em; + transform: none; } + html.theme--documenter-dark .select.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.select.is-loading:after { + font-size: 0.85em; } + html.theme--documenter-dark .select.is-loading.is-medium:after { + font-size: 1.25rem; } + html.theme--documenter-dark .select.is-loading.is-large:after { + font-size: 1.5rem; } + html.theme--documenter-dark .file { + align-items: stretch; + display: flex; + justify-content: flex-start; + position: relative; } + html.theme--documenter-dark .file.is-white .file-cta { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .file.is-white:hover .file-cta, html.theme--documenter-dark .file.is-white.is-hovered .file-cta { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .file.is-white:focus .file-cta, html.theme--documenter-dark .file.is-white.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); + color: #0a0a0a; } + html.theme--documenter-dark .file.is-white:active .file-cta, html.theme--documenter-dark .file.is-white.is-active .file-cta { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + html.theme--documenter-dark .file.is-black .file-cta { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + html.theme--documenter-dark .file.is-black:hover .file-cta, html.theme--documenter-dark .file.is-black.is-hovered .file-cta { + background-color: #040404; + border-color: transparent; + color: white; } + html.theme--documenter-dark .file.is-black:focus .file-cta, html.theme--documenter-dark .file.is-black.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); + color: white; } + html.theme--documenter-dark .file.is-black:active .file-cta, html.theme--documenter-dark .file.is-black.is-active .file-cta { + background-color: black; + border-color: transparent; + color: white; } + html.theme--documenter-dark .file.is-light .file-cta { + background-color: #ecf0f1; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .file.is-light:hover .file-cta, html.theme--documenter-dark .file.is-light.is-hovered .file-cta { + background-color: #e5eaec; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .file.is-light:focus .file-cta, html.theme--documenter-dark .file.is-light.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(236, 240, 241, 0.25); + color: #282f2f; } + html.theme--documenter-dark .file.is-light:active .file-cta, html.theme--documenter-dark .file.is-light.is-active .file-cta { + background-color: #dde4e6; + border-color: transparent; + color: #282f2f; } + html.theme--documenter-dark .file.is-dark .file-cta, html.theme--documenter-dark .content kbd.file .file-cta { + background-color: #282f2f; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .file.is-dark:hover .file-cta, html.theme--documenter-dark .content kbd.file:hover .file-cta, html.theme--documenter-dark .file.is-dark.is-hovered .file-cta, html.theme--documenter-dark .content kbd.file.is-hovered .file-cta { + background-color: #232829; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .file.is-dark:focus .file-cta, html.theme--documenter-dark .content kbd.file:focus .file-cta, html.theme--documenter-dark .file.is-dark.is-focused .file-cta, html.theme--documenter-dark .content kbd.file.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(40, 47, 47, 0.25); + color: #ecf0f1; } + html.theme--documenter-dark .file.is-dark:active .file-cta, html.theme--documenter-dark .content kbd.file:active .file-cta, html.theme--documenter-dark .file.is-dark.is-active .file-cta, html.theme--documenter-dark .content kbd.file.is-active .file-cta { + background-color: #1d2122; + border-color: transparent; + color: #ecf0f1; } + html.theme--documenter-dark .file.is-primary .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink .file-cta { + background-color: #375a7f; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-primary:hover .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:hover .file-cta, html.theme--documenter-dark .file.is-primary.is-hovered .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { + background-color: #335476; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-primary:focus .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:focus .file-cta, html.theme--documenter-dark .file.is-primary.is-focused .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(55, 90, 127, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-primary:active .file-cta, html.theme--documenter-dark .docstring > section > a.file.docs-sourcelink:active .file-cta, html.theme--documenter-dark .file.is-primary.is-active .file-cta, html.theme--documenter-dark .docstring > section > a.file.is-active.docs-sourcelink .file-cta { + background-color: #2f4d6d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-link .file-cta { + background-color: #1abc9c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-link:hover .file-cta, html.theme--documenter-dark .file.is-link.is-hovered .file-cta { + background-color: #18b193; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-link:focus .file-cta, html.theme--documenter-dark .file.is-link.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(26, 188, 156, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-link:active .file-cta, html.theme--documenter-dark .file.is-link.is-active .file-cta { + background-color: #17a689; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-info .file-cta { + background-color: #024c7d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-info:hover .file-cta, html.theme--documenter-dark .file.is-info.is-hovered .file-cta { + background-color: #024470; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-info:focus .file-cta, html.theme--documenter-dark .file.is-info.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(2, 76, 125, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-info:active .file-cta, html.theme--documenter-dark .file.is-info.is-active .file-cta { + background-color: #023d64; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-success .file-cta { + background-color: #008438; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-success:hover .file-cta, html.theme--documenter-dark .file.is-success.is-hovered .file-cta { + background-color: #007733; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-success:focus .file-cta, html.theme--documenter-dark .file.is-success.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(0, 132, 56, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-success:active .file-cta, html.theme--documenter-dark .file.is-success.is-active .file-cta { + background-color: #006b2d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-warning .file-cta { + background-color: #ad8100; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-warning:hover .file-cta, html.theme--documenter-dark .file.is-warning.is-hovered .file-cta { + background-color: #a07700; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-warning:focus .file-cta, html.theme--documenter-dark .file.is-warning.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(173, 129, 0, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-warning:active .file-cta, html.theme--documenter-dark .file.is-warning.is-active .file-cta { + background-color: #946e00; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-danger .file-cta { + background-color: #9e1b0d; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-danger:hover .file-cta, html.theme--documenter-dark .file.is-danger.is-hovered .file-cta { + background-color: #92190c; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-danger:focus .file-cta, html.theme--documenter-dark .file.is-danger.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(158, 27, 13, 0.25); + color: #fff; } + html.theme--documenter-dark .file.is-danger:active .file-cta, html.theme--documenter-dark .file.is-danger.is-active .file-cta { + background-color: #86170b; + border-color: transparent; + color: #fff; } + html.theme--documenter-dark .file.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.file { + font-size: 0.85em; } + html.theme--documenter-dark .file.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .file.is-medium .file-icon .fa { + font-size: 21px; } + html.theme--documenter-dark .file.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .file.is-large .file-icon .fa { + font-size: 28px; } + html.theme--documenter-dark .file.has-name .file-cta { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .file.has-name .file-name { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .file.has-name.is-empty .file-cta { + border-radius: 0.4em; } + html.theme--documenter-dark .file.has-name.is-empty .file-name { + display: none; } + html.theme--documenter-dark .file.is-boxed .file-label { + flex-direction: column; } + html.theme--documenter-dark .file.is-boxed .file-cta { + flex-direction: column; + height: auto; + padding: 1em 3em; } + html.theme--documenter-dark .file.is-boxed .file-name { + border-width: 0 1px 1px; } + html.theme--documenter-dark .file.is-boxed .file-icon { + height: 1.5em; + width: 1.5em; } + html.theme--documenter-dark .file.is-boxed .file-icon .fa { + font-size: 21px; } + html.theme--documenter-dark .file.is-boxed.is-small .file-icon .fa, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.file.is-boxed .file-icon .fa { + font-size: 14px; } + html.theme--documenter-dark .file.is-boxed.is-medium .file-icon .fa { + font-size: 28px; } + html.theme--documenter-dark .file.is-boxed.is-large .file-icon .fa { + font-size: 35px; } + html.theme--documenter-dark .file.is-boxed.has-name .file-cta { + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .file.is-boxed.has-name .file-name { + border-radius: 0 0 0.4em 0.4em; + border-width: 0 1px 1px; } + html.theme--documenter-dark .file.is-centered { + justify-content: center; } + html.theme--documenter-dark .file.is-fullwidth .file-label { + width: 100%; } + html.theme--documenter-dark .file.is-fullwidth .file-name { + flex-grow: 1; + max-width: none; } + html.theme--documenter-dark .file.is-right { + justify-content: flex-end; } + html.theme--documenter-dark .file.is-right .file-cta { + border-radius: 0 0.4em 0.4em 0; } + html.theme--documenter-dark .file.is-right .file-name { + border-radius: 0.4em 0 0 0.4em; + border-width: 1px 0 1px 1px; + order: -1; } + html.theme--documenter-dark .file-label { + align-items: stretch; + display: flex; + cursor: pointer; + justify-content: flex-start; + overflow: hidden; + position: relative; } + html.theme--documenter-dark .file-label:hover .file-cta { + background-color: #e5eaec; + color: #282f2f; } + html.theme--documenter-dark .file-label:hover .file-name { + border-color: #596668; } + html.theme--documenter-dark .file-label:active .file-cta { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .file-label:active .file-name { + border-color: #535f61; } + html.theme--documenter-dark .file-input { + height: 100%; + left: 0; + opacity: 0; + outline: none; + position: absolute; + top: 0; + width: 100%; } + html.theme--documenter-dark .file-cta, + html.theme--documenter-dark .file-name { + border-color: #5e6d6f; + border-radius: 0.4em; + font-size: 1em; + padding-left: 1em; + padding-right: 1em; + white-space: nowrap; } + html.theme--documenter-dark .file-cta { + background-color: #ecf0f1; + color: #343c3d; } + html.theme--documenter-dark .file-name { + border-color: #5e6d6f; + border-style: solid; + border-width: 1px 1px 1px 0; + display: block; + max-width: 16em; + overflow: hidden; + text-align: left; + text-overflow: ellipsis; } + html.theme--documenter-dark .file-icon { + align-items: center; + display: flex; + height: 1em; + justify-content: center; + margin-right: 0.5em; + width: 1em; } + html.theme--documenter-dark .file-icon .fa { + font-size: 14px; } + html.theme--documenter-dark .label { + color: #282f2f; + display: block; + font-size: 15px; + font-weight: 700; } + html.theme--documenter-dark .label:not(:last-child) { + margin-bottom: 0.5em; } + html.theme--documenter-dark .label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.label { + font-size: 0.85em; } + html.theme--documenter-dark .label.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .label.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .help { + display: block; + font-size: 0.85em; + margin-top: 0.25rem; } + html.theme--documenter-dark .help.is-white { + color: white; } + html.theme--documenter-dark .help.is-black { + color: #0a0a0a; } + html.theme--documenter-dark .help.is-light { + color: #ecf0f1; } + html.theme--documenter-dark .help.is-dark, html.theme--documenter-dark .content kbd.help { + color: #282f2f; } + html.theme--documenter-dark .help.is-primary, html.theme--documenter-dark .docstring > section > a.help.docs-sourcelink { + color: #375a7f; } + html.theme--documenter-dark .help.is-link { + color: #1abc9c; } + html.theme--documenter-dark .help.is-info { + color: #024c7d; } + html.theme--documenter-dark .help.is-success { + color: #008438; } + html.theme--documenter-dark .help.is-warning { + color: #ad8100; } + html.theme--documenter-dark .help.is-danger { + color: #9e1b0d; } + html.theme--documenter-dark .field:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .field.has-addons { + display: flex; + justify-content: flex-start; } + html.theme--documenter-dark .field.has-addons .control:not(:last-child) { + margin-right: -1px; } + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .button, + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .input, + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, + html.theme--documenter-dark .field.has-addons .control:not(:first-child):not(:last-child) .select select { + border-radius: 0; } + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .button, + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .input, + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, + html.theme--documenter-dark .field.has-addons .control:first-child:not(:only-child) .select select { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .button, + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .input, + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, + html.theme--documenter-dark .field.has-addons .control:last-child:not(:only-child) .select select { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-hovered, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-hovered, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-hovered, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-hovered, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):hover, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-hovered { + z-index: 2; } + html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-focused, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-active, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-focused, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-active, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-focused, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-active { + z-index: 3; } + html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):focus:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-focused:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]):active:hover, html.theme--documenter-dark .field.has-addons .control .button:not([disabled]).is-active:hover, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):focus:hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-focused:hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused:hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused:hover, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]):active:hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, + html.theme--documenter-dark .field.has-addons .control .input:not([disabled]).is-active:hover, + html.theme--documenter-dark .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active:hover, + html.theme--documenter-dark #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active:hover, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):focus:hover, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-focused:hover, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]):active:hover, + html.theme--documenter-dark .field.has-addons .control .select select:not([disabled]).is-active:hover { + z-index: 4; } + html.theme--documenter-dark .field.has-addons .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .field.has-addons.has-addons-centered { + justify-content: center; } + html.theme--documenter-dark .field.has-addons.has-addons-right { + justify-content: flex-end; } + html.theme--documenter-dark .field.has-addons.has-addons-fullwidth .control { + flex-grow: 1; + flex-shrink: 0; } + html.theme--documenter-dark .field.is-grouped { + display: flex; + justify-content: flex-start; } + html.theme--documenter-dark .field.is-grouped > .control { + flex-shrink: 0; } + html.theme--documenter-dark .field.is-grouped > .control:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + html.theme--documenter-dark .field.is-grouped > .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .field.is-grouped.is-grouped-centered { + justify-content: center; } + html.theme--documenter-dark .field.is-grouped.is-grouped-right { + justify-content: flex-end; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline { + flex-wrap: wrap; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:last-child, html.theme--documenter-dark .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:last-child { + margin-bottom: -0.75rem; } + html.theme--documenter-dark .field.is-grouped.is-grouped-multiline:not(:last-child) { + margin-bottom: 0; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .field.is-horizontal { + display: flex; } } + html.theme--documenter-dark .field-label .label { + font-size: inherit; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .field-label { + margin-bottom: 0.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .field-label { + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + margin-right: 1.5rem; + text-align: right; } + html.theme--documenter-dark .field-label.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.field-label { + font-size: 0.85em; + padding-top: 0.375em; } + html.theme--documenter-dark .field-label.is-normal { + padding-top: 0.375em; } + html.theme--documenter-dark .field-label.is-medium { + font-size: 1.25rem; + padding-top: 0.375em; } + html.theme--documenter-dark .field-label.is-large { + font-size: 1.5rem; + padding-top: 0.375em; } } + html.theme--documenter-dark .field-body .field .field { + margin-bottom: 0; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .field-body { + display: flex; + flex-basis: 0; + flex-grow: 5; + flex-shrink: 1; } + html.theme--documenter-dark .field-body .field { + margin-bottom: 0; } + html.theme--documenter-dark .field-body > .field { + flex-shrink: 1; } + html.theme--documenter-dark .field-body > .field:not(.is-narrow) { + flex-grow: 1; } + html.theme--documenter-dark .field-body > .field:not(:last-child) { + margin-right: 0.75rem; } } + html.theme--documenter-dark .control { + box-sizing: border-box; + clear: both; + font-size: 15px; + position: relative; + text-align: left; } + html.theme--documenter-dark .control.has-icons-left .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right .input:focus ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select:focus ~ .icon { + color: #5e6d6f; } + html.theme--documenter-dark .control.has-icons-left .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select.is-small ~ .icon, + html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.select ~ .icon, + html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.select ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-small ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select.is-small ~ .icon, + html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.select ~ .icon, + html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.select ~ .icon { + font-size: 0.85em; } + html.theme--documenter-dark .control.has-icons-left .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-medium ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select.is-medium ~ .icon { + font-size: 1.25rem; } + html.theme--documenter-dark .control.has-icons-left .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, + html.theme--documenter-dark .control.has-icons-left .select.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right .input.is-large ~ .icon, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, + html.theme--documenter-dark .control.has-icons-right .select.is-large ~ .icon { + font-size: 1.5rem; } + html.theme--documenter-dark .control.has-icons-left .icon, html.theme--documenter-dark .control.has-icons-right .icon { + color: #dbdee0; + height: 2.25em; + pointer-events: none; + position: absolute; + top: 0; + width: 2.25em; + z-index: 4; } + html.theme--documenter-dark .control.has-icons-left .input, html.theme--documenter-dark .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, + html.theme--documenter-dark .control.has-icons-left .select select { + padding-left: 2.25em; } + html.theme--documenter-dark .control.has-icons-left .icon.is-left { + left: 0; } + html.theme--documenter-dark .control.has-icons-right .input, html.theme--documenter-dark .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, html.theme--documenter-dark #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, + html.theme--documenter-dark .control.has-icons-right .select select { + padding-right: 2.25em; } + html.theme--documenter-dark .control.has-icons-right .icon.is-right { + right: 0; } + html.theme--documenter-dark .control.is-loading::after { + position: absolute !important; + right: 0.625em; + top: 0.625em; + z-index: 4; } + html.theme--documenter-dark .control.is-loading.is-small:after, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.control.is-loading:after { + font-size: 0.85em; } + html.theme--documenter-dark .control.is-loading.is-medium:after { + font-size: 1.25rem; } + html.theme--documenter-dark .control.is-loading.is-large:after { + font-size: 1.5rem; } + html.theme--documenter-dark .breadcrumb { + font-size: 15px; + white-space: nowrap; } + html.theme--documenter-dark .breadcrumb a { + align-items: center; + color: #1abc9c; + display: flex; + justify-content: center; + padding: 0 0.75em; } + html.theme--documenter-dark .breadcrumb a:hover { + color: #1dd2af; } + html.theme--documenter-dark .breadcrumb li { + align-items: center; + display: flex; } + html.theme--documenter-dark .breadcrumb li:first-child a { + padding-left: 0; } + html.theme--documenter-dark .breadcrumb li.is-active a { + color: #f2f2f2; + cursor: default; + pointer-events: none; } + html.theme--documenter-dark .breadcrumb li + li::before { + color: #8c9b9d; + content: "\0002f"; } + html.theme--documenter-dark .breadcrumb ul, + html.theme--documenter-dark .breadcrumb ol { + align-items: flex-start; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + html.theme--documenter-dark .breadcrumb .icon:first-child { + margin-right: 0.5em; } + html.theme--documenter-dark .breadcrumb .icon:last-child { + margin-left: 0.5em; } + html.theme--documenter-dark .breadcrumb.is-centered ol, + html.theme--documenter-dark .breadcrumb.is-centered ul { + justify-content: center; } + html.theme--documenter-dark .breadcrumb.is-right ol, + html.theme--documenter-dark .breadcrumb.is-right ul { + justify-content: flex-end; } + html.theme--documenter-dark .breadcrumb.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.breadcrumb { + font-size: 0.85em; } + html.theme--documenter-dark .breadcrumb.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .breadcrumb.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .breadcrumb.has-arrow-separator li + li::before { + content: "\02192"; } + html.theme--documenter-dark .breadcrumb.has-bullet-separator li + li::before { + content: "\02022"; } + html.theme--documenter-dark .breadcrumb.has-dot-separator li + li::before { + content: "\000b7"; } + html.theme--documenter-dark .breadcrumb.has-succeeds-separator li + li::before { + content: "\0227B"; } + html.theme--documenter-dark .card { + background-color: white; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + color: #fff; + max-width: 100%; + position: relative; } + html.theme--documenter-dark .card-header { + background-color: transparent; + align-items: stretch; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + display: flex; } + html.theme--documenter-dark .card-header-title { + align-items: center; + color: #f2f2f2; + display: flex; + flex-grow: 1; + font-weight: 700; + padding: 0.75rem; } + html.theme--documenter-dark .card-header-title.is-centered { + justify-content: center; } + html.theme--documenter-dark .card-header-icon { + align-items: center; + cursor: pointer; + display: flex; + justify-content: center; + padding: 0.75rem; } + html.theme--documenter-dark .card-image { + display: block; + position: relative; } + html.theme--documenter-dark .card-content { + background-color: transparent; + padding: 1rem 1.25rem; } + html.theme--documenter-dark .card-footer { + background-color: transparent; + border-top: 1px solid #5e6d6f; + align-items: stretch; + display: flex; } + html.theme--documenter-dark .card-footer-item { + align-items: center; + display: flex; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + justify-content: center; + padding: 0.75rem; } + html.theme--documenter-dark .card-footer-item:not(:last-child) { + border-right: 1px solid #5e6d6f; } + html.theme--documenter-dark .card .media:not(:last-child) { + margin-bottom: 1.5rem; } + html.theme--documenter-dark .dropdown { + display: inline-flex; + position: relative; + vertical-align: top; } + html.theme--documenter-dark .dropdown.is-active .dropdown-menu, html.theme--documenter-dark .dropdown.is-hoverable:hover .dropdown-menu { + display: block; } + html.theme--documenter-dark .dropdown.is-right .dropdown-menu { + left: auto; + right: 0; } + html.theme--documenter-dark .dropdown.is-up .dropdown-menu { + bottom: 100%; + padding-bottom: 4px; + padding-top: initial; + top: auto; } + html.theme--documenter-dark .dropdown-menu { + display: none; + left: 0; + min-width: 12rem; + padding-top: 4px; + position: absolute; + top: 100%; + z-index: 20; } + html.theme--documenter-dark .dropdown-content { + background-color: #282f2f; + border-radius: 0.4em; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + html.theme--documenter-dark .dropdown-item { + color: #fff; + display: block; + font-size: 0.875rem; + line-height: 1.5; + padding: 0.375rem 1rem; + position: relative; } + html.theme--documenter-dark a.dropdown-item, + html.theme--documenter-dark button.dropdown-item { + padding-right: 3rem; + text-align: left; + white-space: nowrap; + width: 100%; } + html.theme--documenter-dark a.dropdown-item:hover, + html.theme--documenter-dark button.dropdown-item:hover { + background-color: #282f2f; + color: #0a0a0a; } + html.theme--documenter-dark a.dropdown-item.is-active, + html.theme--documenter-dark button.dropdown-item.is-active { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .dropdown-divider { + background-color: #5e6d6f; + border: none; + display: block; + height: 1px; + margin: 0.5rem 0; } + html.theme--documenter-dark .level { + align-items: center; + justify-content: space-between; } + html.theme--documenter-dark .level code { + border-radius: 0.4em; } + html.theme--documenter-dark .level img { + display: inline-block; + vertical-align: top; } + html.theme--documenter-dark .level.is-mobile { + display: flex; } + html.theme--documenter-dark .level.is-mobile .level-left, + html.theme--documenter-dark .level.is-mobile .level-right { + display: flex; } + html.theme--documenter-dark .level.is-mobile .level-left + .level-right { + margin-top: 0; } + html.theme--documenter-dark .level.is-mobile .level-item:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + html.theme--documenter-dark .level.is-mobile .level-item:not(.is-narrow) { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level { + display: flex; } + html.theme--documenter-dark .level > .level-item:not(.is-narrow) { + flex-grow: 1; } } + html.theme--documenter-dark .level-item { + align-items: center; + display: flex; + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; } + html.theme--documenter-dark .level-item .title, + html.theme--documenter-dark .level-item .subtitle { + margin-bottom: 0; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .level-item:not(:last-child) { + margin-bottom: 0.75rem; } } + html.theme--documenter-dark .level-left, + html.theme--documenter-dark .level-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .level-left .level-item.is-flexible, + html.theme--documenter-dark .level-right .level-item.is-flexible { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level-left .level-item:not(:last-child), + html.theme--documenter-dark .level-right .level-item:not(:last-child) { + margin-right: 0.75rem; } } + html.theme--documenter-dark .level-left { + align-items: center; + justify-content: flex-start; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .level-left + .level-right { + margin-top: 1.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level-left { + display: flex; } } + html.theme--documenter-dark .level-right { + align-items: center; + justify-content: flex-end; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .level-right { + display: flex; } } + html.theme--documenter-dark .list { + background-color: white; + border-radius: 0.4em; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .list-item { + display: block; + padding: 0.5em 1em; } + html.theme--documenter-dark .list-item:not(a) { + color: #fff; } + html.theme--documenter-dark .list-item:first-child { + border-top-left-radius: 0.4em; + border-top-right-radius: 0.4em; } + html.theme--documenter-dark .list-item:last-child { + border-bottom-left-radius: 0.4em; + border-bottom-right-radius: 0.4em; } + html.theme--documenter-dark .list-item:not(:last-child) { + border-bottom: 1px solid #5e6d6f; } + html.theme--documenter-dark .list-item.is-active { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark a.list-item { + background-color: #282f2f; + cursor: pointer; } + html.theme--documenter-dark .media { + align-items: flex-start; + display: flex; + text-align: left; } + html.theme--documenter-dark .media .content:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .media .media { + border-top: 1px solid rgba(94, 109, 111, 0.5); + display: flex; + padding-top: 0.75rem; } + html.theme--documenter-dark .media .media .content:not(:last-child), + html.theme--documenter-dark .media .media .control:not(:last-child) { + margin-bottom: 0.5rem; } + html.theme--documenter-dark .media .media .media { + padding-top: 0.5rem; } + html.theme--documenter-dark .media .media .media + .media { + margin-top: 0.5rem; } + html.theme--documenter-dark .media + .media { + border-top: 1px solid rgba(94, 109, 111, 0.5); + margin-top: 1rem; + padding-top: 1rem; } + html.theme--documenter-dark .media.is-large + .media { + margin-top: 1.5rem; + padding-top: 1.5rem; } + html.theme--documenter-dark .media-left, + html.theme--documenter-dark .media-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .media-left { + margin-right: 1rem; } + html.theme--documenter-dark .media-right { + margin-left: 1rem; } + html.theme--documenter-dark .media-content { + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + text-align: left; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .media-content { + overflow-x: auto; } } + html.theme--documenter-dark .menu { + font-size: 15px; } + html.theme--documenter-dark .menu.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.menu { + font-size: 0.85em; } + html.theme--documenter-dark .menu.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .menu.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .menu-list { + line-height: 1.25; } + html.theme--documenter-dark .menu-list a { + border-radius: 3px; + color: #fff; + display: block; + padding: 0.5em 0.75em; } + html.theme--documenter-dark .menu-list a:hover { + background-color: #282f2f; + color: #f2f2f2; } + html.theme--documenter-dark .menu-list a.is-active { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .menu-list li ul { + border-left: 1px solid #5e6d6f; + margin: 0.75em; + padding-left: 0.75em; } + html.theme--documenter-dark .menu-label { + color: white; + font-size: 0.75em; + letter-spacing: 0.1em; + text-transform: uppercase; } + html.theme--documenter-dark .menu-label:not(:first-child) { + margin-top: 1em; } + html.theme--documenter-dark .menu-label:not(:last-child) { + margin-bottom: 1em; } + html.theme--documenter-dark .message { + background-color: #282f2f; + border-radius: 0.4em; + font-size: 15px; } + html.theme--documenter-dark .message strong { + color: currentColor; } + html.theme--documenter-dark .message a:not(.button):not(.tag):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + html.theme--documenter-dark .message.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.message { + font-size: 0.85em; } + html.theme--documenter-dark .message.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .message.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .message.is-white { + background-color: white; } + html.theme--documenter-dark .message.is-white .message-header { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .message.is-white .message-body { + border-color: white; + color: #4d4d4d; } + html.theme--documenter-dark .message.is-black { + background-color: #fafafa; } + html.theme--documenter-dark .message.is-black .message-header { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .message.is-black .message-body { + border-color: #0a0a0a; + color: #090909; } + html.theme--documenter-dark .message.is-light { + background-color: #f9fafb; } + html.theme--documenter-dark .message.is-light .message-header { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .message.is-light .message-body { + border-color: #ecf0f1; + color: #505050; } + html.theme--documenter-dark .message.is-dark, html.theme--documenter-dark .content kbd.message { + background-color: #f9fafa; } + html.theme--documenter-dark .message.is-dark .message-header, html.theme--documenter-dark .content kbd.message .message-header { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .message.is-dark .message-body, html.theme--documenter-dark .content kbd.message .message-body { + border-color: #282f2f; + color: #212526; } + html.theme--documenter-dark .message.is-primary, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink { + background-color: #f8fafc; } + html.theme--documenter-dark .message.is-primary .message-header, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-header { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .message.is-primary .message-body, html.theme--documenter-dark .docstring > section > a.message.docs-sourcelink .message-body { + border-color: #375a7f; + color: #2b4159; } + html.theme--documenter-dark .message.is-link { + background-color: #f6fefc; } + html.theme--documenter-dark .message.is-link .message-header { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .message.is-link .message-body { + border-color: #1abc9c; + color: #0b2f28; } + html.theme--documenter-dark .message.is-info { + background-color: #f5fbff; } + html.theme--documenter-dark .message.is-info .message-header { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .message.is-info .message-body { + border-color: #024c7d; + color: #033659; } + html.theme--documenter-dark .message.is-success { + background-color: #f5fff9; } + html.theme--documenter-dark .message.is-success .message-header { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .message.is-success .message-body { + border-color: #008438; + color: #023518; } + html.theme--documenter-dark .message.is-warning { + background-color: #fffcf5; } + html.theme--documenter-dark .message.is-warning .message-header { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .message.is-warning .message-body { + border-color: #ad8100; + color: #3d2e03; } + html.theme--documenter-dark .message.is-danger { + background-color: #fef6f6; } + html.theme--documenter-dark .message.is-danger .message-header { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .message.is-danger .message-body { + border-color: #9e1b0d; + color: #7a170c; } + html.theme--documenter-dark .message-header { + align-items: center; + background-color: #fff; + border-radius: 0.4em 0.4em 0 0; + color: rgba(0, 0, 0, 0.7); + display: flex; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.75em; + position: relative; } + html.theme--documenter-dark .message-header .delete { + flex-grow: 0; + flex-shrink: 0; + margin-left: 0.75em; } + html.theme--documenter-dark .message-header + .message-body { + border-width: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; } + html.theme--documenter-dark .message-body { + border-color: #5e6d6f; + border-radius: 0.4em; + border-style: solid; + border-width: 0 0 0 4px; + color: #fff; + padding: 1em 1.25em; } + html.theme--documenter-dark .message-body code, + html.theme--documenter-dark .message-body pre { + background-color: white; } + html.theme--documenter-dark .message-body pre code { + background-color: transparent; } + html.theme--documenter-dark .modal { + align-items: center; + display: none; + flex-direction: column; + justify-content: center; + overflow: hidden; + position: fixed; + z-index: 40; } + html.theme--documenter-dark .modal.is-active { + display: flex; } + html.theme--documenter-dark .modal-background { + background-color: rgba(10, 10, 10, 0.86); } + html.theme--documenter-dark .modal-content, + html.theme--documenter-dark .modal-card { + margin: 0 20px; + max-height: calc(100vh - 160px); + overflow: auto; + position: relative; + width: 100%; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .modal-content, + html.theme--documenter-dark .modal-card { + margin: 0 auto; + max-height: calc(100vh - 40px); + width: 640px; } } + html.theme--documenter-dark .modal-close { + background: none; + height: 40px; + position: fixed; + right: 20px; + top: 20px; + width: 40px; } + html.theme--documenter-dark .modal-card { + display: flex; + flex-direction: column; + max-height: calc(100vh - 40px); + overflow: hidden; + -ms-overflow-y: visible; } + html.theme--documenter-dark .modal-card-head, + html.theme--documenter-dark .modal-card-foot { + align-items: center; + background-color: #282f2f; + display: flex; + flex-shrink: 0; + justify-content: flex-start; + padding: 20px; + position: relative; } + html.theme--documenter-dark .modal-card-head { + border-bottom: 1px solid #5e6d6f; + border-top-left-radius: 8px; + border-top-right-radius: 8px; } + html.theme--documenter-dark .modal-card-title { + color: #f2f2f2; + flex-grow: 1; + flex-shrink: 0; + font-size: 1.5rem; + line-height: 1; } + html.theme--documenter-dark .modal-card-foot { + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark .modal-card-foot .button:not(:last-child) { + margin-right: 0.5em; } + html.theme--documenter-dark .modal-card-body { + -webkit-overflow-scrolling: touch; + background-color: white; + flex-grow: 1; + flex-shrink: 1; + overflow: auto; + padding: 20px; } + html.theme--documenter-dark .navbar { + background-color: #375a7f; + min-height: 4rem; + position: relative; + z-index: 30; } + html.theme--documenter-dark .navbar.is-white { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link { + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-brand .navbar-link::after { + border-color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-burger { + color: #0a0a0a; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-white .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-white .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link { + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-white .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-white .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-white .navbar-end .navbar-link::after { + border-color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .navbar.is-white .navbar-dropdown a.navbar-item.is-active { + background-color: white; + color: #0a0a0a; } } + html.theme--documenter-dark .navbar.is-black { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link { + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link.is-active { + background-color: black; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-brand .navbar-link::after { + border-color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-burger { + color: white; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-black .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-black .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link { + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-black .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-black .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link.is-active { + background-color: black; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-black .navbar-end .navbar-link::after { + border-color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { + background-color: black; + color: white; } + html.theme--documenter-dark .navbar.is-black .navbar-dropdown a.navbar-item.is-active { + background-color: #0a0a0a; + color: white; } } + html.theme--documenter-dark .navbar.is-light { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link { + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link.is-active { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-brand .navbar-link::after { + border-color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-burger { + color: #282f2f; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-light .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-light .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link { + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-light .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-light .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link.is-active { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-light .navbar-end .navbar-link::after { + border-color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .navbar.is-light .navbar-dropdown a.navbar-item.is-active { + background-color: #ecf0f1; + color: #282f2f; } } + html.theme--documenter-dark .navbar.is-dark, html.theme--documenter-dark .content kbd.navbar { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-brand > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link { + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link.is-active { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-brand .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-brand .navbar-link::after { + border-color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-burger, html.theme--documenter-dark .content kbd.navbar .navbar-burger { + color: #ecf0f1; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-dark .navbar-start > .navbar-item, html.theme--documenter-dark .content kbd.navbar .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-dark .navbar-end > .navbar-item, + html.theme--documenter-dark .content kbd.navbar .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link { + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-dark .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:focus, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link:hover, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link.is-active, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link.is-active { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-start .navbar-link::after, html.theme--documenter-dark .content kbd.navbar .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-dark .navbar-end .navbar-link::after, + html.theme--documenter-dark .content kbd.navbar .navbar-end .navbar-link::after { + border-color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, + html.theme--documenter-dark .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { + background-color: #282f2f; + color: #ecf0f1; } } + html.theme--documenter-dark .navbar.is-primary, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-brand > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-brand > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-brand .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-burger, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-primary .navbar-start > .navbar-item, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-primary .navbar-end > .navbar-item, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-primary .navbar-start > a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:focus, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-start .navbar-link::after, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-primary .navbar-end .navbar-link::after, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, + html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { + background-color: #375a7f; + color: #fff; } } + html.theme--documenter-dark .navbar.is-link { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link.is-active { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-link .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-link .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-link .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-link .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link.is-active { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-link .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .navbar.is-link .navbar-dropdown a.navbar-item.is-active { + background-color: #1abc9c; + color: #fff; } } + html.theme--documenter-dark .navbar.is-info { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link.is-active { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-info .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-info .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-info .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-info .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link.is-active { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-info .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .navbar.is-info .navbar-dropdown a.navbar-item.is-active { + background-color: #024c7d; + color: #fff; } } + html.theme--documenter-dark .navbar.is-success { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link.is-active { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-success .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-success .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-success .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-success .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link.is-active { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-success .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .navbar.is-success .navbar-dropdown a.navbar-item.is-active { + background-color: #008438; + color: #fff; } } + html.theme--documenter-dark .navbar.is-warning { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link.is-active { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-warning .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-warning .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-warning .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link.is-active { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-warning .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { + background-color: #ad8100; + color: #fff; } } + html.theme--documenter-dark .navbar.is-danger { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-brand > .navbar-item, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-brand > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link.is-active { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-brand .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar.is-danger .navbar-start > .navbar-item, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link, + html.theme--documenter-dark .navbar.is-danger .navbar-end > .navbar-item, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link { + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:focus, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item:hover, html.theme--documenter-dark .navbar.is-danger .navbar-start > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-end > a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:focus, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link:hover, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link.is-active { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-start .navbar-link::after, + html.theme--documenter-dark .navbar.is-danger .navbar-end .navbar-link::after { + border-color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, + html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, + html.theme--documenter-dark .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { + background-color: #9e1b0d; + color: #fff; } } + html.theme--documenter-dark .navbar > .container { + align-items: stretch; + display: flex; + min-height: 4rem; + width: 100%; } + html.theme--documenter-dark .navbar.has-shadow { + box-shadow: 0 2px 0 0 #282f2f; } + html.theme--documenter-dark .navbar.is-fixed-bottom, html.theme--documenter-dark .navbar.is-fixed-top { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + html.theme--documenter-dark .navbar.is-fixed-bottom { + bottom: 0; } + html.theme--documenter-dark .navbar.is-fixed-bottom.has-shadow { + box-shadow: 0 -2px 0 0 #282f2f; } + html.theme--documenter-dark .navbar.is-fixed-top { + top: 0; } + html.theme--documenter-dark html.has-navbar-fixed-top, + html.theme--documenter-dark body.has-navbar-fixed-top { + padding-top: 4rem; } + html.theme--documenter-dark html.has-navbar-fixed-bottom, + html.theme--documenter-dark body.has-navbar-fixed-bottom { + padding-bottom: 4rem; } + html.theme--documenter-dark .navbar-brand, + html.theme--documenter-dark .navbar-tabs { + align-items: stretch; + display: flex; + flex-shrink: 0; + min-height: 4rem; } + html.theme--documenter-dark .navbar-brand a.navbar-item:focus, html.theme--documenter-dark .navbar-brand a.navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .navbar-tabs { + -webkit-overflow-scrolling: touch; + max-width: 100vw; + overflow-x: auto; + overflow-y: hidden; } + html.theme--documenter-dark .navbar-burger { + color: #fff; + cursor: pointer; + display: block; + height: 4rem; + position: relative; + width: 4rem; + margin-left: auto; } + html.theme--documenter-dark .navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: calc(50% - 8px); + position: absolute; + transform-origin: center; + transition-duration: 86ms; + transition-property: background-color, opacity, transform; + transition-timing-function: ease-out; + width: 16px; } + html.theme--documenter-dark .navbar-burger span:nth-child(1) { + top: calc(50% - 6px); } + html.theme--documenter-dark .navbar-burger span:nth-child(2) { + top: calc(50% - 1px); } + html.theme--documenter-dark .navbar-burger span:nth-child(3) { + top: calc(50% + 4px); } + html.theme--documenter-dark .navbar-burger:hover { + background-color: rgba(0, 0, 0, 0.05); } + html.theme--documenter-dark .navbar-burger.is-active span:nth-child(1) { + transform: translateY(5px) rotate(45deg); } + html.theme--documenter-dark .navbar-burger.is-active span:nth-child(2) { + opacity: 0; } + html.theme--documenter-dark .navbar-burger.is-active span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); } + html.theme--documenter-dark .navbar-menu { + display: none; } + html.theme--documenter-dark .navbar-item, + html.theme--documenter-dark .navbar-link { + color: #fff; + display: block; + line-height: 1.5; + padding: 0.5rem 0.75rem; + position: relative; } + html.theme--documenter-dark .navbar-item .icon:only-child, + html.theme--documenter-dark .navbar-link .icon:only-child { + margin-left: -0.25rem; + margin-right: -0.25rem; } + html.theme--documenter-dark a.navbar-item, + html.theme--documenter-dark .navbar-link { + cursor: pointer; } + html.theme--documenter-dark a.navbar-item:focus, html.theme--documenter-dark a.navbar-item:focus-within, html.theme--documenter-dark a.navbar-item:hover, html.theme--documenter-dark a.navbar-item.is-active, + html.theme--documenter-dark .navbar-link:focus, + html.theme--documenter-dark .navbar-link:focus-within, + html.theme--documenter-dark .navbar-link:hover, + html.theme--documenter-dark .navbar-link.is-active { + background-color: transparent; + color: #1abc9c; } + html.theme--documenter-dark .navbar-item { + display: block; + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .navbar-item img { + max-height: 1.75rem; } + html.theme--documenter-dark .navbar-item.has-dropdown { + padding: 0; } + html.theme--documenter-dark .navbar-item.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .navbar-item.is-tab { + border-bottom: 1px solid transparent; + min-height: 4rem; + padding-bottom: calc(0.5rem - 1px); } + html.theme--documenter-dark .navbar-item.is-tab:focus, html.theme--documenter-dark .navbar-item.is-tab:hover { + background-color: transparent; + border-bottom-color: #1abc9c; } + html.theme--documenter-dark .navbar-item.is-tab.is-active { + background-color: transparent; + border-bottom-color: #1abc9c; + border-bottom-style: solid; + border-bottom-width: 3px; + color: #1abc9c; + padding-bottom: calc(0.5rem - 3px); } + html.theme--documenter-dark .navbar-content { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .navbar-link:not(.is-arrowless) { + padding-right: 2.5em; } + html.theme--documenter-dark .navbar-link:not(.is-arrowless)::after { + border-color: #fff; + margin-top: -0.375em; + right: 1.125em; } + html.theme--documenter-dark .navbar-dropdown { + font-size: 0.875rem; + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + html.theme--documenter-dark .navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; } + html.theme--documenter-dark .navbar-divider { + background-color: rgba(0, 0, 0, 0.2); + border: none; + display: none; + height: 2px; + margin: 0.5rem 0; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .navbar > .container { + display: block; } + html.theme--documenter-dark .navbar-brand .navbar-item, + html.theme--documenter-dark .navbar-tabs .navbar-item { + align-items: center; + display: flex; } + html.theme--documenter-dark .navbar-link::after { + display: none; } + html.theme--documenter-dark .navbar-menu { + background-color: #375a7f; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + padding: 0.5rem 0; } + html.theme--documenter-dark .navbar-menu.is-active { + display: block; } + html.theme--documenter-dark .navbar.is-fixed-bottom-touch, html.theme--documenter-dark .navbar.is-fixed-top-touch { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + html.theme--documenter-dark .navbar.is-fixed-bottom-touch { + bottom: 0; } + html.theme--documenter-dark .navbar.is-fixed-bottom-touch.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .navbar.is-fixed-top-touch { + top: 0; } + html.theme--documenter-dark .navbar.is-fixed-top .navbar-menu, html.theme--documenter-dark .navbar.is-fixed-top-touch .navbar-menu { + -webkit-overflow-scrolling: touch; + max-height: calc(100vh - 4rem); + overflow: auto; } + html.theme--documenter-dark html.has-navbar-fixed-top-touch, + html.theme--documenter-dark body.has-navbar-fixed-top-touch { + padding-top: 4rem; } + html.theme--documenter-dark html.has-navbar-fixed-bottom-touch, + html.theme--documenter-dark body.has-navbar-fixed-bottom-touch { + padding-bottom: 4rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .navbar, + html.theme--documenter-dark .navbar-menu, + html.theme--documenter-dark .navbar-start, + html.theme--documenter-dark .navbar-end { + align-items: stretch; + display: flex; } + html.theme--documenter-dark .navbar { + min-height: 4rem; } + html.theme--documenter-dark .navbar.is-spaced { + padding: 1rem 2rem; } + html.theme--documenter-dark .navbar.is-spaced .navbar-start, + html.theme--documenter-dark .navbar.is-spaced .navbar-end { + align-items: center; } + html.theme--documenter-dark .navbar.is-spaced a.navbar-item, + html.theme--documenter-dark .navbar.is-spaced .navbar-link { + border-radius: 0.4em; } + html.theme--documenter-dark .navbar.is-transparent a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent a.navbar-item:hover, html.theme--documenter-dark .navbar.is-transparent a.navbar-item.is-active, + html.theme--documenter-dark .navbar.is-transparent .navbar-link:focus, + html.theme--documenter-dark .navbar.is-transparent .navbar-link:hover, + html.theme--documenter-dark .navbar.is-transparent .navbar-link.is-active { + background-color: transparent !important; } + html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, html.theme--documenter-dark .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { + background-color: transparent !important; } + html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { + background-color: transparent; + color: #dbdee0; } + html.theme--documenter-dark .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { + background-color: transparent; + color: #1abc9c; } + html.theme--documenter-dark .navbar-burger { + display: none; } + html.theme--documenter-dark .navbar-item, + html.theme--documenter-dark .navbar-link { + align-items: center; + display: flex; } + html.theme--documenter-dark .navbar-item { + display: flex; } + html.theme--documenter-dark .navbar-item.has-dropdown { + align-items: stretch; } + html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-link::after { + transform: rotate(135deg) translate(0.25em, -0.25em); } + html.theme--documenter-dark .navbar-item.has-dropdown-up .navbar-dropdown { + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 8px 8px 0 0; + border-top: none; + bottom: 100%; + box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); + top: auto; } + html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; } + .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown, html.theme--documenter-dark .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { + opacity: 1; + pointer-events: auto; + transform: translateY(0); } + html.theme--documenter-dark .navbar-menu { + flex-grow: 1; + flex-shrink: 0; } + html.theme--documenter-dark .navbar-start { + justify-content: flex-start; + margin-right: auto; } + html.theme--documenter-dark .navbar-end { + justify-content: flex-end; + margin-left: auto; } + html.theme--documenter-dark .navbar-dropdown { + background-color: #375a7f; + border-bottom-left-radius: 8px; + border-bottom-right-radius: 8px; + border-top: 1px solid rgba(0, 0, 0, 0.2); + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); + display: none; + font-size: 0.875rem; + left: 0; + min-width: 100%; + position: absolute; + top: 100%; + z-index: 20; } + html.theme--documenter-dark .navbar-dropdown .navbar-item { + padding: 0.375rem 1rem; + white-space: nowrap; } + html.theme--documenter-dark .navbar-dropdown a.navbar-item { + padding-right: 3rem; } + html.theme--documenter-dark .navbar-dropdown a.navbar-item:focus, html.theme--documenter-dark .navbar-dropdown a.navbar-item:hover { + background-color: transparent; + color: #dbdee0; } + html.theme--documenter-dark .navbar-dropdown a.navbar-item.is-active { + background-color: transparent; + color: #1abc9c; } + .navbar.is-spaced html.theme--documenter-dark .navbar-dropdown, html.theme--documenter-dark .navbar-dropdown.is-boxed { + border-radius: 8px; + border-top: none; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + display: block; + opacity: 0; + pointer-events: none; + top: calc(100% + (-4px)); + transform: translateY(-5px); + transition-duration: 86ms; + transition-property: opacity, transform; } + html.theme--documenter-dark .navbar-dropdown.is-right { + left: auto; + right: 0; } + html.theme--documenter-dark .navbar-divider { + display: block; } + html.theme--documenter-dark .navbar > .container .navbar-brand, + html.theme--documenter-dark .container > .navbar .navbar-brand { + margin-left: -.75rem; } + html.theme--documenter-dark .navbar > .container .navbar-menu, + html.theme--documenter-dark .container > .navbar .navbar-menu { + margin-right: -.75rem; } + html.theme--documenter-dark .navbar.is-fixed-bottom-desktop, html.theme--documenter-dark .navbar.is-fixed-top-desktop { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + html.theme--documenter-dark .navbar.is-fixed-bottom-desktop { + bottom: 0; } + html.theme--documenter-dark .navbar.is-fixed-bottom-desktop.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .navbar.is-fixed-top-desktop { + top: 0; } + html.theme--documenter-dark html.has-navbar-fixed-top-desktop, + html.theme--documenter-dark body.has-navbar-fixed-top-desktop { + padding-top: 4rem; } + html.theme--documenter-dark html.has-navbar-fixed-bottom-desktop, + html.theme--documenter-dark body.has-navbar-fixed-bottom-desktop { + padding-bottom: 4rem; } + html.theme--documenter-dark html.has-spaced-navbar-fixed-top, + html.theme--documenter-dark body.has-spaced-navbar-fixed-top { + padding-top: 6rem; } + html.theme--documenter-dark html.has-spaced-navbar-fixed-bottom, + html.theme--documenter-dark body.has-spaced-navbar-fixed-bottom { + padding-bottom: 6rem; } + html.theme--documenter-dark a.navbar-item.is-active, + html.theme--documenter-dark .navbar-link.is-active { + color: #1abc9c; } + html.theme--documenter-dark a.navbar-item.is-active:not(:focus):not(:hover), + html.theme--documenter-dark .navbar-link.is-active:not(:focus):not(:hover) { + background-color: transparent; } + html.theme--documenter-dark .navbar-item.has-dropdown:focus .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown:hover .navbar-link, html.theme--documenter-dark .navbar-item.has-dropdown.is-active .navbar-link { + background-color: transparent; } } + html.theme--documenter-dark .hero.is-fullheight-with-navbar { + min-height: calc(100vh - 4rem); } + html.theme--documenter-dark .pagination { + font-size: 15px; + margin: -0.25rem; } + html.theme--documenter-dark .pagination.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination { + font-size: 0.85em; } + html.theme--documenter-dark .pagination.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .pagination.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .pagination.is-rounded .pagination-previous, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, + html.theme--documenter-dark .pagination.is-rounded .pagination-next, + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { + padding-left: 1em; + padding-right: 1em; + border-radius: 290486px; } + html.theme--documenter-dark .pagination.is-rounded .pagination-link, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { + border-radius: 290486px; } + html.theme--documenter-dark .pagination, + html.theme--documenter-dark .pagination-list { + align-items: center; + display: flex; + justify-content: center; + text-align: center; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark .pagination-ellipsis { + font-size: 1em; + justify-content: center; + margin: 0.25rem; + padding-left: 0.5em; + padding-right: 0.5em; + text-align: center; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-link { + border-color: #5e6d6f; + color: #1abc9c; + min-width: 2.25em; } + html.theme--documenter-dark .pagination-previous:hover, + html.theme--documenter-dark .pagination-next:hover, + html.theme--documenter-dark .pagination-link:hover { + border-color: #8c9b9d; + color: #1dd2af; } + html.theme--documenter-dark .pagination-previous:focus, + html.theme--documenter-dark .pagination-next:focus, + html.theme--documenter-dark .pagination-link:focus { + border-color: #8c9b9d; } + html.theme--documenter-dark .pagination-previous:active, + html.theme--documenter-dark .pagination-next:active, + html.theme--documenter-dark .pagination-link:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } + html.theme--documenter-dark .pagination-previous[disabled], + html.theme--documenter-dark .pagination-next[disabled], + html.theme--documenter-dark .pagination-link[disabled] { + background-color: #dbdee0; + border-color: #dbdee0; + box-shadow: none; + color: #5e6d6f; + opacity: 0.5; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next { + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + html.theme--documenter-dark .pagination-link.is-current { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .pagination-ellipsis { + color: #8c9b9d; + pointer-events: none; } + html.theme--documenter-dark .pagination-list { + flex-wrap: wrap; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .pagination { + flex-wrap: wrap; } + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .pagination-next { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .pagination-list li { + flex-grow: 1; + flex-shrink: 1; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .pagination-list { + flex-grow: 1; + flex-shrink: 1; + justify-content: flex-start; + order: 1; } + html.theme--documenter-dark .pagination-previous { + order: 2; } + html.theme--documenter-dark .pagination-next { + order: 3; } + html.theme--documenter-dark .pagination { + justify-content: space-between; } + html.theme--documenter-dark .pagination.is-centered .pagination-previous { + order: 1; } + html.theme--documenter-dark .pagination.is-centered .pagination-list { + justify-content: center; + order: 2; } + html.theme--documenter-dark .pagination.is-centered .pagination-next { + order: 3; } + html.theme--documenter-dark .pagination.is-right .pagination-previous { + order: 1; } + html.theme--documenter-dark .pagination.is-right .pagination-next { + order: 2; } + html.theme--documenter-dark .pagination.is-right .pagination-list { + justify-content: flex-end; + order: 3; } } + html.theme--documenter-dark .panel { + font-size: 15px; } + html.theme--documenter-dark .panel:not(:last-child) { + margin-bottom: 1.5rem; } + html.theme--documenter-dark .panel-heading, + html.theme--documenter-dark .panel-tabs, + html.theme--documenter-dark .panel-block { + border-bottom: 1px solid #5e6d6f; + border-left: 1px solid #5e6d6f; + border-right: 1px solid #5e6d6f; } + html.theme--documenter-dark .panel-heading:first-child, + html.theme--documenter-dark .panel-tabs:first-child, + html.theme--documenter-dark .panel-block:first-child { + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark .panel-heading { + background-color: #282f2f; + border-radius: 0.4em 0.4em 0 0; + color: #f2f2f2; + font-size: 1.25em; + font-weight: 300; + line-height: 1.25; + padding: 0.5em 0.75em; } + html.theme--documenter-dark .panel-tabs { + align-items: flex-end; + display: flex; + font-size: 0.875em; + justify-content: center; } + html.theme--documenter-dark .panel-tabs a { + border-bottom: 1px solid #5e6d6f; + margin-bottom: -1px; + padding: 0.5em; } + html.theme--documenter-dark .panel-tabs a.is-active { + border-bottom-color: #343c3d; + color: #17a689; } + html.theme--documenter-dark .panel-list a { + color: #fff; } + html.theme--documenter-dark .panel-list a:hover { + color: #1abc9c; } + html.theme--documenter-dark .panel-block { + align-items: center; + color: #f2f2f2; + display: flex; + justify-content: flex-start; + padding: 0.5em 0.75em; } + html.theme--documenter-dark .panel-block input[type="checkbox"] { + margin-right: 0.75em; } + html.theme--documenter-dark .panel-block > .control { + flex-grow: 1; + flex-shrink: 1; + width: 100%; } + html.theme--documenter-dark .panel-block.is-wrapped { + flex-wrap: wrap; } + html.theme--documenter-dark .panel-block.is-active { + border-left-color: #1abc9c; + color: #17a689; } + html.theme--documenter-dark .panel-block.is-active .panel-icon { + color: #1abc9c; } + html.theme--documenter-dark a.panel-block, + html.theme--documenter-dark label.panel-block { + cursor: pointer; } + html.theme--documenter-dark a.panel-block:hover, + html.theme--documenter-dark label.panel-block:hover { + background-color: #282f2f; } + html.theme--documenter-dark .panel-icon { + display: inline-block; + font-size: 14px; + height: 1em; + line-height: 1em; + text-align: center; + vertical-align: top; + width: 1em; + color: white; + margin-right: 0.75em; } + html.theme--documenter-dark .panel-icon .fa { + font-size: inherit; + line-height: inherit; } + html.theme--documenter-dark .tabs { + -webkit-overflow-scrolling: touch; + align-items: stretch; + display: flex; + font-size: 15px; + justify-content: space-between; + overflow: hidden; + overflow-x: auto; + white-space: nowrap; } + html.theme--documenter-dark .tabs a { + align-items: center; + border-bottom-color: #5e6d6f; + border-bottom-style: solid; + border-bottom-width: 1px; + color: #fff; + display: flex; + justify-content: center; + margin-bottom: -1px; + padding: 0.5em 1em; + vertical-align: top; } + html.theme--documenter-dark .tabs a:hover { + border-bottom-color: #f2f2f2; + color: #f2f2f2; } + html.theme--documenter-dark .tabs li { + display: block; } + html.theme--documenter-dark .tabs li.is-active a { + border-bottom-color: #1abc9c; + color: #1abc9c; } + html.theme--documenter-dark .tabs ul { + align-items: center; + border-bottom-color: #5e6d6f; + border-bottom-style: solid; + border-bottom-width: 1px; + display: flex; + flex-grow: 1; + flex-shrink: 0; + justify-content: flex-start; } + html.theme--documenter-dark .tabs ul.is-left { + padding-right: 0.75em; } + html.theme--documenter-dark .tabs ul.is-center { + flex: none; + justify-content: center; + padding-left: 0.75em; + padding-right: 0.75em; } + html.theme--documenter-dark .tabs ul.is-right { + justify-content: flex-end; + padding-left: 0.75em; } + html.theme--documenter-dark .tabs .icon:first-child { + margin-right: 0.5em; } + html.theme--documenter-dark .tabs .icon:last-child { + margin-left: 0.5em; } + html.theme--documenter-dark .tabs.is-centered ul { + justify-content: center; } + html.theme--documenter-dark .tabs.is-right ul { + justify-content: flex-end; } + html.theme--documenter-dark .tabs.is-boxed a { + border: 1px solid transparent; + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .tabs.is-boxed a:hover { + background-color: #282f2f; + border-bottom-color: #5e6d6f; } + html.theme--documenter-dark .tabs.is-boxed li.is-active a { + background-color: white; + border-color: #5e6d6f; + border-bottom-color: transparent !important; } + html.theme--documenter-dark .tabs.is-fullwidth li { + flex-grow: 1; + flex-shrink: 0; } + html.theme--documenter-dark .tabs.is-toggle a { + border-color: #5e6d6f; + border-style: solid; + border-width: 1px; + margin-bottom: 0; + position: relative; } + html.theme--documenter-dark .tabs.is-toggle a:hover { + background-color: #282f2f; + border-color: #8c9b9d; + z-index: 2; } + html.theme--documenter-dark .tabs.is-toggle li + li { + margin-left: -1px; } + html.theme--documenter-dark .tabs.is-toggle li:first-child a { + border-radius: 0.4em 0 0 0.4em; } + html.theme--documenter-dark .tabs.is-toggle li:last-child a { + border-radius: 0 0.4em 0.4em 0; } + html.theme--documenter-dark .tabs.is-toggle li.is-active a { + background-color: #1abc9c; + border-color: #1abc9c; + color: #fff; + z-index: 1; } + html.theme--documenter-dark .tabs.is-toggle ul { + border-bottom: none; } + html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:first-child a { + border-bottom-left-radius: 290486px; + border-top-left-radius: 290486px; + padding-left: 1.25em; } + html.theme--documenter-dark .tabs.is-toggle.is-toggle-rounded li:last-child a { + border-bottom-right-radius: 290486px; + border-top-right-radius: 290486px; + padding-right: 1.25em; } + html.theme--documenter-dark .tabs.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.tabs { + font-size: 0.85em; } + html.theme--documenter-dark .tabs.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .tabs.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; } + .columns.is-mobile > html.theme--documenter-dark .column.is-narrow { + flex: none; } + .columns.is-mobile > html.theme--documenter-dark .column.is-full { + flex: none; + width: 100%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-three-quarters { + flex: none; + width: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-two-thirds { + flex: none; + width: 66.6666%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-half { + flex: none; + width: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-one-third { + flex: none; + width: 33.3333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-one-quarter { + flex: none; + width: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-one-fifth { + flex: none; + width: 20%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-two-fifths { + flex: none; + width: 40%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-three-fifths { + flex: none; + width: 60%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-four-fifths { + flex: none; + width: 80%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-quarters { + margin-left: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-thirds { + margin-left: 66.6666%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-half { + margin-left: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-third { + margin-left: 33.3333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-quarter { + margin-left: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-one-fifth { + margin-left: 20%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-two-fifths { + margin-left: 40%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-three-fifths { + margin-left: 60%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-four-fifths { + margin-left: 80%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-0 { + flex: none; + width: 0%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-0 { + margin-left: 0%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-1 { + flex: none; + width: 8.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-1 { + margin-left: 8.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-2 { + flex: none; + width: 16.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-2 { + margin-left: 16.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-3 { + flex: none; + width: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-3 { + margin-left: 25%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-4 { + flex: none; + width: 33.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-4 { + margin-left: 33.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-5 { + flex: none; + width: 41.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-5 { + margin-left: 41.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-6 { + flex: none; + width: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-6 { + margin-left: 50%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-7 { + flex: none; + width: 58.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-7 { + margin-left: 58.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-8 { + flex: none; + width: 66.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-8 { + margin-left: 66.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-9 { + flex: none; + width: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-9 { + margin-left: 75%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-10 { + flex: none; + width: 83.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-10 { + margin-left: 83.33333%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-11 { + flex: none; + width: 91.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-11 { + margin-left: 91.66667%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-12 { + flex: none; + width: 100%; } + .columns.is-mobile > html.theme--documenter-dark .column.is-offset-12 { + margin-left: 100%; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .column.is-narrow-mobile { + flex: none; } + html.theme--documenter-dark .column.is-full-mobile { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-mobile { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-mobile { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-mobile { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-mobile { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-mobile { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-mobile { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-mobile { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-mobile { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-mobile { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-mobile { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-mobile { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-mobile { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-mobile { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-mobile { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-mobile { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-mobile { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-mobile { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-mobile { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-mobile { + flex: none; + width: 8.33333%; } + html.theme--documenter-dark .column.is-offset-1-mobile { + margin-left: 8.33333%; } + html.theme--documenter-dark .column.is-2-mobile { + flex: none; + width: 16.66667%; } + html.theme--documenter-dark .column.is-offset-2-mobile { + margin-left: 16.66667%; } + html.theme--documenter-dark .column.is-3-mobile { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-mobile { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-mobile { + flex: none; + width: 33.33333%; } + html.theme--documenter-dark .column.is-offset-4-mobile { + margin-left: 33.33333%; } + html.theme--documenter-dark .column.is-5-mobile { + flex: none; + width: 41.66667%; } + html.theme--documenter-dark .column.is-offset-5-mobile { + margin-left: 41.66667%; } + html.theme--documenter-dark .column.is-6-mobile { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-mobile { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-mobile { + flex: none; + width: 58.33333%; } + html.theme--documenter-dark .column.is-offset-7-mobile { + margin-left: 58.33333%; } + html.theme--documenter-dark .column.is-8-mobile { + flex: none; + width: 66.66667%; } + html.theme--documenter-dark .column.is-offset-8-mobile { + margin-left: 66.66667%; } + html.theme--documenter-dark .column.is-9-mobile { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-mobile { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-mobile { + flex: none; + width: 83.33333%; } + html.theme--documenter-dark .column.is-offset-10-mobile { + margin-left: 83.33333%; } + html.theme--documenter-dark .column.is-11-mobile { + flex: none; + width: 91.66667%; } + html.theme--documenter-dark .column.is-offset-11-mobile { + margin-left: 91.66667%; } + html.theme--documenter-dark .column.is-12-mobile { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-mobile { + margin-left: 100%; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .column.is-narrow, html.theme--documenter-dark .column.is-narrow-tablet { + flex: none; } + html.theme--documenter-dark .column.is-full, html.theme--documenter-dark .column.is-full-tablet { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters, html.theme--documenter-dark .column.is-three-quarters-tablet { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds, html.theme--documenter-dark .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half, html.theme--documenter-dark .column.is-half-tablet { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third, html.theme--documenter-dark .column.is-one-third-tablet { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter, html.theme--documenter-dark .column.is-one-quarter-tablet { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth, html.theme--documenter-dark .column.is-one-fifth-tablet { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths, html.theme--documenter-dark .column.is-two-fifths-tablet { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths, html.theme--documenter-dark .column.is-three-fifths-tablet { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths, html.theme--documenter-dark .column.is-four-fifths-tablet { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters, html.theme--documenter-dark .column.is-offset-three-quarters-tablet { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds, html.theme--documenter-dark .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half, html.theme--documenter-dark .column.is-offset-half-tablet { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third, html.theme--documenter-dark .column.is-offset-one-third-tablet { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter, html.theme--documenter-dark .column.is-offset-one-quarter-tablet { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth, html.theme--documenter-dark .column.is-offset-one-fifth-tablet { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths, html.theme--documenter-dark .column.is-offset-two-fifths-tablet { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths, html.theme--documenter-dark .column.is-offset-three-fifths-tablet { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths, html.theme--documenter-dark .column.is-offset-four-fifths-tablet { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0, html.theme--documenter-dark .column.is-0-tablet { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0, html.theme--documenter-dark .column.is-offset-0-tablet { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1, html.theme--documenter-dark .column.is-1-tablet { + flex: none; + width: 8.33333%; } + html.theme--documenter-dark .column.is-offset-1, html.theme--documenter-dark .column.is-offset-1-tablet { + margin-left: 8.33333%; } + html.theme--documenter-dark .column.is-2, html.theme--documenter-dark .column.is-2-tablet { + flex: none; + width: 16.66667%; } + html.theme--documenter-dark .column.is-offset-2, html.theme--documenter-dark .column.is-offset-2-tablet { + margin-left: 16.66667%; } + html.theme--documenter-dark .column.is-3, html.theme--documenter-dark .column.is-3-tablet { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3, html.theme--documenter-dark .column.is-offset-3-tablet { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4, html.theme--documenter-dark .column.is-4-tablet { + flex: none; + width: 33.33333%; } + html.theme--documenter-dark .column.is-offset-4, html.theme--documenter-dark .column.is-offset-4-tablet { + margin-left: 33.33333%; } + html.theme--documenter-dark .column.is-5, html.theme--documenter-dark .column.is-5-tablet { + flex: none; + width: 41.66667%; } + html.theme--documenter-dark .column.is-offset-5, html.theme--documenter-dark .column.is-offset-5-tablet { + margin-left: 41.66667%; } + html.theme--documenter-dark .column.is-6, html.theme--documenter-dark .column.is-6-tablet { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6, html.theme--documenter-dark .column.is-offset-6-tablet { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7, html.theme--documenter-dark .column.is-7-tablet { + flex: none; + width: 58.33333%; } + html.theme--documenter-dark .column.is-offset-7, html.theme--documenter-dark .column.is-offset-7-tablet { + margin-left: 58.33333%; } + html.theme--documenter-dark .column.is-8, html.theme--documenter-dark .column.is-8-tablet { + flex: none; + width: 66.66667%; } + html.theme--documenter-dark .column.is-offset-8, html.theme--documenter-dark .column.is-offset-8-tablet { + margin-left: 66.66667%; } + html.theme--documenter-dark .column.is-9, html.theme--documenter-dark .column.is-9-tablet { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9, html.theme--documenter-dark .column.is-offset-9-tablet { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10, html.theme--documenter-dark .column.is-10-tablet { + flex: none; + width: 83.33333%; } + html.theme--documenter-dark .column.is-offset-10, html.theme--documenter-dark .column.is-offset-10-tablet { + margin-left: 83.33333%; } + html.theme--documenter-dark .column.is-11, html.theme--documenter-dark .column.is-11-tablet { + flex: none; + width: 91.66667%; } + html.theme--documenter-dark .column.is-offset-11, html.theme--documenter-dark .column.is-offset-11-tablet { + margin-left: 91.66667%; } + html.theme--documenter-dark .column.is-12, html.theme--documenter-dark .column.is-12-tablet { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12, html.theme--documenter-dark .column.is-offset-12-tablet { + margin-left: 100%; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .column.is-narrow-touch { + flex: none; } + html.theme--documenter-dark .column.is-full-touch { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-touch { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-touch { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-touch { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-touch { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-touch { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-touch { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-touch { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-touch { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-touch { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-touch { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-touch { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-touch { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-touch { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-touch { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-touch { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-touch { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-touch { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-touch { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-touch { + flex: none; + width: 8.33333%; } + html.theme--documenter-dark .column.is-offset-1-touch { + margin-left: 8.33333%; } + html.theme--documenter-dark .column.is-2-touch { + flex: none; + width: 16.66667%; } + html.theme--documenter-dark .column.is-offset-2-touch { + margin-left: 16.66667%; } + html.theme--documenter-dark .column.is-3-touch { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-touch { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-touch { + flex: none; + width: 33.33333%; } + html.theme--documenter-dark .column.is-offset-4-touch { + margin-left: 33.33333%; } + html.theme--documenter-dark .column.is-5-touch { + flex: none; + width: 41.66667%; } + html.theme--documenter-dark .column.is-offset-5-touch { + margin-left: 41.66667%; } + html.theme--documenter-dark .column.is-6-touch { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-touch { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-touch { + flex: none; + width: 58.33333%; } + html.theme--documenter-dark .column.is-offset-7-touch { + margin-left: 58.33333%; } + html.theme--documenter-dark .column.is-8-touch { + flex: none; + width: 66.66667%; } + html.theme--documenter-dark .column.is-offset-8-touch { + margin-left: 66.66667%; } + html.theme--documenter-dark .column.is-9-touch { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-touch { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-touch { + flex: none; + width: 83.33333%; } + html.theme--documenter-dark .column.is-offset-10-touch { + margin-left: 83.33333%; } + html.theme--documenter-dark .column.is-11-touch { + flex: none; + width: 91.66667%; } + html.theme--documenter-dark .column.is-offset-11-touch { + margin-left: 91.66667%; } + html.theme--documenter-dark .column.is-12-touch { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-touch { + margin-left: 100%; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .column.is-narrow-desktop { + flex: none; } + html.theme--documenter-dark .column.is-full-desktop { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-desktop { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-desktop { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-desktop { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-desktop { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-desktop { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-desktop { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-desktop { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-desktop { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-desktop { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-desktop { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-desktop { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-desktop { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-desktop { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-desktop { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-desktop { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-desktop { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-desktop { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-desktop { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-desktop { + flex: none; + width: 8.33333%; } + html.theme--documenter-dark .column.is-offset-1-desktop { + margin-left: 8.33333%; } + html.theme--documenter-dark .column.is-2-desktop { + flex: none; + width: 16.66667%; } + html.theme--documenter-dark .column.is-offset-2-desktop { + margin-left: 16.66667%; } + html.theme--documenter-dark .column.is-3-desktop { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-desktop { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-desktop { + flex: none; + width: 33.33333%; } + html.theme--documenter-dark .column.is-offset-4-desktop { + margin-left: 33.33333%; } + html.theme--documenter-dark .column.is-5-desktop { + flex: none; + width: 41.66667%; } + html.theme--documenter-dark .column.is-offset-5-desktop { + margin-left: 41.66667%; } + html.theme--documenter-dark .column.is-6-desktop { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-desktop { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-desktop { + flex: none; + width: 58.33333%; } + html.theme--documenter-dark .column.is-offset-7-desktop { + margin-left: 58.33333%; } + html.theme--documenter-dark .column.is-8-desktop { + flex: none; + width: 66.66667%; } + html.theme--documenter-dark .column.is-offset-8-desktop { + margin-left: 66.66667%; } + html.theme--documenter-dark .column.is-9-desktop { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-desktop { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-desktop { + flex: none; + width: 83.33333%; } + html.theme--documenter-dark .column.is-offset-10-desktop { + margin-left: 83.33333%; } + html.theme--documenter-dark .column.is-11-desktop { + flex: none; + width: 91.66667%; } + html.theme--documenter-dark .column.is-offset-11-desktop { + margin-left: 91.66667%; } + html.theme--documenter-dark .column.is-12-desktop { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-desktop { + margin-left: 100%; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .column.is-narrow-widescreen { + flex: none; } + html.theme--documenter-dark .column.is-full-widescreen { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-widescreen { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-widescreen { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-widescreen { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-widescreen { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-widescreen { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-widescreen { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-widescreen { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-widescreen { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-widescreen { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-widescreen { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-widescreen { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-widescreen { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-widescreen { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-widescreen { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-widescreen { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-widescreen { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-widescreen { + flex: none; + width: 8.33333%; } + html.theme--documenter-dark .column.is-offset-1-widescreen { + margin-left: 8.33333%; } + html.theme--documenter-dark .column.is-2-widescreen { + flex: none; + width: 16.66667%; } + html.theme--documenter-dark .column.is-offset-2-widescreen { + margin-left: 16.66667%; } + html.theme--documenter-dark .column.is-3-widescreen { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-widescreen { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-widescreen { + flex: none; + width: 33.33333%; } + html.theme--documenter-dark .column.is-offset-4-widescreen { + margin-left: 33.33333%; } + html.theme--documenter-dark .column.is-5-widescreen { + flex: none; + width: 41.66667%; } + html.theme--documenter-dark .column.is-offset-5-widescreen { + margin-left: 41.66667%; } + html.theme--documenter-dark .column.is-6-widescreen { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-widescreen { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-widescreen { + flex: none; + width: 58.33333%; } + html.theme--documenter-dark .column.is-offset-7-widescreen { + margin-left: 58.33333%; } + html.theme--documenter-dark .column.is-8-widescreen { + flex: none; + width: 66.66667%; } + html.theme--documenter-dark .column.is-offset-8-widescreen { + margin-left: 66.66667%; } + html.theme--documenter-dark .column.is-9-widescreen { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-widescreen { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-widescreen { + flex: none; + width: 83.33333%; } + html.theme--documenter-dark .column.is-offset-10-widescreen { + margin-left: 83.33333%; } + html.theme--documenter-dark .column.is-11-widescreen { + flex: none; + width: 91.66667%; } + html.theme--documenter-dark .column.is-offset-11-widescreen { + margin-left: 91.66667%; } + html.theme--documenter-dark .column.is-12-widescreen { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-widescreen { + margin-left: 100%; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .column.is-narrow-fullhd { + flex: none; } + html.theme--documenter-dark .column.is-full-fullhd { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-three-quarters-fullhd { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; } + html.theme--documenter-dark .column.is-half-fullhd { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; } + html.theme--documenter-dark .column.is-one-quarter-fullhd { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-one-fifth-fullhd { + flex: none; + width: 20%; } + html.theme--documenter-dark .column.is-two-fifths-fullhd { + flex: none; + width: 40%; } + html.theme--documenter-dark .column.is-three-fifths-fullhd { + flex: none; + width: 60%; } + html.theme--documenter-dark .column.is-four-fifths-fullhd { + flex: none; + width: 80%; } + html.theme--documenter-dark .column.is-offset-three-quarters-fullhd { + margin-left: 75%; } + html.theme--documenter-dark .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; } + html.theme--documenter-dark .column.is-offset-half-fullhd { + margin-left: 50%; } + html.theme--documenter-dark .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; } + html.theme--documenter-dark .column.is-offset-one-quarter-fullhd { + margin-left: 25%; } + html.theme--documenter-dark .column.is-offset-one-fifth-fullhd { + margin-left: 20%; } + html.theme--documenter-dark .column.is-offset-two-fifths-fullhd { + margin-left: 40%; } + html.theme--documenter-dark .column.is-offset-three-fifths-fullhd { + margin-left: 60%; } + html.theme--documenter-dark .column.is-offset-four-fifths-fullhd { + margin-left: 80%; } + html.theme--documenter-dark .column.is-0-fullhd { + flex: none; + width: 0%; } + html.theme--documenter-dark .column.is-offset-0-fullhd { + margin-left: 0%; } + html.theme--documenter-dark .column.is-1-fullhd { + flex: none; + width: 8.33333%; } + html.theme--documenter-dark .column.is-offset-1-fullhd { + margin-left: 8.33333%; } + html.theme--documenter-dark .column.is-2-fullhd { + flex: none; + width: 16.66667%; } + html.theme--documenter-dark .column.is-offset-2-fullhd { + margin-left: 16.66667%; } + html.theme--documenter-dark .column.is-3-fullhd { + flex: none; + width: 25%; } + html.theme--documenter-dark .column.is-offset-3-fullhd { + margin-left: 25%; } + html.theme--documenter-dark .column.is-4-fullhd { + flex: none; + width: 33.33333%; } + html.theme--documenter-dark .column.is-offset-4-fullhd { + margin-left: 33.33333%; } + html.theme--documenter-dark .column.is-5-fullhd { + flex: none; + width: 41.66667%; } + html.theme--documenter-dark .column.is-offset-5-fullhd { + margin-left: 41.66667%; } + html.theme--documenter-dark .column.is-6-fullhd { + flex: none; + width: 50%; } + html.theme--documenter-dark .column.is-offset-6-fullhd { + margin-left: 50%; } + html.theme--documenter-dark .column.is-7-fullhd { + flex: none; + width: 58.33333%; } + html.theme--documenter-dark .column.is-offset-7-fullhd { + margin-left: 58.33333%; } + html.theme--documenter-dark .column.is-8-fullhd { + flex: none; + width: 66.66667%; } + html.theme--documenter-dark .column.is-offset-8-fullhd { + margin-left: 66.66667%; } + html.theme--documenter-dark .column.is-9-fullhd { + flex: none; + width: 75%; } + html.theme--documenter-dark .column.is-offset-9-fullhd { + margin-left: 75%; } + html.theme--documenter-dark .column.is-10-fullhd { + flex: none; + width: 83.33333%; } + html.theme--documenter-dark .column.is-offset-10-fullhd { + margin-left: 83.33333%; } + html.theme--documenter-dark .column.is-11-fullhd { + flex: none; + width: 91.66667%; } + html.theme--documenter-dark .column.is-offset-11-fullhd { + margin-left: 91.66667%; } + html.theme--documenter-dark .column.is-12-fullhd { + flex: none; + width: 100%; } + html.theme--documenter-dark .column.is-offset-12-fullhd { + margin-left: 100%; } } + html.theme--documenter-dark .columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + html.theme--documenter-dark .columns:last-child { + margin-bottom: -0.75rem; } + html.theme--documenter-dark .columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); } + html.theme--documenter-dark .columns.is-centered { + justify-content: center; } + html.theme--documenter-dark .columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; } + html.theme--documenter-dark .columns.is-gapless > .column { + margin: 0; + padding: 0 !important; } + html.theme--documenter-dark .columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; } + html.theme--documenter-dark .columns.is-gapless:last-child { + margin-bottom: 0; } + html.theme--documenter-dark .columns.is-mobile { + display: flex; } + html.theme--documenter-dark .columns.is-multiline { + flex-wrap: wrap; } + html.theme--documenter-dark .columns.is-vcentered { + align-items: center; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns:not(.is-desktop) { + display: flex; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-desktop { + display: flex; } } + html.theme--documenter-dark .columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); } + html.theme--documenter-dark .columns.is-variable .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); } + html.theme--documenter-dark .columns.is-variable.is-0 { + --columnGap: 0rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-0-mobile { + --columnGap: 0rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-0-tablet { + --columnGap: 0rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-0-tablet-only { + --columnGap: 0rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-0-touch { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-0-desktop { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-0-desktop-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-0-widescreen { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-0-widescreen-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-0-fullhd { + --columnGap: 0rem; } } + html.theme--documenter-dark .columns.is-variable.is-1 { + --columnGap: 0.25rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-1-mobile { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-1-tablet { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-1-tablet-only { + --columnGap: 0.25rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-1-touch { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-1-desktop { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-1-desktop-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-1-widescreen { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-1-widescreen-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-1-fullhd { + --columnGap: 0.25rem; } } + html.theme--documenter-dark .columns.is-variable.is-2 { + --columnGap: 0.5rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-2-mobile { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-2-tablet { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-2-tablet-only { + --columnGap: 0.5rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-2-touch { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-2-desktop { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-2-desktop-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-2-widescreen { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-2-widescreen-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-2-fullhd { + --columnGap: 0.5rem; } } + html.theme--documenter-dark .columns.is-variable.is-3 { + --columnGap: 0.75rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-3-mobile { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-3-tablet { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-3-tablet-only { + --columnGap: 0.75rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-3-touch { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-3-desktop { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-3-desktop-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-3-widescreen { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-3-widescreen-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-3-fullhd { + --columnGap: 0.75rem; } } + html.theme--documenter-dark .columns.is-variable.is-4 { + --columnGap: 1rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-4-mobile { + --columnGap: 1rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-4-tablet { + --columnGap: 1rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-4-tablet-only { + --columnGap: 1rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-4-touch { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-4-desktop { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-4-desktop-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-4-widescreen { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-4-widescreen-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-4-fullhd { + --columnGap: 1rem; } } + html.theme--documenter-dark .columns.is-variable.is-5 { + --columnGap: 1.25rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-5-mobile { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-5-tablet { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-5-tablet-only { + --columnGap: 1.25rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-5-touch { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-5-desktop { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-5-desktop-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-5-widescreen { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-5-widescreen-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-5-fullhd { + --columnGap: 1.25rem; } } + html.theme--documenter-dark .columns.is-variable.is-6 { + --columnGap: 1.5rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-6-mobile { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-6-tablet { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-6-tablet-only { + --columnGap: 1.5rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-6-touch { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-6-desktop { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-6-desktop-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-6-widescreen { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-6-widescreen-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-6-fullhd { + --columnGap: 1.5rem; } } + html.theme--documenter-dark .columns.is-variable.is-7 { + --columnGap: 1.75rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-7-mobile { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-7-tablet { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-7-tablet-only { + --columnGap: 1.75rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-7-touch { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-7-desktop { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-7-desktop-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-7-widescreen { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-7-widescreen-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-7-fullhd { + --columnGap: 1.75rem; } } + html.theme--documenter-dark .columns.is-variable.is-8 { + --columnGap: 2rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .columns.is-variable.is-8-mobile { + --columnGap: 2rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .columns.is-variable.is-8-tablet { + --columnGap: 2rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-8-tablet-only { + --columnGap: 2rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .columns.is-variable.is-8-touch { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .columns.is-variable.is-8-desktop { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + html.theme--documenter-dark .columns.is-variable.is-8-desktop-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) { + html.theme--documenter-dark .columns.is-variable.is-8-widescreen { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + html.theme--documenter-dark .columns.is-variable.is-8-widescreen-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1408px) { + html.theme--documenter-dark .columns.is-variable.is-8-fullhd { + --columnGap: 2rem; } } + html.theme--documenter-dark .tile { + align-items: stretch; + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + min-height: min-content; } + html.theme--documenter-dark .tile.is-ancestor { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + html.theme--documenter-dark .tile.is-ancestor:last-child { + margin-bottom: -0.75rem; } + html.theme--documenter-dark .tile.is-ancestor:not(:last-child) { + margin-bottom: 0.75rem; } + html.theme--documenter-dark .tile.is-child { + margin: 0 !important; } + html.theme--documenter-dark .tile.is-parent { + padding: 0.75rem; } + html.theme--documenter-dark .tile.is-vertical { + flex-direction: column; } + html.theme--documenter-dark .tile.is-vertical > .tile.is-child:not(:last-child) { + margin-bottom: 1.5rem !important; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .tile:not(.is-child) { + display: flex; } + html.theme--documenter-dark .tile.is-1 { + flex: none; + width: 8.33333%; } + html.theme--documenter-dark .tile.is-2 { + flex: none; + width: 16.66667%; } + html.theme--documenter-dark .tile.is-3 { + flex: none; + width: 25%; } + html.theme--documenter-dark .tile.is-4 { + flex: none; + width: 33.33333%; } + html.theme--documenter-dark .tile.is-5 { + flex: none; + width: 41.66667%; } + html.theme--documenter-dark .tile.is-6 { + flex: none; + width: 50%; } + html.theme--documenter-dark .tile.is-7 { + flex: none; + width: 58.33333%; } + html.theme--documenter-dark .tile.is-8 { + flex: none; + width: 66.66667%; } + html.theme--documenter-dark .tile.is-9 { + flex: none; + width: 75%; } + html.theme--documenter-dark .tile.is-10 { + flex: none; + width: 83.33333%; } + html.theme--documenter-dark .tile.is-11 { + flex: none; + width: 91.66667%; } + html.theme--documenter-dark .tile.is-12 { + flex: none; + width: 100%; } } + html.theme--documenter-dark .hero { + align-items: stretch; + display: flex; + flex-direction: column; + justify-content: space-between; } + html.theme--documenter-dark .hero .navbar { + background: none; } + html.theme--documenter-dark .hero .tabs ul { + border-bottom: none; } + html.theme--documenter-dark .hero.is-white { + background-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-white strong { + color: inherit; } + html.theme--documenter-dark .hero.is-white .title { + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white .subtitle { + color: rgba(10, 10, 10, 0.9); } + html.theme--documenter-dark .hero.is-white .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-white .subtitle strong { + color: #0a0a0a; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-white .navbar-menu { + background-color: white; } } + html.theme--documenter-dark .hero.is-white .navbar-item, + html.theme--documenter-dark .hero.is-white .navbar-link { + color: rgba(10, 10, 10, 0.7); } + html.theme--documenter-dark .hero.is-white a.navbar-item:hover, html.theme--documenter-dark .hero.is-white a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-white .navbar-link:hover, + html.theme--documenter-dark .hero.is-white .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white .tabs a { + color: #0a0a0a; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-white .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-white .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-white .tabs.is-boxed a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a { + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-white .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-white .tabs.is-toggle li.is-active a:hover { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .hero.is-white.is-bold { + background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-white.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } } + html.theme--documenter-dark .hero.is-black { + background-color: #0a0a0a; + color: white; } + html.theme--documenter-dark .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-black strong { + color: inherit; } + html.theme--documenter-dark .hero.is-black .title { + color: white; } + html.theme--documenter-dark .hero.is-black .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-black .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-black .subtitle strong { + color: white; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-black .navbar-menu { + background-color: #0a0a0a; } } + html.theme--documenter-dark .hero.is-black .navbar-item, + html.theme--documenter-dark .hero.is-black .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-black a.navbar-item:hover, html.theme--documenter-dark .hero.is-black a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-black .navbar-link:hover, + html.theme--documenter-dark .hero.is-black .navbar-link.is-active { + background-color: black; + color: white; } + html.theme--documenter-dark .hero.is-black .tabs a { + color: white; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-black .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-black .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-black .tabs.is-boxed a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a { + color: white; } + html.theme--documenter-dark .hero.is-black .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-black .tabs.is-toggle li.is-active a:hover { + background-color: white; + border-color: white; + color: #0a0a0a; } + html.theme--documenter-dark .hero.is-black.is-bold { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-black.is-bold .navbar-menu { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } + html.theme--documenter-dark .hero.is-light { + background-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-light strong { + color: inherit; } + html.theme--documenter-dark .hero.is-light .title { + color: #282f2f; } + html.theme--documenter-dark .hero.is-light .subtitle { + color: rgba(40, 47, 47, 0.9); } + html.theme--documenter-dark .hero.is-light .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-light .subtitle strong { + color: #282f2f; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-light .navbar-menu { + background-color: #ecf0f1; } } + html.theme--documenter-dark .hero.is-light .navbar-item, + html.theme--documenter-dark .hero.is-light .navbar-link { + color: rgba(40, 47, 47, 0.7); } + html.theme--documenter-dark .hero.is-light a.navbar-item:hover, html.theme--documenter-dark .hero.is-light a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-light .navbar-link:hover, + html.theme--documenter-dark .hero.is-light .navbar-link.is-active { + background-color: #dde4e6; + color: #282f2f; } + html.theme--documenter-dark .hero.is-light .tabs a { + color: #282f2f; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-light .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-light .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-light .tabs.is-boxed a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a { + color: #282f2f; } + html.theme--documenter-dark .hero.is-light .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-light .tabs.is-toggle li.is-active a:hover { + background-color: #282f2f; + border-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-light.is-bold { + background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-light.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #cadfe0 0%, #ecf0f1 71%, #fafbfc 100%); } } + html.theme--documenter-dark .hero.is-dark, html.theme--documenter-dark .content kbd.hero { + background-color: #282f2f; + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-dark strong, + html.theme--documenter-dark .content kbd.hero strong { + color: inherit; } + html.theme--documenter-dark .hero.is-dark .title, html.theme--documenter-dark .content kbd.hero .title { + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark .subtitle, html.theme--documenter-dark .content kbd.hero .subtitle { + color: rgba(236, 240, 241, 0.9); } + html.theme--documenter-dark .hero.is-dark .subtitle a:not(.button), html.theme--documenter-dark .content kbd.hero .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-dark .subtitle strong, + html.theme--documenter-dark .content kbd.hero .subtitle strong { + color: #ecf0f1; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-dark .navbar-menu, html.theme--documenter-dark .content kbd.hero .navbar-menu { + background-color: #282f2f; } } + html.theme--documenter-dark .hero.is-dark .navbar-item, html.theme--documenter-dark .content kbd.hero .navbar-item, + html.theme--documenter-dark .hero.is-dark .navbar-link, + html.theme--documenter-dark .content kbd.hero .navbar-link { + color: rgba(236, 240, 241, 0.7); } + html.theme--documenter-dark .hero.is-dark a.navbar-item:hover, html.theme--documenter-dark .content kbd.hero a.navbar-item:hover, html.theme--documenter-dark .hero.is-dark a.navbar-item.is-active, html.theme--documenter-dark .content kbd.hero a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-dark .navbar-link:hover, + html.theme--documenter-dark .content kbd.hero .navbar-link:hover, + html.theme--documenter-dark .hero.is-dark .navbar-link.is-active, + html.theme--documenter-dark .content kbd.hero .navbar-link.is-active { + background-color: #1d2122; + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark .tabs a, html.theme--documenter-dark .content kbd.hero .tabs a { + color: #ecf0f1; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-dark .tabs a:hover, html.theme--documenter-dark .content kbd.hero .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-dark .tabs li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a { + color: #ecf0f1; } + html.theme--documenter-dark .hero.is-dark .tabs.is-boxed a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-dark .tabs.is-toggle li.is-active a:hover, html.theme--documenter-dark .content kbd.hero .tabs.is-toggle li.is-active a:hover { + background-color: #ecf0f1; + border-color: #ecf0f1; + color: #282f2f; } + html.theme--documenter-dark .hero.is-dark.is-bold, html.theme--documenter-dark .content kbd.hero.is-bold { + background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-dark.is-bold .navbar-menu, html.theme--documenter-dark .content kbd.hero.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #0f1615 0%, #282f2f 71%, #313c40 100%); } } + html.theme--documenter-dark .hero.is-primary, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink { + background-color: #375a7f; + color: #fff; } + html.theme--documenter-dark .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-primary strong, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink strong { + color: inherit; } + html.theme--documenter-dark .hero.is-primary .title, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .title { + color: #fff; } + html.theme--documenter-dark .hero.is-primary .subtitle, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-primary .subtitle a:not(.button), html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-primary .subtitle strong, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-primary .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-menu { + background-color: #375a7f; } } + html.theme--documenter-dark .hero.is-primary .navbar-item, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-item, + html.theme--documenter-dark .hero.is-primary .navbar-link, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-primary a.navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, html.theme--documenter-dark .hero.is-primary a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-primary .navbar-link:hover, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, + html.theme--documenter-dark .hero.is-primary .navbar-link.is-active, + html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { + background-color: #2f4d6d; + color: #fff; } + html.theme--documenter-dark .hero.is-primary .tabs a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-primary .tabs a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-primary .tabs li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-primary .tabs.is-boxed a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-primary .tabs.is-toggle li.is-active a:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #375a7f; } + html.theme--documenter-dark .hero.is-primary.is-bold, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink { + background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-primary.is-bold .navbar-menu, html.theme--documenter-dark .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { + background-image: linear-gradient(141deg, #214b62 0%, #375a7f 71%, #3a5796 100%); } } + html.theme--documenter-dark .hero.is-link { + background-color: #1abc9c; + color: #fff; } + html.theme--documenter-dark .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-link strong { + color: inherit; } + html.theme--documenter-dark .hero.is-link .title { + color: #fff; } + html.theme--documenter-dark .hero.is-link .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-link .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-link .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-link .navbar-menu { + background-color: #1abc9c; } } + html.theme--documenter-dark .hero.is-link .navbar-item, + html.theme--documenter-dark .hero.is-link .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-link a.navbar-item:hover, html.theme--documenter-dark .hero.is-link a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-link .navbar-link:hover, + html.theme--documenter-dark .hero.is-link .navbar-link.is-active { + background-color: #17a689; + color: #fff; } + html.theme--documenter-dark .hero.is-link .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-link .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-link .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-link .tabs.is-boxed a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-link .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-link .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #1abc9c; } + html.theme--documenter-dark .hero.is-link.is-bold { + background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-link.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #0c9764 0%, #1abc9c 71%, #17d8d2 100%); } } + html.theme--documenter-dark .hero.is-info { + background-color: #024c7d; + color: #fff; } + html.theme--documenter-dark .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-info strong { + color: inherit; } + html.theme--documenter-dark .hero.is-info .title { + color: #fff; } + html.theme--documenter-dark .hero.is-info .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-info .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-info .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-info .navbar-menu { + background-color: #024c7d; } } + html.theme--documenter-dark .hero.is-info .navbar-item, + html.theme--documenter-dark .hero.is-info .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-info a.navbar-item:hover, html.theme--documenter-dark .hero.is-info a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-info .navbar-link:hover, + html.theme--documenter-dark .hero.is-info .navbar-link.is-active { + background-color: #023d64; + color: #fff; } + html.theme--documenter-dark .hero.is-info .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-info .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-info .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-info .tabs.is-boxed a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-info .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-info .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #024c7d; } + html.theme--documenter-dark .hero.is-info.is-bold { + background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-info.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #003a4c 0%, #024c7d 71%, #004299 100%); } } + html.theme--documenter-dark .hero.is-success { + background-color: #008438; + color: #fff; } + html.theme--documenter-dark .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-success strong { + color: inherit; } + html.theme--documenter-dark .hero.is-success .title { + color: #fff; } + html.theme--documenter-dark .hero.is-success .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-success .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-success .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-success .navbar-menu { + background-color: #008438; } } + html.theme--documenter-dark .hero.is-success .navbar-item, + html.theme--documenter-dark .hero.is-success .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-success a.navbar-item:hover, html.theme--documenter-dark .hero.is-success a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-success .navbar-link:hover, + html.theme--documenter-dark .hero.is-success .navbar-link.is-active { + background-color: #006b2d; + color: #fff; } + html.theme--documenter-dark .hero.is-success .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-success .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-success .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-success .tabs.is-boxed a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-success .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-success .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #008438; } + html.theme--documenter-dark .hero.is-success.is-bold { + background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-success.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #005115 0%, #008438 71%, #009e5d 100%); } } + html.theme--documenter-dark .hero.is-warning { + background-color: #ad8100; + color: #fff; } + html.theme--documenter-dark .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-warning strong { + color: inherit; } + html.theme--documenter-dark .hero.is-warning .title { + color: #fff; } + html.theme--documenter-dark .hero.is-warning .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-warning .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-warning .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-warning .navbar-menu { + background-color: #ad8100; } } + html.theme--documenter-dark .hero.is-warning .navbar-item, + html.theme--documenter-dark .hero.is-warning .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-warning a.navbar-item:hover, html.theme--documenter-dark .hero.is-warning a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-warning .navbar-link:hover, + html.theme--documenter-dark .hero.is-warning .navbar-link.is-active { + background-color: #946e00; + color: #fff; } + html.theme--documenter-dark .hero.is-warning .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-warning .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-warning .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-warning .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-warning .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #ad8100; } + html.theme--documenter-dark .hero.is-warning.is-bold { + background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-warning.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #7a4700 0%, #ad8100 71%, #c7b500 100%); } } + html.theme--documenter-dark .hero.is-danger { + background-color: #9e1b0d; + color: #fff; } + html.theme--documenter-dark .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + html.theme--documenter-dark .hero.is-danger strong { + color: inherit; } + html.theme--documenter-dark .hero.is-danger .title { + color: #fff; } + html.theme--documenter-dark .hero.is-danger .subtitle { + color: rgba(255, 255, 255, 0.9); } + html.theme--documenter-dark .hero.is-danger .subtitle a:not(.button), + html.theme--documenter-dark .hero.is-danger .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .hero.is-danger .navbar-menu { + background-color: #9e1b0d; } } + html.theme--documenter-dark .hero.is-danger .navbar-item, + html.theme--documenter-dark .hero.is-danger .navbar-link { + color: rgba(255, 255, 255, 0.7); } + html.theme--documenter-dark .hero.is-danger a.navbar-item:hover, html.theme--documenter-dark .hero.is-danger a.navbar-item.is-active, + html.theme--documenter-dark .hero.is-danger .navbar-link:hover, + html.theme--documenter-dark .hero.is-danger .navbar-link.is-active { + background-color: #86170b; + color: #fff; } + html.theme--documenter-dark .hero.is-danger .tabs a { + color: #fff; + opacity: 0.9; } + html.theme--documenter-dark .hero.is-danger .tabs a:hover { + opacity: 1; } + html.theme--documenter-dark .hero.is-danger .tabs li.is-active a { + opacity: 1; } + html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a { + color: #fff; } + html.theme--documenter-dark .hero.is-danger .tabs.is-boxed a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-boxed li.is-active a:hover, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a, html.theme--documenter-dark .hero.is-danger .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #9e1b0d; } + html.theme--documenter-dark .hero.is-danger.is-bold { + background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero.is-danger.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #75030b 0%, #9e1b0d 71%, #ba380a 100%); } } + html.theme--documenter-dark .hero.is-small .hero-body, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.hero .hero-body { + padding-bottom: 1.5rem; + padding-top: 1.5rem; } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .hero.is-medium .hero-body { + padding-bottom: 9rem; + padding-top: 9rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .hero.is-large .hero-body { + padding-bottom: 18rem; + padding-top: 18rem; } } + html.theme--documenter-dark .hero.is-halfheight .hero-body, html.theme--documenter-dark .hero.is-fullheight .hero-body, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body { + align-items: center; + display: flex; } + html.theme--documenter-dark .hero.is-halfheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight .hero-body > .container, html.theme--documenter-dark .hero.is-fullheight-with-navbar .hero-body > .container { + flex-grow: 1; + flex-shrink: 1; } + html.theme--documenter-dark .hero.is-halfheight { + min-height: 50vh; } + html.theme--documenter-dark .hero.is-fullheight { + min-height: 100vh; } + html.theme--documenter-dark .hero-video { + overflow: hidden; } + html.theme--documenter-dark .hero-video video { + left: 50%; + min-height: 100%; + min-width: 100%; + position: absolute; + top: 50%; + transform: translate3d(-50%, -50%, 0); } + html.theme--documenter-dark .hero-video.is-transparent { + opacity: 0.3; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero-video { + display: none; } } + html.theme--documenter-dark .hero-buttons { + margin-top: 1.5rem; } + @media screen and (max-width: 768px) { + html.theme--documenter-dark .hero-buttons .button { + display: flex; } + html.theme--documenter-dark .hero-buttons .button:not(:last-child) { + margin-bottom: 0.75rem; } } + @media screen and (min-width: 769px), print { + html.theme--documenter-dark .hero-buttons { + display: flex; + justify-content: center; } + html.theme--documenter-dark .hero-buttons .button:not(:last-child) { + margin-right: 1.5rem; } } + html.theme--documenter-dark .hero-head, + html.theme--documenter-dark .hero-foot { + flex-grow: 0; + flex-shrink: 0; } + html.theme--documenter-dark .hero-body { + flex-grow: 1; + flex-shrink: 0; + padding: 3rem 1.5rem; } + html.theme--documenter-dark .section { + padding: 3rem 1.5rem; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark .section.is-medium { + padding: 9rem 1.5rem; } + html.theme--documenter-dark .section.is-large { + padding: 18rem 1.5rem; } } + html.theme--documenter-dark .footer { + background-color: #282f2f; + padding: 3rem 1.5rem 6rem; } + html.theme--documenter-dark hr { + height: 1px; } + html.theme--documenter-dark h6 { + text-transform: uppercase; + letter-spacing: 0.5px; } + html.theme--documenter-dark .hero { + background-color: #343c3d; } + html.theme--documenter-dark a { + transition: all 200ms ease; } + html.theme--documenter-dark .button { + transition: all 200ms ease; + border-width: 1px; + color: white; } + html.theme--documenter-dark .button.is-active, html.theme--documenter-dark .button.is-focused, html.theme--documenter-dark .button:active, html.theme--documenter-dark .button:focus { + box-shadow: 0 0 0 2px rgba(140, 155, 157, 0.5); } + html.theme--documenter-dark .button.is-white.is-hovered, html.theme--documenter-dark .button.is-white:hover { + background-color: white; } + html.theme--documenter-dark .button.is-white.is-active, html.theme--documenter-dark .button.is-white.is-focused, html.theme--documenter-dark .button.is-white:active, html.theme--documenter-dark .button.is-white:focus { + border-color: white; + box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.5); } + html.theme--documenter-dark .button.is-black.is-hovered, html.theme--documenter-dark .button.is-black:hover { + background-color: #1d1d1d; } + html.theme--documenter-dark .button.is-black.is-active, html.theme--documenter-dark .button.is-black.is-focused, html.theme--documenter-dark .button.is-black:active, html.theme--documenter-dark .button.is-black:focus { + border-color: #0a0a0a; + box-shadow: 0 0 0 2px rgba(10, 10, 10, 0.5); } + html.theme--documenter-dark .button.is-light.is-hovered, html.theme--documenter-dark .button.is-light:hover { + background-color: white; } + html.theme--documenter-dark .button.is-light.is-active, html.theme--documenter-dark .button.is-light.is-focused, html.theme--documenter-dark .button.is-light:active, html.theme--documenter-dark .button.is-light:focus { + border-color: #ecf0f1; + box-shadow: 0 0 0 2px rgba(236, 240, 241, 0.5); } + html.theme--documenter-dark .button.is-dark.is-hovered, html.theme--documenter-dark .content kbd.button.is-hovered, html.theme--documenter-dark .button.is-dark:hover, html.theme--documenter-dark .content kbd.button:hover { + background-color: #3a4344; } + html.theme--documenter-dark .button.is-dark.is-active, html.theme--documenter-dark .content kbd.button.is-active, html.theme--documenter-dark .button.is-dark.is-focused, html.theme--documenter-dark .content kbd.button.is-focused, html.theme--documenter-dark .button.is-dark:active, html.theme--documenter-dark .content kbd.button:active, html.theme--documenter-dark .button.is-dark:focus, html.theme--documenter-dark .content kbd.button:focus { + border-color: #282f2f; + box-shadow: 0 0 0 2px rgba(40, 47, 47, 0.5); } + html.theme--documenter-dark .button.is-primary.is-hovered, html.theme--documenter-dark .docstring > section > a.button.is-hovered.docs-sourcelink, html.theme--documenter-dark .button.is-primary:hover, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:hover { + background-color: #436d9a; } + html.theme--documenter-dark .button.is-primary.is-active, html.theme--documenter-dark .docstring > section > a.button.is-active.docs-sourcelink, html.theme--documenter-dark .button.is-primary.is-focused, html.theme--documenter-dark .docstring > section > a.button.is-focused.docs-sourcelink, html.theme--documenter-dark .button.is-primary:active, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:active, html.theme--documenter-dark .button.is-primary:focus, html.theme--documenter-dark .docstring > section > a.button.docs-sourcelink:focus { + border-color: #375a7f; + box-shadow: 0 0 0 2px rgba(55, 90, 127, 0.5); } + html.theme--documenter-dark .button.is-link.is-hovered, html.theme--documenter-dark .button.is-link:hover { + background-color: #1fdeb8; } + html.theme--documenter-dark .button.is-link.is-active, html.theme--documenter-dark .button.is-link.is-focused, html.theme--documenter-dark .button.is-link:active, html.theme--documenter-dark .button.is-link:focus { + border-color: #1abc9c; + box-shadow: 0 0 0 2px rgba(26, 188, 156, 0.5); } + html.theme--documenter-dark .button.is-info.is-hovered, html.theme--documenter-dark .button.is-info:hover { + background-color: #0363a3; } + html.theme--documenter-dark .button.is-info.is-active, html.theme--documenter-dark .button.is-info.is-focused, html.theme--documenter-dark .button.is-info:active, html.theme--documenter-dark .button.is-info:focus { + border-color: #024c7d; + box-shadow: 0 0 0 2px rgba(2, 76, 125, 0.5); } + html.theme--documenter-dark .button.is-success.is-hovered, html.theme--documenter-dark .button.is-success:hover { + background-color: #00aa48; } + html.theme--documenter-dark .button.is-success.is-active, html.theme--documenter-dark .button.is-success.is-focused, html.theme--documenter-dark .button.is-success:active, html.theme--documenter-dark .button.is-success:focus { + border-color: #008438; + box-shadow: 0 0 0 2px rgba(0, 132, 56, 0.5); } + html.theme--documenter-dark .button.is-warning.is-hovered, html.theme--documenter-dark .button.is-warning:hover { + background-color: #d39e00; } + html.theme--documenter-dark .button.is-warning.is-active, html.theme--documenter-dark .button.is-warning.is-focused, html.theme--documenter-dark .button.is-warning:active, html.theme--documenter-dark .button.is-warning:focus { + border-color: #ad8100; + box-shadow: 0 0 0 2px rgba(173, 129, 0, 0.5); } + html.theme--documenter-dark .button.is-danger.is-hovered, html.theme--documenter-dark .button.is-danger:hover { + background-color: #c12110; } + html.theme--documenter-dark .button.is-danger.is-active, html.theme--documenter-dark .button.is-danger.is-focused, html.theme--documenter-dark .button.is-danger:active, html.theme--documenter-dark .button.is-danger:focus { + border-color: #9e1b0d; + box-shadow: 0 0 0 2px rgba(158, 27, 13, 0.5); } + html.theme--documenter-dark .label { + color: #dbdee0; } + html.theme--documenter-dark .button, + html.theme--documenter-dark .control.has-icons-left .icon, + html.theme--documenter-dark .control.has-icons-right .icon, + html.theme--documenter-dark .input, + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark .pagination-ellipsis, + html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-previous, + html.theme--documenter-dark .select, + html.theme--documenter-dark .select select, + html.theme--documenter-dark .textarea { + height: 2.5em; } + + html.theme--documenter-dark .input, + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark .textarea { + transition: all 200ms ease; + box-shadow: none; + border-width: 1px; + padding-left: 1em; + padding-right: 1em; } + html.theme--documenter-dark .select:after, + html.theme--documenter-dark .select select { + border-width: 1px; } + html.theme--documenter-dark .control.has-addons .button, + html.theme--documenter-dark .control.has-addons .input, + html.theme--documenter-dark .control.has-addons #documenter .docs-sidebar form.docs-search > input, + html.theme--documenter-dark #documenter .docs-sidebar .control.has-addons form.docs-search > input, + html.theme--documenter-dark .control.has-addons .select { + margin-right: -1px; } + html.theme--documenter-dark .notification { + background-color: #343c3d; } + html.theme--documenter-dark .card { + box-shadow: none; + border: 1px solid #343c3d; + background-color: #282f2f; + border-radius: 0.4em; } + html.theme--documenter-dark .card .card-image img { + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .card .card-header { + box-shadow: none; + background-color: rgba(18, 18, 18, 0.2); + border-radius: 0.4em 0.4em 0 0; } + html.theme--documenter-dark .card .card-footer { + background-color: rgba(18, 18, 18, 0.2); } + html.theme--documenter-dark .card .card-footer, + html.theme--documenter-dark .card .card-footer-item { + border-width: 1px; + border-color: #343c3d; } + html.theme--documenter-dark .notification.is-white a:not(.button) { + color: #0a0a0a; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-black a:not(.button) { + color: white; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-light a:not(.button) { + color: #282f2f; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-dark a:not(.button), html.theme--documenter-dark .content kbd.notification a:not(.button) { + color: #ecf0f1; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-primary a:not(.button), html.theme--documenter-dark .docstring > section > a.notification.docs-sourcelink a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-link a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-info a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-success a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-warning a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .notification.is-danger a:not(.button) { + color: #fff; + text-decoration: underline; } + html.theme--documenter-dark .tag, html.theme--documenter-dark .docstring > section > a.docs-sourcelink, html.theme--documenter-dark .content kbd { + border-radius: 0.4em; } + html.theme--documenter-dark .menu-list a { + transition: all 300ms ease; } + html.theme--documenter-dark .modal-card-body { + background-color: #282f2f; } + html.theme--documenter-dark .modal-card-foot, + html.theme--documenter-dark .modal-card-head { + border-color: #343c3d; } + html.theme--documenter-dark .message-header { + font-weight: 700; + background-color: #343c3d; + color: white; } + html.theme--documenter-dark .message-body { + border-width: 1px; + border-color: #343c3d; } + html.theme--documenter-dark .navbar { + border-radius: 0.4em; } + html.theme--documenter-dark .navbar.is-transparent { + background: none; } + html.theme--documenter-dark .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, html.theme--documenter-dark .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { + background-color: #1abc9c; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark .navbar .navbar-menu { + background-color: #375a7f; + border-radius: 0 0 0.4em 0.4em; } } + html.theme--documenter-dark .hero .navbar, + html.theme--documenter-dark body > .navbar { + border-radius: 0; } + html.theme--documenter-dark .pagination-link, + html.theme--documenter-dark .pagination-next, + html.theme--documenter-dark .pagination-previous { + border-width: 1px; } + html.theme--documenter-dark .panel-block, + html.theme--documenter-dark .panel-heading, + html.theme--documenter-dark .panel-tabs { + border-width: 1px; } + html.theme--documenter-dark .panel-block:first-child, + html.theme--documenter-dark .panel-heading:first-child, + html.theme--documenter-dark .panel-tabs:first-child { + border-top-width: 1px; } + html.theme--documenter-dark .panel-heading { + font-weight: 700; } + html.theme--documenter-dark .panel-tabs a { + border-width: 1px; + margin-bottom: -1px; } + html.theme--documenter-dark .panel-tabs a.is-active { + border-bottom-color: #17a689; } + html.theme--documenter-dark .panel-block:hover { + color: #1dd2af; } + html.theme--documenter-dark .panel-block:hover .panel-icon { + color: #1dd2af; } + html.theme--documenter-dark .panel-block.is-active .panel-icon { + color: #17a689; } + html.theme--documenter-dark .tabs a { + border-bottom-width: 1px; + margin-bottom: -1px; } + html.theme--documenter-dark .tabs ul { + border-bottom-width: 1px; } + html.theme--documenter-dark .tabs.is-boxed a { + border-width: 1px; } + html.theme--documenter-dark .tabs.is-boxed li.is-active a { + background-color: #1f2424; } + html.theme--documenter-dark .tabs.is-toggle li a { + border-width: 1px; + margin-bottom: 0; } + html.theme--documenter-dark .tabs.is-toggle li + li { + margin-left: -1px; } + html.theme--documenter-dark .hero.is-white .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-black .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-light .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-dark .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .content kbd.hero .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-primary .navbar .navbar-dropdown .navbar-item:hover, html.theme--documenter-dark .docstring > section > a.hero.docs-sourcelink .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-link .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-info .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-success .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-warning .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark .hero.is-danger .navbar .navbar-dropdown .navbar-item:hover { + background-color: transparent; } + html.theme--documenter-dark h1 .docs-heading-anchor, html.theme--documenter-dark h1 .docs-heading-anchor:hover, html.theme--documenter-dark h1 .docs-heading-anchor:visited, html.theme--documenter-dark h2 .docs-heading-anchor, html.theme--documenter-dark h2 .docs-heading-anchor:hover, html.theme--documenter-dark h2 .docs-heading-anchor:visited, html.theme--documenter-dark h3 .docs-heading-anchor, html.theme--documenter-dark h3 .docs-heading-anchor:hover, html.theme--documenter-dark h3 .docs-heading-anchor:visited, html.theme--documenter-dark h4 .docs-heading-anchor, html.theme--documenter-dark h4 .docs-heading-anchor:hover, html.theme--documenter-dark h4 .docs-heading-anchor:visited, html.theme--documenter-dark h5 .docs-heading-anchor, html.theme--documenter-dark h5 .docs-heading-anchor:hover, html.theme--documenter-dark h5 .docs-heading-anchor:visited, html.theme--documenter-dark h6 .docs-heading-anchor, html.theme--documenter-dark h6 .docs-heading-anchor:hover, html.theme--documenter-dark h6 .docs-heading-anchor:visited { + color: #f2f2f2; } + html.theme--documenter-dark h1 .docs-heading-anchor-permalink, html.theme--documenter-dark h2 .docs-heading-anchor-permalink, html.theme--documenter-dark h3 .docs-heading-anchor-permalink, html.theme--documenter-dark h4 .docs-heading-anchor-permalink, html.theme--documenter-dark h5 .docs-heading-anchor-permalink, html.theme--documenter-dark h6 .docs-heading-anchor-permalink { + visibility: hidden; + vertical-align: middle; + margin-left: 0.5em; + font-size: 0.7rem; } + html.theme--documenter-dark h1 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h2 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h3 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h4 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h5 .docs-heading-anchor-permalink::before, html.theme--documenter-dark h6 .docs-heading-anchor-permalink::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f0c1"; } + html.theme--documenter-dark h1:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h2:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h3:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h4:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h5:hover .docs-heading-anchor-permalink, html.theme--documenter-dark h6:hover .docs-heading-anchor-permalink { + visibility: visible; } + html.theme--documenter-dark .docs-light-only { + display: none !important; } + html.theme--documenter-dark .admonition { + background-color: #282f2f; + border-style: solid; + border-width: 1px; + border-color: #5e6d6f; + border-radius: 0.4em; + font-size: 15px; } + html.theme--documenter-dark .admonition strong { + color: currentColor; } + html.theme--documenter-dark .admonition.is-small, html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input.admonition { + font-size: 0.85em; } + html.theme--documenter-dark .admonition.is-medium { + font-size: 1.25rem; } + html.theme--documenter-dark .admonition.is-large { + font-size: 1.5rem; } + html.theme--documenter-dark .admonition.is-default { + background-color: #282f2f; + border-color: #5e6d6f; } + html.theme--documenter-dark .admonition.is-default > .admonition-header { + background-color: #5e6d6f; } + html.theme--documenter-dark .admonition.is-info { + background-color: #282f2f; + border-color: #024c7d; } + html.theme--documenter-dark .admonition.is-info > .admonition-header { + background-color: #024c7d; } + html.theme--documenter-dark .admonition.is-success { + background-color: #282f2f; + border-color: #008438; } + html.theme--documenter-dark .admonition.is-success > .admonition-header { + background-color: #008438; } + html.theme--documenter-dark .admonition.is-warning { + background-color: #282f2f; + border-color: #ad8100; } + html.theme--documenter-dark .admonition.is-warning > .admonition-header { + background-color: #ad8100; } + html.theme--documenter-dark .admonition.is-danger { + background-color: #282f2f; + border-color: #9e1b0d; } + html.theme--documenter-dark .admonition.is-danger > .admonition-header { + background-color: #9e1b0d; } + html.theme--documenter-dark .admonition.is-compat { + background-color: #282f2f; + border-color: #137886; } + html.theme--documenter-dark .admonition.is-compat > .admonition-header { + background-color: #137886; } + html.theme--documenter-dark .admonition-header { + background-color: #5e6d6f; + align-items: center; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.75em; + position: relative; } + html.theme--documenter-dark .admonition-header:before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + margin-right: 0.75em; + content: "\f06a"; } + html.theme--documenter-dark .admonition-body { + color: #fff; + padding: 1em 1.25em; } + html.theme--documenter-dark .admonition-body pre { + background-color: #282f2f; } + html.theme--documenter-dark .admonition-body code { + background-color: rgba(255, 255, 255, 0.05); } + html.theme--documenter-dark .docstring { + margin-bottom: 1em; + background-color: transparent; + border: 1px solid #5e6d6f; + box-shadow: none; + max-width: 100%; } + html.theme--documenter-dark .docstring > header { + display: flex; + flex-grow: 1; + align-items: stretch; + padding: 0.75rem; + background-color: #282f2f; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + box-shadow: none; + border-bottom: 1px solid #5e6d6f; } + html.theme--documenter-dark .docstring > header code { + background-color: transparent; } + html.theme--documenter-dark .docstring > header .docstring-binding { + margin-right: 0.3em; } + html.theme--documenter-dark .docstring > header .docstring-category { + margin-left: 0.3em; } + html.theme--documenter-dark .docstring > section { + position: relative; + padding: 1rem 1.25rem; + border-bottom: 1px solid #5e6d6f; } + html.theme--documenter-dark .docstring > section:last-child { + border-bottom: none; } + html.theme--documenter-dark .docstring > section > a.docs-sourcelink { + transition: opacity 0.3s; + opacity: 0; + position: absolute; + right: 0.625rem; + bottom: 0.5rem; } + html.theme--documenter-dark .docstring:hover > section > a.docs-sourcelink { + opacity: 0.2; } + html.theme--documenter-dark .docstring > section:hover a.docs-sourcelink { + opacity: 1; } + html.theme--documenter-dark .content pre { + border: 1px solid #5e6d6f; } + html.theme--documenter-dark .content code { + font-weight: inherit; } + html.theme--documenter-dark .content a code { + color: #1abc9c; } + html.theme--documenter-dark .content h1 code, html.theme--documenter-dark .content h2 code, html.theme--documenter-dark .content h3 code, html.theme--documenter-dark .content h4 code, html.theme--documenter-dark .content h5 code, html.theme--documenter-dark .content h6 code { + color: #f2f2f2; } + html.theme--documenter-dark .content table { + display: block; + width: initial; + max-width: 100%; + overflow-x: auto; } + html.theme--documenter-dark .content blockquote > ul:first-child, html.theme--documenter-dark .content blockquote > ol:first-child, html.theme--documenter-dark .content .admonition-body > ul:first-child, html.theme--documenter-dark .content .admonition-body > ol:first-child { + margin-top: 0; } + html.theme--documenter-dark .breadcrumb a.is-disabled { + cursor: default; + pointer-events: none; } + html.theme--documenter-dark .breadcrumb a.is-disabled, html.theme--documenter-dark .breadcrumb a.is-disabled:hover { + color: #f2f2f2; } + html.theme--documenter-dark .hljs { + background: initial !important; + padding: initial !important; } + html.theme--documenter-dark .katex .katex-mathml { + top: 0; + right: 0; } + html.theme--documenter-dark html { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; } + html.theme--documenter-dark #documenter .docs-main > article { + overflow-wrap: break-word; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-main { + max-width: 52rem; + margin-left: 20rem; + padding-right: 1rem; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-main { + width: 100%; } + html.theme--documenter-dark #documenter .docs-main > article { + max-width: 52rem; + margin-left: auto; + margin-right: auto; + margin-bottom: 1rem; + padding: 0 1rem; } + html.theme--documenter-dark #documenter .docs-main > header, html.theme--documenter-dark #documenter .docs-main > nav { + max-width: 100%; + width: 100%; + margin: 0; } } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar { + background-color: #1f2424; + border-bottom: 1px solid #5e6d6f; + z-index: 2; + min-height: 4rem; + margin-bottom: 1rem; + display: flex; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .breadcrumb { + flex-grow: 1; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right { + display: flex; + white-space: nowrap; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-icon, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label, html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + display: inline-block; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-label { + padding: 0; + margin-left: 0.3em; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { + margin: auto 0 auto 1rem; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + font-size: 1.5rem; + margin: auto 0 auto 1rem; } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar > * { + margin: auto 0; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-main header.docs-navbar { + position: sticky; + top: 0; + padding: 0 1rem; + /* For Headroom.js */ + transition-property: top, box-shadow; + -webkit-transition-property: top, box-shadow; + /* Safari */ + transition-duration: 0.3s; + -webkit-transition-duration: 0.3s; + /* Safari */ } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--not-top { + box-shadow: 0.2rem 0rem 0.4rem #171717; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } + html.theme--documenter-dark #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { + top: -4.5rem; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } } + html.theme--documenter-dark #documenter .docs-main section.footnotes { + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark #documenter .docs-main section.footnotes li .tag:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, html.theme--documenter-dark #documenter .docs-main section.footnotes li .content kbd:first-child, html.theme--documenter-dark .content #documenter .docs-main section.footnotes li kbd:first-child { + margin-right: 1em; + margin-bottom: 0.4em; } + html.theme--documenter-dark #documenter .docs-main .docs-footer { + display: flex; + margin-left: 0; + margin-right: 0; + border-top: 1px solid #5e6d6f; + padding-top: 1rem; + padding-bottom: 1rem; } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-main .docs-footer { + padding-left: 1rem; + padding-right: 1rem; } } + html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage, html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-prevpage { + flex-grow: 1; } + html.theme--documenter-dark #documenter .docs-main .docs-footer .docs-footer-nextpage { + text-align: right; } + html.theme--documenter-dark #documenter .docs-sidebar { + display: flex; + flex-direction: column; + color: #fff; + background-color: #282f2f; + border-right: 1px solid #5e6d6f; + padding: 0; + flex: 0 0 18rem; + z-index: 5; + font-size: 15px; + position: fixed; + left: -18rem; + width: 18rem; + height: 100%; + transition: left 0.3s; + /* Setting up a nicer theme style for the scrollbar */ } + html.theme--documenter-dark #documenter .docs-sidebar.visible { + left: 0; + box-shadow: 0.4rem 0rem 0.8rem #171717; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-sidebar.visible { + box-shadow: none; } } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-sidebar { + left: 0; + top: 0; } } + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo { + margin-top: 1rem; + padding: 0 1rem; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-logo > img { + max-height: 6rem; + margin: auto; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name { + flex-shrink: 0; + font-size: 1.5rem; + font-weight: 700; + text-align: center; + white-space: nowrap; + overflow: hidden; + padding: 0.5rem 0; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-package-name .docs-autofit { + max-width: 16.2rem; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector { + border-top: 1px solid #5e6d6f; + display: none; + padding: 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar .docs-version-selector.visible { + display: flex; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { + flex-grow: 1; + user-select: none; + border-top: 1px solid #5e6d6f; + padding-bottom: 1.5rem; + /* Managing collapsible submenus */ } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li > .tocitem { + font-weight: bold; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li li { + font-size: 14.25px; + margin-left: 1em; + border-left: 1px solid #5e6d6f; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { + display: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.collapsed { + display: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { + display: block; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem { + display: flex; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { + flex-grow: 2; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + font-size: 11.25px; + margin-left: 1rem; + margin-top: auto; + margin-bottom: auto; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f054"; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { + content: "\f078"; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem { + display: block; + padding: 0.5rem 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu .tocitem:hover { + color: #fff; + background: #282f2f; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { + color: #fff; + background-color: #32393a; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active { + border-top: 1px solid #5e6d6f; + border-bottom: 1px solid #5e6d6f; + background-color: #1f2424; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem, html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover { + background-color: #1f2424; + color: #fff; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover { + background-color: #32393a; + color: #fff; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { + border-top: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal { + margin: 0 0.5rem 0.5rem; + border-top: 1px solid #5e6d6f; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal li { + font-size: 12.75px; + border-left: none; + margin-left: 0; + margin-top: 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { + width: 100%; + padding: 0; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { + content: "⚬"; + margin-right: 0.4em; } + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search { + margin: auto; + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + html.theme--documenter-dark #documenter .docs-sidebar form.docs-search > input { + width: 14.4rem; } + @media screen and (min-width: 1056px) { + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { + width: .3rem; + background: none; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #3b4445; } + html.theme--documenter-dark #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { + background: #4e5a5c; } } + @media screen and (max-width: 1055px) { + html.theme--documenter-dark #documenter .docs-sidebar { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar { + width: .3rem; + background: none; } + html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #3b4445; } + html.theme--documenter-dark #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { + background: #4e5a5c; } } + html.theme--documenter-dark #documenter .docs-main #documenter-search-info { + margin-bottom: 1rem; } + html.theme--documenter-dark #documenter .docs-main #documenter-search-results { + list-style-type: circle; + list-style-position: outside; } + html.theme--documenter-dark #documenter .docs-main #documenter-search-results li { + margin-left: 2rem; } + html.theme--documenter-dark #documenter .docs-main #documenter-search-results .docs-highlight { + background-color: yellow; } + html.theme--documenter-dark { + background-color: #1f2424; + font-size: 16px; + min-width: 300px; + overflow-x: auto; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; } + html.theme--documenter-dark .hljs-comment, + html.theme--documenter-dark .hljs-quote { + color: #d4d0ab; } + html.theme--documenter-dark .hljs-variable, + html.theme--documenter-dark .hljs-template-variable, + html.theme--documenter-dark .hljs-tag, + html.theme--documenter-dark .hljs-name, + html.theme--documenter-dark .hljs-selector-id, + html.theme--documenter-dark .hljs-selector-class, + html.theme--documenter-dark .hljs-regexp, + html.theme--documenter-dark .hljs-deletion { + color: #ffa07a; } + html.theme--documenter-dark .hljs-number, + html.theme--documenter-dark .hljs-built_in, + html.theme--documenter-dark .hljs-builtin-name, + html.theme--documenter-dark .hljs-literal, + html.theme--documenter-dark .hljs-type, + html.theme--documenter-dark .hljs-params, + html.theme--documenter-dark .hljs-meta, + html.theme--documenter-dark .hljs-link { + color: #f5ab35; } + html.theme--documenter-dark .hljs-attribute { + color: #ffd700; } + html.theme--documenter-dark .hljs-string, + html.theme--documenter-dark .hljs-symbol, + html.theme--documenter-dark .hljs-bullet, + html.theme--documenter-dark .hljs-addition { + color: #abe338; } + html.theme--documenter-dark .hljs-title, + html.theme--documenter-dark .hljs-section { + color: #00e0e0; } + html.theme--documenter-dark .hljs-keyword, + html.theme--documenter-dark .hljs-selector-tag { + color: #dcc6e0; } + html.theme--documenter-dark .hljs { + display: block; + overflow-x: auto; + background: #2b2b2b; + color: #f8f8f2; + padding: 0.5em; } + html.theme--documenter-dark .hljs-emphasis { + font-style: italic; } + html.theme--documenter-dark .hljs-strong { + font-weight: bold; } + @media screen and (-ms-high-contrast: active) { + html.theme--documenter-dark .hljs-addition, + html.theme--documenter-dark .hljs-attribute, + html.theme--documenter-dark .hljs-built_in, + html.theme--documenter-dark .hljs-builtin-name, + html.theme--documenter-dark .hljs-bullet, + html.theme--documenter-dark .hljs-comment, + html.theme--documenter-dark .hljs-link, + html.theme--documenter-dark .hljs-literal, + html.theme--documenter-dark .hljs-meta, + html.theme--documenter-dark .hljs-number, + html.theme--documenter-dark .hljs-params, + html.theme--documenter-dark .hljs-string, + html.theme--documenter-dark .hljs-symbol, + html.theme--documenter-dark .hljs-type, + html.theme--documenter-dark .hljs-quote { + color: highlight; } + html.theme--documenter-dark .hljs-keyword, + html.theme--documenter-dark .hljs-selector-tag { + font-weight: bold; } } + html.theme--documenter-dark .hljs-subst { + color: #f8f8f2; } diff --git a/v0.16.8/assets/themes/documenter-light.css b/v0.16.8/assets/themes/documenter-light.css new file mode 100644 index 00000000..bfb4e9db --- /dev/null +++ b/v0.16.8/assets/themes/documenter-light.css @@ -0,0 +1,7614 @@ +@charset "UTF-8"; +/* Font Awesome 5 mixin. Can be included in any rule that should render Font Awesome icons. */ +@keyframes spinAround { + from { + transform: rotate(0deg); } + to { + transform: rotate(359deg); } } + +.delete, .modal-close, .is-unselectable, .button, .file, .breadcrumb, .pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis, .tabs { + -webkit-touch-callout: none; + -webkit-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; } + +.select:not(.is-multiple):not(.is-loading)::after, .navbar-link:not(.is-arrowless)::after { + border: 3px solid transparent; + border-radius: 2px; + border-right: 0; + border-top: 0; + content: " "; + display: block; + height: 0.625em; + margin-top: -0.4375em; + pointer-events: none; + position: absolute; + top: 50%; + transform: rotate(-45deg); + transform-origin: center; + width: 0.625em; } + +.box:not(:last-child), .content:not(:last-child), .notification:not(:last-child), .progress:not(:last-child), .table:not(:last-child), .table-container:not(:last-child), .title:not(:last-child), +.subtitle:not(:last-child), .block:not(:last-child), .highlight:not(:last-child), .breadcrumb:not(:last-child), .level:not(:last-child), .list:not(:last-child), .message:not(:last-child), .tabs:not(:last-child), .admonition:not(:last-child) { + margin-bottom: 1.5rem; } + +.delete, .modal-close { + -moz-appearance: none; + -webkit-appearance: none; + background-color: rgba(10, 10, 10, 0.2); + border: none; + border-radius: 290486px; + cursor: pointer; + pointer-events: auto; + display: inline-block; + flex-grow: 0; + flex-shrink: 0; + font-size: 0; + height: 20px; + max-height: 20px; + max-width: 20px; + min-height: 20px; + min-width: 20px; + outline: none; + position: relative; + vertical-align: top; + width: 20px; } + .delete::before, .modal-close::before, .delete::after, .modal-close::after { + background-color: white; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + .delete::before, .modal-close::before { + height: 2px; + width: 50%; } + .delete::after, .modal-close::after { + height: 50%; + width: 2px; } + .delete:hover, .modal-close:hover, .delete:focus, .modal-close:focus { + background-color: rgba(10, 10, 10, 0.3); } + .delete:active, .modal-close:active { + background-color: rgba(10, 10, 10, 0.4); } + .is-small.delete, #documenter .docs-sidebar form.docs-search > input.delete, .is-small.modal-close, #documenter .docs-sidebar form.docs-search > input.modal-close { + height: 16px; + max-height: 16px; + max-width: 16px; + min-height: 16px; + min-width: 16px; + width: 16px; } + .is-medium.delete, .is-medium.modal-close { + height: 24px; + max-height: 24px; + max-width: 24px; + min-height: 24px; + min-width: 24px; + width: 24px; } + .is-large.delete, .is-large.modal-close { + height: 32px; + max-height: 32px; + max-width: 32px; + min-height: 32px; + min-width: 32px; + width: 32px; } + +.button.is-loading::after, .loader, .select.is-loading::after, .control.is-loading::after { + animation: spinAround 500ms infinite linear; + border: 2px solid #dbdbdb; + border-radius: 290486px; + border-right-color: transparent; + border-top-color: transparent; + content: ""; + display: block; + height: 1em; + position: relative; + width: 1em; } + +.is-overlay, .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, +.image.is-square .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, +.image.is-1by1 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, +.image.is-5by4 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, +.image.is-4by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, +.image.is-3by2 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, +.image.is-5by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, +.image.is-16by9 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, +.image.is-2by1 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, +.image.is-3by1 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, +.image.is-4by5 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, +.image.is-3by4 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, +.image.is-2by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, +.image.is-3by5 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, +.image.is-9by16 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, +.image.is-1by2 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, +.image.is-1by3 .has-ratio, +#documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio, .modal, .modal-background, .hero-video { + bottom: 0; + left: 0; + position: absolute; + right: 0; + top: 0; } + +.button, .input, #documenter .docs-sidebar form.docs-search > input, .textarea, .select select, .file-cta, +.file-name, .pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis { + -moz-appearance: none; + -webkit-appearance: none; + align-items: center; + border: 1px solid transparent; + border-radius: 4px; + box-shadow: none; + display: inline-flex; + font-size: 1rem; + height: 2.25em; + justify-content: flex-start; + line-height: 1.5; + padding-bottom: calc(0.375em - 1px); + padding-left: calc(0.625em - 1px); + padding-right: calc(0.625em - 1px); + padding-top: calc(0.375em - 1px); + position: relative; + vertical-align: top; } + .button:focus, .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .textarea:focus, .select select:focus, .file-cta:focus, + .file-name:focus, .pagination-previous:focus, + .pagination-next:focus, + .pagination-link:focus, + .pagination-ellipsis:focus, .is-focused.button, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-focused.textarea, .select select.is-focused, .is-focused.file-cta, + .is-focused.file-name, .is-focused.pagination-previous, + .is-focused.pagination-next, + .is-focused.pagination-link, + .is-focused.pagination-ellipsis, .button:active, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .textarea:active, .select select:active, .file-cta:active, + .file-name:active, .pagination-previous:active, + .pagination-next:active, + .pagination-link:active, + .pagination-ellipsis:active, .is-active.button, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .is-active.textarea, .select select.is-active, .is-active.file-cta, + .is-active.file-name, .is-active.pagination-previous, + .is-active.pagination-next, + .is-active.pagination-link, + .is-active.pagination-ellipsis { + outline: none; } + .button[disabled], .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], .textarea[disabled], .select select[disabled], .file-cta[disabled], + .file-name[disabled], .pagination-previous[disabled], + .pagination-next[disabled], + .pagination-link[disabled], + .pagination-ellipsis[disabled], + fieldset[disabled] .button, + fieldset[disabled] .input, + fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, + fieldset[disabled] .textarea, + fieldset[disabled] .select select, + .select fieldset[disabled] select, + fieldset[disabled] .file-cta, + fieldset[disabled] .file-name, + fieldset[disabled] .pagination-previous, + fieldset[disabled] .pagination-next, + fieldset[disabled] .pagination-link, + fieldset[disabled] .pagination-ellipsis { + cursor: not-allowed; } + +/*! minireset.css v0.0.4 | MIT License | github.com/jgthms/minireset.css */ +html, +body, +p, +ol, +ul, +li, +dl, +dt, +dd, +blockquote, +figure, +fieldset, +legend, +textarea, +pre, +iframe, +hr, +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; } + +h1, +h2, +h3, +h4, +h5, +h6 { + font-size: 100%; + font-weight: normal; } + +ul { + list-style: none; } + +button, +input, +select, +textarea { + margin: 0; } + +html { + box-sizing: border-box; } + +*, *::before, *::after { + box-sizing: inherit; } + +img, +embed, +iframe, +object, +video { + height: auto; + max-width: 100%; } + +audio { + max-width: 100%; } + +iframe { + border: 0; } + +table { + border-collapse: collapse; + border-spacing: 0; } + +td, +th { + padding: 0; } + td:not([align]), + th:not([align]) { + text-align: left; } + +html { + background-color: white; + font-size: 16px; + -moz-osx-font-smoothing: grayscale; + -webkit-font-smoothing: antialiased; + min-width: 300px; + overflow-x: auto; + overflow-y: scroll; + text-rendering: optimizeLegibility; + text-size-adjust: 100%; } + +article, +aside, +figure, +footer, +header, +hgroup, +section { + display: block; } + +body, +button, +input, +select, +textarea { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif; } + +code, +pre { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; + font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace; } + +body { + color: #222222; + font-size: 1em; + font-weight: 400; + line-height: 1.5; } + +a { + color: #2e63b8; + cursor: pointer; + text-decoration: none; } + a strong { + color: currentColor; } + a:hover { + color: #363636; } + +code { + background-color: rgba(0, 0, 0, 0.05); + color: #000000; + font-size: 0.875em; + font-weight: normal; + padding: 0.1em; } + +hr { + background-color: whitesmoke; + border: none; + display: block; + height: 2px; + margin: 1.5rem 0; } + +img { + height: auto; + max-width: 100%; } + +input[type="checkbox"], +input[type="radio"] { + vertical-align: baseline; } + +small { + font-size: 0.875em; } + +span { + font-style: inherit; + font-weight: inherit; } + +strong { + color: #222222; + font-weight: 700; } + +fieldset { + border: none; } + +pre { + -webkit-overflow-scrolling: touch; + background-color: whitesmoke; + color: #222222; + font-size: 0.875em; + overflow-x: auto; + padding: 1.25rem 1.5rem; + white-space: pre; + word-wrap: normal; } + pre code { + background-color: transparent; + color: currentColor; + font-size: 1em; + padding: 0; } + +table td, +table th { + vertical-align: top; } + table td:not([align]), + table th:not([align]) { + text-align: left; } + +table th { + color: #222222; } + +.is-clearfix::after { + clear: both; + content: " "; + display: table; } + +.is-pulled-left { + float: left !important; } + +.is-pulled-right { + float: right !important; } + +.is-clipped { + overflow: hidden !important; } + +.is-size-1 { + font-size: 3rem !important; } + +.is-size-2 { + font-size: 2.5rem !important; } + +.is-size-3 { + font-size: 2rem !important; } + +.is-size-4 { + font-size: 1.5rem !important; } + +.is-size-5 { + font-size: 1.25rem !important; } + +.is-size-6 { + font-size: 1rem !important; } + +.is-size-7, .docstring > section > a.docs-sourcelink { + font-size: 0.75rem !important; } + +@media screen and (max-width: 768px) { + .is-size-1-mobile { + font-size: 3rem !important; } + .is-size-2-mobile { + font-size: 2.5rem !important; } + .is-size-3-mobile { + font-size: 2rem !important; } + .is-size-4-mobile { + font-size: 1.5rem !important; } + .is-size-5-mobile { + font-size: 1.25rem !important; } + .is-size-6-mobile { + font-size: 1rem !important; } + .is-size-7-mobile { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 769px), print { + .is-size-1-tablet { + font-size: 3rem !important; } + .is-size-2-tablet { + font-size: 2.5rem !important; } + .is-size-3-tablet { + font-size: 2rem !important; } + .is-size-4-tablet { + font-size: 1.5rem !important; } + .is-size-5-tablet { + font-size: 1.25rem !important; } + .is-size-6-tablet { + font-size: 1rem !important; } + .is-size-7-tablet { + font-size: 0.75rem !important; } } + +@media screen and (max-width: 1055px) { + .is-size-1-touch { + font-size: 3rem !important; } + .is-size-2-touch { + font-size: 2.5rem !important; } + .is-size-3-touch { + font-size: 2rem !important; } + .is-size-4-touch { + font-size: 1.5rem !important; } + .is-size-5-touch { + font-size: 1.25rem !important; } + .is-size-6-touch { + font-size: 1rem !important; } + .is-size-7-touch { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 1056px) { + .is-size-1-desktop { + font-size: 3rem !important; } + .is-size-2-desktop { + font-size: 2.5rem !important; } + .is-size-3-desktop { + font-size: 2rem !important; } + .is-size-4-desktop { + font-size: 1.5rem !important; } + .is-size-5-desktop { + font-size: 1.25rem !important; } + .is-size-6-desktop { + font-size: 1rem !important; } + .is-size-7-desktop { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 1216px) { + .is-size-1-widescreen { + font-size: 3rem !important; } + .is-size-2-widescreen { + font-size: 2.5rem !important; } + .is-size-3-widescreen { + font-size: 2rem !important; } + .is-size-4-widescreen { + font-size: 1.5rem !important; } + .is-size-5-widescreen { + font-size: 1.25rem !important; } + .is-size-6-widescreen { + font-size: 1rem !important; } + .is-size-7-widescreen { + font-size: 0.75rem !important; } } + +@media screen and (min-width: 1408px) { + .is-size-1-fullhd { + font-size: 3rem !important; } + .is-size-2-fullhd { + font-size: 2.5rem !important; } + .is-size-3-fullhd { + font-size: 2rem !important; } + .is-size-4-fullhd { + font-size: 1.5rem !important; } + .is-size-5-fullhd { + font-size: 1.25rem !important; } + .is-size-6-fullhd { + font-size: 1rem !important; } + .is-size-7-fullhd { + font-size: 0.75rem !important; } } + +.has-text-centered { + text-align: center !important; } + +.has-text-justified { + text-align: justify !important; } + +.has-text-left { + text-align: left !important; } + +.has-text-right { + text-align: right !important; } + +@media screen and (max-width: 768px) { + .has-text-centered-mobile { + text-align: center !important; } } + +@media screen and (min-width: 769px), print { + .has-text-centered-tablet { + text-align: center !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-centered-tablet-only { + text-align: center !important; } } + +@media screen and (max-width: 1055px) { + .has-text-centered-touch { + text-align: center !important; } } + +@media screen and (min-width: 1056px) { + .has-text-centered-desktop { + text-align: center !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-centered-desktop-only { + text-align: center !important; } } + +@media screen and (min-width: 1216px) { + .has-text-centered-widescreen { + text-align: center !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-centered-widescreen-only { + text-align: center !important; } } + +@media screen and (min-width: 1408px) { + .has-text-centered-fullhd { + text-align: center !important; } } + +@media screen and (max-width: 768px) { + .has-text-justified-mobile { + text-align: justify !important; } } + +@media screen and (min-width: 769px), print { + .has-text-justified-tablet { + text-align: justify !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-justified-tablet-only { + text-align: justify !important; } } + +@media screen and (max-width: 1055px) { + .has-text-justified-touch { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) { + .has-text-justified-desktop { + text-align: justify !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-justified-desktop-only { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) { + .has-text-justified-widescreen { + text-align: justify !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-justified-widescreen-only { + text-align: justify !important; } } + +@media screen and (min-width: 1408px) { + .has-text-justified-fullhd { + text-align: justify !important; } } + +@media screen and (max-width: 768px) { + .has-text-left-mobile { + text-align: left !important; } } + +@media screen and (min-width: 769px), print { + .has-text-left-tablet { + text-align: left !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-left-tablet-only { + text-align: left !important; } } + +@media screen and (max-width: 1055px) { + .has-text-left-touch { + text-align: left !important; } } + +@media screen and (min-width: 1056px) { + .has-text-left-desktop { + text-align: left !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-left-desktop-only { + text-align: left !important; } } + +@media screen and (min-width: 1216px) { + .has-text-left-widescreen { + text-align: left !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-left-widescreen-only { + text-align: left !important; } } + +@media screen and (min-width: 1408px) { + .has-text-left-fullhd { + text-align: left !important; } } + +@media screen and (max-width: 768px) { + .has-text-right-mobile { + text-align: right !important; } } + +@media screen and (min-width: 769px), print { + .has-text-right-tablet { + text-align: right !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .has-text-right-tablet-only { + text-align: right !important; } } + +@media screen and (max-width: 1055px) { + .has-text-right-touch { + text-align: right !important; } } + +@media screen and (min-width: 1056px) { + .has-text-right-desktop { + text-align: right !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .has-text-right-desktop-only { + text-align: right !important; } } + +@media screen and (min-width: 1216px) { + .has-text-right-widescreen { + text-align: right !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .has-text-right-widescreen-only { + text-align: right !important; } } + +@media screen and (min-width: 1408px) { + .has-text-right-fullhd { + text-align: right !important; } } + +.is-capitalized { + text-transform: capitalize !important; } + +.is-lowercase { + text-transform: lowercase !important; } + +.is-uppercase { + text-transform: uppercase !important; } + +.is-italic { + font-style: italic !important; } + +.has-text-white { + color: white !important; } + +a.has-text-white:hover, a.has-text-white:focus { + color: #e6e6e6 !important; } + +.has-background-white { + background-color: white !important; } + +.has-text-black { + color: #0a0a0a !important; } + +a.has-text-black:hover, a.has-text-black:focus { + color: black !important; } + +.has-background-black { + background-color: #0a0a0a !important; } + +.has-text-light { + color: whitesmoke !important; } + +a.has-text-light:hover, a.has-text-light:focus { + color: #dbdbdb !important; } + +.has-background-light { + background-color: whitesmoke !important; } + +.has-text-dark { + color: #363636 !important; } + +a.has-text-dark:hover, a.has-text-dark:focus { + color: #1c1c1c !important; } + +.has-background-dark { + background-color: #363636 !important; } + +.has-text-primary { + color: #4eb5de !important; } + +a.has-text-primary:hover, a.has-text-primary:focus { + color: #27a1d2 !important; } + +.has-background-primary { + background-color: #4eb5de !important; } + +.has-text-link { + color: #2e63b8 !important; } + +a.has-text-link:hover, a.has-text-link:focus { + color: #244d8f !important; } + +.has-background-link { + background-color: #2e63b8 !important; } + +.has-text-info { + color: #209cee !important; } + +a.has-text-info:hover, a.has-text-info:focus { + color: #0f81cc !important; } + +.has-background-info { + background-color: #209cee !important; } + +.has-text-success { + color: #22c35b !important; } + +a.has-text-success:hover, a.has-text-success:focus { + color: #1a9847 !important; } + +.has-background-success { + background-color: #22c35b !important; } + +.has-text-warning { + color: #ffdd57 !important; } + +a.has-text-warning:hover, a.has-text-warning:focus { + color: #ffd324 !important; } + +.has-background-warning { + background-color: #ffdd57 !important; } + +.has-text-danger { + color: #da0b00 !important; } + +a.has-text-danger:hover, a.has-text-danger:focus { + color: #a70800 !important; } + +.has-background-danger { + background-color: #da0b00 !important; } + +.has-text-black-bis { + color: #121212 !important; } + +.has-background-black-bis { + background-color: #121212 !important; } + +.has-text-black-ter { + color: #242424 !important; } + +.has-background-black-ter { + background-color: #242424 !important; } + +.has-text-grey-darker { + color: #363636 !important; } + +.has-background-grey-darker { + background-color: #363636 !important; } + +.has-text-grey-dark { + color: #4a4a4a !important; } + +.has-background-grey-dark { + background-color: #4a4a4a !important; } + +.has-text-grey { + color: #7a7a7a !important; } + +.has-background-grey { + background-color: #7a7a7a !important; } + +.has-text-grey-light { + color: #b5b5b5 !important; } + +.has-background-grey-light { + background-color: #b5b5b5 !important; } + +.has-text-grey-lighter { + color: #dbdbdb !important; } + +.has-background-grey-lighter { + background-color: #dbdbdb !important; } + +.has-text-white-ter { + color: whitesmoke !important; } + +.has-background-white-ter { + background-color: whitesmoke !important; } + +.has-text-white-bis { + color: #fafafa !important; } + +.has-background-white-bis { + background-color: #fafafa !important; } + +.has-text-weight-light { + font-weight: 300 !important; } + +.has-text-weight-normal { + font-weight: 400 !important; } + +.has-text-weight-medium { + font-weight: 500 !important; } + +.has-text-weight-semibold { + font-weight: 600 !important; } + +.has-text-weight-bold { + font-weight: 700 !important; } + +.is-family-primary { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-secondary { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-sans-serif { + font-family: "Lato", -apple-system, BlinkMacSystemFont, "Segoe UI", "Helvetica Neue", "Helvetica", "Arial", sans-serif !important; } + +.is-family-monospace { + font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-family-code { + font-family: "Roboto Mono", "SFMono-Regular", "Menlo", "Consolas", "Liberation Mono", "DejaVu Sans Mono", monospace !important; } + +.is-block { + display: block !important; } + +@media screen and (max-width: 768px) { + .is-block-mobile { + display: block !important; } } + +@media screen and (min-width: 769px), print { + .is-block-tablet { + display: block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-block-tablet-only { + display: block !important; } } + +@media screen and (max-width: 1055px) { + .is-block-touch { + display: block !important; } } + +@media screen and (min-width: 1056px) { + .is-block-desktop { + display: block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-block-desktop-only { + display: block !important; } } + +@media screen and (min-width: 1216px) { + .is-block-widescreen { + display: block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-block-widescreen-only { + display: block !important; } } + +@media screen and (min-width: 1408px) { + .is-block-fullhd { + display: block !important; } } + +.is-flex { + display: flex !important; } + +@media screen and (max-width: 768px) { + .is-flex-mobile { + display: flex !important; } } + +@media screen and (min-width: 769px), print { + .is-flex-tablet { + display: flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-flex-tablet-only { + display: flex !important; } } + +@media screen and (max-width: 1055px) { + .is-flex-touch { + display: flex !important; } } + +@media screen and (min-width: 1056px) { + .is-flex-desktop { + display: flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-flex-desktop-only { + display: flex !important; } } + +@media screen and (min-width: 1216px) { + .is-flex-widescreen { + display: flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-flex-widescreen-only { + display: flex !important; } } + +@media screen and (min-width: 1408px) { + .is-flex-fullhd { + display: flex !important; } } + +.is-inline { + display: inline !important; } + +@media screen and (max-width: 768px) { + .is-inline-mobile { + display: inline !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-tablet { + display: inline !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-tablet-only { + display: inline !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-touch { + display: inline !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-desktop { + display: inline !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-desktop-only { + display: inline !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-widescreen { + display: inline !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-widescreen-only { + display: inline !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-fullhd { + display: inline !important; } } + +.is-inline-block { + display: inline-block !important; } + +@media screen and (max-width: 768px) { + .is-inline-block-mobile { + display: inline-block !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-block-tablet { + display: inline-block !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-block-tablet-only { + display: inline-block !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-block-touch { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-block-desktop { + display: inline-block !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-block-desktop-only { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-block-widescreen { + display: inline-block !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-block-widescreen-only { + display: inline-block !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-block-fullhd { + display: inline-block !important; } } + +.is-inline-flex { + display: inline-flex !important; } + +@media screen and (max-width: 768px) { + .is-inline-flex-mobile { + display: inline-flex !important; } } + +@media screen and (min-width: 769px), print { + .is-inline-flex-tablet { + display: inline-flex !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-inline-flex-tablet-only { + display: inline-flex !important; } } + +@media screen and (max-width: 1055px) { + .is-inline-flex-touch { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) { + .is-inline-flex-desktop { + display: inline-flex !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-inline-flex-desktop-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) { + .is-inline-flex-widescreen { + display: inline-flex !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-inline-flex-widescreen-only { + display: inline-flex !important; } } + +@media screen and (min-width: 1408px) { + .is-inline-flex-fullhd { + display: inline-flex !important; } } + +.is-hidden { + display: none !important; } + +.is-sr-only { + border: none !important; + clip: rect(0, 0, 0, 0) !important; + height: 0.01em !important; + overflow: hidden !important; + padding: 0 !important; + position: absolute !important; + white-space: nowrap !important; + width: 0.01em !important; } + +@media screen and (max-width: 768px) { + .is-hidden-mobile { + display: none !important; } } + +@media screen and (min-width: 769px), print { + .is-hidden-tablet { + display: none !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-hidden-tablet-only { + display: none !important; } } + +@media screen and (max-width: 1055px) { + .is-hidden-touch { + display: none !important; } } + +@media screen and (min-width: 1056px) { + .is-hidden-desktop { + display: none !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-hidden-desktop-only { + display: none !important; } } + +@media screen and (min-width: 1216px) { + .is-hidden-widescreen { + display: none !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-hidden-widescreen-only { + display: none !important; } } + +@media screen and (min-width: 1408px) { + .is-hidden-fullhd { + display: none !important; } } + +.is-invisible { + visibility: hidden !important; } + +@media screen and (max-width: 768px) { + .is-invisible-mobile { + visibility: hidden !important; } } + +@media screen and (min-width: 769px), print { + .is-invisible-tablet { + visibility: hidden !important; } } + +@media screen and (min-width: 769px) and (max-width: 1055px) { + .is-invisible-tablet-only { + visibility: hidden !important; } } + +@media screen and (max-width: 1055px) { + .is-invisible-touch { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) { + .is-invisible-desktop { + visibility: hidden !important; } } + +@media screen and (min-width: 1056px) and (max-width: 1215px) { + .is-invisible-desktop-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) { + .is-invisible-widescreen { + visibility: hidden !important; } } + +@media screen and (min-width: 1216px) and (max-width: 1407px) { + .is-invisible-widescreen-only { + visibility: hidden !important; } } + +@media screen and (min-width: 1408px) { + .is-invisible-fullhd { + visibility: hidden !important; } } + +.is-marginless { + margin: 0 !important; } + +.is-paddingless { + padding: 0 !important; } + +.is-radiusless { + border-radius: 0 !important; } + +.is-shadowless { + box-shadow: none !important; } + +.is-relative { + position: relative !important; } + +.box { + background-color: white; + border-radius: 6px; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + color: #222222; + display: block; + padding: 1.25rem; } + +a.box:hover, a.box:focus { + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px #2e63b8; } + +a.box:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2), 0 0 0 1px #2e63b8; } + +.button { + background-color: white; + border-color: #dbdbdb; + border-width: 1px; + color: #363636; + cursor: pointer; + justify-content: center; + padding-bottom: calc(0.375em - 1px); + padding-left: 0.75em; + padding-right: 0.75em; + padding-top: calc(0.375em - 1px); + text-align: center; + white-space: nowrap; } + .button strong { + color: inherit; } + .button .icon, .button .icon.is-small, .button #documenter .docs-sidebar form.docs-search > input.icon, #documenter .docs-sidebar .button form.docs-search > input.icon, .button .icon.is-medium, .button .icon.is-large { + height: 1.5em; + width: 1.5em; } + .button .icon:first-child:not(:last-child) { + margin-left: calc(-0.375em - 1px); + margin-right: 0.1875em; } + .button .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: calc(-0.375em - 1px); } + .button .icon:first-child:last-child { + margin-left: calc(-0.375em - 1px); + margin-right: calc(-0.375em - 1px); } + .button:hover, .button.is-hovered { + border-color: #b5b5b5; + color: #363636; } + .button:focus, .button.is-focused { + border-color: #2e63b8; + color: #363636; } + .button:focus:not(:active), .button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .button:active, .button.is-active { + border-color: #4a4a4a; + color: #363636; } + .button.is-text { + background-color: transparent; + border-color: transparent; + color: #222222; + text-decoration: underline; } + .button.is-text:hover, .button.is-text.is-hovered, .button.is-text:focus, .button.is-text.is-focused { + background-color: whitesmoke; + color: #222222; } + .button.is-text:active, .button.is-text.is-active { + background-color: #e8e8e8; + color: #222222; } + .button.is-text[disabled], + fieldset[disabled] .button.is-text { + background-color: transparent; + border-color: transparent; + box-shadow: none; } + .button.is-white { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + .button.is-white:hover, .button.is-white.is-hovered { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + .button.is-white:focus, .button.is-white.is-focused { + border-color: transparent; + color: #0a0a0a; } + .button.is-white:focus:not(:active), .button.is-white.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .button.is-white:active, .button.is-white.is-active { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + .button.is-white[disabled], + fieldset[disabled] .button.is-white { + background-color: white; + border-color: transparent; + box-shadow: none; } + .button.is-white.is-inverted { + background-color: #0a0a0a; + color: white; } + .button.is-white.is-inverted:hover, .button.is-white.is-inverted.is-hovered { + background-color: black; } + .button.is-white.is-inverted[disabled], + fieldset[disabled] .button.is-white.is-inverted { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; + color: white; } + .button.is-white.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + .button.is-white.is-outlined:hover, .button.is-white.is-outlined.is-hovered, .button.is-white.is-outlined:focus, .button.is-white.is-outlined.is-focused { + background-color: white; + border-color: white; + color: #0a0a0a; } + .button.is-white.is-outlined.is-loading::after { + border-color: transparent transparent white white !important; } + .button.is-white.is-outlined.is-loading:hover::after, .button.is-white.is-outlined.is-loading.is-hovered::after, .button.is-white.is-outlined.is-loading:focus::after, .button.is-white.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-white.is-outlined[disabled], + fieldset[disabled] .button.is-white.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + .button.is-white.is-inverted.is-outlined:hover, .button.is-white.is-inverted.is-outlined.is-hovered, .button.is-white.is-inverted.is-outlined:focus, .button.is-white.is-inverted.is-outlined.is-focused { + background-color: #0a0a0a; + color: white; } + .button.is-white.is-inverted.is-outlined.is-loading:hover::after, .button.is-white.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-white.is-inverted.is-outlined.is-loading:focus::after, .button.is-white.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + .button.is-white.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-white.is-inverted.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + .button.is-black:hover, .button.is-black.is-hovered { + background-color: #040404; + border-color: transparent; + color: white; } + .button.is-black:focus, .button.is-black.is-focused { + border-color: transparent; + color: white; } + .button.is-black:focus:not(:active), .button.is-black.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .button.is-black:active, .button.is-black.is-active { + background-color: black; + border-color: transparent; + color: white; } + .button.is-black[disabled], + fieldset[disabled] .button.is-black { + background-color: #0a0a0a; + border-color: transparent; + box-shadow: none; } + .button.is-black.is-inverted { + background-color: white; + color: #0a0a0a; } + .button.is-black.is-inverted:hover, .button.is-black.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-black.is-inverted[disabled], + fieldset[disabled] .button.is-black.is-inverted { + background-color: white; + border-color: transparent; + box-shadow: none; + color: #0a0a0a; } + .button.is-black.is-loading::after { + border-color: transparent transparent white white !important; } + .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + color: #0a0a0a; } + .button.is-black.is-outlined:hover, .button.is-black.is-outlined.is-hovered, .button.is-black.is-outlined:focus, .button.is-black.is-outlined.is-focused { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .button.is-black.is-outlined.is-loading::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-black.is-outlined.is-loading:hover::after, .button.is-black.is-outlined.is-loading.is-hovered::after, .button.is-black.is-outlined.is-loading:focus::after, .button.is-black.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent white white !important; } + .button.is-black.is-outlined[disabled], + fieldset[disabled] .button.is-black.is-outlined { + background-color: transparent; + border-color: #0a0a0a; + box-shadow: none; + color: #0a0a0a; } + .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + color: white; } + .button.is-black.is-inverted.is-outlined:hover, .button.is-black.is-inverted.is-outlined.is-hovered, .button.is-black.is-inverted.is-outlined:focus, .button.is-black.is-inverted.is-outlined.is-focused { + background-color: white; + color: #0a0a0a; } + .button.is-black.is-inverted.is-outlined.is-loading:hover::after, .button.is-black.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-black.is-inverted.is-outlined.is-loading:focus::after, .button.is-black.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #0a0a0a #0a0a0a !important; } + .button.is-black.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-black.is-inverted.is-outlined { + background-color: transparent; + border-color: white; + box-shadow: none; + color: white; } + .button.is-light { + background-color: whitesmoke; + border-color: transparent; + color: #363636; } + .button.is-light:hover, .button.is-light.is-hovered { + background-color: #eeeeee; + border-color: transparent; + color: #363636; } + .button.is-light:focus, .button.is-light.is-focused { + border-color: transparent; + color: #363636; } + .button.is-light:focus:not(:active), .button.is-light.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .button.is-light:active, .button.is-light.is-active { + background-color: #e8e8e8; + border-color: transparent; + color: #363636; } + .button.is-light[disabled], + fieldset[disabled] .button.is-light { + background-color: whitesmoke; + border-color: transparent; + box-shadow: none; } + .button.is-light.is-inverted { + background-color: #363636; + color: whitesmoke; } + .button.is-light.is-inverted:hover, .button.is-light.is-inverted.is-hovered { + background-color: #292929; } + .button.is-light.is-inverted[disabled], + fieldset[disabled] .button.is-light.is-inverted { + background-color: #363636; + border-color: transparent; + box-shadow: none; + color: whitesmoke; } + .button.is-light.is-loading::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + color: whitesmoke; } + .button.is-light.is-outlined:hover, .button.is-light.is-outlined.is-hovered, .button.is-light.is-outlined:focus, .button.is-light.is-outlined.is-focused { + background-color: whitesmoke; + border-color: whitesmoke; + color: #363636; } + .button.is-light.is-outlined.is-loading::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-light.is-outlined.is-loading:hover::after, .button.is-light.is-outlined.is-loading.is-hovered::after, .button.is-light.is-outlined.is-loading:focus::after, .button.is-light.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-light.is-outlined[disabled], + fieldset[disabled] .button.is-light.is-outlined { + background-color: transparent; + border-color: whitesmoke; + box-shadow: none; + color: whitesmoke; } + .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #363636; + color: #363636; } + .button.is-light.is-inverted.is-outlined:hover, .button.is-light.is-inverted.is-outlined.is-hovered, .button.is-light.is-inverted.is-outlined:focus, .button.is-light.is-inverted.is-outlined.is-focused { + background-color: #363636; + color: whitesmoke; } + .button.is-light.is-inverted.is-outlined.is-loading:hover::after, .button.is-light.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-light.is-inverted.is-outlined.is-loading:focus::after, .button.is-light.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-light.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-light.is-inverted.is-outlined { + background-color: transparent; + border-color: #363636; + box-shadow: none; + color: #363636; } + .button.is-dark, .content kbd.button { + background-color: #363636; + border-color: transparent; + color: whitesmoke; } + .button.is-dark:hover, .content kbd.button:hover, .button.is-dark.is-hovered, .content kbd.button.is-hovered { + background-color: #2f2f2f; + border-color: transparent; + color: whitesmoke; } + .button.is-dark:focus, .content kbd.button:focus, .button.is-dark.is-focused, .content kbd.button.is-focused { + border-color: transparent; + color: whitesmoke; } + .button.is-dark:focus:not(:active), .content kbd.button:focus:not(:active), .button.is-dark.is-focused:not(:active), .content kbd.button.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .button.is-dark:active, .content kbd.button:active, .button.is-dark.is-active, .content kbd.button.is-active { + background-color: #292929; + border-color: transparent; + color: whitesmoke; } + .button.is-dark[disabled], .content kbd.button[disabled], + fieldset[disabled] .button.is-dark, + fieldset[disabled] .content kbd.button, + .content fieldset[disabled] kbd.button { + background-color: #363636; + border-color: transparent; + box-shadow: none; } + .button.is-dark.is-inverted, .content kbd.button.is-inverted { + background-color: whitesmoke; + color: #363636; } + .button.is-dark.is-inverted:hover, .content kbd.button.is-inverted:hover, .button.is-dark.is-inverted.is-hovered, .content kbd.button.is-inverted.is-hovered { + background-color: #e8e8e8; } + .button.is-dark.is-inverted[disabled], .content kbd.button.is-inverted[disabled], + fieldset[disabled] .button.is-dark.is-inverted, + fieldset[disabled] .content kbd.button.is-inverted, + .content fieldset[disabled] kbd.button.is-inverted { + background-color: whitesmoke; + border-color: transparent; + box-shadow: none; + color: #363636; } + .button.is-dark.is-loading::after, .content kbd.button.is-loading::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-dark.is-outlined, .content kbd.button.is-outlined { + background-color: transparent; + border-color: #363636; + color: #363636; } + .button.is-dark.is-outlined:hover, .content kbd.button.is-outlined:hover, .button.is-dark.is-outlined.is-hovered, .content kbd.button.is-outlined.is-hovered, .button.is-dark.is-outlined:focus, .content kbd.button.is-outlined:focus, .button.is-dark.is-outlined.is-focused, .content kbd.button.is-outlined.is-focused { + background-color: #363636; + border-color: #363636; + color: whitesmoke; } + .button.is-dark.is-outlined.is-loading::after, .content kbd.button.is-outlined.is-loading::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-dark.is-outlined.is-loading:hover::after, .content kbd.button.is-outlined.is-loading:hover::after, .button.is-dark.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-outlined.is-loading:focus::after, .content kbd.button.is-outlined.is-loading:focus::after, .button.is-dark.is-outlined.is-loading.is-focused::after, .content kbd.button.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent whitesmoke whitesmoke !important; } + .button.is-dark.is-outlined[disabled], .content kbd.button.is-outlined[disabled], + fieldset[disabled] .button.is-dark.is-outlined, + fieldset[disabled] .content kbd.button.is-outlined, + .content fieldset[disabled] kbd.button.is-outlined { + background-color: transparent; + border-color: #363636; + box-shadow: none; + color: #363636; } + .button.is-dark.is-inverted.is-outlined, .content kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: whitesmoke; + color: whitesmoke; } + .button.is-dark.is-inverted.is-outlined:hover, .content kbd.button.is-inverted.is-outlined:hover, .button.is-dark.is-inverted.is-outlined.is-hovered, .content kbd.button.is-inverted.is-outlined.is-hovered, .button.is-dark.is-inverted.is-outlined:focus, .content kbd.button.is-inverted.is-outlined:focus, .button.is-dark.is-inverted.is-outlined.is-focused, .content kbd.button.is-inverted.is-outlined.is-focused { + background-color: whitesmoke; + color: #363636; } + .button.is-dark.is-inverted.is-outlined.is-loading:hover::after, .content kbd.button.is-inverted.is-outlined.is-loading:hover::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-hovered::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-dark.is-inverted.is-outlined.is-loading:focus::after, .content kbd.button.is-inverted.is-outlined.is-loading:focus::after, .button.is-dark.is-inverted.is-outlined.is-loading.is-focused::after, .content kbd.button.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #363636 #363636 !important; } + .button.is-dark.is-inverted.is-outlined[disabled], .content kbd.button.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-dark.is-inverted.is-outlined, + fieldset[disabled] .content kbd.button.is-inverted.is-outlined, + .content fieldset[disabled] kbd.button.is-inverted.is-outlined { + background-color: transparent; + border-color: whitesmoke; + box-shadow: none; + color: whitesmoke; } + .button.is-primary, .docstring > section > a.button.docs-sourcelink { + background-color: #4eb5de; + border-color: transparent; + color: #fff; } + .button.is-primary:hover, .docstring > section > a.button.docs-sourcelink:hover, .button.is-primary.is-hovered, .docstring > section > a.button.is-hovered.docs-sourcelink { + background-color: #43b1dc; + border-color: transparent; + color: #fff; } + .button.is-primary:focus, .docstring > section > a.button.docs-sourcelink:focus, .button.is-primary.is-focused, .docstring > section > a.button.is-focused.docs-sourcelink { + border-color: transparent; + color: #fff; } + .button.is-primary:focus:not(:active), .docstring > section > a.button.docs-sourcelink:focus:not(:active), .button.is-primary.is-focused:not(:active), .docstring > section > a.button.is-focused.docs-sourcelink:not(:active) { + box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } + .button.is-primary:active, .docstring > section > a.button.docs-sourcelink:active, .button.is-primary.is-active, .docstring > section > a.button.is-active.docs-sourcelink { + background-color: #39acda; + border-color: transparent; + color: #fff; } + .button.is-primary[disabled], .docstring > section > a.button.docs-sourcelink[disabled], + fieldset[disabled] .button.is-primary, + fieldset[disabled] .docstring > section > a.button.docs-sourcelink { + background-color: #4eb5de; + border-color: transparent; + box-shadow: none; } + .button.is-primary.is-inverted, .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + color: #4eb5de; } + .button.is-primary.is-inverted:hover, .docstring > section > a.button.is-inverted.docs-sourcelink:hover, .button.is-primary.is-inverted.is-hovered, .docstring > section > a.button.is-inverted.is-hovered.docs-sourcelink { + background-color: #f2f2f2; } + .button.is-primary.is-inverted[disabled], .docstring > section > a.button.is-inverted.docs-sourcelink[disabled], + fieldset[disabled] .button.is-primary.is-inverted, + fieldset[disabled] .docstring > section > a.button.is-inverted.docs-sourcelink { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #4eb5de; } + .button.is-primary.is-loading::after, .docstring > section > a.button.is-loading.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-primary.is-outlined, .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #4eb5de; + color: #4eb5de; } + .button.is-primary.is-outlined:hover, .docstring > section > a.button.is-outlined.docs-sourcelink:hover, .button.is-primary.is-outlined.is-hovered, .docstring > section > a.button.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-outlined:focus, .docstring > section > a.button.is-outlined.docs-sourcelink:focus, .button.is-primary.is-outlined.is-focused, .docstring > section > a.button.is-outlined.is-focused.docs-sourcelink { + background-color: #4eb5de; + border-color: #4eb5de; + color: #fff; } + .button.is-primary.is-outlined.is-loading::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink::after { + border-color: transparent transparent #4eb5de #4eb5de !important; } + .button.is-primary.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-primary.is-outlined[disabled], .docstring > section > a.button.is-outlined.docs-sourcelink[disabled], + fieldset[disabled] .button.is-primary.is-outlined, + fieldset[disabled] .docstring > section > a.button.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #4eb5de; + box-shadow: none; + color: #4eb5de; } + .button.is-primary.is-inverted.is-outlined, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-primary.is-inverted.is-outlined:hover, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:hover, .button.is-primary.is-inverted.is-outlined.is-hovered, .docstring > section > a.button.is-inverted.is-outlined.is-hovered.docs-sourcelink, .button.is-primary.is-inverted.is-outlined:focus, .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink:focus, .button.is-primary.is-inverted.is-outlined.is-focused, .docstring > section > a.button.is-inverted.is-outlined.is-focused.docs-sourcelink { + background-color: #fff; + color: #4eb5de; } + .button.is-primary.is-inverted.is-outlined.is-loading:hover::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:hover::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-hovered::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-hovered.docs-sourcelink::after, .button.is-primary.is-inverted.is-outlined.is-loading:focus::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.docs-sourcelink:focus::after, .button.is-primary.is-inverted.is-outlined.is-loading.is-focused::after, .docstring > section > a.button.is-inverted.is-outlined.is-loading.is-focused.docs-sourcelink::after { + border-color: transparent transparent #4eb5de #4eb5de !important; } + .button.is-primary.is-inverted.is-outlined[disabled], .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink[disabled], + fieldset[disabled] .button.is-primary.is-inverted.is-outlined, + fieldset[disabled] .docstring > section > a.button.is-inverted.is-outlined.docs-sourcelink { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-link { + background-color: #2e63b8; + border-color: transparent; + color: #fff; } + .button.is-link:hover, .button.is-link.is-hovered { + background-color: #2b5eae; + border-color: transparent; + color: #fff; } + .button.is-link:focus, .button.is-link.is-focused { + border-color: transparent; + color: #fff; } + .button.is-link:focus:not(:active), .button.is-link.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .button.is-link:active, .button.is-link.is-active { + background-color: #2958a4; + border-color: transparent; + color: #fff; } + .button.is-link[disabled], + fieldset[disabled] .button.is-link { + background-color: #2e63b8; + border-color: transparent; + box-shadow: none; } + .button.is-link.is-inverted { + background-color: #fff; + color: #2e63b8; } + .button.is-link.is-inverted:hover, .button.is-link.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-link.is-inverted[disabled], + fieldset[disabled] .button.is-link.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #2e63b8; } + .button.is-link.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-link.is-outlined { + background-color: transparent; + border-color: #2e63b8; + color: #2e63b8; } + .button.is-link.is-outlined:hover, .button.is-link.is-outlined.is-hovered, .button.is-link.is-outlined:focus, .button.is-link.is-outlined.is-focused { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; } + .button.is-link.is-outlined.is-loading::after { + border-color: transparent transparent #2e63b8 #2e63b8 !important; } + .button.is-link.is-outlined.is-loading:hover::after, .button.is-link.is-outlined.is-loading.is-hovered::after, .button.is-link.is-outlined.is-loading:focus::after, .button.is-link.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-link.is-outlined[disabled], + fieldset[disabled] .button.is-link.is-outlined { + background-color: transparent; + border-color: #2e63b8; + box-shadow: none; + color: #2e63b8; } + .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-link.is-inverted.is-outlined:hover, .button.is-link.is-inverted.is-outlined.is-hovered, .button.is-link.is-inverted.is-outlined:focus, .button.is-link.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #2e63b8; } + .button.is-link.is-inverted.is-outlined.is-loading:hover::after, .button.is-link.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-link.is-inverted.is-outlined.is-loading:focus::after, .button.is-link.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #2e63b8 #2e63b8 !important; } + .button.is-link.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-link.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-info { + background-color: #209cee; + border-color: transparent; + color: #fff; } + .button.is-info:hover, .button.is-info.is-hovered { + background-color: #1496ed; + border-color: transparent; + color: #fff; } + .button.is-info:focus, .button.is-info.is-focused { + border-color: transparent; + color: #fff; } + .button.is-info:focus:not(:active), .button.is-info.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } + .button.is-info:active, .button.is-info.is-active { + background-color: #118fe4; + border-color: transparent; + color: #fff; } + .button.is-info[disabled], + fieldset[disabled] .button.is-info { + background-color: #209cee; + border-color: transparent; + box-shadow: none; } + .button.is-info.is-inverted { + background-color: #fff; + color: #209cee; } + .button.is-info.is-inverted:hover, .button.is-info.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-info.is-inverted[disabled], + fieldset[disabled] .button.is-info.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #209cee; } + .button.is-info.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-info.is-outlined { + background-color: transparent; + border-color: #209cee; + color: #209cee; } + .button.is-info.is-outlined:hover, .button.is-info.is-outlined.is-hovered, .button.is-info.is-outlined:focus, .button.is-info.is-outlined.is-focused { + background-color: #209cee; + border-color: #209cee; + color: #fff; } + .button.is-info.is-outlined.is-loading::after { + border-color: transparent transparent #209cee #209cee !important; } + .button.is-info.is-outlined.is-loading:hover::after, .button.is-info.is-outlined.is-loading.is-hovered::after, .button.is-info.is-outlined.is-loading:focus::after, .button.is-info.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-info.is-outlined[disabled], + fieldset[disabled] .button.is-info.is-outlined { + background-color: transparent; + border-color: #209cee; + box-shadow: none; + color: #209cee; } + .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-info.is-inverted.is-outlined:hover, .button.is-info.is-inverted.is-outlined.is-hovered, .button.is-info.is-inverted.is-outlined:focus, .button.is-info.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #209cee; } + .button.is-info.is-inverted.is-outlined.is-loading:hover::after, .button.is-info.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-info.is-inverted.is-outlined.is-loading:focus::after, .button.is-info.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #209cee #209cee !important; } + .button.is-info.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-info.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-success { + background-color: #22c35b; + border-color: transparent; + color: #fff; } + .button.is-success:hover, .button.is-success.is-hovered { + background-color: #20b856; + border-color: transparent; + color: #fff; } + .button.is-success:focus, .button.is-success.is-focused { + border-color: transparent; + color: #fff; } + .button.is-success:focus:not(:active), .button.is-success.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } + .button.is-success:active, .button.is-success.is-active { + background-color: #1ead51; + border-color: transparent; + color: #fff; } + .button.is-success[disabled], + fieldset[disabled] .button.is-success { + background-color: #22c35b; + border-color: transparent; + box-shadow: none; } + .button.is-success.is-inverted { + background-color: #fff; + color: #22c35b; } + .button.is-success.is-inverted:hover, .button.is-success.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-success.is-inverted[disabled], + fieldset[disabled] .button.is-success.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #22c35b; } + .button.is-success.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-success.is-outlined { + background-color: transparent; + border-color: #22c35b; + color: #22c35b; } + .button.is-success.is-outlined:hover, .button.is-success.is-outlined.is-hovered, .button.is-success.is-outlined:focus, .button.is-success.is-outlined.is-focused { + background-color: #22c35b; + border-color: #22c35b; + color: #fff; } + .button.is-success.is-outlined.is-loading::after { + border-color: transparent transparent #22c35b #22c35b !important; } + .button.is-success.is-outlined.is-loading:hover::after, .button.is-success.is-outlined.is-loading.is-hovered::after, .button.is-success.is-outlined.is-loading:focus::after, .button.is-success.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-success.is-outlined[disabled], + fieldset[disabled] .button.is-success.is-outlined { + background-color: transparent; + border-color: #22c35b; + box-shadow: none; + color: #22c35b; } + .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-success.is-inverted.is-outlined:hover, .button.is-success.is-inverted.is-outlined.is-hovered, .button.is-success.is-inverted.is-outlined:focus, .button.is-success.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #22c35b; } + .button.is-success.is-inverted.is-outlined.is-loading:hover::after, .button.is-success.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-success.is-inverted.is-outlined.is-loading:focus::after, .button.is-success.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #22c35b #22c35b !important; } + .button.is-success.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-success.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-warning { + background-color: #ffdd57; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:hover, .button.is-warning.is-hovered { + background-color: #ffdb4a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:focus, .button.is-warning.is-focused { + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning:focus:not(:active), .button.is-warning.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } + .button.is-warning:active, .button.is-warning.is-active { + background-color: #ffd83d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning[disabled], + fieldset[disabled] .button.is-warning { + background-color: #ffdd57; + border-color: transparent; + box-shadow: none; } + .button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; } + .button.is-warning.is-inverted:hover, .button.is-warning.is-inverted.is-hovered { + background-color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-inverted[disabled], + fieldset[disabled] .button.is-warning.is-inverted { + background-color: rgba(0, 0, 0, 0.7); + border-color: transparent; + box-shadow: none; + color: #ffdd57; } + .button.is-warning.is-loading::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffdd57; + color: #ffdd57; } + .button.is-warning.is-outlined:hover, .button.is-warning.is-outlined.is-hovered, .button.is-warning.is-outlined:focus, .button.is-warning.is-outlined.is-focused { + background-color: #ffdd57; + border-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-outlined.is-loading::after { + border-color: transparent transparent #ffdd57 #ffdd57 !important; } + .button.is-warning.is-outlined.is-loading:hover::after, .button.is-warning.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-outlined.is-loading:focus::after, .button.is-warning.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent rgba(0, 0, 0, 0.7) rgba(0, 0, 0, 0.7) !important; } + .button.is-warning.is-outlined[disabled], + fieldset[disabled] .button.is-warning.is-outlined { + background-color: transparent; + border-color: #ffdd57; + box-shadow: none; + color: #ffdd57; } + .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + color: rgba(0, 0, 0, 0.7); } + .button.is-warning.is-inverted.is-outlined:hover, .button.is-warning.is-inverted.is-outlined.is-hovered, .button.is-warning.is-inverted.is-outlined:focus, .button.is-warning.is-inverted.is-outlined.is-focused { + background-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; } + .button.is-warning.is-inverted.is-outlined.is-loading:hover::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-warning.is-inverted.is-outlined.is-loading:focus::after, .button.is-warning.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #ffdd57 #ffdd57 !important; } + .button.is-warning.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-warning.is-inverted.is-outlined { + background-color: transparent; + border-color: rgba(0, 0, 0, 0.7); + box-shadow: none; + color: rgba(0, 0, 0, 0.7); } + .button.is-danger { + background-color: #da0b00; + border-color: transparent; + color: #fff; } + .button.is-danger:hover, .button.is-danger.is-hovered { + background-color: #cd0a00; + border-color: transparent; + color: #fff; } + .button.is-danger:focus, .button.is-danger.is-focused { + border-color: transparent; + color: #fff; } + .button.is-danger:focus:not(:active), .button.is-danger.is-focused:not(:active) { + box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } + .button.is-danger:active, .button.is-danger.is-active { + background-color: #c10a00; + border-color: transparent; + color: #fff; } + .button.is-danger[disabled], + fieldset[disabled] .button.is-danger { + background-color: #da0b00; + border-color: transparent; + box-shadow: none; } + .button.is-danger.is-inverted { + background-color: #fff; + color: #da0b00; } + .button.is-danger.is-inverted:hover, .button.is-danger.is-inverted.is-hovered { + background-color: #f2f2f2; } + .button.is-danger.is-inverted[disabled], + fieldset[disabled] .button.is-danger.is-inverted { + background-color: #fff; + border-color: transparent; + box-shadow: none; + color: #da0b00; } + .button.is-danger.is-loading::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-danger.is-outlined { + background-color: transparent; + border-color: #da0b00; + color: #da0b00; } + .button.is-danger.is-outlined:hover, .button.is-danger.is-outlined.is-hovered, .button.is-danger.is-outlined:focus, .button.is-danger.is-outlined.is-focused { + background-color: #da0b00; + border-color: #da0b00; + color: #fff; } + .button.is-danger.is-outlined.is-loading::after { + border-color: transparent transparent #da0b00 #da0b00 !important; } + .button.is-danger.is-outlined.is-loading:hover::after, .button.is-danger.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-outlined.is-loading:focus::after, .button.is-danger.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #fff #fff !important; } + .button.is-danger.is-outlined[disabled], + fieldset[disabled] .button.is-danger.is-outlined { + background-color: transparent; + border-color: #da0b00; + box-shadow: none; + color: #da0b00; } + .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + color: #fff; } + .button.is-danger.is-inverted.is-outlined:hover, .button.is-danger.is-inverted.is-outlined.is-hovered, .button.is-danger.is-inverted.is-outlined:focus, .button.is-danger.is-inverted.is-outlined.is-focused { + background-color: #fff; + color: #da0b00; } + .button.is-danger.is-inverted.is-outlined.is-loading:hover::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-hovered::after, .button.is-danger.is-inverted.is-outlined.is-loading:focus::after, .button.is-danger.is-inverted.is-outlined.is-loading.is-focused::after { + border-color: transparent transparent #da0b00 #da0b00 !important; } + .button.is-danger.is-inverted.is-outlined[disabled], + fieldset[disabled] .button.is-danger.is-inverted.is-outlined { + background-color: transparent; + border-color: #fff; + box-shadow: none; + color: #fff; } + .button.is-small, #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 2px; + font-size: 0.75rem; } + .button.is-normal { + font-size: 1rem; } + .button.is-medium { + font-size: 1.25rem; } + .button.is-large { + font-size: 1.5rem; } + .button[disabled], + fieldset[disabled] .button { + background-color: white; + border-color: #dbdbdb; + box-shadow: none; + opacity: 0.5; } + .button.is-fullwidth { + display: flex; + width: 100%; } + .button.is-loading { + color: transparent !important; + pointer-events: none; } + .button.is-loading::after { + position: absolute; + left: calc(50% - (1em / 2)); + top: calc(50% - (1em / 2)); + position: absolute !important; } + .button.is-static { + background-color: whitesmoke; + border-color: #dbdbdb; + color: #7a7a7a; + box-shadow: none; + pointer-events: none; } + .button.is-rounded, #documenter .docs-sidebar form.docs-search > input.button { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + +.buttons { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .buttons .button { + margin-bottom: 0.5rem; } + .buttons .button:not(:last-child):not(.is-fullwidth) { + margin-right: 0.5rem; } + .buttons:last-child { + margin-bottom: -0.5rem; } + .buttons:not(:last-child) { + margin-bottom: 1rem; } + .buttons.are-small .button:not(.is-normal):not(.is-medium):not(.is-large) { + border-radius: 2px; + font-size: 0.75rem; } + .buttons.are-medium .button:not(.is-small):not(.is-normal):not(.is-large) { + font-size: 1.25rem; } + .buttons.are-large .button:not(.is-small):not(.is-normal):not(.is-medium) { + font-size: 1.5rem; } + .buttons.has-addons .button:not(:first-child) { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .buttons.has-addons .button:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; + margin-right: -1px; } + .buttons.has-addons .button:last-child { + margin-right: 0; } + .buttons.has-addons .button:hover, .buttons.has-addons .button.is-hovered { + z-index: 2; } + .buttons.has-addons .button:focus, .buttons.has-addons .button.is-focused, .buttons.has-addons .button:active, .buttons.has-addons .button.is-active, .buttons.has-addons .button.is-selected { + z-index: 3; } + .buttons.has-addons .button:focus:hover, .buttons.has-addons .button.is-focused:hover, .buttons.has-addons .button:active:hover, .buttons.has-addons .button.is-active:hover, .buttons.has-addons .button.is-selected:hover { + z-index: 4; } + .buttons.has-addons .button.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .buttons.is-centered { + justify-content: center; } + .buttons.is-centered:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + .buttons.is-right { + justify-content: flex-end; } + .buttons.is-right:not(.has-addons) .button:not(.is-fullwidth) { + margin-left: 0.25rem; + margin-right: 0.25rem; } + +.container { + flex-grow: 1; + margin: 0 auto; + position: relative; + width: auto; } + @media screen and (min-width: 1056px) { + .container { + max-width: 992px; } + .container.is-fluid { + margin-left: 32px; + margin-right: 32px; + max-width: none; } } + @media screen and (max-width: 1215px) { + .container.is-widescreen { + max-width: 1152px; } } + @media screen and (max-width: 1407px) { + .container.is-fullhd { + max-width: 1344px; } } + @media screen and (min-width: 1216px) { + .container { + max-width: 1152px; } } + @media screen and (min-width: 1408px) { + .container { + max-width: 1344px; } } + +.content li + li { + margin-top: 0.25em; } + +.content p:not(:last-child), +.content dl:not(:last-child), +.content ol:not(:last-child), +.content ul:not(:last-child), +.content blockquote:not(:last-child), +.content pre:not(:last-child), +.content table:not(:last-child) { + margin-bottom: 1em; } + +.content h1, +.content h2, +.content h3, +.content h4, +.content h5, +.content h6 { + color: #222222; + font-weight: 600; + line-height: 1.125; } + +.content h1 { + font-size: 2em; + margin-bottom: 0.5em; } + .content h1:not(:first-child) { + margin-top: 1em; } + +.content h2 { + font-size: 1.75em; + margin-bottom: 0.5714em; } + .content h2:not(:first-child) { + margin-top: 1.1428em; } + +.content h3 { + font-size: 1.5em; + margin-bottom: 0.6666em; } + .content h3:not(:first-child) { + margin-top: 1.3333em; } + +.content h4 { + font-size: 1.25em; + margin-bottom: 0.8em; } + +.content h5 { + font-size: 1.125em; + margin-bottom: 0.8888em; } + +.content h6 { + font-size: 1em; + margin-bottom: 1em; } + +.content blockquote { + background-color: whitesmoke; + border-left: 5px solid #dbdbdb; + padding: 1.25em 1.5em; } + +.content ol { + list-style-position: outside; + margin-left: 2em; + margin-top: 1em; } + .content ol:not([type]) { + list-style-type: decimal; } + .content ol:not([type]).is-lower-alpha { + list-style-type: lower-alpha; } + .content ol:not([type]).is-lower-roman { + list-style-type: lower-roman; } + .content ol:not([type]).is-upper-alpha { + list-style-type: upper-alpha; } + .content ol:not([type]).is-upper-roman { + list-style-type: upper-roman; } + +.content ul { + list-style: disc outside; + margin-left: 2em; + margin-top: 1em; } + .content ul ul { + list-style-type: circle; + margin-top: 0.5em; } + .content ul ul ul { + list-style-type: square; } + +.content dd { + margin-left: 2em; } + +.content figure { + margin-left: 2em; + margin-right: 2em; + text-align: center; } + .content figure:not(:first-child) { + margin-top: 2em; } + .content figure:not(:last-child) { + margin-bottom: 2em; } + .content figure img { + display: inline-block; } + .content figure figcaption { + font-style: italic; } + +.content pre { + -webkit-overflow-scrolling: touch; + overflow-x: auto; + padding: 0.7rem 0.5rem; + white-space: pre; + word-wrap: normal; } + +.content sup, +.content sub { + font-size: 75%; } + +.content table { + width: 100%; } + .content table td, + .content table th { + border: 1px solid #dbdbdb; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + .content table th { + color: #222222; } + .content table th:not([align]) { + text-align: left; } + .content table thead td, + .content table thead th { + border-width: 0 0 2px; + color: #222222; } + .content table tfoot td, + .content table tfoot th { + border-width: 2px 0 0; + color: #222222; } + .content table tbody tr:last-child td, + .content table tbody tr:last-child th { + border-bottom-width: 0; } + +.content .tabs li + li { + margin-top: 0; } + +.content.is-small, #documenter .docs-sidebar form.docs-search > input.content { + font-size: 0.75rem; } + +.content.is-medium { + font-size: 1.25rem; } + +.content.is-large { + font-size: 1.5rem; } + +.icon { + align-items: center; + display: inline-flex; + justify-content: center; + height: 1.5rem; + width: 1.5rem; } + .icon.is-small, #documenter .docs-sidebar form.docs-search > input.icon { + height: 1rem; + width: 1rem; } + .icon.is-medium { + height: 2rem; + width: 2rem; } + .icon.is-large { + height: 3rem; + width: 3rem; } + +.image, #documenter .docs-sidebar .docs-logo > img { + display: block; + position: relative; } + .image img, #documenter .docs-sidebar .docs-logo > img img { + display: block; + height: auto; + width: 100%; } + .image img.is-rounded, #documenter .docs-sidebar .docs-logo > img img.is-rounded { + border-radius: 290486px; } + .image.is-square img, #documenter .docs-sidebar .docs-logo > img.is-square img, + .image.is-square .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-square .has-ratio, .image.is-1by1 img, #documenter .docs-sidebar .docs-logo > img.is-1by1 img, + .image.is-1by1 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-1by1 .has-ratio, .image.is-5by4 img, #documenter .docs-sidebar .docs-logo > img.is-5by4 img, + .image.is-5by4 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-5by4 .has-ratio, .image.is-4by3 img, #documenter .docs-sidebar .docs-logo > img.is-4by3 img, + .image.is-4by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-4by3 .has-ratio, .image.is-3by2 img, #documenter .docs-sidebar .docs-logo > img.is-3by2 img, + .image.is-3by2 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by2 .has-ratio, .image.is-5by3 img, #documenter .docs-sidebar .docs-logo > img.is-5by3 img, + .image.is-5by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-5by3 .has-ratio, .image.is-16by9 img, #documenter .docs-sidebar .docs-logo > img.is-16by9 img, + .image.is-16by9 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-16by9 .has-ratio, .image.is-2by1 img, #documenter .docs-sidebar .docs-logo > img.is-2by1 img, + .image.is-2by1 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-2by1 .has-ratio, .image.is-3by1 img, #documenter .docs-sidebar .docs-logo > img.is-3by1 img, + .image.is-3by1 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by1 .has-ratio, .image.is-4by5 img, #documenter .docs-sidebar .docs-logo > img.is-4by5 img, + .image.is-4by5 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-4by5 .has-ratio, .image.is-3by4 img, #documenter .docs-sidebar .docs-logo > img.is-3by4 img, + .image.is-3by4 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by4 .has-ratio, .image.is-2by3 img, #documenter .docs-sidebar .docs-logo > img.is-2by3 img, + .image.is-2by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-2by3 .has-ratio, .image.is-3by5 img, #documenter .docs-sidebar .docs-logo > img.is-3by5 img, + .image.is-3by5 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-3by5 .has-ratio, .image.is-9by16 img, #documenter .docs-sidebar .docs-logo > img.is-9by16 img, + .image.is-9by16 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-9by16 .has-ratio, .image.is-1by2 img, #documenter .docs-sidebar .docs-logo > img.is-1by2 img, + .image.is-1by2 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-1by2 .has-ratio, .image.is-1by3 img, #documenter .docs-sidebar .docs-logo > img.is-1by3 img, + .image.is-1by3 .has-ratio, + #documenter .docs-sidebar .docs-logo > img.is-1by3 .has-ratio { + height: 100%; + width: 100%; } + .image.is-square, #documenter .docs-sidebar .docs-logo > img.is-square, .image.is-1by1, #documenter .docs-sidebar .docs-logo > img.is-1by1 { + padding-top: 100%; } + .image.is-5by4, #documenter .docs-sidebar .docs-logo > img.is-5by4 { + padding-top: 80%; } + .image.is-4by3, #documenter .docs-sidebar .docs-logo > img.is-4by3 { + padding-top: 75%; } + .image.is-3by2, #documenter .docs-sidebar .docs-logo > img.is-3by2 { + padding-top: 66.6666%; } + .image.is-5by3, #documenter .docs-sidebar .docs-logo > img.is-5by3 { + padding-top: 60%; } + .image.is-16by9, #documenter .docs-sidebar .docs-logo > img.is-16by9 { + padding-top: 56.25%; } + .image.is-2by1, #documenter .docs-sidebar .docs-logo > img.is-2by1 { + padding-top: 50%; } + .image.is-3by1, #documenter .docs-sidebar .docs-logo > img.is-3by1 { + padding-top: 33.3333%; } + .image.is-4by5, #documenter .docs-sidebar .docs-logo > img.is-4by5 { + padding-top: 125%; } + .image.is-3by4, #documenter .docs-sidebar .docs-logo > img.is-3by4 { + padding-top: 133.3333%; } + .image.is-2by3, #documenter .docs-sidebar .docs-logo > img.is-2by3 { + padding-top: 150%; } + .image.is-3by5, #documenter .docs-sidebar .docs-logo > img.is-3by5 { + padding-top: 166.6666%; } + .image.is-9by16, #documenter .docs-sidebar .docs-logo > img.is-9by16 { + padding-top: 177.7777%; } + .image.is-1by2, #documenter .docs-sidebar .docs-logo > img.is-1by2 { + padding-top: 200%; } + .image.is-1by3, #documenter .docs-sidebar .docs-logo > img.is-1by3 { + padding-top: 300%; } + .image.is-16x16, #documenter .docs-sidebar .docs-logo > img.is-16x16 { + height: 16px; + width: 16px; } + .image.is-24x24, #documenter .docs-sidebar .docs-logo > img.is-24x24 { + height: 24px; + width: 24px; } + .image.is-32x32, #documenter .docs-sidebar .docs-logo > img.is-32x32 { + height: 32px; + width: 32px; } + .image.is-48x48, #documenter .docs-sidebar .docs-logo > img.is-48x48 { + height: 48px; + width: 48px; } + .image.is-64x64, #documenter .docs-sidebar .docs-logo > img.is-64x64 { + height: 64px; + width: 64px; } + .image.is-96x96, #documenter .docs-sidebar .docs-logo > img.is-96x96 { + height: 96px; + width: 96px; } + .image.is-128x128, #documenter .docs-sidebar .docs-logo > img.is-128x128 { + height: 128px; + width: 128px; } + +.notification { + background-color: whitesmoke; + border-radius: 4px; + padding: 1.25rem 2.5rem 1.25rem 1.5rem; + position: relative; } + .notification a:not(.button):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + .notification strong { + color: currentColor; } + .notification code, + .notification pre { + background: white; } + .notification pre code { + background: transparent; } + .notification > .delete { + position: absolute; + right: 0.5rem; + top: 0.5rem; } + .notification .title, + .notification .subtitle, + .notification .content { + color: currentColor; } + .notification.is-white { + background-color: white; + color: #0a0a0a; } + .notification.is-black { + background-color: #0a0a0a; + color: white; } + .notification.is-light { + background-color: whitesmoke; + color: #363636; } + .notification.is-dark, .content kbd.notification { + background-color: #363636; + color: whitesmoke; } + .notification.is-primary, .docstring > section > a.notification.docs-sourcelink { + background-color: #4eb5de; + color: #fff; } + .notification.is-link { + background-color: #2e63b8; + color: #fff; } + .notification.is-info { + background-color: #209cee; + color: #fff; } + .notification.is-success { + background-color: #22c35b; + color: #fff; } + .notification.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .notification.is-danger { + background-color: #da0b00; + color: #fff; } + +.progress { + -moz-appearance: none; + -webkit-appearance: none; + border: none; + border-radius: 290486px; + display: block; + height: 1rem; + overflow: hidden; + padding: 0; + width: 100%; } + .progress::-webkit-progress-bar { + background-color: #dbdbdb; } + .progress::-webkit-progress-value { + background-color: #222222; } + .progress::-moz-progress-bar { + background-color: #222222; } + .progress::-ms-fill { + background-color: #222222; + border: none; } + .progress.is-white::-webkit-progress-value { + background-color: white; } + .progress.is-white::-moz-progress-bar { + background-color: white; } + .progress.is-white::-ms-fill { + background-color: white; } + .progress.is-white:indeterminate { + background-image: linear-gradient(to right, white 30%, #dbdbdb 30%); } + .progress.is-black::-webkit-progress-value { + background-color: #0a0a0a; } + .progress.is-black::-moz-progress-bar { + background-color: #0a0a0a; } + .progress.is-black::-ms-fill { + background-color: #0a0a0a; } + .progress.is-black:indeterminate { + background-image: linear-gradient(to right, #0a0a0a 30%, #dbdbdb 30%); } + .progress.is-light::-webkit-progress-value { + background-color: whitesmoke; } + .progress.is-light::-moz-progress-bar { + background-color: whitesmoke; } + .progress.is-light::-ms-fill { + background-color: whitesmoke; } + .progress.is-light:indeterminate { + background-image: linear-gradient(to right, whitesmoke 30%, #dbdbdb 30%); } + .progress.is-dark::-webkit-progress-value, .content kbd.progress::-webkit-progress-value { + background-color: #363636; } + .progress.is-dark::-moz-progress-bar, .content kbd.progress::-moz-progress-bar { + background-color: #363636; } + .progress.is-dark::-ms-fill, .content kbd.progress::-ms-fill { + background-color: #363636; } + .progress.is-dark:indeterminate, .content kbd.progress:indeterminate { + background-image: linear-gradient(to right, #363636 30%, #dbdbdb 30%); } + .progress.is-primary::-webkit-progress-value, .docstring > section > a.progress.docs-sourcelink::-webkit-progress-value { + background-color: #4eb5de; } + .progress.is-primary::-moz-progress-bar, .docstring > section > a.progress.docs-sourcelink::-moz-progress-bar { + background-color: #4eb5de; } + .progress.is-primary::-ms-fill, .docstring > section > a.progress.docs-sourcelink::-ms-fill { + background-color: #4eb5de; } + .progress.is-primary:indeterminate, .docstring > section > a.progress.docs-sourcelink:indeterminate { + background-image: linear-gradient(to right, #4eb5de 30%, #dbdbdb 30%); } + .progress.is-link::-webkit-progress-value { + background-color: #2e63b8; } + .progress.is-link::-moz-progress-bar { + background-color: #2e63b8; } + .progress.is-link::-ms-fill { + background-color: #2e63b8; } + .progress.is-link:indeterminate { + background-image: linear-gradient(to right, #2e63b8 30%, #dbdbdb 30%); } + .progress.is-info::-webkit-progress-value { + background-color: #209cee; } + .progress.is-info::-moz-progress-bar { + background-color: #209cee; } + .progress.is-info::-ms-fill { + background-color: #209cee; } + .progress.is-info:indeterminate { + background-image: linear-gradient(to right, #209cee 30%, #dbdbdb 30%); } + .progress.is-success::-webkit-progress-value { + background-color: #22c35b; } + .progress.is-success::-moz-progress-bar { + background-color: #22c35b; } + .progress.is-success::-ms-fill { + background-color: #22c35b; } + .progress.is-success:indeterminate { + background-image: linear-gradient(to right, #22c35b 30%, #dbdbdb 30%); } + .progress.is-warning::-webkit-progress-value { + background-color: #ffdd57; } + .progress.is-warning::-moz-progress-bar { + background-color: #ffdd57; } + .progress.is-warning::-ms-fill { + background-color: #ffdd57; } + .progress.is-warning:indeterminate { + background-image: linear-gradient(to right, #ffdd57 30%, #dbdbdb 30%); } + .progress.is-danger::-webkit-progress-value { + background-color: #da0b00; } + .progress.is-danger::-moz-progress-bar { + background-color: #da0b00; } + .progress.is-danger::-ms-fill { + background-color: #da0b00; } + .progress.is-danger:indeterminate { + background-image: linear-gradient(to right, #da0b00 30%, #dbdbdb 30%); } + .progress:indeterminate { + animation-duration: 1.5s; + animation-iteration-count: infinite; + animation-name: moveIndeterminate; + animation-timing-function: linear; + background-color: #dbdbdb; + background-image: linear-gradient(to right, #222222 30%, #dbdbdb 30%); + background-position: top left; + background-repeat: no-repeat; + background-size: 150% 150%; } + .progress:indeterminate::-webkit-progress-bar { + background-color: transparent; } + .progress:indeterminate::-moz-progress-bar { + background-color: transparent; } + .progress.is-small, #documenter .docs-sidebar form.docs-search > input.progress { + height: 0.75rem; } + .progress.is-medium { + height: 1.25rem; } + .progress.is-large { + height: 1.5rem; } + +@keyframes moveIndeterminate { + from { + background-position: 200% 0; } + to { + background-position: -200% 0; } } + +.table { + background-color: white; + color: #363636; } + .table td, + .table th { + border: 1px solid #dbdbdb; + border-width: 0 0 1px; + padding: 0.5em 0.75em; + vertical-align: top; } + .table td.is-white, + .table th.is-white { + background-color: white; + border-color: white; + color: #0a0a0a; } + .table td.is-black, + .table th.is-black { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .table td.is-light, + .table th.is-light { + background-color: whitesmoke; + border-color: whitesmoke; + color: #363636; } + .table td.is-dark, + .table th.is-dark { + background-color: #363636; + border-color: #363636; + color: whitesmoke; } + .table td.is-primary, + .table th.is-primary { + background-color: #4eb5de; + border-color: #4eb5de; + color: #fff; } + .table td.is-link, + .table th.is-link { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; } + .table td.is-info, + .table th.is-info { + background-color: #209cee; + border-color: #209cee; + color: #fff; } + .table td.is-success, + .table th.is-success { + background-color: #22c35b; + border-color: #22c35b; + color: #fff; } + .table td.is-warning, + .table th.is-warning { + background-color: #ffdd57; + border-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .table td.is-danger, + .table th.is-danger { + background-color: #da0b00; + border-color: #da0b00; + color: #fff; } + .table td.is-narrow, + .table th.is-narrow { + white-space: nowrap; + width: 1%; } + .table td.is-selected, + .table th.is-selected { + background-color: #4eb5de; + color: #fff; } + .table td.is-selected a, + .table td.is-selected strong, + .table th.is-selected a, + .table th.is-selected strong { + color: currentColor; } + .table th { + color: #222222; } + .table th:not([align]) { + text-align: left; } + .table tr.is-selected { + background-color: #4eb5de; + color: #fff; } + .table tr.is-selected a, + .table tr.is-selected strong { + color: currentColor; } + .table tr.is-selected td, + .table tr.is-selected th { + border-color: #fff; + color: currentColor; } + .table thead { + background-color: transparent; } + .table thead td, + .table thead th { + border-width: 0 0 2px; + color: #222222; } + .table tfoot { + background-color: transparent; } + .table tfoot td, + .table tfoot th { + border-width: 2px 0 0; + color: #222222; } + .table tbody { + background-color: transparent; } + .table tbody tr:last-child td, + .table tbody tr:last-child th { + border-bottom-width: 0; } + .table.is-bordered td, + .table.is-bordered th { + border-width: 1px; } + .table.is-bordered tr:last-child td, + .table.is-bordered tr:last-child th { + border-bottom-width: 1px; } + .table.is-fullwidth { + width: 100%; } + .table.is-hoverable tbody tr:not(.is-selected):hover { + background-color: #fafafa; } + .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover { + background-color: #fafafa; } + .table.is-hoverable.is-striped tbody tr:not(.is-selected):hover:nth-child(even) { + background-color: whitesmoke; } + .table.is-narrow td, + .table.is-narrow th { + padding: 0.25em 0.5em; } + .table.is-striped tbody tr:not(.is-selected):nth-child(even) { + background-color: #fafafa; } + +.table-container { + -webkit-overflow-scrolling: touch; + overflow: auto; + overflow-y: hidden; + max-width: 100%; } + +.tags { + align-items: center; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .tags .tag, .tags .docstring > section > a.docs-sourcelink, .tags .content kbd, .content .tags kbd { + margin-bottom: 0.5rem; } + .tags .tag:not(:last-child), .tags .docstring > section > a.docs-sourcelink:not(:last-child), .tags .content kbd:not(:last-child), .content .tags kbd:not(:last-child) { + margin-right: 0.5rem; } + .tags:last-child { + margin-bottom: -0.5rem; } + .tags:not(:last-child) { + margin-bottom: 1rem; } + .tags.are-medium .tag:not(.is-normal):not(.is-large), .tags.are-medium .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-large), .tags.are-medium .content kbd:not(.is-normal):not(.is-large), .content .tags.are-medium kbd:not(.is-normal):not(.is-large) { + font-size: 1rem; } + .tags.are-large .tag:not(.is-normal):not(.is-medium), .tags.are-large .docstring > section > a.docs-sourcelink:not(.is-normal):not(.is-medium), .tags.are-large .content kbd:not(.is-normal):not(.is-medium), .content .tags.are-large kbd:not(.is-normal):not(.is-medium) { + font-size: 1.25rem; } + .tags.is-centered { + justify-content: center; } + .tags.is-centered .tag, .tags.is-centered .docstring > section > a.docs-sourcelink, .tags.is-centered .content kbd, .content .tags.is-centered kbd { + margin-right: 0.25rem; + margin-left: 0.25rem; } + .tags.is-right { + justify-content: flex-end; } + .tags.is-right .tag:not(:first-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:first-child), .tags.is-right .content kbd:not(:first-child), .content .tags.is-right kbd:not(:first-child) { + margin-left: 0.5rem; } + .tags.is-right .tag:not(:last-child), .tags.is-right .docstring > section > a.docs-sourcelink:not(:last-child), .tags.is-right .content kbd:not(:last-child), .content .tags.is-right kbd:not(:last-child) { + margin-right: 0; } + .tags.has-addons .tag, .tags.has-addons .docstring > section > a.docs-sourcelink, .tags.has-addons .content kbd, .content .tags.has-addons kbd { + margin-right: 0; } + .tags.has-addons .tag:not(:first-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:first-child), .tags.has-addons .content kbd:not(:first-child), .content .tags.has-addons kbd:not(:first-child) { + margin-left: 0; + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .tags.has-addons .tag:not(:last-child), .tags.has-addons .docstring > section > a.docs-sourcelink:not(:last-child), .tags.has-addons .content kbd:not(:last-child), .content .tags.has-addons kbd:not(:last-child) { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + +.tag:not(body), .docstring > section > a.docs-sourcelink:not(body), .content kbd:not(body) { + align-items: center; + background-color: whitesmoke; + border-radius: 4px; + color: #222222; + display: inline-flex; + font-size: 0.75rem; + height: 2em; + justify-content: center; + line-height: 1.5; + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + .tag:not(body) .delete, .docstring > section > a.docs-sourcelink:not(body) .delete, .content kbd:not(body) .delete { + margin-left: 0.25rem; + margin-right: -0.375rem; } + .tag:not(body).is-white, .docstring > section > a.docs-sourcelink:not(body).is-white, .content kbd:not(body).is-white { + background-color: white; + color: #0a0a0a; } + .tag:not(body).is-black, .docstring > section > a.docs-sourcelink:not(body).is-black, .content kbd:not(body).is-black { + background-color: #0a0a0a; + color: white; } + .tag:not(body).is-light, .docstring > section > a.docs-sourcelink:not(body).is-light, .content kbd:not(body).is-light { + background-color: whitesmoke; + color: #363636; } + .tag:not(body).is-dark, .docstring > section > a.docs-sourcelink:not(body).is-dark, .content kbd:not(body) { + background-color: #363636; + color: whitesmoke; } + .tag:not(body).is-primary, .docstring > section > a.docs-sourcelink:not(body), .content kbd:not(body).is-primary { + background-color: #4eb5de; + color: #fff; } + .tag:not(body).is-link, .docstring > section > a.docs-sourcelink:not(body).is-link, .content kbd:not(body).is-link { + background-color: #2e63b8; + color: #fff; } + .tag:not(body).is-info, .docstring > section > a.docs-sourcelink:not(body).is-info, .content kbd:not(body).is-info { + background-color: #209cee; + color: #fff; } + .tag:not(body).is-success, .docstring > section > a.docs-sourcelink:not(body).is-success, .content kbd:not(body).is-success { + background-color: #22c35b; + color: #fff; } + .tag:not(body).is-warning, .docstring > section > a.docs-sourcelink:not(body).is-warning, .content kbd:not(body).is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .tag:not(body).is-danger, .docstring > section > a.docs-sourcelink:not(body).is-danger, .content kbd:not(body).is-danger { + background-color: #da0b00; + color: #fff; } + .tag:not(body).is-normal, .docstring > section > a.docs-sourcelink:not(body).is-normal, .content kbd:not(body).is-normal { + font-size: 0.75rem; } + .tag:not(body).is-medium, .docstring > section > a.docs-sourcelink:not(body).is-medium, .content kbd:not(body).is-medium { + font-size: 1rem; } + .tag:not(body).is-large, .docstring > section > a.docs-sourcelink:not(body).is-large, .content kbd:not(body).is-large { + font-size: 1.25rem; } + .tag:not(body) .icon:first-child:not(:last-child), .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:not(:last-child), .content kbd:not(body) .icon:first-child:not(:last-child) { + margin-left: -0.375em; + margin-right: 0.1875em; } + .tag:not(body) .icon:last-child:not(:first-child), .docstring > section > a.docs-sourcelink:not(body) .icon:last-child:not(:first-child), .content kbd:not(body) .icon:last-child:not(:first-child) { + margin-left: 0.1875em; + margin-right: -0.375em; } + .tag:not(body) .icon:first-child:last-child, .docstring > section > a.docs-sourcelink:not(body) .icon:first-child:last-child, .content kbd:not(body) .icon:first-child:last-child { + margin-left: -0.375em; + margin-right: -0.375em; } + .tag:not(body).is-delete, .docstring > section > a.docs-sourcelink:not(body).is-delete, .content kbd:not(body).is-delete { + margin-left: 1px; + padding: 0; + position: relative; + width: 2em; } + .tag:not(body).is-delete::before, .docstring > section > a.docs-sourcelink:not(body).is-delete::before, .content kbd:not(body).is-delete::before, .tag:not(body).is-delete::after, .docstring > section > a.docs-sourcelink:not(body).is-delete::after, .content kbd:not(body).is-delete::after { + background-color: currentColor; + content: ""; + display: block; + left: 50%; + position: absolute; + top: 50%; + transform: translateX(-50%) translateY(-50%) rotate(45deg); + transform-origin: center center; } + .tag:not(body).is-delete::before, .docstring > section > a.docs-sourcelink:not(body).is-delete::before, .content kbd:not(body).is-delete::before { + height: 1px; + width: 50%; } + .tag:not(body).is-delete::after, .docstring > section > a.docs-sourcelink:not(body).is-delete::after, .content kbd:not(body).is-delete::after { + height: 50%; + width: 1px; } + .tag:not(body).is-delete:hover, .docstring > section > a.docs-sourcelink:not(body).is-delete:hover, .content kbd:not(body).is-delete:hover, .tag:not(body).is-delete:focus, .docstring > section > a.docs-sourcelink:not(body).is-delete:focus, .content kbd:not(body).is-delete:focus { + background-color: #e8e8e8; } + .tag:not(body).is-delete:active, .docstring > section > a.docs-sourcelink:not(body).is-delete:active, .content kbd:not(body).is-delete:active { + background-color: #dbdbdb; } + .tag:not(body).is-rounded, .docstring > section > a.docs-sourcelink:not(body).is-rounded, .content kbd:not(body).is-rounded, #documenter .docs-sidebar form.docs-search > input.tag:not(body) { + border-radius: 290486px; } + +a.tag:hover, .docstring > section > a.docs-sourcelink:hover { + text-decoration: underline; } + +.title, +.subtitle { + word-break: break-word; } + .title em, + .title span, + .subtitle em, + .subtitle span { + font-weight: inherit; } + .title sub, + .subtitle sub { + font-size: 0.75em; } + .title sup, + .subtitle sup { + font-size: 0.75em; } + .title .tag, .title .docstring > section > a.docs-sourcelink, .title .content kbd, .content .title kbd, + .subtitle .tag, + .subtitle .docstring > section > a.docs-sourcelink, + .subtitle .content kbd, + .content .subtitle kbd { + vertical-align: middle; } + +.title { + color: #363636; + font-size: 2rem; + font-weight: 600; + line-height: 1.125; } + .title strong { + color: inherit; + font-weight: inherit; } + .title + .highlight { + margin-top: -0.75rem; } + .title:not(.is-spaced) + .subtitle { + margin-top: -1.25rem; } + .title.is-1 { + font-size: 3rem; } + .title.is-2 { + font-size: 2.5rem; } + .title.is-3 { + font-size: 2rem; } + .title.is-4 { + font-size: 1.5rem; } + .title.is-5 { + font-size: 1.25rem; } + .title.is-6 { + font-size: 1rem; } + .title.is-7 { + font-size: 0.75rem; } + +.subtitle { + color: #4a4a4a; + font-size: 1.25rem; + font-weight: 400; + line-height: 1.25; } + .subtitle strong { + color: #363636; + font-weight: 600; } + .subtitle:not(.is-spaced) + .title { + margin-top: -1.25rem; } + .subtitle.is-1 { + font-size: 3rem; } + .subtitle.is-2 { + font-size: 2.5rem; } + .subtitle.is-3 { + font-size: 2rem; } + .subtitle.is-4 { + font-size: 1.5rem; } + .subtitle.is-5 { + font-size: 1.25rem; } + .subtitle.is-6 { + font-size: 1rem; } + .subtitle.is-7 { + font-size: 0.75rem; } + +.heading { + display: block; + font-size: 11px; + letter-spacing: 1px; + margin-bottom: 5px; + text-transform: uppercase; } + +.highlight { + font-weight: 400; + max-width: 100%; + overflow: hidden; + padding: 0; } + .highlight pre { + overflow: auto; + max-width: 100%; } + +.number { + align-items: center; + background-color: whitesmoke; + border-radius: 290486px; + display: inline-flex; + font-size: 1.25rem; + height: 2em; + justify-content: center; + margin-right: 1.5rem; + min-width: 2.5em; + padding: 0.25rem 0.5rem; + text-align: center; + vertical-align: top; } + +.input, #documenter .docs-sidebar form.docs-search > input, .textarea, .select select { + background-color: white; + border-color: #dbdbdb; + border-radius: 4px; + color: #363636; } + .input::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, .textarea::-moz-placeholder, .select select::-moz-placeholder { + color: rgba(54, 54, 54, 0.3); } + .input::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, .textarea::-webkit-input-placeholder, .select select::-webkit-input-placeholder { + color: rgba(54, 54, 54, 0.3); } + .input:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, .textarea:-moz-placeholder, .select select:-moz-placeholder { + color: rgba(54, 54, 54, 0.3); } + .input:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, .textarea:-ms-input-placeholder, .select select:-ms-input-placeholder { + color: rgba(54, 54, 54, 0.3); } + .input:hover, #documenter .docs-sidebar form.docs-search > input:hover, .textarea:hover, .select select:hover, .is-hovered.input, #documenter .docs-sidebar form.docs-search > input.is-hovered, .is-hovered.textarea, .select select.is-hovered { + border-color: #b5b5b5; } + .input:focus, #documenter .docs-sidebar form.docs-search > input:focus, .textarea:focus, .select select:focus, .is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-focused, .is-focused.textarea, .select select.is-focused, .input:active, #documenter .docs-sidebar form.docs-search > input:active, .textarea:active, .select select:active, .is-active.input, #documenter .docs-sidebar form.docs-search > input.is-active, .is-active.textarea, .select select.is-active { + border-color: #2e63b8; + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .input[disabled], #documenter .docs-sidebar form.docs-search > input[disabled], .textarea[disabled], .select select[disabled], + fieldset[disabled] .input, + fieldset[disabled] #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar fieldset[disabled] form.docs-search > input, + fieldset[disabled] .textarea, + fieldset[disabled] .select select, + .select fieldset[disabled] select { + background-color: whitesmoke; + border-color: whitesmoke; + box-shadow: none; + color: #7a7a7a; } + .input[disabled]::-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-moz-placeholder, .textarea[disabled]::-moz-placeholder, .select select[disabled]::-moz-placeholder, + fieldset[disabled] .input::-moz-placeholder, + fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-moz-placeholder, + #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-moz-placeholder, + fieldset[disabled] .textarea::-moz-placeholder, + fieldset[disabled] .select select::-moz-placeholder, + .select fieldset[disabled] select::-moz-placeholder { + color: rgba(122, 122, 122, 0.3); } + .input[disabled]::-webkit-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]::-webkit-input-placeholder, .textarea[disabled]::-webkit-input-placeholder, .select select[disabled]::-webkit-input-placeholder, + fieldset[disabled] .input::-webkit-input-placeholder, + fieldset[disabled] #documenter .docs-sidebar form.docs-search > input::-webkit-input-placeholder, + #documenter .docs-sidebar fieldset[disabled] form.docs-search > input::-webkit-input-placeholder, + fieldset[disabled] .textarea::-webkit-input-placeholder, + fieldset[disabled] .select select::-webkit-input-placeholder, + .select fieldset[disabled] select::-webkit-input-placeholder { + color: rgba(122, 122, 122, 0.3); } + .input[disabled]:-moz-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-moz-placeholder, .textarea[disabled]:-moz-placeholder, .select select[disabled]:-moz-placeholder, + fieldset[disabled] .input:-moz-placeholder, + fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-moz-placeholder, + #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-moz-placeholder, + fieldset[disabled] .textarea:-moz-placeholder, + fieldset[disabled] .select select:-moz-placeholder, + .select fieldset[disabled] select:-moz-placeholder { + color: rgba(122, 122, 122, 0.3); } + .input[disabled]:-ms-input-placeholder, #documenter .docs-sidebar form.docs-search > input[disabled]:-ms-input-placeholder, .textarea[disabled]:-ms-input-placeholder, .select select[disabled]:-ms-input-placeholder, + fieldset[disabled] .input:-ms-input-placeholder, + fieldset[disabled] #documenter .docs-sidebar form.docs-search > input:-ms-input-placeholder, + #documenter .docs-sidebar fieldset[disabled] form.docs-search > input:-ms-input-placeholder, + fieldset[disabled] .textarea:-ms-input-placeholder, + fieldset[disabled] .select select:-ms-input-placeholder, + .select fieldset[disabled] select:-ms-input-placeholder { + color: rgba(122, 122, 122, 0.3); } + +.input, #documenter .docs-sidebar form.docs-search > input, .textarea { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.1); + max-width: 100%; + width: 100%; } + .input[readonly], #documenter .docs-sidebar form.docs-search > input[readonly], .textarea[readonly] { + box-shadow: none; } + .is-white.input, #documenter .docs-sidebar form.docs-search > input.is-white, .is-white.textarea { + border-color: white; } + .is-white.input:focus, #documenter .docs-sidebar form.docs-search > input.is-white:focus, .is-white.textarea:focus, .is-white.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-white.is-focused, .is-white.is-focused.textarea, .is-white.input:active, #documenter .docs-sidebar form.docs-search > input.is-white:active, .is-white.textarea:active, .is-white.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-white.is-active, .is-white.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .is-black.input, #documenter .docs-sidebar form.docs-search > input.is-black, .is-black.textarea { + border-color: #0a0a0a; } + .is-black.input:focus, #documenter .docs-sidebar form.docs-search > input.is-black:focus, .is-black.textarea:focus, .is-black.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-black.is-focused, .is-black.is-focused.textarea, .is-black.input:active, #documenter .docs-sidebar form.docs-search > input.is-black:active, .is-black.textarea:active, .is-black.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-black.is-active, .is-black.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .is-light.input, #documenter .docs-sidebar form.docs-search > input.is-light, .is-light.textarea { + border-color: whitesmoke; } + .is-light.input:focus, #documenter .docs-sidebar form.docs-search > input.is-light:focus, .is-light.textarea:focus, .is-light.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-light.is-focused, .is-light.is-focused.textarea, .is-light.input:active, #documenter .docs-sidebar form.docs-search > input.is-light:active, .is-light.textarea:active, .is-light.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-light.is-active, .is-light.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .is-dark.input, .content kbd.input, #documenter .docs-sidebar form.docs-search > input.is-dark, .is-dark.textarea, .content kbd.textarea { + border-color: #363636; } + .is-dark.input:focus, .content kbd.input:focus, #documenter .docs-sidebar form.docs-search > input.is-dark:focus, .is-dark.textarea:focus, .content kbd.textarea:focus, .is-dark.is-focused.input, .content kbd.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-dark.is-focused, .is-dark.is-focused.textarea, .content kbd.is-focused.textarea, .is-dark.input:active, .content kbd.input:active, #documenter .docs-sidebar form.docs-search > input.is-dark:active, .is-dark.textarea:active, .content kbd.textarea:active, .is-dark.is-active.input, .content kbd.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-dark.is-active, .is-dark.is-active.textarea, .content kbd.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .is-primary.input, .docstring > section > a.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary, .is-primary.textarea, .docstring > section > a.textarea.docs-sourcelink { + border-color: #4eb5de; } + .is-primary.input:focus, .docstring > section > a.input.docs-sourcelink:focus, #documenter .docs-sidebar form.docs-search > input.is-primary:focus, .is-primary.textarea:focus, .docstring > section > a.textarea.docs-sourcelink:focus, .is-primary.is-focused.input, .docstring > section > a.is-focused.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary.is-focused, .is-primary.is-focused.textarea, .docstring > section > a.is-focused.textarea.docs-sourcelink, .is-primary.input:active, .docstring > section > a.input.docs-sourcelink:active, #documenter .docs-sidebar form.docs-search > input.is-primary:active, .is-primary.textarea:active, .docstring > section > a.textarea.docs-sourcelink:active, .is-primary.is-active.input, .docstring > section > a.is-active.input.docs-sourcelink, #documenter .docs-sidebar form.docs-search > input.is-primary.is-active, .is-primary.is-active.textarea, .docstring > section > a.is-active.textarea.docs-sourcelink { + box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } + .is-link.input, #documenter .docs-sidebar form.docs-search > input.is-link, .is-link.textarea { + border-color: #2e63b8; } + .is-link.input:focus, #documenter .docs-sidebar form.docs-search > input.is-link:focus, .is-link.textarea:focus, .is-link.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-link.is-focused, .is-link.is-focused.textarea, .is-link.input:active, #documenter .docs-sidebar form.docs-search > input.is-link:active, .is-link.textarea:active, .is-link.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-link.is-active, .is-link.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .is-info.input, #documenter .docs-sidebar form.docs-search > input.is-info, .is-info.textarea { + border-color: #209cee; } + .is-info.input:focus, #documenter .docs-sidebar form.docs-search > input.is-info:focus, .is-info.textarea:focus, .is-info.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-info.is-focused, .is-info.is-focused.textarea, .is-info.input:active, #documenter .docs-sidebar form.docs-search > input.is-info:active, .is-info.textarea:active, .is-info.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-info.is-active, .is-info.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } + .is-success.input, #documenter .docs-sidebar form.docs-search > input.is-success, .is-success.textarea { + border-color: #22c35b; } + .is-success.input:focus, #documenter .docs-sidebar form.docs-search > input.is-success:focus, .is-success.textarea:focus, .is-success.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-success.is-focused, .is-success.is-focused.textarea, .is-success.input:active, #documenter .docs-sidebar form.docs-search > input.is-success:active, .is-success.textarea:active, .is-success.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-success.is-active, .is-success.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } + .is-warning.input, #documenter .docs-sidebar form.docs-search > input.is-warning, .is-warning.textarea { + border-color: #ffdd57; } + .is-warning.input:focus, #documenter .docs-sidebar form.docs-search > input.is-warning:focus, .is-warning.textarea:focus, .is-warning.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-warning.is-focused, .is-warning.is-focused.textarea, .is-warning.input:active, #documenter .docs-sidebar form.docs-search > input.is-warning:active, .is-warning.textarea:active, .is-warning.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-warning.is-active, .is-warning.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } + .is-danger.input, #documenter .docs-sidebar form.docs-search > input.is-danger, .is-danger.textarea { + border-color: #da0b00; } + .is-danger.input:focus, #documenter .docs-sidebar form.docs-search > input.is-danger:focus, .is-danger.textarea:focus, .is-danger.is-focused.input, #documenter .docs-sidebar form.docs-search > input.is-danger.is-focused, .is-danger.is-focused.textarea, .is-danger.input:active, #documenter .docs-sidebar form.docs-search > input.is-danger:active, .is-danger.textarea:active, .is-danger.is-active.input, #documenter .docs-sidebar form.docs-search > input.is-danger.is-active, .is-danger.is-active.textarea { + box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } + .is-small.input, #documenter .docs-sidebar form.docs-search > input, .is-small.textarea { + border-radius: 2px; + font-size: 0.75rem; } + .is-medium.input, #documenter .docs-sidebar form.docs-search > input.is-medium, .is-medium.textarea { + font-size: 1.25rem; } + .is-large.input, #documenter .docs-sidebar form.docs-search > input.is-large, .is-large.textarea { + font-size: 1.5rem; } + .is-fullwidth.input, #documenter .docs-sidebar form.docs-search > input.is-fullwidth, .is-fullwidth.textarea { + display: block; + width: 100%; } + .is-inline.input, #documenter .docs-sidebar form.docs-search > input.is-inline, .is-inline.textarea { + display: inline; + width: auto; } + +.input.is-rounded, #documenter .docs-sidebar form.docs-search > input { + border-radius: 290486px; + padding-left: 1em; + padding-right: 1em; } + +.input.is-static, #documenter .docs-sidebar form.docs-search > input.is-static { + background-color: transparent; + border-color: transparent; + box-shadow: none; + padding-left: 0; + padding-right: 0; } + +.textarea { + display: block; + max-width: 100%; + min-width: 100%; + padding: 0.625em; + resize: vertical; } + .textarea:not([rows]) { + max-height: 600px; + min-height: 120px; } + .textarea[rows] { + height: initial; } + .textarea.has-fixed-size { + resize: none; } + +.checkbox, .radio { + cursor: pointer; + display: inline-block; + line-height: 1.25; + position: relative; } + .checkbox input, .radio input { + cursor: pointer; } + .checkbox:hover, .radio:hover { + color: #363636; } + .checkbox[disabled], .radio[disabled], + fieldset[disabled] .checkbox, + fieldset[disabled] .radio { + color: #7a7a7a; + cursor: not-allowed; } + +.radio + .radio { + margin-left: 0.5em; } + +.select { + display: inline-block; + max-width: 100%; + position: relative; + vertical-align: top; } + .select:not(.is-multiple) { + height: 2.25em; } + .select:not(.is-multiple):not(.is-loading)::after { + border-color: #2e63b8; + right: 1.125em; + z-index: 4; } + .select.is-rounded select, #documenter .docs-sidebar form.docs-search > input.select select { + border-radius: 290486px; + padding-left: 1em; } + .select select { + cursor: pointer; + display: block; + font-size: 1em; + max-width: 100%; + outline: none; } + .select select::-ms-expand { + display: none; } + .select select[disabled]:hover, + fieldset[disabled] .select select:hover { + border-color: whitesmoke; } + .select select:not([multiple]) { + padding-right: 2.5em; } + .select select[multiple] { + height: auto; + padding: 0; } + .select select[multiple] option { + padding: 0.5em 1em; } + .select:not(.is-multiple):not(.is-loading):hover::after { + border-color: #363636; } + .select.is-white:not(:hover)::after { + border-color: white; } + .select.is-white select { + border-color: white; } + .select.is-white select:hover, .select.is-white select.is-hovered { + border-color: #f2f2f2; } + .select.is-white select:focus, .select.is-white select.is-focused, .select.is-white select:active, .select.is-white select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 255, 255, 0.25); } + .select.is-black:not(:hover)::after { + border-color: #0a0a0a; } + .select.is-black select { + border-color: #0a0a0a; } + .select.is-black select:hover, .select.is-black select.is-hovered { + border-color: black; } + .select.is-black select:focus, .select.is-black select.is-focused, .select.is-black select:active, .select.is-black select.is-active { + box-shadow: 0 0 0 0.125em rgba(10, 10, 10, 0.25); } + .select.is-light:not(:hover)::after { + border-color: whitesmoke; } + .select.is-light select { + border-color: whitesmoke; } + .select.is-light select:hover, .select.is-light select.is-hovered { + border-color: #e8e8e8; } + .select.is-light select:focus, .select.is-light select.is-focused, .select.is-light select:active, .select.is-light select.is-active { + box-shadow: 0 0 0 0.125em rgba(245, 245, 245, 0.25); } + .select.is-dark:not(:hover)::after, .content kbd.select:not(:hover)::after { + border-color: #363636; } + .select.is-dark select, .content kbd.select select { + border-color: #363636; } + .select.is-dark select:hover, .content kbd.select select:hover, .select.is-dark select.is-hovered, .content kbd.select select.is-hovered { + border-color: #292929; } + .select.is-dark select:focus, .content kbd.select select:focus, .select.is-dark select.is-focused, .content kbd.select select.is-focused, .select.is-dark select:active, .content kbd.select select:active, .select.is-dark select.is-active, .content kbd.select select.is-active { + box-shadow: 0 0 0 0.125em rgba(54, 54, 54, 0.25); } + .select.is-primary:not(:hover)::after, .docstring > section > a.select.docs-sourcelink:not(:hover)::after { + border-color: #4eb5de; } + .select.is-primary select, .docstring > section > a.select.docs-sourcelink select { + border-color: #4eb5de; } + .select.is-primary select:hover, .docstring > section > a.select.docs-sourcelink select:hover, .select.is-primary select.is-hovered, .docstring > section > a.select.docs-sourcelink select.is-hovered { + border-color: #39acda; } + .select.is-primary select:focus, .docstring > section > a.select.docs-sourcelink select:focus, .select.is-primary select.is-focused, .docstring > section > a.select.docs-sourcelink select.is-focused, .select.is-primary select:active, .docstring > section > a.select.docs-sourcelink select:active, .select.is-primary select.is-active, .docstring > section > a.select.docs-sourcelink select.is-active { + box-shadow: 0 0 0 0.125em rgba(78, 181, 222, 0.25); } + .select.is-link:not(:hover)::after { + border-color: #2e63b8; } + .select.is-link select { + border-color: #2e63b8; } + .select.is-link select:hover, .select.is-link select.is-hovered { + border-color: #2958a4; } + .select.is-link select:focus, .select.is-link select.is-focused, .select.is-link select:active, .select.is-link select.is-active { + box-shadow: 0 0 0 0.125em rgba(46, 99, 184, 0.25); } + .select.is-info:not(:hover)::after { + border-color: #209cee; } + .select.is-info select { + border-color: #209cee; } + .select.is-info select:hover, .select.is-info select.is-hovered { + border-color: #118fe4; } + .select.is-info select:focus, .select.is-info select.is-focused, .select.is-info select:active, .select.is-info select.is-active { + box-shadow: 0 0 0 0.125em rgba(32, 156, 238, 0.25); } + .select.is-success:not(:hover)::after { + border-color: #22c35b; } + .select.is-success select { + border-color: #22c35b; } + .select.is-success select:hover, .select.is-success select.is-hovered { + border-color: #1ead51; } + .select.is-success select:focus, .select.is-success select.is-focused, .select.is-success select:active, .select.is-success select.is-active { + box-shadow: 0 0 0 0.125em rgba(34, 195, 91, 0.25); } + .select.is-warning:not(:hover)::after { + border-color: #ffdd57; } + .select.is-warning select { + border-color: #ffdd57; } + .select.is-warning select:hover, .select.is-warning select.is-hovered { + border-color: #ffd83d; } + .select.is-warning select:focus, .select.is-warning select.is-focused, .select.is-warning select:active, .select.is-warning select.is-active { + box-shadow: 0 0 0 0.125em rgba(255, 221, 87, 0.25); } + .select.is-danger:not(:hover)::after { + border-color: #da0b00; } + .select.is-danger select { + border-color: #da0b00; } + .select.is-danger select:hover, .select.is-danger select.is-hovered { + border-color: #c10a00; } + .select.is-danger select:focus, .select.is-danger select.is-focused, .select.is-danger select:active, .select.is-danger select.is-active { + box-shadow: 0 0 0 0.125em rgba(218, 11, 0, 0.25); } + .select.is-small, #documenter .docs-sidebar form.docs-search > input.select { + border-radius: 2px; + font-size: 0.75rem; } + .select.is-medium { + font-size: 1.25rem; } + .select.is-large { + font-size: 1.5rem; } + .select.is-disabled::after { + border-color: #7a7a7a; } + .select.is-fullwidth { + width: 100%; } + .select.is-fullwidth select { + width: 100%; } + .select.is-loading::after { + margin-top: 0; + position: absolute; + right: 0.625em; + top: 0.625em; + transform: none; } + .select.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.select.is-loading:after { + font-size: 0.75rem; } + .select.is-loading.is-medium:after { + font-size: 1.25rem; } + .select.is-loading.is-large:after { + font-size: 1.5rem; } + +.file { + align-items: stretch; + display: flex; + justify-content: flex-start; + position: relative; } + .file.is-white .file-cta { + background-color: white; + border-color: transparent; + color: #0a0a0a; } + .file.is-white:hover .file-cta, .file.is-white.is-hovered .file-cta { + background-color: #f9f9f9; + border-color: transparent; + color: #0a0a0a; } + .file.is-white:focus .file-cta, .file.is-white.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 255, 255, 0.25); + color: #0a0a0a; } + .file.is-white:active .file-cta, .file.is-white.is-active .file-cta { + background-color: #f2f2f2; + border-color: transparent; + color: #0a0a0a; } + .file.is-black .file-cta { + background-color: #0a0a0a; + border-color: transparent; + color: white; } + .file.is-black:hover .file-cta, .file.is-black.is-hovered .file-cta { + background-color: #040404; + border-color: transparent; + color: white; } + .file.is-black:focus .file-cta, .file.is-black.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(10, 10, 10, 0.25); + color: white; } + .file.is-black:active .file-cta, .file.is-black.is-active .file-cta { + background-color: black; + border-color: transparent; + color: white; } + .file.is-light .file-cta { + background-color: whitesmoke; + border-color: transparent; + color: #363636; } + .file.is-light:hover .file-cta, .file.is-light.is-hovered .file-cta { + background-color: #eeeeee; + border-color: transparent; + color: #363636; } + .file.is-light:focus .file-cta, .file.is-light.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(245, 245, 245, 0.25); + color: #363636; } + .file.is-light:active .file-cta, .file.is-light.is-active .file-cta { + background-color: #e8e8e8; + border-color: transparent; + color: #363636; } + .file.is-dark .file-cta, .content kbd.file .file-cta { + background-color: #363636; + border-color: transparent; + color: whitesmoke; } + .file.is-dark:hover .file-cta, .content kbd.file:hover .file-cta, .file.is-dark.is-hovered .file-cta, .content kbd.file.is-hovered .file-cta { + background-color: #2f2f2f; + border-color: transparent; + color: whitesmoke; } + .file.is-dark:focus .file-cta, .content kbd.file:focus .file-cta, .file.is-dark.is-focused .file-cta, .content kbd.file.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(54, 54, 54, 0.25); + color: whitesmoke; } + .file.is-dark:active .file-cta, .content kbd.file:active .file-cta, .file.is-dark.is-active .file-cta, .content kbd.file.is-active .file-cta { + background-color: #292929; + border-color: transparent; + color: whitesmoke; } + .file.is-primary .file-cta, .docstring > section > a.file.docs-sourcelink .file-cta { + background-color: #4eb5de; + border-color: transparent; + color: #fff; } + .file.is-primary:hover .file-cta, .docstring > section > a.file.docs-sourcelink:hover .file-cta, .file.is-primary.is-hovered .file-cta, .docstring > section > a.file.is-hovered.docs-sourcelink .file-cta { + background-color: #43b1dc; + border-color: transparent; + color: #fff; } + .file.is-primary:focus .file-cta, .docstring > section > a.file.docs-sourcelink:focus .file-cta, .file.is-primary.is-focused .file-cta, .docstring > section > a.file.is-focused.docs-sourcelink .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(78, 181, 222, 0.25); + color: #fff; } + .file.is-primary:active .file-cta, .docstring > section > a.file.docs-sourcelink:active .file-cta, .file.is-primary.is-active .file-cta, .docstring > section > a.file.is-active.docs-sourcelink .file-cta { + background-color: #39acda; + border-color: transparent; + color: #fff; } + .file.is-link .file-cta { + background-color: #2e63b8; + border-color: transparent; + color: #fff; } + .file.is-link:hover .file-cta, .file.is-link.is-hovered .file-cta { + background-color: #2b5eae; + border-color: transparent; + color: #fff; } + .file.is-link:focus .file-cta, .file.is-link.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(46, 99, 184, 0.25); + color: #fff; } + .file.is-link:active .file-cta, .file.is-link.is-active .file-cta { + background-color: #2958a4; + border-color: transparent; + color: #fff; } + .file.is-info .file-cta { + background-color: #209cee; + border-color: transparent; + color: #fff; } + .file.is-info:hover .file-cta, .file.is-info.is-hovered .file-cta { + background-color: #1496ed; + border-color: transparent; + color: #fff; } + .file.is-info:focus .file-cta, .file.is-info.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(32, 156, 238, 0.25); + color: #fff; } + .file.is-info:active .file-cta, .file.is-info.is-active .file-cta { + background-color: #118fe4; + border-color: transparent; + color: #fff; } + .file.is-success .file-cta { + background-color: #22c35b; + border-color: transparent; + color: #fff; } + .file.is-success:hover .file-cta, .file.is-success.is-hovered .file-cta { + background-color: #20b856; + border-color: transparent; + color: #fff; } + .file.is-success:focus .file-cta, .file.is-success.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(34, 195, 91, 0.25); + color: #fff; } + .file.is-success:active .file-cta, .file.is-success.is-active .file-cta { + background-color: #1ead51; + border-color: transparent; + color: #fff; } + .file.is-warning .file-cta { + background-color: #ffdd57; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:hover .file-cta, .file.is-warning.is-hovered .file-cta { + background-color: #ffdb4a; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:focus .file-cta, .file.is-warning.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(255, 221, 87, 0.25); + color: rgba(0, 0, 0, 0.7); } + .file.is-warning:active .file-cta, .file.is-warning.is-active .file-cta { + background-color: #ffd83d; + border-color: transparent; + color: rgba(0, 0, 0, 0.7); } + .file.is-danger .file-cta { + background-color: #da0b00; + border-color: transparent; + color: #fff; } + .file.is-danger:hover .file-cta, .file.is-danger.is-hovered .file-cta { + background-color: #cd0a00; + border-color: transparent; + color: #fff; } + .file.is-danger:focus .file-cta, .file.is-danger.is-focused .file-cta { + border-color: transparent; + box-shadow: 0 0 0.5em rgba(218, 11, 0, 0.25); + color: #fff; } + .file.is-danger:active .file-cta, .file.is-danger.is-active .file-cta { + background-color: #c10a00; + border-color: transparent; + color: #fff; } + .file.is-small, #documenter .docs-sidebar form.docs-search > input.file { + font-size: 0.75rem; } + .file.is-medium { + font-size: 1.25rem; } + .file.is-medium .file-icon .fa { + font-size: 21px; } + .file.is-large { + font-size: 1.5rem; } + .file.is-large .file-icon .fa { + font-size: 28px; } + .file.has-name .file-cta { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + .file.has-name .file-name { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .file.has-name.is-empty .file-cta { + border-radius: 4px; } + .file.has-name.is-empty .file-name { + display: none; } + .file.is-boxed .file-label { + flex-direction: column; } + .file.is-boxed .file-cta { + flex-direction: column; + height: auto; + padding: 1em 3em; } + .file.is-boxed .file-name { + border-width: 0 1px 1px; } + .file.is-boxed .file-icon { + height: 1.5em; + width: 1.5em; } + .file.is-boxed .file-icon .fa { + font-size: 21px; } + .file.is-boxed.is-small .file-icon .fa, #documenter .docs-sidebar form.docs-search > input.file.is-boxed .file-icon .fa { + font-size: 14px; } + .file.is-boxed.is-medium .file-icon .fa { + font-size: 28px; } + .file.is-boxed.is-large .file-icon .fa { + font-size: 35px; } + .file.is-boxed.has-name .file-cta { + border-radius: 4px 4px 0 0; } + .file.is-boxed.has-name .file-name { + border-radius: 0 0 4px 4px; + border-width: 0 1px 1px; } + .file.is-centered { + justify-content: center; } + .file.is-fullwidth .file-label { + width: 100%; } + .file.is-fullwidth .file-name { + flex-grow: 1; + max-width: none; } + .file.is-right { + justify-content: flex-end; } + .file.is-right .file-cta { + border-radius: 0 4px 4px 0; } + .file.is-right .file-name { + border-radius: 4px 0 0 4px; + border-width: 1px 0 1px 1px; + order: -1; } + +.file-label { + align-items: stretch; + display: flex; + cursor: pointer; + justify-content: flex-start; + overflow: hidden; + position: relative; } + .file-label:hover .file-cta { + background-color: #eeeeee; + color: #363636; } + .file-label:hover .file-name { + border-color: #d5d5d5; } + .file-label:active .file-cta { + background-color: #e8e8e8; + color: #363636; } + .file-label:active .file-name { + border-color: #cfcfcf; } + +.file-input { + height: 100%; + left: 0; + opacity: 0; + outline: none; + position: absolute; + top: 0; + width: 100%; } + +.file-cta, +.file-name { + border-color: #dbdbdb; + border-radius: 4px; + font-size: 1em; + padding-left: 1em; + padding-right: 1em; + white-space: nowrap; } + +.file-cta { + background-color: whitesmoke; + color: #4a4a4a; } + +.file-name { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px 1px 1px 0; + display: block; + max-width: 16em; + overflow: hidden; + text-align: left; + text-overflow: ellipsis; } + +.file-icon { + align-items: center; + display: flex; + height: 1em; + justify-content: center; + margin-right: 0.5em; + width: 1em; } + .file-icon .fa { + font-size: 14px; } + +.label { + color: #363636; + display: block; + font-size: 1rem; + font-weight: 700; } + .label:not(:last-child) { + margin-bottom: 0.5em; } + .label.is-small, #documenter .docs-sidebar form.docs-search > input.label { + font-size: 0.75rem; } + .label.is-medium { + font-size: 1.25rem; } + .label.is-large { + font-size: 1.5rem; } + +.help { + display: block; + font-size: 0.75rem; + margin-top: 0.25rem; } + .help.is-white { + color: white; } + .help.is-black { + color: #0a0a0a; } + .help.is-light { + color: whitesmoke; } + .help.is-dark, .content kbd.help { + color: #363636; } + .help.is-primary, .docstring > section > a.help.docs-sourcelink { + color: #4eb5de; } + .help.is-link { + color: #2e63b8; } + .help.is-info { + color: #209cee; } + .help.is-success { + color: #22c35b; } + .help.is-warning { + color: #ffdd57; } + .help.is-danger { + color: #da0b00; } + +.field:not(:last-child) { + margin-bottom: 0.75rem; } + +.field.has-addons { + display: flex; + justify-content: flex-start; } + .field.has-addons .control:not(:last-child) { + margin-right: -1px; } + .field.has-addons .control:not(:first-child):not(:last-child) .button, + .field.has-addons .control:not(:first-child):not(:last-child) .input, + .field.has-addons .control:not(:first-child):not(:last-child) #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar .field.has-addons .control:not(:first-child):not(:last-child) form.docs-search > input, + .field.has-addons .control:not(:first-child):not(:last-child) .select select { + border-radius: 0; } + .field.has-addons .control:first-child:not(:only-child) .button, + .field.has-addons .control:first-child:not(:only-child) .input, + .field.has-addons .control:first-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar .field.has-addons .control:first-child:not(:only-child) form.docs-search > input, + .field.has-addons .control:first-child:not(:only-child) .select select { + border-bottom-right-radius: 0; + border-top-right-radius: 0; } + .field.has-addons .control:last-child:not(:only-child) .button, + .field.has-addons .control:last-child:not(:only-child) .input, + .field.has-addons .control:last-child:not(:only-child) #documenter .docs-sidebar form.docs-search > input, + #documenter .docs-sidebar .field.has-addons .control:last-child:not(:only-child) form.docs-search > input, + .field.has-addons .control:last-child:not(:only-child) .select select { + border-bottom-left-radius: 0; + border-top-left-radius: 0; } + .field.has-addons .control .button:not([disabled]):hover, .field.has-addons .control .button:not([disabled]).is-hovered, + .field.has-addons .control .input:not([disabled]):hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):hover, + .field.has-addons .control .input:not([disabled]).is-hovered, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-hovered, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-hovered, + .field.has-addons .control .select select:not([disabled]):hover, + .field.has-addons .control .select select:not([disabled]).is-hovered { + z-index: 2; } + .field.has-addons .control .button:not([disabled]):focus, .field.has-addons .control .button:not([disabled]).is-focused, .field.has-addons .control .button:not([disabled]):active, .field.has-addons .control .button:not([disabled]).is-active, + .field.has-addons .control .input:not([disabled]):focus, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus, + .field.has-addons .control .input:not([disabled]).is-focused, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused, + .field.has-addons .control .input:not([disabled]):active, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active, + .field.has-addons .control .input:not([disabled]).is-active, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active, + .field.has-addons .control .select select:not([disabled]):focus, + .field.has-addons .control .select select:not([disabled]).is-focused, + .field.has-addons .control .select select:not([disabled]):active, + .field.has-addons .control .select select:not([disabled]).is-active { + z-index: 3; } + .field.has-addons .control .button:not([disabled]):focus:hover, .field.has-addons .control .button:not([disabled]).is-focused:hover, .field.has-addons .control .button:not([disabled]):active:hover, .field.has-addons .control .button:not([disabled]).is-active:hover, + .field.has-addons .control .input:not([disabled]):focus:hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):focus:hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):focus:hover, + .field.has-addons .control .input:not([disabled]).is-focused:hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-focused:hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-focused:hover, + .field.has-addons .control .input:not([disabled]):active:hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]):active:hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]):active:hover, + .field.has-addons .control .input:not([disabled]).is-active:hover, + .field.has-addons .control #documenter .docs-sidebar form.docs-search > input:not([disabled]).is-active:hover, + #documenter .docs-sidebar .field.has-addons .control form.docs-search > input:not([disabled]).is-active:hover, + .field.has-addons .control .select select:not([disabled]):focus:hover, + .field.has-addons .control .select select:not([disabled]).is-focused:hover, + .field.has-addons .control .select select:not([disabled]):active:hover, + .field.has-addons .control .select select:not([disabled]).is-active:hover { + z-index: 4; } + .field.has-addons .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .field.has-addons.has-addons-centered { + justify-content: center; } + .field.has-addons.has-addons-right { + justify-content: flex-end; } + .field.has-addons.has-addons-fullwidth .control { + flex-grow: 1; + flex-shrink: 0; } + +.field.is-grouped { + display: flex; + justify-content: flex-start; } + .field.is-grouped > .control { + flex-shrink: 0; } + .field.is-grouped > .control:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + .field.is-grouped > .control.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .field.is-grouped.is-grouped-centered { + justify-content: center; } + .field.is-grouped.is-grouped-right { + justify-content: flex-end; } + .field.is-grouped.is-grouped-multiline { + flex-wrap: wrap; } + .field.is-grouped.is-grouped-multiline > .control:last-child, .field.is-grouped.is-grouped-multiline > .control:not(:last-child) { + margin-bottom: 0.75rem; } + .field.is-grouped.is-grouped-multiline:last-child { + margin-bottom: -0.75rem; } + .field.is-grouped.is-grouped-multiline:not(:last-child) { + margin-bottom: 0; } + +@media screen and (min-width: 769px), print { + .field.is-horizontal { + display: flex; } } + +.field-label .label { + font-size: inherit; } + +@media screen and (max-width: 768px) { + .field-label { + margin-bottom: 0.5rem; } } + +@media screen and (min-width: 769px), print { + .field-label { + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + margin-right: 1.5rem; + text-align: right; } + .field-label.is-small, #documenter .docs-sidebar form.docs-search > input.field-label { + font-size: 0.75rem; + padding-top: 0.375em; } + .field-label.is-normal { + padding-top: 0.375em; } + .field-label.is-medium { + font-size: 1.25rem; + padding-top: 0.375em; } + .field-label.is-large { + font-size: 1.5rem; + padding-top: 0.375em; } } + +.field-body .field .field { + margin-bottom: 0; } + +@media screen and (min-width: 769px), print { + .field-body { + display: flex; + flex-basis: 0; + flex-grow: 5; + flex-shrink: 1; } + .field-body .field { + margin-bottom: 0; } + .field-body > .field { + flex-shrink: 1; } + .field-body > .field:not(.is-narrow) { + flex-grow: 1; } + .field-body > .field:not(:last-child) { + margin-right: 0.75rem; } } + +.control { + box-sizing: border-box; + clear: both; + font-size: 1rem; + position: relative; + text-align: left; } + .control.has-icons-left .input:focus ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input:focus ~ .icon, + .control.has-icons-left .select:focus ~ .icon, .control.has-icons-right .input:focus ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input:focus ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input:focus ~ .icon, + .control.has-icons-right .select:focus ~ .icon { + color: #7a7a7a; } + .control.has-icons-left .input.is-small ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input ~ .icon, + .control.has-icons-left .select.is-small ~ .icon, + .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.select ~ .icon, + #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.select ~ .icon, .control.has-icons-right .input.is-small ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input ~ .icon, + .control.has-icons-right .select.is-small ~ .icon, + .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.select ~ .icon, + #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.select ~ .icon { + font-size: 0.75rem; } + .control.has-icons-left .input.is-medium ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-medium ~ .icon, + .control.has-icons-left .select.is-medium ~ .icon, .control.has-icons-right .input.is-medium ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-medium ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-medium ~ .icon, + .control.has-icons-right .select.is-medium ~ .icon { + font-size: 1.25rem; } + .control.has-icons-left .input.is-large ~ .icon, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input.is-large ~ .icon, + .control.has-icons-left .select.is-large ~ .icon, .control.has-icons-right .input.is-large ~ .icon, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input.is-large ~ .icon, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input.is-large ~ .icon, + .control.has-icons-right .select.is-large ~ .icon { + font-size: 1.5rem; } + .control.has-icons-left .icon, .control.has-icons-right .icon { + color: #dbdbdb; + height: 2.25em; + pointer-events: none; + position: absolute; + top: 0; + width: 2.25em; + z-index: 4; } + .control.has-icons-left .input, .control.has-icons-left #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-left form.docs-search > input, + .control.has-icons-left .select select { + padding-left: 2.25em; } + .control.has-icons-left .icon.is-left { + left: 0; } + .control.has-icons-right .input, .control.has-icons-right #documenter .docs-sidebar form.docs-search > input, #documenter .docs-sidebar .control.has-icons-right form.docs-search > input, + .control.has-icons-right .select select { + padding-right: 2.25em; } + .control.has-icons-right .icon.is-right { + right: 0; } + .control.is-loading::after { + position: absolute !important; + right: 0.625em; + top: 0.625em; + z-index: 4; } + .control.is-loading.is-small:after, #documenter .docs-sidebar form.docs-search > input.control.is-loading:after { + font-size: 0.75rem; } + .control.is-loading.is-medium:after { + font-size: 1.25rem; } + .control.is-loading.is-large:after { + font-size: 1.5rem; } + +.breadcrumb { + font-size: 1rem; + white-space: nowrap; } + .breadcrumb a { + align-items: center; + color: #2e63b8; + display: flex; + justify-content: center; + padding: 0 0.75em; } + .breadcrumb a:hover { + color: #363636; } + .breadcrumb li { + align-items: center; + display: flex; } + .breadcrumb li:first-child a { + padding-left: 0; } + .breadcrumb li.is-active a { + color: #222222; + cursor: default; + pointer-events: none; } + .breadcrumb li + li::before { + color: #b5b5b5; + content: "\0002f"; } + .breadcrumb ul, + .breadcrumb ol { + align-items: flex-start; + display: flex; + flex-wrap: wrap; + justify-content: flex-start; } + .breadcrumb .icon:first-child { + margin-right: 0.5em; } + .breadcrumb .icon:last-child { + margin-left: 0.5em; } + .breadcrumb.is-centered ol, + .breadcrumb.is-centered ul { + justify-content: center; } + .breadcrumb.is-right ol, + .breadcrumb.is-right ul { + justify-content: flex-end; } + .breadcrumb.is-small, #documenter .docs-sidebar form.docs-search > input.breadcrumb { + font-size: 0.75rem; } + .breadcrumb.is-medium { + font-size: 1.25rem; } + .breadcrumb.is-large { + font-size: 1.5rem; } + .breadcrumb.has-arrow-separator li + li::before { + content: "\02192"; } + .breadcrumb.has-bullet-separator li + li::before { + content: "\02022"; } + .breadcrumb.has-dot-separator li + li::before { + content: "\000b7"; } + .breadcrumb.has-succeeds-separator li + li::before { + content: "\0227B"; } + +.card { + background-color: white; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + color: #222222; + max-width: 100%; + position: relative; } + +.card-header { + background-color: transparent; + align-items: stretch; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + display: flex; } + +.card-header-title { + align-items: center; + color: #222222; + display: flex; + flex-grow: 1; + font-weight: 700; + padding: 0.75rem; } + .card-header-title.is-centered { + justify-content: center; } + +.card-header-icon { + align-items: center; + cursor: pointer; + display: flex; + justify-content: center; + padding: 0.75rem; } + +.card-image { + display: block; + position: relative; } + +.card-content { + background-color: transparent; + padding: 1rem 1.25rem; } + +.card-footer { + background-color: transparent; + border-top: 1px solid #dbdbdb; + align-items: stretch; + display: flex; } + +.card-footer-item { + align-items: center; + display: flex; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 0; + justify-content: center; + padding: 0.75rem; } + .card-footer-item:not(:last-child) { + border-right: 1px solid #dbdbdb; } + +.card .media:not(:last-child) { + margin-bottom: 1.5rem; } + +.dropdown { + display: inline-flex; + position: relative; + vertical-align: top; } + .dropdown.is-active .dropdown-menu, .dropdown.is-hoverable:hover .dropdown-menu { + display: block; } + .dropdown.is-right .dropdown-menu { + left: auto; + right: 0; } + .dropdown.is-up .dropdown-menu { + bottom: 100%; + padding-bottom: 4px; + padding-top: initial; + top: auto; } + +.dropdown-menu { + display: none; + left: 0; + min-width: 12rem; + padding-top: 4px; + position: absolute; + top: 100%; + z-index: 20; } + +.dropdown-content { + background-color: white; + border-radius: 4px; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + +.dropdown-item { + color: #4a4a4a; + display: block; + font-size: 0.875rem; + line-height: 1.5; + padding: 0.375rem 1rem; + position: relative; } + +a.dropdown-item, +button.dropdown-item { + padding-right: 3rem; + text-align: left; + white-space: nowrap; + width: 100%; } + a.dropdown-item:hover, + button.dropdown-item:hover { + background-color: whitesmoke; + color: #0a0a0a; } + a.dropdown-item.is-active, + button.dropdown-item.is-active { + background-color: #2e63b8; + color: #fff; } + +.dropdown-divider { + background-color: #dbdbdb; + border: none; + display: block; + height: 1px; + margin: 0.5rem 0; } + +.level { + align-items: center; + justify-content: space-between; } + .level code { + border-radius: 4px; } + .level img { + display: inline-block; + vertical-align: top; } + .level.is-mobile { + display: flex; } + .level.is-mobile .level-left, + .level.is-mobile .level-right { + display: flex; } + .level.is-mobile .level-left + .level-right { + margin-top: 0; } + .level.is-mobile .level-item:not(:last-child) { + margin-bottom: 0; + margin-right: 0.75rem; } + .level.is-mobile .level-item:not(.is-narrow) { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + .level { + display: flex; } + .level > .level-item:not(.is-narrow) { + flex-grow: 1; } } + +.level-item { + align-items: center; + display: flex; + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; + justify-content: center; } + .level-item .title, + .level-item .subtitle { + margin-bottom: 0; } + @media screen and (max-width: 768px) { + .level-item:not(:last-child) { + margin-bottom: 0.75rem; } } + +.level-left, +.level-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + .level-left .level-item.is-flexible, + .level-right .level-item.is-flexible { + flex-grow: 1; } + @media screen and (min-width: 769px), print { + .level-left .level-item:not(:last-child), + .level-right .level-item:not(:last-child) { + margin-right: 0.75rem; } } + +.level-left { + align-items: center; + justify-content: flex-start; } + @media screen and (max-width: 768px) { + .level-left + .level-right { + margin-top: 1.5rem; } } + @media screen and (min-width: 769px), print { + .level-left { + display: flex; } } + +.level-right { + align-items: center; + justify-content: flex-end; } + @media screen and (min-width: 769px), print { + .level-right { + display: flex; } } + +.list { + background-color: white; + border-radius: 4px; + box-shadow: 0 2px 3px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); } + +.list-item { + display: block; + padding: 0.5em 1em; } + .list-item:not(a) { + color: #222222; } + .list-item:first-child { + border-top-left-radius: 4px; + border-top-right-radius: 4px; } + .list-item:last-child { + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; } + .list-item:not(:last-child) { + border-bottom: 1px solid #dbdbdb; } + .list-item.is-active { + background-color: #2e63b8; + color: #fff; } + +a.list-item { + background-color: whitesmoke; + cursor: pointer; } + +.media { + align-items: flex-start; + display: flex; + text-align: left; } + .media .content:not(:last-child) { + margin-bottom: 0.75rem; } + .media .media { + border-top: 1px solid rgba(219, 219, 219, 0.5); + display: flex; + padding-top: 0.75rem; } + .media .media .content:not(:last-child), + .media .media .control:not(:last-child) { + margin-bottom: 0.5rem; } + .media .media .media { + padding-top: 0.5rem; } + .media .media .media + .media { + margin-top: 0.5rem; } + .media + .media { + border-top: 1px solid rgba(219, 219, 219, 0.5); + margin-top: 1rem; + padding-top: 1rem; } + .media.is-large + .media { + margin-top: 1.5rem; + padding-top: 1.5rem; } + +.media-left, +.media-right { + flex-basis: auto; + flex-grow: 0; + flex-shrink: 0; } + +.media-left { + margin-right: 1rem; } + +.media-right { + margin-left: 1rem; } + +.media-content { + flex-basis: auto; + flex-grow: 1; + flex-shrink: 1; + text-align: left; } + +@media screen and (max-width: 768px) { + .media-content { + overflow-x: auto; } } + +.menu { + font-size: 1rem; } + .menu.is-small, #documenter .docs-sidebar form.docs-search > input.menu { + font-size: 0.75rem; } + .menu.is-medium { + font-size: 1.25rem; } + .menu.is-large { + font-size: 1.5rem; } + +.menu-list { + line-height: 1.25; } + .menu-list a { + border-radius: 2px; + color: #222222; + display: block; + padding: 0.5em 0.75em; } + .menu-list a:hover { + background-color: whitesmoke; + color: #222222; } + .menu-list a.is-active { + background-color: #2e63b8; + color: #fff; } + .menu-list li ul { + border-left: 1px solid #dbdbdb; + margin: 0.75em; + padding-left: 0.75em; } + +.menu-label { + color: #7a7a7a; + font-size: 0.75em; + letter-spacing: 0.1em; + text-transform: uppercase; } + .menu-label:not(:first-child) { + margin-top: 1em; } + .menu-label:not(:last-child) { + margin-bottom: 1em; } + +.message { + background-color: whitesmoke; + border-radius: 4px; + font-size: 1rem; } + .message strong { + color: currentColor; } + .message a:not(.button):not(.tag):not(.dropdown-item) { + color: currentColor; + text-decoration: underline; } + .message.is-small, #documenter .docs-sidebar form.docs-search > input.message { + font-size: 0.75rem; } + .message.is-medium { + font-size: 1.25rem; } + .message.is-large { + font-size: 1.5rem; } + .message.is-white { + background-color: white; } + .message.is-white .message-header { + background-color: white; + color: #0a0a0a; } + .message.is-white .message-body { + border-color: white; + color: #4d4d4d; } + .message.is-black { + background-color: #fafafa; } + .message.is-black .message-header { + background-color: #0a0a0a; + color: white; } + .message.is-black .message-body { + border-color: #0a0a0a; + color: #090909; } + .message.is-light { + background-color: #fafafa; } + .message.is-light .message-header { + background-color: whitesmoke; + color: #363636; } + .message.is-light .message-body { + border-color: whitesmoke; + color: #505050; } + .message.is-dark, .content kbd.message { + background-color: #fafafa; } + .message.is-dark .message-header, .content kbd.message .message-header { + background-color: #363636; + color: whitesmoke; } + .message.is-dark .message-body, .content kbd.message .message-body { + border-color: #363636; + color: #2a2a2a; } + .message.is-primary, .docstring > section > a.message.docs-sourcelink { + background-color: #f6fbfd; } + .message.is-primary .message-header, .docstring > section > a.message.docs-sourcelink .message-header { + background-color: #4eb5de; + color: #fff; } + .message.is-primary .message-body, .docstring > section > a.message.docs-sourcelink .message-body { + border-color: #4eb5de; + color: #1f556a; } + .message.is-link { + background-color: #f7f9fd; } + .message.is-link .message-header { + background-color: #2e63b8; + color: #fff; } + .message.is-link .message-body { + border-color: #2e63b8; + color: #264981; } + .message.is-info { + background-color: #f6fbfe; } + .message.is-info .message-header { + background-color: #209cee; + color: #fff; } + .message.is-info .message-body { + border-color: #209cee; + color: #12537e; } + .message.is-success { + background-color: #f6fdf9; } + .message.is-success .message-header { + background-color: #22c35b; + color: #fff; } + .message.is-success .message-body { + border-color: #22c35b; + color: #0f361d; } + .message.is-warning { + background-color: #fffdf5; } + .message.is-warning .message-header { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .message.is-warning .message-body { + border-color: #ffdd57; + color: #3b3108; } + .message.is-danger { + background-color: #fff5f5; } + .message.is-danger .message-header { + background-color: #da0b00; + color: #fff; } + .message.is-danger .message-body { + border-color: #da0b00; + color: #9b0c04; } + +.message-header { + align-items: center; + background-color: #222222; + border-radius: 4px 4px 0 0; + color: #fff; + display: flex; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.75em; + position: relative; } + .message-header .delete { + flex-grow: 0; + flex-shrink: 0; + margin-left: 0.75em; } + .message-header + .message-body { + border-width: 0; + border-top-left-radius: 0; + border-top-right-radius: 0; } + +.message-body { + border-color: #dbdbdb; + border-radius: 4px; + border-style: solid; + border-width: 0 0 0 4px; + color: #222222; + padding: 1em 1.25em; } + .message-body code, + .message-body pre { + background-color: white; } + .message-body pre code { + background-color: transparent; } + +.modal { + align-items: center; + display: none; + flex-direction: column; + justify-content: center; + overflow: hidden; + position: fixed; + z-index: 40; } + .modal.is-active { + display: flex; } + +.modal-background { + background-color: rgba(10, 10, 10, 0.86); } + +.modal-content, +.modal-card { + margin: 0 20px; + max-height: calc(100vh - 160px); + overflow: auto; + position: relative; + width: 100%; } + @media screen and (min-width: 769px), print { + .modal-content, + .modal-card { + margin: 0 auto; + max-height: calc(100vh - 40px); + width: 640px; } } + +.modal-close { + background: none; + height: 40px; + position: fixed; + right: 20px; + top: 20px; + width: 40px; } + +.modal-card { + display: flex; + flex-direction: column; + max-height: calc(100vh - 40px); + overflow: hidden; + -ms-overflow-y: visible; } + +.modal-card-head, +.modal-card-foot { + align-items: center; + background-color: whitesmoke; + display: flex; + flex-shrink: 0; + justify-content: flex-start; + padding: 20px; + position: relative; } + +.modal-card-head { + border-bottom: 1px solid #dbdbdb; + border-top-left-radius: 6px; + border-top-right-radius: 6px; } + +.modal-card-title { + color: #222222; + flex-grow: 1; + flex-shrink: 0; + font-size: 1.5rem; + line-height: 1; } + +.modal-card-foot { + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 1px solid #dbdbdb; } + .modal-card-foot .button:not(:last-child) { + margin-right: 0.5em; } + +.modal-card-body { + -webkit-overflow-scrolling: touch; + background-color: white; + flex-grow: 1; + flex-shrink: 1; + overflow: auto; + padding: 20px; } + +.navbar { + background-color: white; + min-height: 3.25rem; + position: relative; + z-index: 30; } + .navbar.is-white { + background-color: white; + color: #0a0a0a; } + .navbar.is-white .navbar-brand > .navbar-item, + .navbar.is-white .navbar-brand .navbar-link { + color: #0a0a0a; } + .navbar.is-white .navbar-brand > a.navbar-item:focus, .navbar.is-white .navbar-brand > a.navbar-item:hover, .navbar.is-white .navbar-brand > a.navbar-item.is-active, + .navbar.is-white .navbar-brand .navbar-link:focus, + .navbar.is-white .navbar-brand .navbar-link:hover, + .navbar.is-white .navbar-brand .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-brand .navbar-link::after { + border-color: #0a0a0a; } + .navbar.is-white .navbar-burger { + color: #0a0a0a; } + @media screen and (min-width: 1056px) { + .navbar.is-white .navbar-start > .navbar-item, + .navbar.is-white .navbar-start .navbar-link, + .navbar.is-white .navbar-end > .navbar-item, + .navbar.is-white .navbar-end .navbar-link { + color: #0a0a0a; } + .navbar.is-white .navbar-start > a.navbar-item:focus, .navbar.is-white .navbar-start > a.navbar-item:hover, .navbar.is-white .navbar-start > a.navbar-item.is-active, + .navbar.is-white .navbar-start .navbar-link:focus, + .navbar.is-white .navbar-start .navbar-link:hover, + .navbar.is-white .navbar-start .navbar-link.is-active, + .navbar.is-white .navbar-end > a.navbar-item:focus, + .navbar.is-white .navbar-end > a.navbar-item:hover, + .navbar.is-white .navbar-end > a.navbar-item.is-active, + .navbar.is-white .navbar-end .navbar-link:focus, + .navbar.is-white .navbar-end .navbar-link:hover, + .navbar.is-white .navbar-end .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-start .navbar-link::after, + .navbar.is-white .navbar-end .navbar-link::after { + border-color: #0a0a0a; } + .navbar.is-white .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-white .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-white .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #f2f2f2; + color: #0a0a0a; } + .navbar.is-white .navbar-dropdown a.navbar-item.is-active { + background-color: white; + color: #0a0a0a; } } + .navbar.is-black { + background-color: #0a0a0a; + color: white; } + .navbar.is-black .navbar-brand > .navbar-item, + .navbar.is-black .navbar-brand .navbar-link { + color: white; } + .navbar.is-black .navbar-brand > a.navbar-item:focus, .navbar.is-black .navbar-brand > a.navbar-item:hover, .navbar.is-black .navbar-brand > a.navbar-item.is-active, + .navbar.is-black .navbar-brand .navbar-link:focus, + .navbar.is-black .navbar-brand .navbar-link:hover, + .navbar.is-black .navbar-brand .navbar-link.is-active { + background-color: black; + color: white; } + .navbar.is-black .navbar-brand .navbar-link::after { + border-color: white; } + .navbar.is-black .navbar-burger { + color: white; } + @media screen and (min-width: 1056px) { + .navbar.is-black .navbar-start > .navbar-item, + .navbar.is-black .navbar-start .navbar-link, + .navbar.is-black .navbar-end > .navbar-item, + .navbar.is-black .navbar-end .navbar-link { + color: white; } + .navbar.is-black .navbar-start > a.navbar-item:focus, .navbar.is-black .navbar-start > a.navbar-item:hover, .navbar.is-black .navbar-start > a.navbar-item.is-active, + .navbar.is-black .navbar-start .navbar-link:focus, + .navbar.is-black .navbar-start .navbar-link:hover, + .navbar.is-black .navbar-start .navbar-link.is-active, + .navbar.is-black .navbar-end > a.navbar-item:focus, + .navbar.is-black .navbar-end > a.navbar-item:hover, + .navbar.is-black .navbar-end > a.navbar-item.is-active, + .navbar.is-black .navbar-end .navbar-link:focus, + .navbar.is-black .navbar-end .navbar-link:hover, + .navbar.is-black .navbar-end .navbar-link.is-active { + background-color: black; + color: white; } + .navbar.is-black .navbar-start .navbar-link::after, + .navbar.is-black .navbar-end .navbar-link::after { + border-color: white; } + .navbar.is-black .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-black .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-black .navbar-item.has-dropdown.is-active .navbar-link { + background-color: black; + color: white; } + .navbar.is-black .navbar-dropdown a.navbar-item.is-active { + background-color: #0a0a0a; + color: white; } } + .navbar.is-light { + background-color: whitesmoke; + color: #363636; } + .navbar.is-light .navbar-brand > .navbar-item, + .navbar.is-light .navbar-brand .navbar-link { + color: #363636; } + .navbar.is-light .navbar-brand > a.navbar-item:focus, .navbar.is-light .navbar-brand > a.navbar-item:hover, .navbar.is-light .navbar-brand > a.navbar-item.is-active, + .navbar.is-light .navbar-brand .navbar-link:focus, + .navbar.is-light .navbar-brand .navbar-link:hover, + .navbar.is-light .navbar-brand .navbar-link.is-active { + background-color: #e8e8e8; + color: #363636; } + .navbar.is-light .navbar-brand .navbar-link::after { + border-color: #363636; } + .navbar.is-light .navbar-burger { + color: #363636; } + @media screen and (min-width: 1056px) { + .navbar.is-light .navbar-start > .navbar-item, + .navbar.is-light .navbar-start .navbar-link, + .navbar.is-light .navbar-end > .navbar-item, + .navbar.is-light .navbar-end .navbar-link { + color: #363636; } + .navbar.is-light .navbar-start > a.navbar-item:focus, .navbar.is-light .navbar-start > a.navbar-item:hover, .navbar.is-light .navbar-start > a.navbar-item.is-active, + .navbar.is-light .navbar-start .navbar-link:focus, + .navbar.is-light .navbar-start .navbar-link:hover, + .navbar.is-light .navbar-start .navbar-link.is-active, + .navbar.is-light .navbar-end > a.navbar-item:focus, + .navbar.is-light .navbar-end > a.navbar-item:hover, + .navbar.is-light .navbar-end > a.navbar-item.is-active, + .navbar.is-light .navbar-end .navbar-link:focus, + .navbar.is-light .navbar-end .navbar-link:hover, + .navbar.is-light .navbar-end .navbar-link.is-active { + background-color: #e8e8e8; + color: #363636; } + .navbar.is-light .navbar-start .navbar-link::after, + .navbar.is-light .navbar-end .navbar-link::after { + border-color: #363636; } + .navbar.is-light .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-light .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-light .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #e8e8e8; + color: #363636; } + .navbar.is-light .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #363636; } } + .navbar.is-dark, .content kbd.navbar { + background-color: #363636; + color: whitesmoke; } + .navbar.is-dark .navbar-brand > .navbar-item, .content kbd.navbar .navbar-brand > .navbar-item, + .navbar.is-dark .navbar-brand .navbar-link, + .content kbd.navbar .navbar-brand .navbar-link { + color: whitesmoke; } + .navbar.is-dark .navbar-brand > a.navbar-item:focus, .content kbd.navbar .navbar-brand > a.navbar-item:focus, .navbar.is-dark .navbar-brand > a.navbar-item:hover, .content kbd.navbar .navbar-brand > a.navbar-item:hover, .navbar.is-dark .navbar-brand > a.navbar-item.is-active, .content kbd.navbar .navbar-brand > a.navbar-item.is-active, + .navbar.is-dark .navbar-brand .navbar-link:focus, + .content kbd.navbar .navbar-brand .navbar-link:focus, + .navbar.is-dark .navbar-brand .navbar-link:hover, + .content kbd.navbar .navbar-brand .navbar-link:hover, + .navbar.is-dark .navbar-brand .navbar-link.is-active, + .content kbd.navbar .navbar-brand .navbar-link.is-active { + background-color: #292929; + color: whitesmoke; } + .navbar.is-dark .navbar-brand .navbar-link::after, .content kbd.navbar .navbar-brand .navbar-link::after { + border-color: whitesmoke; } + .navbar.is-dark .navbar-burger, .content kbd.navbar .navbar-burger { + color: whitesmoke; } + @media screen and (min-width: 1056px) { + .navbar.is-dark .navbar-start > .navbar-item, .content kbd.navbar .navbar-start > .navbar-item, + .navbar.is-dark .navbar-start .navbar-link, + .content kbd.navbar .navbar-start .navbar-link, + .navbar.is-dark .navbar-end > .navbar-item, + .content kbd.navbar .navbar-end > .navbar-item, + .navbar.is-dark .navbar-end .navbar-link, + .content kbd.navbar .navbar-end .navbar-link { + color: whitesmoke; } + .navbar.is-dark .navbar-start > a.navbar-item:focus, .content kbd.navbar .navbar-start > a.navbar-item:focus, .navbar.is-dark .navbar-start > a.navbar-item:hover, .content kbd.navbar .navbar-start > a.navbar-item:hover, .navbar.is-dark .navbar-start > a.navbar-item.is-active, .content kbd.navbar .navbar-start > a.navbar-item.is-active, + .navbar.is-dark .navbar-start .navbar-link:focus, + .content kbd.navbar .navbar-start .navbar-link:focus, + .navbar.is-dark .navbar-start .navbar-link:hover, + .content kbd.navbar .navbar-start .navbar-link:hover, + .navbar.is-dark .navbar-start .navbar-link.is-active, + .content kbd.navbar .navbar-start .navbar-link.is-active, + .navbar.is-dark .navbar-end > a.navbar-item:focus, + .content kbd.navbar .navbar-end > a.navbar-item:focus, + .navbar.is-dark .navbar-end > a.navbar-item:hover, + .content kbd.navbar .navbar-end > a.navbar-item:hover, + .navbar.is-dark .navbar-end > a.navbar-item.is-active, + .content kbd.navbar .navbar-end > a.navbar-item.is-active, + .navbar.is-dark .navbar-end .navbar-link:focus, + .content kbd.navbar .navbar-end .navbar-link:focus, + .navbar.is-dark .navbar-end .navbar-link:hover, + .content kbd.navbar .navbar-end .navbar-link:hover, + .navbar.is-dark .navbar-end .navbar-link.is-active, + .content kbd.navbar .navbar-end .navbar-link.is-active { + background-color: #292929; + color: whitesmoke; } + .navbar.is-dark .navbar-start .navbar-link::after, .content kbd.navbar .navbar-start .navbar-link::after, + .navbar.is-dark .navbar-end .navbar-link::after, + .content kbd.navbar .navbar-end .navbar-link::after { + border-color: whitesmoke; } + .navbar.is-dark .navbar-item.has-dropdown:focus .navbar-link, .content kbd.navbar .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-dark .navbar-item.has-dropdown:hover .navbar-link, + .content kbd.navbar .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-dark .navbar-item.has-dropdown.is-active .navbar-link, + .content kbd.navbar .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #292929; + color: whitesmoke; } + .navbar.is-dark .navbar-dropdown a.navbar-item.is-active, .content kbd.navbar .navbar-dropdown a.navbar-item.is-active { + background-color: #363636; + color: whitesmoke; } } + .navbar.is-primary, .docstring > section > a.navbar.docs-sourcelink { + background-color: #4eb5de; + color: #fff; } + .navbar.is-primary .navbar-brand > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > .navbar-item, + .navbar.is-primary .navbar-brand .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-primary .navbar-brand > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:focus, .navbar.is-primary .navbar-brand > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item:hover, .navbar.is-primary .navbar-brand > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-brand > a.navbar-item.is-active, + .navbar.is-primary .navbar-brand .navbar-link:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:focus, + .navbar.is-primary .navbar-brand .navbar-link:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link:hover, + .navbar.is-primary .navbar-brand .navbar-link.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link.is-active { + background-color: #39acda; + color: #fff; } + .navbar.is-primary .navbar-brand .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-primary .navbar-burger, .docstring > section > a.navbar.docs-sourcelink .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-primary .navbar-start > .navbar-item, .docstring > section > a.navbar.docs-sourcelink .navbar-start > .navbar-item, + .navbar.is-primary .navbar-start .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link, + .navbar.is-primary .navbar-end > .navbar-item, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > .navbar-item, + .navbar.is-primary .navbar-end .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link { + color: #fff; } + .navbar.is-primary .navbar-start > a.navbar-item:focus, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:focus, .navbar.is-primary .navbar-start > a.navbar-item:hover, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item:hover, .navbar.is-primary .navbar-start > a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-start > a.navbar-item.is-active, + .navbar.is-primary .navbar-start .navbar-link:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:focus, + .navbar.is-primary .navbar-start .navbar-link:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link:hover, + .navbar.is-primary .navbar-start .navbar-link.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link.is-active, + .navbar.is-primary .navbar-end > a.navbar-item:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:focus, + .navbar.is-primary .navbar-end > a.navbar-item:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item:hover, + .navbar.is-primary .navbar-end > a.navbar-item.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-end > a.navbar-item.is-active, + .navbar.is-primary .navbar-end .navbar-link:focus, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:focus, + .navbar.is-primary .navbar-end .navbar-link:hover, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link:hover, + .navbar.is-primary .navbar-end .navbar-link.is-active, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link.is-active { + background-color: #39acda; + color: #fff; } + .navbar.is-primary .navbar-start .navbar-link::after, .docstring > section > a.navbar.docs-sourcelink .navbar-start .navbar-link::after, + .navbar.is-primary .navbar-end .navbar-link::after, + .docstring > section > a.navbar.docs-sourcelink .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-primary .navbar-item.has-dropdown:focus .navbar-link, .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-primary .navbar-item.has-dropdown:hover .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-primary .navbar-item.has-dropdown.is-active .navbar-link, + .docstring > section > a.navbar.docs-sourcelink .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #39acda; + color: #fff; } + .navbar.is-primary .navbar-dropdown a.navbar-item.is-active, .docstring > section > a.navbar.docs-sourcelink .navbar-dropdown a.navbar-item.is-active { + background-color: #4eb5de; + color: #fff; } } + .navbar.is-link { + background-color: #2e63b8; + color: #fff; } + .navbar.is-link .navbar-brand > .navbar-item, + .navbar.is-link .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-link .navbar-brand > a.navbar-item:focus, .navbar.is-link .navbar-brand > a.navbar-item:hover, .navbar.is-link .navbar-brand > a.navbar-item.is-active, + .navbar.is-link .navbar-brand .navbar-link:focus, + .navbar.is-link .navbar-brand .navbar-link:hover, + .navbar.is-link .navbar-brand .navbar-link.is-active { + background-color: #2958a4; + color: #fff; } + .navbar.is-link .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-link .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-link .navbar-start > .navbar-item, + .navbar.is-link .navbar-start .navbar-link, + .navbar.is-link .navbar-end > .navbar-item, + .navbar.is-link .navbar-end .navbar-link { + color: #fff; } + .navbar.is-link .navbar-start > a.navbar-item:focus, .navbar.is-link .navbar-start > a.navbar-item:hover, .navbar.is-link .navbar-start > a.navbar-item.is-active, + .navbar.is-link .navbar-start .navbar-link:focus, + .navbar.is-link .navbar-start .navbar-link:hover, + .navbar.is-link .navbar-start .navbar-link.is-active, + .navbar.is-link .navbar-end > a.navbar-item:focus, + .navbar.is-link .navbar-end > a.navbar-item:hover, + .navbar.is-link .navbar-end > a.navbar-item.is-active, + .navbar.is-link .navbar-end .navbar-link:focus, + .navbar.is-link .navbar-end .navbar-link:hover, + .navbar.is-link .navbar-end .navbar-link.is-active { + background-color: #2958a4; + color: #fff; } + .navbar.is-link .navbar-start .navbar-link::after, + .navbar.is-link .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-link .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-link .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-link .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #2958a4; + color: #fff; } + .navbar.is-link .navbar-dropdown a.navbar-item.is-active { + background-color: #2e63b8; + color: #fff; } } + .navbar.is-info { + background-color: #209cee; + color: #fff; } + .navbar.is-info .navbar-brand > .navbar-item, + .navbar.is-info .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-info .navbar-brand > a.navbar-item:focus, .navbar.is-info .navbar-brand > a.navbar-item:hover, .navbar.is-info .navbar-brand > a.navbar-item.is-active, + .navbar.is-info .navbar-brand .navbar-link:focus, + .navbar.is-info .navbar-brand .navbar-link:hover, + .navbar.is-info .navbar-brand .navbar-link.is-active { + background-color: #118fe4; + color: #fff; } + .navbar.is-info .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-info .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-info .navbar-start > .navbar-item, + .navbar.is-info .navbar-start .navbar-link, + .navbar.is-info .navbar-end > .navbar-item, + .navbar.is-info .navbar-end .navbar-link { + color: #fff; } + .navbar.is-info .navbar-start > a.navbar-item:focus, .navbar.is-info .navbar-start > a.navbar-item:hover, .navbar.is-info .navbar-start > a.navbar-item.is-active, + .navbar.is-info .navbar-start .navbar-link:focus, + .navbar.is-info .navbar-start .navbar-link:hover, + .navbar.is-info .navbar-start .navbar-link.is-active, + .navbar.is-info .navbar-end > a.navbar-item:focus, + .navbar.is-info .navbar-end > a.navbar-item:hover, + .navbar.is-info .navbar-end > a.navbar-item.is-active, + .navbar.is-info .navbar-end .navbar-link:focus, + .navbar.is-info .navbar-end .navbar-link:hover, + .navbar.is-info .navbar-end .navbar-link.is-active { + background-color: #118fe4; + color: #fff; } + .navbar.is-info .navbar-start .navbar-link::after, + .navbar.is-info .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-info .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-info .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-info .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #118fe4; + color: #fff; } + .navbar.is-info .navbar-dropdown a.navbar-item.is-active { + background-color: #209cee; + color: #fff; } } + .navbar.is-success { + background-color: #22c35b; + color: #fff; } + .navbar.is-success .navbar-brand > .navbar-item, + .navbar.is-success .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-success .navbar-brand > a.navbar-item:focus, .navbar.is-success .navbar-brand > a.navbar-item:hover, .navbar.is-success .navbar-brand > a.navbar-item.is-active, + .navbar.is-success .navbar-brand .navbar-link:focus, + .navbar.is-success .navbar-brand .navbar-link:hover, + .navbar.is-success .navbar-brand .navbar-link.is-active { + background-color: #1ead51; + color: #fff; } + .navbar.is-success .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-success .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-success .navbar-start > .navbar-item, + .navbar.is-success .navbar-start .navbar-link, + .navbar.is-success .navbar-end > .navbar-item, + .navbar.is-success .navbar-end .navbar-link { + color: #fff; } + .navbar.is-success .navbar-start > a.navbar-item:focus, .navbar.is-success .navbar-start > a.navbar-item:hover, .navbar.is-success .navbar-start > a.navbar-item.is-active, + .navbar.is-success .navbar-start .navbar-link:focus, + .navbar.is-success .navbar-start .navbar-link:hover, + .navbar.is-success .navbar-start .navbar-link.is-active, + .navbar.is-success .navbar-end > a.navbar-item:focus, + .navbar.is-success .navbar-end > a.navbar-item:hover, + .navbar.is-success .navbar-end > a.navbar-item.is-active, + .navbar.is-success .navbar-end .navbar-link:focus, + .navbar.is-success .navbar-end .navbar-link:hover, + .navbar.is-success .navbar-end .navbar-link.is-active { + background-color: #1ead51; + color: #fff; } + .navbar.is-success .navbar-start .navbar-link::after, + .navbar.is-success .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-success .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-success .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-success .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #1ead51; + color: #fff; } + .navbar.is-success .navbar-dropdown a.navbar-item.is-active { + background-color: #22c35b; + color: #fff; } } + .navbar.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand > .navbar-item, + .navbar.is-warning .navbar-brand .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand > a.navbar-item:focus, .navbar.is-warning .navbar-brand > a.navbar-item:hover, .navbar.is-warning .navbar-brand > a.navbar-item.is-active, + .navbar.is-warning .navbar-brand .navbar-link:focus, + .navbar.is-warning .navbar-brand .navbar-link:hover, + .navbar.is-warning .navbar-brand .navbar-link.is-active { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-brand .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-burger { + color: rgba(0, 0, 0, 0.7); } + @media screen and (min-width: 1056px) { + .navbar.is-warning .navbar-start > .navbar-item, + .navbar.is-warning .navbar-start .navbar-link, + .navbar.is-warning .navbar-end > .navbar-item, + .navbar.is-warning .navbar-end .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-start > a.navbar-item:focus, .navbar.is-warning .navbar-start > a.navbar-item:hover, .navbar.is-warning .navbar-start > a.navbar-item.is-active, + .navbar.is-warning .navbar-start .navbar-link:focus, + .navbar.is-warning .navbar-start .navbar-link:hover, + .navbar.is-warning .navbar-start .navbar-link.is-active, + .navbar.is-warning .navbar-end > a.navbar-item:focus, + .navbar.is-warning .navbar-end > a.navbar-item:hover, + .navbar.is-warning .navbar-end > a.navbar-item.is-active, + .navbar.is-warning .navbar-end .navbar-link:focus, + .navbar.is-warning .navbar-end .navbar-link:hover, + .navbar.is-warning .navbar-end .navbar-link.is-active { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-start .navbar-link::after, + .navbar.is-warning .navbar-end .navbar-link::after { + border-color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-warning .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-warning .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); } + .navbar.is-warning .navbar-dropdown a.navbar-item.is-active { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } } + .navbar.is-danger { + background-color: #da0b00; + color: #fff; } + .navbar.is-danger .navbar-brand > .navbar-item, + .navbar.is-danger .navbar-brand .navbar-link { + color: #fff; } + .navbar.is-danger .navbar-brand > a.navbar-item:focus, .navbar.is-danger .navbar-brand > a.navbar-item:hover, .navbar.is-danger .navbar-brand > a.navbar-item.is-active, + .navbar.is-danger .navbar-brand .navbar-link:focus, + .navbar.is-danger .navbar-brand .navbar-link:hover, + .navbar.is-danger .navbar-brand .navbar-link.is-active { + background-color: #c10a00; + color: #fff; } + .navbar.is-danger .navbar-brand .navbar-link::after { + border-color: #fff; } + .navbar.is-danger .navbar-burger { + color: #fff; } + @media screen and (min-width: 1056px) { + .navbar.is-danger .navbar-start > .navbar-item, + .navbar.is-danger .navbar-start .navbar-link, + .navbar.is-danger .navbar-end > .navbar-item, + .navbar.is-danger .navbar-end .navbar-link { + color: #fff; } + .navbar.is-danger .navbar-start > a.navbar-item:focus, .navbar.is-danger .navbar-start > a.navbar-item:hover, .navbar.is-danger .navbar-start > a.navbar-item.is-active, + .navbar.is-danger .navbar-start .navbar-link:focus, + .navbar.is-danger .navbar-start .navbar-link:hover, + .navbar.is-danger .navbar-start .navbar-link.is-active, + .navbar.is-danger .navbar-end > a.navbar-item:focus, + .navbar.is-danger .navbar-end > a.navbar-item:hover, + .navbar.is-danger .navbar-end > a.navbar-item.is-active, + .navbar.is-danger .navbar-end .navbar-link:focus, + .navbar.is-danger .navbar-end .navbar-link:hover, + .navbar.is-danger .navbar-end .navbar-link.is-active { + background-color: #c10a00; + color: #fff; } + .navbar.is-danger .navbar-start .navbar-link::after, + .navbar.is-danger .navbar-end .navbar-link::after { + border-color: #fff; } + .navbar.is-danger .navbar-item.has-dropdown:focus .navbar-link, + .navbar.is-danger .navbar-item.has-dropdown:hover .navbar-link, + .navbar.is-danger .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #c10a00; + color: #fff; } + .navbar.is-danger .navbar-dropdown a.navbar-item.is-active { + background-color: #da0b00; + color: #fff; } } + .navbar > .container { + align-items: stretch; + display: flex; + min-height: 3.25rem; + width: 100%; } + .navbar.has-shadow { + box-shadow: 0 2px 0 0 whitesmoke; } + .navbar.is-fixed-bottom, .navbar.is-fixed-top { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom { + bottom: 0; } + .navbar.is-fixed-bottom.has-shadow { + box-shadow: 0 -2px 0 0 whitesmoke; } + .navbar.is-fixed-top { + top: 0; } + +html.has-navbar-fixed-top, +body.has-navbar-fixed-top { + padding-top: 3.25rem; } + +html.has-navbar-fixed-bottom, +body.has-navbar-fixed-bottom { + padding-bottom: 3.25rem; } + +.navbar-brand, +.navbar-tabs { + align-items: stretch; + display: flex; + flex-shrink: 0; + min-height: 3.25rem; } + +.navbar-brand a.navbar-item:focus, .navbar-brand a.navbar-item:hover { + background-color: transparent; } + +.navbar-tabs { + -webkit-overflow-scrolling: touch; + max-width: 100vw; + overflow-x: auto; + overflow-y: hidden; } + +.navbar-burger { + color: #4a4a4a; + cursor: pointer; + display: block; + height: 3.25rem; + position: relative; + width: 3.25rem; + margin-left: auto; } + .navbar-burger span { + background-color: currentColor; + display: block; + height: 1px; + left: calc(50% - 8px); + position: absolute; + transform-origin: center; + transition-duration: 86ms; + transition-property: background-color, opacity, transform; + transition-timing-function: ease-out; + width: 16px; } + .navbar-burger span:nth-child(1) { + top: calc(50% - 6px); } + .navbar-burger span:nth-child(2) { + top: calc(50% - 1px); } + .navbar-burger span:nth-child(3) { + top: calc(50% + 4px); } + .navbar-burger:hover { + background-color: rgba(0, 0, 0, 0.05); } + .navbar-burger.is-active span:nth-child(1) { + transform: translateY(5px) rotate(45deg); } + .navbar-burger.is-active span:nth-child(2) { + opacity: 0; } + .navbar-burger.is-active span:nth-child(3) { + transform: translateY(-5px) rotate(-45deg); } + +.navbar-menu { + display: none; } + +.navbar-item, +.navbar-link { + color: #4a4a4a; + display: block; + line-height: 1.5; + padding: 0.5rem 0.75rem; + position: relative; } + .navbar-item .icon:only-child, + .navbar-link .icon:only-child { + margin-left: -0.25rem; + margin-right: -0.25rem; } + +a.navbar-item, +.navbar-link { + cursor: pointer; } + a.navbar-item:focus, a.navbar-item:focus-within, a.navbar-item:hover, a.navbar-item.is-active, + .navbar-link:focus, + .navbar-link:focus-within, + .navbar-link:hover, + .navbar-link.is-active { + background-color: #fafafa; + color: #2e63b8; } + +.navbar-item { + display: block; + flex-grow: 0; + flex-shrink: 0; } + .navbar-item img { + max-height: 1.75rem; } + .navbar-item.has-dropdown { + padding: 0; } + .navbar-item.is-expanded { + flex-grow: 1; + flex-shrink: 1; } + .navbar-item.is-tab { + border-bottom: 1px solid transparent; + min-height: 3.25rem; + padding-bottom: calc(0.5rem - 1px); } + .navbar-item.is-tab:focus, .navbar-item.is-tab:hover { + background-color: transparent; + border-bottom-color: #2e63b8; } + .navbar-item.is-tab.is-active { + background-color: transparent; + border-bottom-color: #2e63b8; + border-bottom-style: solid; + border-bottom-width: 3px; + color: #2e63b8; + padding-bottom: calc(0.5rem - 3px); } + +.navbar-content { + flex-grow: 1; + flex-shrink: 1; } + +.navbar-link:not(.is-arrowless) { + padding-right: 2.5em; } + .navbar-link:not(.is-arrowless)::after { + border-color: #2e63b8; + margin-top: -0.375em; + right: 1.125em; } + +.navbar-dropdown { + font-size: 0.875rem; + padding-bottom: 0.5rem; + padding-top: 0.5rem; } + .navbar-dropdown .navbar-item { + padding-left: 1.5rem; + padding-right: 1.5rem; } + +.navbar-divider { + background-color: whitesmoke; + border: none; + display: none; + height: 2px; + margin: 0.5rem 0; } + +@media screen and (max-width: 1055px) { + .navbar > .container { + display: block; } + .navbar-brand .navbar-item, + .navbar-tabs .navbar-item { + align-items: center; + display: flex; } + .navbar-link::after { + display: none; } + .navbar-menu { + background-color: white; + box-shadow: 0 8px 16px rgba(10, 10, 10, 0.1); + padding: 0.5rem 0; } + .navbar-menu.is-active { + display: block; } + .navbar.is-fixed-bottom-touch, .navbar.is-fixed-top-touch { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom-touch { + bottom: 0; } + .navbar.is-fixed-bottom-touch.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + .navbar.is-fixed-top-touch { + top: 0; } + .navbar.is-fixed-top .navbar-menu, .navbar.is-fixed-top-touch .navbar-menu { + -webkit-overflow-scrolling: touch; + max-height: calc(100vh - 3.25rem); + overflow: auto; } + html.has-navbar-fixed-top-touch, + body.has-navbar-fixed-top-touch { + padding-top: 3.25rem; } + html.has-navbar-fixed-bottom-touch, + body.has-navbar-fixed-bottom-touch { + padding-bottom: 3.25rem; } } + +@media screen and (min-width: 1056px) { + .navbar, + .navbar-menu, + .navbar-start, + .navbar-end { + align-items: stretch; + display: flex; } + .navbar { + min-height: 3.25rem; } + .navbar.is-spaced { + padding: 1rem 2rem; } + .navbar.is-spaced .navbar-start, + .navbar.is-spaced .navbar-end { + align-items: center; } + .navbar.is-spaced a.navbar-item, + .navbar.is-spaced .navbar-link { + border-radius: 4px; } + .navbar.is-transparent a.navbar-item:focus, .navbar.is-transparent a.navbar-item:hover, .navbar.is-transparent a.navbar-item.is-active, + .navbar.is-transparent .navbar-link:focus, + .navbar.is-transparent .navbar-link:hover, + .navbar.is-transparent .navbar-link.is-active { + background-color: transparent !important; } + .navbar.is-transparent .navbar-item.has-dropdown.is-active .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:focus-within .navbar-link, .navbar.is-transparent .navbar-item.has-dropdown.is-hoverable:hover .navbar-link { + background-color: transparent !important; } + .navbar.is-transparent .navbar-dropdown a.navbar-item:focus, .navbar.is-transparent .navbar-dropdown a.navbar-item:hover { + background-color: whitesmoke; + color: #0a0a0a; } + .navbar.is-transparent .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #2e63b8; } + .navbar-burger { + display: none; } + .navbar-item, + .navbar-link { + align-items: center; + display: flex; } + .navbar-item { + display: flex; } + .navbar-item.has-dropdown { + align-items: stretch; } + .navbar-item.has-dropdown-up .navbar-link::after { + transform: rotate(135deg) translate(0.25em, -0.25em); } + .navbar-item.has-dropdown-up .navbar-dropdown { + border-bottom: 2px solid #dbdbdb; + border-radius: 6px 6px 0 0; + border-top: none; + bottom: 100%; + box-shadow: 0 -8px 8px rgba(10, 10, 10, 0.1); + top: auto; } + .navbar-item.is-active .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown { + display: block; } + .navbar.is-spaced .navbar-item.is-active .navbar-dropdown, .navbar-item.is-active .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus .navbar-dropdown, .navbar-item.is-hoverable:focus .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:focus-within .navbar-dropdown, .navbar-item.is-hoverable:focus-within .navbar-dropdown.is-boxed, .navbar.is-spaced .navbar-item.is-hoverable:hover .navbar-dropdown, .navbar-item.is-hoverable:hover .navbar-dropdown.is-boxed { + opacity: 1; + pointer-events: auto; + transform: translateY(0); } + .navbar-menu { + flex-grow: 1; + flex-shrink: 0; } + .navbar-start { + justify-content: flex-start; + margin-right: auto; } + .navbar-end { + justify-content: flex-end; + margin-left: auto; } + .navbar-dropdown { + background-color: white; + border-bottom-left-radius: 6px; + border-bottom-right-radius: 6px; + border-top: 2px solid #dbdbdb; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1); + display: none; + font-size: 0.875rem; + left: 0; + min-width: 100%; + position: absolute; + top: 100%; + z-index: 20; } + .navbar-dropdown .navbar-item { + padding: 0.375rem 1rem; + white-space: nowrap; } + .navbar-dropdown a.navbar-item { + padding-right: 3rem; } + .navbar-dropdown a.navbar-item:focus, .navbar-dropdown a.navbar-item:hover { + background-color: whitesmoke; + color: #0a0a0a; } + .navbar-dropdown a.navbar-item.is-active { + background-color: whitesmoke; + color: #2e63b8; } + .navbar.is-spaced .navbar-dropdown, .navbar-dropdown.is-boxed { + border-radius: 6px; + border-top: none; + box-shadow: 0 8px 8px rgba(10, 10, 10, 0.1), 0 0 0 1px rgba(10, 10, 10, 0.1); + display: block; + opacity: 0; + pointer-events: none; + top: calc(100% + (-4px)); + transform: translateY(-5px); + transition-duration: 86ms; + transition-property: opacity, transform; } + .navbar-dropdown.is-right { + left: auto; + right: 0; } + .navbar-divider { + display: block; } + .navbar > .container .navbar-brand, + .container > .navbar .navbar-brand { + margin-left: -.75rem; } + .navbar > .container .navbar-menu, + .container > .navbar .navbar-menu { + margin-right: -.75rem; } + .navbar.is-fixed-bottom-desktop, .navbar.is-fixed-top-desktop { + left: 0; + position: fixed; + right: 0; + z-index: 30; } + .navbar.is-fixed-bottom-desktop { + bottom: 0; } + .navbar.is-fixed-bottom-desktop.has-shadow { + box-shadow: 0 -2px 3px rgba(10, 10, 10, 0.1); } + .navbar.is-fixed-top-desktop { + top: 0; } + html.has-navbar-fixed-top-desktop, + body.has-navbar-fixed-top-desktop { + padding-top: 3.25rem; } + html.has-navbar-fixed-bottom-desktop, + body.has-navbar-fixed-bottom-desktop { + padding-bottom: 3.25rem; } + html.has-spaced-navbar-fixed-top, + body.has-spaced-navbar-fixed-top { + padding-top: 5.25rem; } + html.has-spaced-navbar-fixed-bottom, + body.has-spaced-navbar-fixed-bottom { + padding-bottom: 5.25rem; } + a.navbar-item.is-active, + .navbar-link.is-active { + color: #0a0a0a; } + a.navbar-item.is-active:not(:focus):not(:hover), + .navbar-link.is-active:not(:focus):not(:hover) { + background-color: transparent; } + .navbar-item.has-dropdown:focus .navbar-link, .navbar-item.has-dropdown:hover .navbar-link, .navbar-item.has-dropdown.is-active .navbar-link { + background-color: #fafafa; } } + +.hero.is-fullheight-with-navbar { + min-height: calc(100vh - 3.25rem); } + +.pagination { + font-size: 1rem; + margin: -0.25rem; } + .pagination.is-small, #documenter .docs-sidebar form.docs-search > input.pagination { + font-size: 0.75rem; } + .pagination.is-medium { + font-size: 1.25rem; } + .pagination.is-large { + font-size: 1.5rem; } + .pagination.is-rounded .pagination-previous, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-previous, + .pagination.is-rounded .pagination-next, + #documenter .docs-sidebar form.docs-search > input.pagination .pagination-next { + padding-left: 1em; + padding-right: 1em; + border-radius: 290486px; } + .pagination.is-rounded .pagination-link, #documenter .docs-sidebar form.docs-search > input.pagination .pagination-link { + border-radius: 290486px; } + +.pagination, +.pagination-list { + align-items: center; + display: flex; + justify-content: center; + text-align: center; } + +.pagination-previous, +.pagination-next, +.pagination-link, +.pagination-ellipsis { + font-size: 1em; + justify-content: center; + margin: 0.25rem; + padding-left: 0.5em; + padding-right: 0.5em; + text-align: center; } + +.pagination-previous, +.pagination-next, +.pagination-link { + border-color: #dbdbdb; + color: #363636; + min-width: 2.25em; } + .pagination-previous:hover, + .pagination-next:hover, + .pagination-link:hover { + border-color: #b5b5b5; + color: #363636; } + .pagination-previous:focus, + .pagination-next:focus, + .pagination-link:focus { + border-color: #2e63b8; } + .pagination-previous:active, + .pagination-next:active, + .pagination-link:active { + box-shadow: inset 0 1px 2px rgba(10, 10, 10, 0.2); } + .pagination-previous[disabled], + .pagination-next[disabled], + .pagination-link[disabled] { + background-color: #dbdbdb; + border-color: #dbdbdb; + box-shadow: none; + color: #7a7a7a; + opacity: 0.5; } + +.pagination-previous, +.pagination-next { + padding-left: 0.75em; + padding-right: 0.75em; + white-space: nowrap; } + +.pagination-link.is-current { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; } + +.pagination-ellipsis { + color: #b5b5b5; + pointer-events: none; } + +.pagination-list { + flex-wrap: wrap; } + +@media screen and (max-width: 768px) { + .pagination { + flex-wrap: wrap; } + .pagination-previous, + .pagination-next { + flex-grow: 1; + flex-shrink: 1; } + .pagination-list li { + flex-grow: 1; + flex-shrink: 1; } } + +@media screen and (min-width: 769px), print { + .pagination-list { + flex-grow: 1; + flex-shrink: 1; + justify-content: flex-start; + order: 1; } + .pagination-previous { + order: 2; } + .pagination-next { + order: 3; } + .pagination { + justify-content: space-between; } + .pagination.is-centered .pagination-previous { + order: 1; } + .pagination.is-centered .pagination-list { + justify-content: center; + order: 2; } + .pagination.is-centered .pagination-next { + order: 3; } + .pagination.is-right .pagination-previous { + order: 1; } + .pagination.is-right .pagination-next { + order: 2; } + .pagination.is-right .pagination-list { + justify-content: flex-end; + order: 3; } } + +.panel { + font-size: 1rem; } + .panel:not(:last-child) { + margin-bottom: 1.5rem; } + +.panel-heading, +.panel-tabs, +.panel-block { + border-bottom: 1px solid #dbdbdb; + border-left: 1px solid #dbdbdb; + border-right: 1px solid #dbdbdb; } + .panel-heading:first-child, + .panel-tabs:first-child, + .panel-block:first-child { + border-top: 1px solid #dbdbdb; } + +.panel-heading { + background-color: whitesmoke; + border-radius: 4px 4px 0 0; + color: #222222; + font-size: 1.25em; + font-weight: 300; + line-height: 1.25; + padding: 0.5em 0.75em; } + +.panel-tabs { + align-items: flex-end; + display: flex; + font-size: 0.875em; + justify-content: center; } + .panel-tabs a { + border-bottom: 1px solid #dbdbdb; + margin-bottom: -1px; + padding: 0.5em; } + .panel-tabs a.is-active { + border-bottom-color: #4a4a4a; + color: #363636; } + +.panel-list a { + color: #222222; } + .panel-list a:hover { + color: #2e63b8; } + +.panel-block { + align-items: center; + color: #222222; + display: flex; + justify-content: flex-start; + padding: 0.5em 0.75em; } + .panel-block input[type="checkbox"] { + margin-right: 0.75em; } + .panel-block > .control { + flex-grow: 1; + flex-shrink: 1; + width: 100%; } + .panel-block.is-wrapped { + flex-wrap: wrap; } + .panel-block.is-active { + border-left-color: #2e63b8; + color: #363636; } + .panel-block.is-active .panel-icon { + color: #2e63b8; } + +a.panel-block, +label.panel-block { + cursor: pointer; } + a.panel-block:hover, + label.panel-block:hover { + background-color: whitesmoke; } + +.panel-icon { + display: inline-block; + font-size: 14px; + height: 1em; + line-height: 1em; + text-align: center; + vertical-align: top; + width: 1em; + color: #7a7a7a; + margin-right: 0.75em; } + .panel-icon .fa { + font-size: inherit; + line-height: inherit; } + +.tabs { + -webkit-overflow-scrolling: touch; + align-items: stretch; + display: flex; + font-size: 1rem; + justify-content: space-between; + overflow: hidden; + overflow-x: auto; + white-space: nowrap; } + .tabs a { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + color: #222222; + display: flex; + justify-content: center; + margin-bottom: -1px; + padding: 0.5em 1em; + vertical-align: top; } + .tabs a:hover { + border-bottom-color: #222222; + color: #222222; } + .tabs li { + display: block; } + .tabs li.is-active a { + border-bottom-color: #2e63b8; + color: #2e63b8; } + .tabs ul { + align-items: center; + border-bottom-color: #dbdbdb; + border-bottom-style: solid; + border-bottom-width: 1px; + display: flex; + flex-grow: 1; + flex-shrink: 0; + justify-content: flex-start; } + .tabs ul.is-left { + padding-right: 0.75em; } + .tabs ul.is-center { + flex: none; + justify-content: center; + padding-left: 0.75em; + padding-right: 0.75em; } + .tabs ul.is-right { + justify-content: flex-end; + padding-left: 0.75em; } + .tabs .icon:first-child { + margin-right: 0.5em; } + .tabs .icon:last-child { + margin-left: 0.5em; } + .tabs.is-centered ul { + justify-content: center; } + .tabs.is-right ul { + justify-content: flex-end; } + .tabs.is-boxed a { + border: 1px solid transparent; + border-radius: 4px 4px 0 0; } + .tabs.is-boxed a:hover { + background-color: whitesmoke; + border-bottom-color: #dbdbdb; } + .tabs.is-boxed li.is-active a { + background-color: white; + border-color: #dbdbdb; + border-bottom-color: transparent !important; } + .tabs.is-fullwidth li { + flex-grow: 1; + flex-shrink: 0; } + .tabs.is-toggle a { + border-color: #dbdbdb; + border-style: solid; + border-width: 1px; + margin-bottom: 0; + position: relative; } + .tabs.is-toggle a:hover { + background-color: whitesmoke; + border-color: #b5b5b5; + z-index: 2; } + .tabs.is-toggle li + li { + margin-left: -1px; } + .tabs.is-toggle li:first-child a { + border-radius: 4px 0 0 4px; } + .tabs.is-toggle li:last-child a { + border-radius: 0 4px 4px 0; } + .tabs.is-toggle li.is-active a { + background-color: #2e63b8; + border-color: #2e63b8; + color: #fff; + z-index: 1; } + .tabs.is-toggle ul { + border-bottom: none; } + .tabs.is-toggle.is-toggle-rounded li:first-child a { + border-bottom-left-radius: 290486px; + border-top-left-radius: 290486px; + padding-left: 1.25em; } + .tabs.is-toggle.is-toggle-rounded li:last-child a { + border-bottom-right-radius: 290486px; + border-top-right-radius: 290486px; + padding-right: 1.25em; } + .tabs.is-small, #documenter .docs-sidebar form.docs-search > input.tabs { + font-size: 0.75rem; } + .tabs.is-medium { + font-size: 1.25rem; } + .tabs.is-large { + font-size: 1.5rem; } + +.column { + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + padding: 0.75rem; } + .columns.is-mobile > .column.is-narrow { + flex: none; } + .columns.is-mobile > .column.is-full { + flex: none; + width: 100%; } + .columns.is-mobile > .column.is-three-quarters { + flex: none; + width: 75%; } + .columns.is-mobile > .column.is-two-thirds { + flex: none; + width: 66.6666%; } + .columns.is-mobile > .column.is-half { + flex: none; + width: 50%; } + .columns.is-mobile > .column.is-one-third { + flex: none; + width: 33.3333%; } + .columns.is-mobile > .column.is-one-quarter { + flex: none; + width: 25%; } + .columns.is-mobile > .column.is-one-fifth { + flex: none; + width: 20%; } + .columns.is-mobile > .column.is-two-fifths { + flex: none; + width: 40%; } + .columns.is-mobile > .column.is-three-fifths { + flex: none; + width: 60%; } + .columns.is-mobile > .column.is-four-fifths { + flex: none; + width: 80%; } + .columns.is-mobile > .column.is-offset-three-quarters { + margin-left: 75%; } + .columns.is-mobile > .column.is-offset-two-thirds { + margin-left: 66.6666%; } + .columns.is-mobile > .column.is-offset-half { + margin-left: 50%; } + .columns.is-mobile > .column.is-offset-one-third { + margin-left: 33.3333%; } + .columns.is-mobile > .column.is-offset-one-quarter { + margin-left: 25%; } + .columns.is-mobile > .column.is-offset-one-fifth { + margin-left: 20%; } + .columns.is-mobile > .column.is-offset-two-fifths { + margin-left: 40%; } + .columns.is-mobile > .column.is-offset-three-fifths { + margin-left: 60%; } + .columns.is-mobile > .column.is-offset-four-fifths { + margin-left: 80%; } + .columns.is-mobile > .column.is-0 { + flex: none; + width: 0%; } + .columns.is-mobile > .column.is-offset-0 { + margin-left: 0%; } + .columns.is-mobile > .column.is-1 { + flex: none; + width: 8.33333%; } + .columns.is-mobile > .column.is-offset-1 { + margin-left: 8.33333%; } + .columns.is-mobile > .column.is-2 { + flex: none; + width: 16.66667%; } + .columns.is-mobile > .column.is-offset-2 { + margin-left: 16.66667%; } + .columns.is-mobile > .column.is-3 { + flex: none; + width: 25%; } + .columns.is-mobile > .column.is-offset-3 { + margin-left: 25%; } + .columns.is-mobile > .column.is-4 { + flex: none; + width: 33.33333%; } + .columns.is-mobile > .column.is-offset-4 { + margin-left: 33.33333%; } + .columns.is-mobile > .column.is-5 { + flex: none; + width: 41.66667%; } + .columns.is-mobile > .column.is-offset-5 { + margin-left: 41.66667%; } + .columns.is-mobile > .column.is-6 { + flex: none; + width: 50%; } + .columns.is-mobile > .column.is-offset-6 { + margin-left: 50%; } + .columns.is-mobile > .column.is-7 { + flex: none; + width: 58.33333%; } + .columns.is-mobile > .column.is-offset-7 { + margin-left: 58.33333%; } + .columns.is-mobile > .column.is-8 { + flex: none; + width: 66.66667%; } + .columns.is-mobile > .column.is-offset-8 { + margin-left: 66.66667%; } + .columns.is-mobile > .column.is-9 { + flex: none; + width: 75%; } + .columns.is-mobile > .column.is-offset-9 { + margin-left: 75%; } + .columns.is-mobile > .column.is-10 { + flex: none; + width: 83.33333%; } + .columns.is-mobile > .column.is-offset-10 { + margin-left: 83.33333%; } + .columns.is-mobile > .column.is-11 { + flex: none; + width: 91.66667%; } + .columns.is-mobile > .column.is-offset-11 { + margin-left: 91.66667%; } + .columns.is-mobile > .column.is-12 { + flex: none; + width: 100%; } + .columns.is-mobile > .column.is-offset-12 { + margin-left: 100%; } + @media screen and (max-width: 768px) { + .column.is-narrow-mobile { + flex: none; } + .column.is-full-mobile { + flex: none; + width: 100%; } + .column.is-three-quarters-mobile { + flex: none; + width: 75%; } + .column.is-two-thirds-mobile { + flex: none; + width: 66.6666%; } + .column.is-half-mobile { + flex: none; + width: 50%; } + .column.is-one-third-mobile { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-mobile { + flex: none; + width: 25%; } + .column.is-one-fifth-mobile { + flex: none; + width: 20%; } + .column.is-two-fifths-mobile { + flex: none; + width: 40%; } + .column.is-three-fifths-mobile { + flex: none; + width: 60%; } + .column.is-four-fifths-mobile { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-mobile { + margin-left: 75%; } + .column.is-offset-two-thirds-mobile { + margin-left: 66.6666%; } + .column.is-offset-half-mobile { + margin-left: 50%; } + .column.is-offset-one-third-mobile { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-mobile { + margin-left: 25%; } + .column.is-offset-one-fifth-mobile { + margin-left: 20%; } + .column.is-offset-two-fifths-mobile { + margin-left: 40%; } + .column.is-offset-three-fifths-mobile { + margin-left: 60%; } + .column.is-offset-four-fifths-mobile { + margin-left: 80%; } + .column.is-0-mobile { + flex: none; + width: 0%; } + .column.is-offset-0-mobile { + margin-left: 0%; } + .column.is-1-mobile { + flex: none; + width: 8.33333%; } + .column.is-offset-1-mobile { + margin-left: 8.33333%; } + .column.is-2-mobile { + flex: none; + width: 16.66667%; } + .column.is-offset-2-mobile { + margin-left: 16.66667%; } + .column.is-3-mobile { + flex: none; + width: 25%; } + .column.is-offset-3-mobile { + margin-left: 25%; } + .column.is-4-mobile { + flex: none; + width: 33.33333%; } + .column.is-offset-4-mobile { + margin-left: 33.33333%; } + .column.is-5-mobile { + flex: none; + width: 41.66667%; } + .column.is-offset-5-mobile { + margin-left: 41.66667%; } + .column.is-6-mobile { + flex: none; + width: 50%; } + .column.is-offset-6-mobile { + margin-left: 50%; } + .column.is-7-mobile { + flex: none; + width: 58.33333%; } + .column.is-offset-7-mobile { + margin-left: 58.33333%; } + .column.is-8-mobile { + flex: none; + width: 66.66667%; } + .column.is-offset-8-mobile { + margin-left: 66.66667%; } + .column.is-9-mobile { + flex: none; + width: 75%; } + .column.is-offset-9-mobile { + margin-left: 75%; } + .column.is-10-mobile { + flex: none; + width: 83.33333%; } + .column.is-offset-10-mobile { + margin-left: 83.33333%; } + .column.is-11-mobile { + flex: none; + width: 91.66667%; } + .column.is-offset-11-mobile { + margin-left: 91.66667%; } + .column.is-12-mobile { + flex: none; + width: 100%; } + .column.is-offset-12-mobile { + margin-left: 100%; } } + @media screen and (min-width: 769px), print { + .column.is-narrow, .column.is-narrow-tablet { + flex: none; } + .column.is-full, .column.is-full-tablet { + flex: none; + width: 100%; } + .column.is-three-quarters, .column.is-three-quarters-tablet { + flex: none; + width: 75%; } + .column.is-two-thirds, .column.is-two-thirds-tablet { + flex: none; + width: 66.6666%; } + .column.is-half, .column.is-half-tablet { + flex: none; + width: 50%; } + .column.is-one-third, .column.is-one-third-tablet { + flex: none; + width: 33.3333%; } + .column.is-one-quarter, .column.is-one-quarter-tablet { + flex: none; + width: 25%; } + .column.is-one-fifth, .column.is-one-fifth-tablet { + flex: none; + width: 20%; } + .column.is-two-fifths, .column.is-two-fifths-tablet { + flex: none; + width: 40%; } + .column.is-three-fifths, .column.is-three-fifths-tablet { + flex: none; + width: 60%; } + .column.is-four-fifths, .column.is-four-fifths-tablet { + flex: none; + width: 80%; } + .column.is-offset-three-quarters, .column.is-offset-three-quarters-tablet { + margin-left: 75%; } + .column.is-offset-two-thirds, .column.is-offset-two-thirds-tablet { + margin-left: 66.6666%; } + .column.is-offset-half, .column.is-offset-half-tablet { + margin-left: 50%; } + .column.is-offset-one-third, .column.is-offset-one-third-tablet { + margin-left: 33.3333%; } + .column.is-offset-one-quarter, .column.is-offset-one-quarter-tablet { + margin-left: 25%; } + .column.is-offset-one-fifth, .column.is-offset-one-fifth-tablet { + margin-left: 20%; } + .column.is-offset-two-fifths, .column.is-offset-two-fifths-tablet { + margin-left: 40%; } + .column.is-offset-three-fifths, .column.is-offset-three-fifths-tablet { + margin-left: 60%; } + .column.is-offset-four-fifths, .column.is-offset-four-fifths-tablet { + margin-left: 80%; } + .column.is-0, .column.is-0-tablet { + flex: none; + width: 0%; } + .column.is-offset-0, .column.is-offset-0-tablet { + margin-left: 0%; } + .column.is-1, .column.is-1-tablet { + flex: none; + width: 8.33333%; } + .column.is-offset-1, .column.is-offset-1-tablet { + margin-left: 8.33333%; } + .column.is-2, .column.is-2-tablet { + flex: none; + width: 16.66667%; } + .column.is-offset-2, .column.is-offset-2-tablet { + margin-left: 16.66667%; } + .column.is-3, .column.is-3-tablet { + flex: none; + width: 25%; } + .column.is-offset-3, .column.is-offset-3-tablet { + margin-left: 25%; } + .column.is-4, .column.is-4-tablet { + flex: none; + width: 33.33333%; } + .column.is-offset-4, .column.is-offset-4-tablet { + margin-left: 33.33333%; } + .column.is-5, .column.is-5-tablet { + flex: none; + width: 41.66667%; } + .column.is-offset-5, .column.is-offset-5-tablet { + margin-left: 41.66667%; } + .column.is-6, .column.is-6-tablet { + flex: none; + width: 50%; } + .column.is-offset-6, .column.is-offset-6-tablet { + margin-left: 50%; } + .column.is-7, .column.is-7-tablet { + flex: none; + width: 58.33333%; } + .column.is-offset-7, .column.is-offset-7-tablet { + margin-left: 58.33333%; } + .column.is-8, .column.is-8-tablet { + flex: none; + width: 66.66667%; } + .column.is-offset-8, .column.is-offset-8-tablet { + margin-left: 66.66667%; } + .column.is-9, .column.is-9-tablet { + flex: none; + width: 75%; } + .column.is-offset-9, .column.is-offset-9-tablet { + margin-left: 75%; } + .column.is-10, .column.is-10-tablet { + flex: none; + width: 83.33333%; } + .column.is-offset-10, .column.is-offset-10-tablet { + margin-left: 83.33333%; } + .column.is-11, .column.is-11-tablet { + flex: none; + width: 91.66667%; } + .column.is-offset-11, .column.is-offset-11-tablet { + margin-left: 91.66667%; } + .column.is-12, .column.is-12-tablet { + flex: none; + width: 100%; } + .column.is-offset-12, .column.is-offset-12-tablet { + margin-left: 100%; } } + @media screen and (max-width: 1055px) { + .column.is-narrow-touch { + flex: none; } + .column.is-full-touch { + flex: none; + width: 100%; } + .column.is-three-quarters-touch { + flex: none; + width: 75%; } + .column.is-two-thirds-touch { + flex: none; + width: 66.6666%; } + .column.is-half-touch { + flex: none; + width: 50%; } + .column.is-one-third-touch { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-touch { + flex: none; + width: 25%; } + .column.is-one-fifth-touch { + flex: none; + width: 20%; } + .column.is-two-fifths-touch { + flex: none; + width: 40%; } + .column.is-three-fifths-touch { + flex: none; + width: 60%; } + .column.is-four-fifths-touch { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-touch { + margin-left: 75%; } + .column.is-offset-two-thirds-touch { + margin-left: 66.6666%; } + .column.is-offset-half-touch { + margin-left: 50%; } + .column.is-offset-one-third-touch { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-touch { + margin-left: 25%; } + .column.is-offset-one-fifth-touch { + margin-left: 20%; } + .column.is-offset-two-fifths-touch { + margin-left: 40%; } + .column.is-offset-three-fifths-touch { + margin-left: 60%; } + .column.is-offset-four-fifths-touch { + margin-left: 80%; } + .column.is-0-touch { + flex: none; + width: 0%; } + .column.is-offset-0-touch { + margin-left: 0%; } + .column.is-1-touch { + flex: none; + width: 8.33333%; } + .column.is-offset-1-touch { + margin-left: 8.33333%; } + .column.is-2-touch { + flex: none; + width: 16.66667%; } + .column.is-offset-2-touch { + margin-left: 16.66667%; } + .column.is-3-touch { + flex: none; + width: 25%; } + .column.is-offset-3-touch { + margin-left: 25%; } + .column.is-4-touch { + flex: none; + width: 33.33333%; } + .column.is-offset-4-touch { + margin-left: 33.33333%; } + .column.is-5-touch { + flex: none; + width: 41.66667%; } + .column.is-offset-5-touch { + margin-left: 41.66667%; } + .column.is-6-touch { + flex: none; + width: 50%; } + .column.is-offset-6-touch { + margin-left: 50%; } + .column.is-7-touch { + flex: none; + width: 58.33333%; } + .column.is-offset-7-touch { + margin-left: 58.33333%; } + .column.is-8-touch { + flex: none; + width: 66.66667%; } + .column.is-offset-8-touch { + margin-left: 66.66667%; } + .column.is-9-touch { + flex: none; + width: 75%; } + .column.is-offset-9-touch { + margin-left: 75%; } + .column.is-10-touch { + flex: none; + width: 83.33333%; } + .column.is-offset-10-touch { + margin-left: 83.33333%; } + .column.is-11-touch { + flex: none; + width: 91.66667%; } + .column.is-offset-11-touch { + margin-left: 91.66667%; } + .column.is-12-touch { + flex: none; + width: 100%; } + .column.is-offset-12-touch { + margin-left: 100%; } } + @media screen and (min-width: 1056px) { + .column.is-narrow-desktop { + flex: none; } + .column.is-full-desktop { + flex: none; + width: 100%; } + .column.is-three-quarters-desktop { + flex: none; + width: 75%; } + .column.is-two-thirds-desktop { + flex: none; + width: 66.6666%; } + .column.is-half-desktop { + flex: none; + width: 50%; } + .column.is-one-third-desktop { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-desktop { + flex: none; + width: 25%; } + .column.is-one-fifth-desktop { + flex: none; + width: 20%; } + .column.is-two-fifths-desktop { + flex: none; + width: 40%; } + .column.is-three-fifths-desktop { + flex: none; + width: 60%; } + .column.is-four-fifths-desktop { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-desktop { + margin-left: 75%; } + .column.is-offset-two-thirds-desktop { + margin-left: 66.6666%; } + .column.is-offset-half-desktop { + margin-left: 50%; } + .column.is-offset-one-third-desktop { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-desktop { + margin-left: 25%; } + .column.is-offset-one-fifth-desktop { + margin-left: 20%; } + .column.is-offset-two-fifths-desktop { + margin-left: 40%; } + .column.is-offset-three-fifths-desktop { + margin-left: 60%; } + .column.is-offset-four-fifths-desktop { + margin-left: 80%; } + .column.is-0-desktop { + flex: none; + width: 0%; } + .column.is-offset-0-desktop { + margin-left: 0%; } + .column.is-1-desktop { + flex: none; + width: 8.33333%; } + .column.is-offset-1-desktop { + margin-left: 8.33333%; } + .column.is-2-desktop { + flex: none; + width: 16.66667%; } + .column.is-offset-2-desktop { + margin-left: 16.66667%; } + .column.is-3-desktop { + flex: none; + width: 25%; } + .column.is-offset-3-desktop { + margin-left: 25%; } + .column.is-4-desktop { + flex: none; + width: 33.33333%; } + .column.is-offset-4-desktop { + margin-left: 33.33333%; } + .column.is-5-desktop { + flex: none; + width: 41.66667%; } + .column.is-offset-5-desktop { + margin-left: 41.66667%; } + .column.is-6-desktop { + flex: none; + width: 50%; } + .column.is-offset-6-desktop { + margin-left: 50%; } + .column.is-7-desktop { + flex: none; + width: 58.33333%; } + .column.is-offset-7-desktop { + margin-left: 58.33333%; } + .column.is-8-desktop { + flex: none; + width: 66.66667%; } + .column.is-offset-8-desktop { + margin-left: 66.66667%; } + .column.is-9-desktop { + flex: none; + width: 75%; } + .column.is-offset-9-desktop { + margin-left: 75%; } + .column.is-10-desktop { + flex: none; + width: 83.33333%; } + .column.is-offset-10-desktop { + margin-left: 83.33333%; } + .column.is-11-desktop { + flex: none; + width: 91.66667%; } + .column.is-offset-11-desktop { + margin-left: 91.66667%; } + .column.is-12-desktop { + flex: none; + width: 100%; } + .column.is-offset-12-desktop { + margin-left: 100%; } } + @media screen and (min-width: 1216px) { + .column.is-narrow-widescreen { + flex: none; } + .column.is-full-widescreen { + flex: none; + width: 100%; } + .column.is-three-quarters-widescreen { + flex: none; + width: 75%; } + .column.is-two-thirds-widescreen { + flex: none; + width: 66.6666%; } + .column.is-half-widescreen { + flex: none; + width: 50%; } + .column.is-one-third-widescreen { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-widescreen { + flex: none; + width: 25%; } + .column.is-one-fifth-widescreen { + flex: none; + width: 20%; } + .column.is-two-fifths-widescreen { + flex: none; + width: 40%; } + .column.is-three-fifths-widescreen { + flex: none; + width: 60%; } + .column.is-four-fifths-widescreen { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-widescreen { + margin-left: 75%; } + .column.is-offset-two-thirds-widescreen { + margin-left: 66.6666%; } + .column.is-offset-half-widescreen { + margin-left: 50%; } + .column.is-offset-one-third-widescreen { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-widescreen { + margin-left: 25%; } + .column.is-offset-one-fifth-widescreen { + margin-left: 20%; } + .column.is-offset-two-fifths-widescreen { + margin-left: 40%; } + .column.is-offset-three-fifths-widescreen { + margin-left: 60%; } + .column.is-offset-four-fifths-widescreen { + margin-left: 80%; } + .column.is-0-widescreen { + flex: none; + width: 0%; } + .column.is-offset-0-widescreen { + margin-left: 0%; } + .column.is-1-widescreen { + flex: none; + width: 8.33333%; } + .column.is-offset-1-widescreen { + margin-left: 8.33333%; } + .column.is-2-widescreen { + flex: none; + width: 16.66667%; } + .column.is-offset-2-widescreen { + margin-left: 16.66667%; } + .column.is-3-widescreen { + flex: none; + width: 25%; } + .column.is-offset-3-widescreen { + margin-left: 25%; } + .column.is-4-widescreen { + flex: none; + width: 33.33333%; } + .column.is-offset-4-widescreen { + margin-left: 33.33333%; } + .column.is-5-widescreen { + flex: none; + width: 41.66667%; } + .column.is-offset-5-widescreen { + margin-left: 41.66667%; } + .column.is-6-widescreen { + flex: none; + width: 50%; } + .column.is-offset-6-widescreen { + margin-left: 50%; } + .column.is-7-widescreen { + flex: none; + width: 58.33333%; } + .column.is-offset-7-widescreen { + margin-left: 58.33333%; } + .column.is-8-widescreen { + flex: none; + width: 66.66667%; } + .column.is-offset-8-widescreen { + margin-left: 66.66667%; } + .column.is-9-widescreen { + flex: none; + width: 75%; } + .column.is-offset-9-widescreen { + margin-left: 75%; } + .column.is-10-widescreen { + flex: none; + width: 83.33333%; } + .column.is-offset-10-widescreen { + margin-left: 83.33333%; } + .column.is-11-widescreen { + flex: none; + width: 91.66667%; } + .column.is-offset-11-widescreen { + margin-left: 91.66667%; } + .column.is-12-widescreen { + flex: none; + width: 100%; } + .column.is-offset-12-widescreen { + margin-left: 100%; } } + @media screen and (min-width: 1408px) { + .column.is-narrow-fullhd { + flex: none; } + .column.is-full-fullhd { + flex: none; + width: 100%; } + .column.is-three-quarters-fullhd { + flex: none; + width: 75%; } + .column.is-two-thirds-fullhd { + flex: none; + width: 66.6666%; } + .column.is-half-fullhd { + flex: none; + width: 50%; } + .column.is-one-third-fullhd { + flex: none; + width: 33.3333%; } + .column.is-one-quarter-fullhd { + flex: none; + width: 25%; } + .column.is-one-fifth-fullhd { + flex: none; + width: 20%; } + .column.is-two-fifths-fullhd { + flex: none; + width: 40%; } + .column.is-three-fifths-fullhd { + flex: none; + width: 60%; } + .column.is-four-fifths-fullhd { + flex: none; + width: 80%; } + .column.is-offset-three-quarters-fullhd { + margin-left: 75%; } + .column.is-offset-two-thirds-fullhd { + margin-left: 66.6666%; } + .column.is-offset-half-fullhd { + margin-left: 50%; } + .column.is-offset-one-third-fullhd { + margin-left: 33.3333%; } + .column.is-offset-one-quarter-fullhd { + margin-left: 25%; } + .column.is-offset-one-fifth-fullhd { + margin-left: 20%; } + .column.is-offset-two-fifths-fullhd { + margin-left: 40%; } + .column.is-offset-three-fifths-fullhd { + margin-left: 60%; } + .column.is-offset-four-fifths-fullhd { + margin-left: 80%; } + .column.is-0-fullhd { + flex: none; + width: 0%; } + .column.is-offset-0-fullhd { + margin-left: 0%; } + .column.is-1-fullhd { + flex: none; + width: 8.33333%; } + .column.is-offset-1-fullhd { + margin-left: 8.33333%; } + .column.is-2-fullhd { + flex: none; + width: 16.66667%; } + .column.is-offset-2-fullhd { + margin-left: 16.66667%; } + .column.is-3-fullhd { + flex: none; + width: 25%; } + .column.is-offset-3-fullhd { + margin-left: 25%; } + .column.is-4-fullhd { + flex: none; + width: 33.33333%; } + .column.is-offset-4-fullhd { + margin-left: 33.33333%; } + .column.is-5-fullhd { + flex: none; + width: 41.66667%; } + .column.is-offset-5-fullhd { + margin-left: 41.66667%; } + .column.is-6-fullhd { + flex: none; + width: 50%; } + .column.is-offset-6-fullhd { + margin-left: 50%; } + .column.is-7-fullhd { + flex: none; + width: 58.33333%; } + .column.is-offset-7-fullhd { + margin-left: 58.33333%; } + .column.is-8-fullhd { + flex: none; + width: 66.66667%; } + .column.is-offset-8-fullhd { + margin-left: 66.66667%; } + .column.is-9-fullhd { + flex: none; + width: 75%; } + .column.is-offset-9-fullhd { + margin-left: 75%; } + .column.is-10-fullhd { + flex: none; + width: 83.33333%; } + .column.is-offset-10-fullhd { + margin-left: 83.33333%; } + .column.is-11-fullhd { + flex: none; + width: 91.66667%; } + .column.is-offset-11-fullhd { + margin-left: 91.66667%; } + .column.is-12-fullhd { + flex: none; + width: 100%; } + .column.is-offset-12-fullhd { + margin-left: 100%; } } + +.columns { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + .columns:last-child { + margin-bottom: -0.75rem; } + .columns:not(:last-child) { + margin-bottom: calc(1.5rem - 0.75rem); } + .columns.is-centered { + justify-content: center; } + .columns.is-gapless { + margin-left: 0; + margin-right: 0; + margin-top: 0; } + .columns.is-gapless > .column { + margin: 0; + padding: 0 !important; } + .columns.is-gapless:not(:last-child) { + margin-bottom: 1.5rem; } + .columns.is-gapless:last-child { + margin-bottom: 0; } + .columns.is-mobile { + display: flex; } + .columns.is-multiline { + flex-wrap: wrap; } + .columns.is-vcentered { + align-items: center; } + @media screen and (min-width: 769px), print { + .columns:not(.is-desktop) { + display: flex; } } + @media screen and (min-width: 1056px) { + .columns.is-desktop { + display: flex; } } + +.columns.is-variable { + --columnGap: 0.75rem; + margin-left: calc(-1 * var(--columnGap)); + margin-right: calc(-1 * var(--columnGap)); } + .columns.is-variable .column { + padding-left: var(--columnGap); + padding-right: var(--columnGap); } + .columns.is-variable.is-0 { + --columnGap: 0rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-0-mobile { + --columnGap: 0rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-0-tablet { + --columnGap: 0rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-0-tablet-only { + --columnGap: 0rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-0-touch { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-0-desktop { + --columnGap: 0rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-0-desktop-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-0-widescreen { + --columnGap: 0rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-0-widescreen-only { + --columnGap: 0rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-0-fullhd { + --columnGap: 0rem; } } + .columns.is-variable.is-1 { + --columnGap: 0.25rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-1-mobile { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-1-tablet { + --columnGap: 0.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-1-tablet-only { + --columnGap: 0.25rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-1-touch { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-1-desktop { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-1-desktop-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-1-widescreen { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-1-widescreen-only { + --columnGap: 0.25rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-1-fullhd { + --columnGap: 0.25rem; } } + .columns.is-variable.is-2 { + --columnGap: 0.5rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-2-mobile { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-2-tablet { + --columnGap: 0.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-2-tablet-only { + --columnGap: 0.5rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-2-touch { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-2-desktop { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-2-desktop-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-2-widescreen { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-2-widescreen-only { + --columnGap: 0.5rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-2-fullhd { + --columnGap: 0.5rem; } } + .columns.is-variable.is-3 { + --columnGap: 0.75rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-3-mobile { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-3-tablet { + --columnGap: 0.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-3-tablet-only { + --columnGap: 0.75rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-3-touch { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-3-desktop { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-3-desktop-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-3-widescreen { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-3-widescreen-only { + --columnGap: 0.75rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-3-fullhd { + --columnGap: 0.75rem; } } + .columns.is-variable.is-4 { + --columnGap: 1rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-4-mobile { + --columnGap: 1rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-4-tablet { + --columnGap: 1rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-4-tablet-only { + --columnGap: 1rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-4-touch { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-4-desktop { + --columnGap: 1rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-4-desktop-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-4-widescreen { + --columnGap: 1rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-4-widescreen-only { + --columnGap: 1rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-4-fullhd { + --columnGap: 1rem; } } + .columns.is-variable.is-5 { + --columnGap: 1.25rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-5-mobile { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-5-tablet { + --columnGap: 1.25rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-5-tablet-only { + --columnGap: 1.25rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-5-touch { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-5-desktop { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-5-desktop-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-5-widescreen { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-5-widescreen-only { + --columnGap: 1.25rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-5-fullhd { + --columnGap: 1.25rem; } } + .columns.is-variable.is-6 { + --columnGap: 1.5rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-6-mobile { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-6-tablet { + --columnGap: 1.5rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-6-tablet-only { + --columnGap: 1.5rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-6-touch { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-6-desktop { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-6-desktop-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-6-widescreen { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-6-widescreen-only { + --columnGap: 1.5rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-6-fullhd { + --columnGap: 1.5rem; } } + .columns.is-variable.is-7 { + --columnGap: 1.75rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-7-mobile { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-7-tablet { + --columnGap: 1.75rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-7-tablet-only { + --columnGap: 1.75rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-7-touch { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-7-desktop { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-7-desktop-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-7-widescreen { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-7-widescreen-only { + --columnGap: 1.75rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-7-fullhd { + --columnGap: 1.75rem; } } + .columns.is-variable.is-8 { + --columnGap: 2rem; } + @media screen and (max-width: 768px) { + .columns.is-variable.is-8-mobile { + --columnGap: 2rem; } } + @media screen and (min-width: 769px), print { + .columns.is-variable.is-8-tablet { + --columnGap: 2rem; } } + @media screen and (min-width: 769px) and (max-width: 1055px) { + .columns.is-variable.is-8-tablet-only { + --columnGap: 2rem; } } + @media screen and (max-width: 1055px) { + .columns.is-variable.is-8-touch { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) { + .columns.is-variable.is-8-desktop { + --columnGap: 2rem; } } + @media screen and (min-width: 1056px) and (max-width: 1215px) { + .columns.is-variable.is-8-desktop-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) { + .columns.is-variable.is-8-widescreen { + --columnGap: 2rem; } } + @media screen and (min-width: 1216px) and (max-width: 1407px) { + .columns.is-variable.is-8-widescreen-only { + --columnGap: 2rem; } } + @media screen and (min-width: 1408px) { + .columns.is-variable.is-8-fullhd { + --columnGap: 2rem; } } + +.tile { + align-items: stretch; + display: block; + flex-basis: 0; + flex-grow: 1; + flex-shrink: 1; + min-height: min-content; } + .tile.is-ancestor { + margin-left: -0.75rem; + margin-right: -0.75rem; + margin-top: -0.75rem; } + .tile.is-ancestor:last-child { + margin-bottom: -0.75rem; } + .tile.is-ancestor:not(:last-child) { + margin-bottom: 0.75rem; } + .tile.is-child { + margin: 0 !important; } + .tile.is-parent { + padding: 0.75rem; } + .tile.is-vertical { + flex-direction: column; } + .tile.is-vertical > .tile.is-child:not(:last-child) { + margin-bottom: 1.5rem !important; } + @media screen and (min-width: 769px), print { + .tile:not(.is-child) { + display: flex; } + .tile.is-1 { + flex: none; + width: 8.33333%; } + .tile.is-2 { + flex: none; + width: 16.66667%; } + .tile.is-3 { + flex: none; + width: 25%; } + .tile.is-4 { + flex: none; + width: 33.33333%; } + .tile.is-5 { + flex: none; + width: 41.66667%; } + .tile.is-6 { + flex: none; + width: 50%; } + .tile.is-7 { + flex: none; + width: 58.33333%; } + .tile.is-8 { + flex: none; + width: 66.66667%; } + .tile.is-9 { + flex: none; + width: 75%; } + .tile.is-10 { + flex: none; + width: 83.33333%; } + .tile.is-11 { + flex: none; + width: 91.66667%; } + .tile.is-12 { + flex: none; + width: 100%; } } + +.hero { + align-items: stretch; + display: flex; + flex-direction: column; + justify-content: space-between; } + .hero .navbar { + background: none; } + .hero .tabs ul { + border-bottom: none; } + .hero.is-white { + background-color: white; + color: #0a0a0a; } + .hero.is-white a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-white strong { + color: inherit; } + .hero.is-white .title { + color: #0a0a0a; } + .hero.is-white .subtitle { + color: rgba(10, 10, 10, 0.9); } + .hero.is-white .subtitle a:not(.button), + .hero.is-white .subtitle strong { + color: #0a0a0a; } + @media screen and (max-width: 1055px) { + .hero.is-white .navbar-menu { + background-color: white; } } + .hero.is-white .navbar-item, + .hero.is-white .navbar-link { + color: rgba(10, 10, 10, 0.7); } + .hero.is-white a.navbar-item:hover, .hero.is-white a.navbar-item.is-active, + .hero.is-white .navbar-link:hover, + .hero.is-white .navbar-link.is-active { + background-color: #f2f2f2; + color: #0a0a0a; } + .hero.is-white .tabs a { + color: #0a0a0a; + opacity: 0.9; } + .hero.is-white .tabs a:hover { + opacity: 1; } + .hero.is-white .tabs li.is-active a { + opacity: 1; } + .hero.is-white .tabs.is-boxed a, .hero.is-white .tabs.is-toggle a { + color: #0a0a0a; } + .hero.is-white .tabs.is-boxed a:hover, .hero.is-white .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-white .tabs.is-boxed li.is-active a, .hero.is-white .tabs.is-boxed li.is-active a:hover, .hero.is-white .tabs.is-toggle li.is-active a, .hero.is-white .tabs.is-toggle li.is-active a:hover { + background-color: #0a0a0a; + border-color: #0a0a0a; + color: white; } + .hero.is-white.is-bold { + background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } + @media screen and (max-width: 768px) { + .hero.is-white.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #e6e6e6 0%, white 71%, white 100%); } } + .hero.is-black { + background-color: #0a0a0a; + color: white; } + .hero.is-black a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-black strong { + color: inherit; } + .hero.is-black .title { + color: white; } + .hero.is-black .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-black .subtitle a:not(.button), + .hero.is-black .subtitle strong { + color: white; } + @media screen and (max-width: 1055px) { + .hero.is-black .navbar-menu { + background-color: #0a0a0a; } } + .hero.is-black .navbar-item, + .hero.is-black .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-black a.navbar-item:hover, .hero.is-black a.navbar-item.is-active, + .hero.is-black .navbar-link:hover, + .hero.is-black .navbar-link.is-active { + background-color: black; + color: white; } + .hero.is-black .tabs a { + color: white; + opacity: 0.9; } + .hero.is-black .tabs a:hover { + opacity: 1; } + .hero.is-black .tabs li.is-active a { + opacity: 1; } + .hero.is-black .tabs.is-boxed a, .hero.is-black .tabs.is-toggle a { + color: white; } + .hero.is-black .tabs.is-boxed a:hover, .hero.is-black .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-black .tabs.is-boxed li.is-active a, .hero.is-black .tabs.is-boxed li.is-active a:hover, .hero.is-black .tabs.is-toggle li.is-active a, .hero.is-black .tabs.is-toggle li.is-active a:hover { + background-color: white; + border-color: white; + color: #0a0a0a; } + .hero.is-black.is-bold { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } + @media screen and (max-width: 768px) { + .hero.is-black.is-bold .navbar-menu { + background-image: linear-gradient(141deg, black 0%, #0a0a0a 71%, #181616 100%); } } + .hero.is-light { + background-color: whitesmoke; + color: #363636; } + .hero.is-light a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-light strong { + color: inherit; } + .hero.is-light .title { + color: #363636; } + .hero.is-light .subtitle { + color: rgba(54, 54, 54, 0.9); } + .hero.is-light .subtitle a:not(.button), + .hero.is-light .subtitle strong { + color: #363636; } + @media screen and (max-width: 1055px) { + .hero.is-light .navbar-menu { + background-color: whitesmoke; } } + .hero.is-light .navbar-item, + .hero.is-light .navbar-link { + color: rgba(54, 54, 54, 0.7); } + .hero.is-light a.navbar-item:hover, .hero.is-light a.navbar-item.is-active, + .hero.is-light .navbar-link:hover, + .hero.is-light .navbar-link.is-active { + background-color: #e8e8e8; + color: #363636; } + .hero.is-light .tabs a { + color: #363636; + opacity: 0.9; } + .hero.is-light .tabs a:hover { + opacity: 1; } + .hero.is-light .tabs li.is-active a { + opacity: 1; } + .hero.is-light .tabs.is-boxed a, .hero.is-light .tabs.is-toggle a { + color: #363636; } + .hero.is-light .tabs.is-boxed a:hover, .hero.is-light .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-light .tabs.is-boxed li.is-active a, .hero.is-light .tabs.is-boxed li.is-active a:hover, .hero.is-light .tabs.is-toggle li.is-active a, .hero.is-light .tabs.is-toggle li.is-active a:hover { + background-color: #363636; + border-color: #363636; + color: whitesmoke; } + .hero.is-light.is-bold { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } + @media screen and (max-width: 768px) { + .hero.is-light.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #dfd8d9 0%, whitesmoke 71%, white 100%); } } + .hero.is-dark, .content kbd.hero { + background-color: #363636; + color: whitesmoke; } + .hero.is-dark a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .content kbd.hero a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-dark strong, + .content kbd.hero strong { + color: inherit; } + .hero.is-dark .title, .content kbd.hero .title { + color: whitesmoke; } + .hero.is-dark .subtitle, .content kbd.hero .subtitle { + color: rgba(245, 245, 245, 0.9); } + .hero.is-dark .subtitle a:not(.button), .content kbd.hero .subtitle a:not(.button), + .hero.is-dark .subtitle strong, + .content kbd.hero .subtitle strong { + color: whitesmoke; } + @media screen and (max-width: 1055px) { + .hero.is-dark .navbar-menu, .content kbd.hero .navbar-menu { + background-color: #363636; } } + .hero.is-dark .navbar-item, .content kbd.hero .navbar-item, + .hero.is-dark .navbar-link, + .content kbd.hero .navbar-link { + color: rgba(245, 245, 245, 0.7); } + .hero.is-dark a.navbar-item:hover, .content kbd.hero a.navbar-item:hover, .hero.is-dark a.navbar-item.is-active, .content kbd.hero a.navbar-item.is-active, + .hero.is-dark .navbar-link:hover, + .content kbd.hero .navbar-link:hover, + .hero.is-dark .navbar-link.is-active, + .content kbd.hero .navbar-link.is-active { + background-color: #292929; + color: whitesmoke; } + .hero.is-dark .tabs a, .content kbd.hero .tabs a { + color: whitesmoke; + opacity: 0.9; } + .hero.is-dark .tabs a:hover, .content kbd.hero .tabs a:hover { + opacity: 1; } + .hero.is-dark .tabs li.is-active a, .content kbd.hero .tabs li.is-active a { + opacity: 1; } + .hero.is-dark .tabs.is-boxed a, .content kbd.hero .tabs.is-boxed a, .hero.is-dark .tabs.is-toggle a, .content kbd.hero .tabs.is-toggle a { + color: whitesmoke; } + .hero.is-dark .tabs.is-boxed a:hover, .content kbd.hero .tabs.is-boxed a:hover, .hero.is-dark .tabs.is-toggle a:hover, .content kbd.hero .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-dark .tabs.is-boxed li.is-active a, .content kbd.hero .tabs.is-boxed li.is-active a, .hero.is-dark .tabs.is-boxed li.is-active a:hover, .content kbd.hero .tabs.is-boxed li.is-active a:hover, .hero.is-dark .tabs.is-toggle li.is-active a, .content kbd.hero .tabs.is-toggle li.is-active a, .hero.is-dark .tabs.is-toggle li.is-active a:hover, .content kbd.hero .tabs.is-toggle li.is-active a:hover { + background-color: whitesmoke; + border-color: whitesmoke; + color: #363636; } + .hero.is-dark.is-bold, .content kbd.hero.is-bold { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } + @media screen and (max-width: 768px) { + .hero.is-dark.is-bold .navbar-menu, .content kbd.hero.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #1f191a 0%, #363636 71%, #46403f 100%); } } + .hero.is-primary, .docstring > section > a.hero.docs-sourcelink { + background-color: #4eb5de; + color: #fff; } + .hero.is-primary a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), .docstring > section > a.hero.docs-sourcelink a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-primary strong, + .docstring > section > a.hero.docs-sourcelink strong { + color: inherit; } + .hero.is-primary .title, .docstring > section > a.hero.docs-sourcelink .title { + color: #fff; } + .hero.is-primary .subtitle, .docstring > section > a.hero.docs-sourcelink .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-primary .subtitle a:not(.button), .docstring > section > a.hero.docs-sourcelink .subtitle a:not(.button), + .hero.is-primary .subtitle strong, + .docstring > section > a.hero.docs-sourcelink .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-primary .navbar-menu, .docstring > section > a.hero.docs-sourcelink .navbar-menu { + background-color: #4eb5de; } } + .hero.is-primary .navbar-item, .docstring > section > a.hero.docs-sourcelink .navbar-item, + .hero.is-primary .navbar-link, + .docstring > section > a.hero.docs-sourcelink .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-primary a.navbar-item:hover, .docstring > section > a.hero.docs-sourcelink a.navbar-item:hover, .hero.is-primary a.navbar-item.is-active, .docstring > section > a.hero.docs-sourcelink a.navbar-item.is-active, + .hero.is-primary .navbar-link:hover, + .docstring > section > a.hero.docs-sourcelink .navbar-link:hover, + .hero.is-primary .navbar-link.is-active, + .docstring > section > a.hero.docs-sourcelink .navbar-link.is-active { + background-color: #39acda; + color: #fff; } + .hero.is-primary .tabs a, .docstring > section > a.hero.docs-sourcelink .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-primary .tabs a:hover, .docstring > section > a.hero.docs-sourcelink .tabs a:hover { + opacity: 1; } + .hero.is-primary .tabs li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs li.is-active a { + opacity: 1; } + .hero.is-primary .tabs.is-boxed a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a, .hero.is-primary .tabs.is-toggle a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a { + color: #fff; } + .hero.is-primary .tabs.is-boxed a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed a:hover, .hero.is-primary .tabs.is-toggle a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-primary .tabs.is-boxed li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a, .hero.is-primary .tabs.is-boxed li.is-active a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-boxed li.is-active a:hover, .hero.is-primary .tabs.is-toggle li.is-active a, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a, .hero.is-primary .tabs.is-toggle li.is-active a:hover, .docstring > section > a.hero.docs-sourcelink .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #4eb5de; } + .hero.is-primary.is-bold, .docstring > section > a.hero.is-bold.docs-sourcelink { + background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } + @media screen and (max-width: 768px) { + .hero.is-primary.is-bold .navbar-menu, .docstring > section > a.hero.is-bold.docs-sourcelink .navbar-menu { + background-image: linear-gradient(141deg, #1bc7de 0%, #4eb5de 71%, #5fa9e7 100%); } } + .hero.is-link { + background-color: #2e63b8; + color: #fff; } + .hero.is-link a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-link strong { + color: inherit; } + .hero.is-link .title { + color: #fff; } + .hero.is-link .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-link .subtitle a:not(.button), + .hero.is-link .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-link .navbar-menu { + background-color: #2e63b8; } } + .hero.is-link .navbar-item, + .hero.is-link .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-link a.navbar-item:hover, .hero.is-link a.navbar-item.is-active, + .hero.is-link .navbar-link:hover, + .hero.is-link .navbar-link.is-active { + background-color: #2958a4; + color: #fff; } + .hero.is-link .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-link .tabs a:hover { + opacity: 1; } + .hero.is-link .tabs li.is-active a { + opacity: 1; } + .hero.is-link .tabs.is-boxed a, .hero.is-link .tabs.is-toggle a { + color: #fff; } + .hero.is-link .tabs.is-boxed a:hover, .hero.is-link .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-link .tabs.is-boxed li.is-active a, .hero.is-link .tabs.is-boxed li.is-active a:hover, .hero.is-link .tabs.is-toggle li.is-active a, .hero.is-link .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #2e63b8; } + .hero.is-link.is-bold { + background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } + @media screen and (max-width: 768px) { + .hero.is-link.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #1b6098 0%, #2e63b8 71%, #2d51d2 100%); } } + .hero.is-info { + background-color: #209cee; + color: #fff; } + .hero.is-info a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-info strong { + color: inherit; } + .hero.is-info .title { + color: #fff; } + .hero.is-info .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-info .subtitle a:not(.button), + .hero.is-info .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-info .navbar-menu { + background-color: #209cee; } } + .hero.is-info .navbar-item, + .hero.is-info .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-info a.navbar-item:hover, .hero.is-info a.navbar-item.is-active, + .hero.is-info .navbar-link:hover, + .hero.is-info .navbar-link.is-active { + background-color: #118fe4; + color: #fff; } + .hero.is-info .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-info .tabs a:hover { + opacity: 1; } + .hero.is-info .tabs li.is-active a { + opacity: 1; } + .hero.is-info .tabs.is-boxed a, .hero.is-info .tabs.is-toggle a { + color: #fff; } + .hero.is-info .tabs.is-boxed a:hover, .hero.is-info .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-info .tabs.is-boxed li.is-active a, .hero.is-info .tabs.is-boxed li.is-active a:hover, .hero.is-info .tabs.is-toggle li.is-active a, .hero.is-info .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #209cee; } + .hero.is-info.is-bold { + background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); } + @media screen and (max-width: 768px) { + .hero.is-info.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #04a6d7 0%, #209cee 71%, #3287f5 100%); } } + .hero.is-success { + background-color: #22c35b; + color: #fff; } + .hero.is-success a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-success strong { + color: inherit; } + .hero.is-success .title { + color: #fff; } + .hero.is-success .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-success .subtitle a:not(.button), + .hero.is-success .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-success .navbar-menu { + background-color: #22c35b; } } + .hero.is-success .navbar-item, + .hero.is-success .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-success a.navbar-item:hover, .hero.is-success a.navbar-item.is-active, + .hero.is-success .navbar-link:hover, + .hero.is-success .navbar-link.is-active { + background-color: #1ead51; + color: #fff; } + .hero.is-success .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-success .tabs a:hover { + opacity: 1; } + .hero.is-success .tabs li.is-active a { + opacity: 1; } + .hero.is-success .tabs.is-boxed a, .hero.is-success .tabs.is-toggle a { + color: #fff; } + .hero.is-success .tabs.is-boxed a:hover, .hero.is-success .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-success .tabs.is-boxed li.is-active a, .hero.is-success .tabs.is-boxed li.is-active a:hover, .hero.is-success .tabs.is-toggle li.is-active a, .hero.is-success .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #22c35b; } + .hero.is-success.is-bold { + background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } + @media screen and (max-width: 768px) { + .hero.is-success.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #12a02c 0%, #22c35b 71%, #1fdf83 100%); } } + .hero.is-warning { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-warning strong { + color: inherit; } + .hero.is-warning .title { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .subtitle { + color: rgba(0, 0, 0, 0.9); } + .hero.is-warning .subtitle a:not(.button), + .hero.is-warning .subtitle strong { + color: rgba(0, 0, 0, 0.7); } + @media screen and (max-width: 1055px) { + .hero.is-warning .navbar-menu { + background-color: #ffdd57; } } + .hero.is-warning .navbar-item, + .hero.is-warning .navbar-link { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning a.navbar-item:hover, .hero.is-warning a.navbar-item.is-active, + .hero.is-warning .navbar-link:hover, + .hero.is-warning .navbar-link.is-active { + background-color: #ffd83d; + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .tabs a { + color: rgba(0, 0, 0, 0.7); + opacity: 0.9; } + .hero.is-warning .tabs a:hover { + opacity: 1; } + .hero.is-warning .tabs li.is-active a { + opacity: 1; } + .hero.is-warning .tabs.is-boxed a, .hero.is-warning .tabs.is-toggle a { + color: rgba(0, 0, 0, 0.7); } + .hero.is-warning .tabs.is-boxed a:hover, .hero.is-warning .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-warning .tabs.is-boxed li.is-active a, .hero.is-warning .tabs.is-boxed li.is-active a:hover, .hero.is-warning .tabs.is-toggle li.is-active a, .hero.is-warning .tabs.is-toggle li.is-active a:hover { + background-color: rgba(0, 0, 0, 0.7); + border-color: rgba(0, 0, 0, 0.7); + color: #ffdd57; } + .hero.is-warning.is-bold { + background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } + @media screen and (max-width: 768px) { + .hero.is-warning.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #ffaf24 0%, #ffdd57 71%, #fffa70 100%); } } + .hero.is-danger { + background-color: #da0b00; + color: #fff; } + .hero.is-danger a:not(.button):not(.dropdown-item):not(.tag):not(.pagination-link.is-current), + .hero.is-danger strong { + color: inherit; } + .hero.is-danger .title { + color: #fff; } + .hero.is-danger .subtitle { + color: rgba(255, 255, 255, 0.9); } + .hero.is-danger .subtitle a:not(.button), + .hero.is-danger .subtitle strong { + color: #fff; } + @media screen and (max-width: 1055px) { + .hero.is-danger .navbar-menu { + background-color: #da0b00; } } + .hero.is-danger .navbar-item, + .hero.is-danger .navbar-link { + color: rgba(255, 255, 255, 0.7); } + .hero.is-danger a.navbar-item:hover, .hero.is-danger a.navbar-item.is-active, + .hero.is-danger .navbar-link:hover, + .hero.is-danger .navbar-link.is-active { + background-color: #c10a00; + color: #fff; } + .hero.is-danger .tabs a { + color: #fff; + opacity: 0.9; } + .hero.is-danger .tabs a:hover { + opacity: 1; } + .hero.is-danger .tabs li.is-active a { + opacity: 1; } + .hero.is-danger .tabs.is-boxed a, .hero.is-danger .tabs.is-toggle a { + color: #fff; } + .hero.is-danger .tabs.is-boxed a:hover, .hero.is-danger .tabs.is-toggle a:hover { + background-color: rgba(10, 10, 10, 0.1); } + .hero.is-danger .tabs.is-boxed li.is-active a, .hero.is-danger .tabs.is-boxed li.is-active a:hover, .hero.is-danger .tabs.is-toggle li.is-active a, .hero.is-danger .tabs.is-toggle li.is-active a:hover { + background-color: #fff; + border-color: #fff; + color: #da0b00; } + .hero.is-danger.is-bold { + background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } + @media screen and (max-width: 768px) { + .hero.is-danger.is-bold .navbar-menu { + background-image: linear-gradient(141deg, #a70013 0%, #da0b00 71%, #f43500 100%); } } + .hero.is-small .hero-body, #documenter .docs-sidebar form.docs-search > input.hero .hero-body { + padding-bottom: 1.5rem; + padding-top: 1.5rem; } + @media screen and (min-width: 769px), print { + .hero.is-medium .hero-body { + padding-bottom: 9rem; + padding-top: 9rem; } } + @media screen and (min-width: 769px), print { + .hero.is-large .hero-body { + padding-bottom: 18rem; + padding-top: 18rem; } } + .hero.is-halfheight .hero-body, .hero.is-fullheight .hero-body, .hero.is-fullheight-with-navbar .hero-body { + align-items: center; + display: flex; } + .hero.is-halfheight .hero-body > .container, .hero.is-fullheight .hero-body > .container, .hero.is-fullheight-with-navbar .hero-body > .container { + flex-grow: 1; + flex-shrink: 1; } + .hero.is-halfheight { + min-height: 50vh; } + .hero.is-fullheight { + min-height: 100vh; } + +.hero-video { + overflow: hidden; } + .hero-video video { + left: 50%; + min-height: 100%; + min-width: 100%; + position: absolute; + top: 50%; + transform: translate3d(-50%, -50%, 0); } + .hero-video.is-transparent { + opacity: 0.3; } + @media screen and (max-width: 768px) { + .hero-video { + display: none; } } + +.hero-buttons { + margin-top: 1.5rem; } + @media screen and (max-width: 768px) { + .hero-buttons .button { + display: flex; } + .hero-buttons .button:not(:last-child) { + margin-bottom: 0.75rem; } } + @media screen and (min-width: 769px), print { + .hero-buttons { + display: flex; + justify-content: center; } + .hero-buttons .button:not(:last-child) { + margin-right: 1.5rem; } } + +.hero-head, +.hero-foot { + flex-grow: 0; + flex-shrink: 0; } + +.hero-body { + flex-grow: 1; + flex-shrink: 0; + padding: 3rem 1.5rem; } + +.section { + padding: 3rem 1.5rem; } + @media screen and (min-width: 1056px) { + .section.is-medium { + padding: 9rem 1.5rem; } + .section.is-large { + padding: 18rem 1.5rem; } } + +.footer { + background-color: #fafafa; + padding: 3rem 1.5rem 6rem; } + +h1 .docs-heading-anchor, h1 .docs-heading-anchor:hover, h1 .docs-heading-anchor:visited, h2 .docs-heading-anchor, h2 .docs-heading-anchor:hover, h2 .docs-heading-anchor:visited, h3 .docs-heading-anchor, h3 .docs-heading-anchor:hover, h3 .docs-heading-anchor:visited, h4 .docs-heading-anchor, h4 .docs-heading-anchor:hover, h4 .docs-heading-anchor:visited, h5 .docs-heading-anchor, h5 .docs-heading-anchor:hover, h5 .docs-heading-anchor:visited, h6 .docs-heading-anchor, h6 .docs-heading-anchor:hover, h6 .docs-heading-anchor:visited { + color: #222222; } + +h1 .docs-heading-anchor-permalink, h2 .docs-heading-anchor-permalink, h3 .docs-heading-anchor-permalink, h4 .docs-heading-anchor-permalink, h5 .docs-heading-anchor-permalink, h6 .docs-heading-anchor-permalink { + visibility: hidden; + vertical-align: middle; + margin-left: 0.5em; + font-size: 0.7rem; } + h1 .docs-heading-anchor-permalink::before, h2 .docs-heading-anchor-permalink::before, h3 .docs-heading-anchor-permalink::before, h4 .docs-heading-anchor-permalink::before, h5 .docs-heading-anchor-permalink::before, h6 .docs-heading-anchor-permalink::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f0c1"; } + +h1:hover .docs-heading-anchor-permalink, h2:hover .docs-heading-anchor-permalink, h3:hover .docs-heading-anchor-permalink, h4:hover .docs-heading-anchor-permalink, h5:hover .docs-heading-anchor-permalink, h6:hover .docs-heading-anchor-permalink { + visibility: visible; } + +.docs-dark-only { + display: none !important; } + +.admonition { + background-color: #b5b5b5; + border-style: solid; + border-width: 1px; + border-color: #363636; + border-radius: 4px; + font-size: 1rem; } + .admonition strong { + color: currentColor; } + .admonition.is-small, #documenter .docs-sidebar form.docs-search > input.admonition { + font-size: 0.75rem; } + .admonition.is-medium { + font-size: 1.25rem; } + .admonition.is-large { + font-size: 1.5rem; } + .admonition.is-default { + background-color: #b5b5b5; + border-color: #363636; } + .admonition.is-default > .admonition-header { + background-color: #363636; + color: #fff; } + .admonition.is-default > .admonition-body { + color: #fff; } + .admonition.is-info { + background-color: #b8dffa; + border-color: #209cee; } + .admonition.is-info > .admonition-header { + background-color: #209cee; + color: #fff; } + .admonition.is-info > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + .admonition.is-success { + background-color: #9beeb8; + border-color: #22c35b; } + .admonition.is-success > .admonition-header { + background-color: #22c35b; + color: #fff; } + .admonition.is-success > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + .admonition.is-warning { + background-color: #fff3c5; + border-color: #ffdd57; } + .admonition.is-warning > .admonition-header { + background-color: #ffdd57; + color: rgba(0, 0, 0, 0.7); } + .admonition.is-warning > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + .admonition.is-danger { + background-color: #ff857e; + border-color: #da0b00; } + .admonition.is-danger > .admonition-header { + background-color: #da0b00; + color: #fff; } + .admonition.is-danger > .admonition-body { + color: #fff; } + .admonition.is-compat { + background-color: #99e6f0; + border-color: #1db5c9; } + .admonition.is-compat > .admonition-header { + background-color: #1db5c9; + color: #fff; } + .admonition.is-compat > .admonition-body { + color: rgba(0, 0, 0, 0.7); } + +.admonition-header { + color: #fff; + background-color: #363636; + align-items: center; + font-weight: 700; + justify-content: space-between; + line-height: 1.25; + padding: 0.75em; + position: relative; } + .admonition-header:before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + margin-right: 0.75em; + content: "\f06a"; } + +.admonition-body { + color: #222222; + padding: 1em 1.25em; } + .admonition-body pre { + background-color: whitesmoke; } + .admonition-body code { + background-color: rgba(0, 0, 0, 0.05); } + +.docstring { + margin-bottom: 1em; + background-color: transparent; + border: 1px solid #dbdbdb; + box-shadow: 2px 2px 3px rgba(10, 10, 10, 0.1); + max-width: 100%; } + .docstring > header { + display: flex; + flex-grow: 1; + align-items: stretch; + padding: 0.75rem; + background-color: whitesmoke; + box-shadow: 0 1px 2px rgba(10, 10, 10, 0.1); + box-shadow: none; + border-bottom: 1px solid #dbdbdb; } + .docstring > header code { + background-color: transparent; } + .docstring > header .docstring-binding { + margin-right: 0.3em; } + .docstring > header .docstring-category { + margin-left: 0.3em; } + .docstring > section { + position: relative; + padding: 1rem 1.25rem; + border-bottom: 1px solid #dbdbdb; } + .docstring > section:last-child { + border-bottom: none; } + .docstring > section > a.docs-sourcelink { + transition: opacity 0.3s; + opacity: 0; + position: absolute; + right: 0.625rem; + bottom: 0.5rem; } + .docstring:hover > section > a.docs-sourcelink { + opacity: 0.2; } + .docstring > section:hover a.docs-sourcelink { + opacity: 1; } + +.content pre { + border: 1px solid #dbdbdb; } + +.content code { + font-weight: inherit; } + +.content a code { + color: #2e63b8; } + +.content h1 code, .content h2 code, .content h3 code, .content h4 code, .content h5 code, .content h6 code { + color: #222222; } + +.content table { + display: block; + width: initial; + max-width: 100%; + overflow-x: auto; } + +.content blockquote > ul:first-child, .content blockquote > ol:first-child, .content .admonition-body > ul:first-child, .content .admonition-body > ol:first-child { + margin-top: 0; } + +.breadcrumb a.is-disabled { + cursor: default; + pointer-events: none; } + .breadcrumb a.is-disabled, .breadcrumb a.is-disabled:hover { + color: #222222; } + +.hljs { + background: initial !important; + padding: initial !important; } + +.katex .katex-mathml { + top: 0; + right: 0; } + +html { + -moz-osx-font-smoothing: auto; + -webkit-font-smoothing: auto; } + +/* This file contain the overall layout. + * + * The main container is
    that is identified by id #documenter. + */ +#documenter .docs-main > article { + overflow-wrap: break-word; } + +@media screen and (min-width: 1056px) { + #documenter .docs-main { + max-width: 52rem; + margin-left: 20rem; + padding-right: 1rem; } } + +@media screen and (max-width: 1055px) { + #documenter .docs-main { + width: 100%; } + #documenter .docs-main > article { + max-width: 52rem; + margin-left: auto; + margin-right: auto; + margin-bottom: 1rem; + padding: 0 1rem; } + #documenter .docs-main > header, #documenter .docs-main > nav { + max-width: 100%; + width: 100%; + margin: 0; } } + +#documenter .docs-main header.docs-navbar { + background-color: white; + border-bottom: 1px solid #dbdbdb; + z-index: 2; + min-height: 4rem; + margin-bottom: 1rem; + display: flex; } + #documenter .docs-main header.docs-navbar .breadcrumb { + flex-grow: 1; } + #documenter .docs-main header.docs-navbar .docs-right { + display: flex; + white-space: nowrap; } + #documenter .docs-main header.docs-navbar .docs-right .docs-icon, #documenter .docs-main header.docs-navbar .docs-right .docs-label, #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + display: inline-block; } + #documenter .docs-main header.docs-navbar .docs-right .docs-label { + padding: 0; + margin-left: 0.3em; } + #documenter .docs-main header.docs-navbar .docs-right .docs-settings-button { + margin: auto 0 auto 1rem; } + #documenter .docs-main header.docs-navbar .docs-right .docs-sidebar-button { + font-size: 1.5rem; + margin: auto 0 auto 1rem; } + #documenter .docs-main header.docs-navbar > * { + margin: auto 0; } + @media screen and (max-width: 1055px) { + #documenter .docs-main header.docs-navbar { + position: sticky; + top: 0; + padding: 0 1rem; + /* For Headroom.js */ + transition-property: top, box-shadow; + -webkit-transition-property: top, box-shadow; + /* Safari */ + transition-duration: 0.3s; + -webkit-transition-duration: 0.3s; + /* Safari */ } + #documenter .docs-main header.docs-navbar.headroom--not-top { + box-shadow: 0.2rem 0rem 0.4rem #bbb; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } + #documenter .docs-main header.docs-navbar.headroom--unpinned.headroom--not-top.headroom--not-bottom { + top: -4.5rem; + transition-duration: 0.7s; + -webkit-transition-duration: 0.7s; + /* Safari */ } } + +#documenter .docs-main section.footnotes { + border-top: 1px solid #dbdbdb; } + #documenter .docs-main section.footnotes li .tag:first-child, #documenter .docs-main section.footnotes li .docstring > section > a.docs-sourcelink:first-child, #documenter .docs-main section.footnotes li .content kbd:first-child, .content #documenter .docs-main section.footnotes li kbd:first-child { + margin-right: 1em; + margin-bottom: 0.4em; } + +#documenter .docs-main .docs-footer { + display: flex; + margin-left: 0; + margin-right: 0; + border-top: 1px solid #dbdbdb; + padding-top: 1rem; + padding-bottom: 1rem; } + @media screen and (max-width: 1055px) { + #documenter .docs-main .docs-footer { + padding-left: 1rem; + padding-right: 1rem; } } + #documenter .docs-main .docs-footer .docs-footer-nextpage, #documenter .docs-main .docs-footer .docs-footer-prevpage { + flex-grow: 1; } + #documenter .docs-main .docs-footer .docs-footer-nextpage { + text-align: right; } + +#documenter .docs-sidebar { + display: flex; + flex-direction: column; + color: #0a0a0a; + background-color: whitesmoke; + border-right: 1px solid #dbdbdb; + padding: 0; + flex: 0 0 18rem; + z-index: 5; + font-size: 1rem; + position: fixed; + left: -18rem; + width: 18rem; + height: 100%; + transition: left 0.3s; + /* Setting up a nicer theme style for the scrollbar */ } + #documenter .docs-sidebar.visible { + left: 0; + box-shadow: 0.4rem 0rem 0.8rem #bbb; } + @media screen and (min-width: 1056px) { + #documenter .docs-sidebar.visible { + box-shadow: none; } } + @media screen and (min-width: 1056px) { + #documenter .docs-sidebar { + left: 0; + top: 0; } } + #documenter .docs-sidebar .docs-logo { + margin-top: 1rem; + padding: 0 1rem; } + #documenter .docs-sidebar .docs-logo > img { + max-height: 6rem; + margin: auto; } + #documenter .docs-sidebar .docs-package-name { + flex-shrink: 0; + font-size: 1.5rem; + font-weight: 700; + text-align: center; + white-space: nowrap; + overflow: hidden; + padding: 0.5rem 0; } + #documenter .docs-sidebar .docs-package-name .docs-autofit { + max-width: 16.2rem; } + #documenter .docs-sidebar .docs-version-selector { + border-top: 1px solid #dbdbdb; + display: none; + padding: 0.5rem; } + #documenter .docs-sidebar .docs-version-selector.visible { + display: flex; } + #documenter .docs-sidebar ul.docs-menu { + flex-grow: 1; + user-select: none; + border-top: 1px solid #dbdbdb; + padding-bottom: 1.5rem; + /* Managing collapsible submenus */ } + #documenter .docs-sidebar ul.docs-menu > li > .tocitem { + font-weight: bold; } + #documenter .docs-sidebar ul.docs-menu > li li { + font-size: 0.95rem; + margin-left: 1em; + border-left: 1px solid #dbdbdb; } + #documenter .docs-sidebar ul.docs-menu input.collapse-toggle { + display: none; } + #documenter .docs-sidebar ul.docs-menu ul.collapsed { + display: none; } + #documenter .docs-sidebar ul.docs-menu input:checked ~ ul.collapsed { + display: block; } + #documenter .docs-sidebar ul.docs-menu label.tocitem { + display: flex; } + #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-label { + flex-grow: 2; } + #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron { + display: inline-block; + font-style: normal; + font-variant: normal; + text-rendering: auto; + line-height: 1; + font-size: 0.75rem; + margin-left: 1rem; + margin-top: auto; + margin-bottom: auto; } + #documenter .docs-sidebar ul.docs-menu label.tocitem .docs-chevron::before { + font-family: "Font Awesome 5 Free"; + font-weight: 900; + content: "\f054"; } + #documenter .docs-sidebar ul.docs-menu input:checked ~ label.tocitem .docs-chevron::before { + content: "\f078"; } + #documenter .docs-sidebar ul.docs-menu .tocitem { + display: block; + padding: 0.5rem 0.5rem; } + #documenter .docs-sidebar ul.docs-menu .tocitem, #documenter .docs-sidebar ul.docs-menu .tocitem:hover { + color: #0a0a0a; + background: whitesmoke; } + #documenter .docs-sidebar ul.docs-menu a.tocitem:hover, #documenter .docs-sidebar ul.docs-menu label.tocitem:hover { + color: #0a0a0a; + background-color: #ebebeb; } + #documenter .docs-sidebar ul.docs-menu li.is-active { + border-top: 1px solid #dbdbdb; + border-bottom: 1px solid #dbdbdb; + background-color: white; } + #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem, #documenter .docs-sidebar ul.docs-menu li.is-active .tocitem:hover { + background-color: white; + color: #0a0a0a; } + #documenter .docs-sidebar ul.docs-menu li.is-active ul.internal .tocitem:hover { + background-color: #ebebeb; + color: #0a0a0a; } + #documenter .docs-sidebar ul.docs-menu > li.is-active:first-child { + border-top: none; } + #documenter .docs-sidebar ul.docs-menu ul.internal { + margin: 0 0.5rem 0.5rem; + border-top: 1px solid #dbdbdb; } + #documenter .docs-sidebar ul.docs-menu ul.internal li { + font-size: 0.85rem; + border-left: none; + margin-left: 0; + margin-top: 0.5rem; } + #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem { + width: 100%; + padding: 0; } + #documenter .docs-sidebar ul.docs-menu ul.internal .tocitem::before { + content: "⚬"; + margin-right: 0.4em; } + #documenter .docs-sidebar form.docs-search { + margin: auto; + margin-top: 0.5rem; + margin-bottom: 0.5rem; } + #documenter .docs-sidebar form.docs-search > input { + width: 14.4rem; } + @media screen and (min-width: 1056px) { + #documenter .docs-sidebar ul.docs-menu { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar { + width: .3rem; + background: none; } + #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #e0e0e0; } + #documenter .docs-sidebar ul.docs-menu::-webkit-scrollbar-thumb:hover { + background: #cccccc; } } + @media screen and (max-width: 1055px) { + #documenter .docs-sidebar { + overflow-y: auto; + -webkit-overflow-scroll: touch; } + #documenter .docs-sidebar::-webkit-scrollbar { + width: .3rem; + background: none; } + #documenter .docs-sidebar::-webkit-scrollbar-thumb { + border-radius: 5px 0px 0px 5px; + background: #e0e0e0; } + #documenter .docs-sidebar::-webkit-scrollbar-thumb:hover { + background: #cccccc; } } + +#documenter .docs-main #documenter-search-info { + margin-bottom: 1rem; } + +#documenter .docs-main #documenter-search-results { + list-style-type: circle; + list-style-position: outside; } + #documenter .docs-main #documenter-search-results li { + margin-left: 2rem; } + #documenter .docs-main #documenter-search-results .docs-highlight { + background-color: yellow; } + +/* + +Original highlight.js style (c) Ivan Sagalaev + +*/ +.hljs { + display: block; + overflow-x: auto; + padding: 0.5em; + background: #F0F0F0; } + +/* Base color: saturation 0; */ +.hljs, +.hljs-subst { + color: #444; } + +.hljs-comment { + color: #888888; } + +.hljs-keyword, +.hljs-attribute, +.hljs-selector-tag, +.hljs-meta-keyword, +.hljs-doctag, +.hljs-name { + font-weight: bold; } + +/* User color: hue: 0 */ +.hljs-type, +.hljs-string, +.hljs-number, +.hljs-selector-id, +.hljs-selector-class, +.hljs-quote, +.hljs-template-tag, +.hljs-deletion { + color: #880000; } + +.hljs-title, +.hljs-section { + color: #880000; + font-weight: bold; } + +.hljs-regexp, +.hljs-symbol, +.hljs-variable, +.hljs-template-variable, +.hljs-link, +.hljs-selector-attr, +.hljs-selector-pseudo { + color: #BC6060; } + +/* Language color: hue: 90; */ +.hljs-literal { + color: #78A960; } + +.hljs-built_in, +.hljs-bullet, +.hljs-code, +.hljs-addition { + color: #397300; } + +/* Meta color: hue: 200 */ +.hljs-meta { + color: #1f7199; } + +.hljs-meta-string { + color: #4d99bf; } + +/* Misc effects */ +.hljs-emphasis { + font-style: italic; } + +.hljs-strong { + font-weight: bold; } diff --git a/v0.16.8/assets/themeswap.js b/v0.16.8/assets/themeswap.js new file mode 100644 index 00000000..d4666841 --- /dev/null +++ b/v0.16.8/assets/themeswap.js @@ -0,0 +1,42 @@ +// Small function to quickly swap out themes. Gets put into the tag.. +function set_theme_from_local_storage() { + // Browser does not support Web Storage, bail early. + if(typeof(window.localStorage) === "undefined") return; + // Get the user-picked theme from localStorage. May be `null`, which means the default + // theme. + var theme = window.localStorage.getItem("documenter-theme"); + // Initialize a few variables for the loop: + // + // - active: will contain the index of the theme that should be active. Note that there + // is no guarantee that localStorage contains sane values. If `active` stays `null` + // we either could not find the theme or it is the default (primary) theme anyway. + // Either way, we then need to stick to the primary theme. + // + // - disabled: style sheets that should be disabled (i.e. all the theme style sheets + // that are not the currently active theme) + var active = null; var disabled = []; + for (var i = 0; i < document.styleSheets.length; i++) { + var ss = document.styleSheets[i]; + // The tag of each style sheet is expected to have a data-theme-name attribute + // which must contain the name of the theme. The names in localStorage much match this. + var themename = ss.ownerNode.getAttribute("data-theme-name"); + // attribute not set => non-theme stylesheet => ignore + if(themename === null) continue; + // To distinguish the default (primary) theme, it needs to have the data-theme-primary + // attribute set. + var isprimary = (ss.ownerNode.getAttribute("data-theme-primary") !== null); + // If we find a matching theme (and it's not the default), we'll set active to non-null + if(!isprimary && themename === theme) active = i; + // Store the style sheets of inactive themes so that we could disable them + if(themename !== theme) disabled.push(ss); + } + if(active !== null) { + // If we did find an active theme, we'll (1) add the theme--$(theme) class to + document.getElementsByTagName('html')[0].className = "theme--" + theme; + // and (2) disable all the other theme stylesheets + disabled.forEach(function(ss){ + ss.disabled = true; + }); + } +} +set_theme_from_local_storage(); diff --git a/v0.16.8/dev/index.html b/v0.16.8/dev/index.html new file mode 100644 index 00000000..ea52a147 --- /dev/null +++ b/v0.16.8/dev/index.html @@ -0,0 +1,37 @@ + +Development · FastTransforms.jl

    Development Documentation

    The core of FastTransforms.jl is developed in parallel with the C library of the same name. Julia and C interoperability is enhanced by the BinaryBuilder infrastructure, which provides the user a safe and seamless experience using a package in a different language.

    Why two packages?

    Orthogonal polynomial transforms are performance-sensitive imperative tasks. Yet, many of Julia's rich and evolving language features are simply unnecessary for defining these computational routines. Moreover, rapid language changes in Julia (as compared to C) have been more than a perturbation to this repository in the past.

    The C library generates assembly for vectorized operations such as single instruction multiple data (SIMD) that is more efficient than that generated by a compiler without human intervention. It also uses OpenMP to introduce shared memory parallelism for large tasks. Finally, calling into precompiled binaries reduces the Julia package's pre-compilation and dependencies, improving the user experience. Some of these capabilities also exist in Julia, but with C there is frankly more control over performance.

    C libraries are easier to call from any other language, partly explaining why the Python package manager Spack already supports the C library through third-party efforts.

    In Julia, a parametric composite type with unrestricted type parameters is just about as big as Any. Such a type allows the Julia API to far exceed the C API in its ability to unify all of the orthogonal polynomial transforms and present them as linear operators. The mutable struct FTPlan{T, N, K}, together with AdjointFTPlan and TransposeFTPlan, are the core Julia types in this repository. Whereas T is understood to represent element type of the plan and N represents the number of leading dimensions of the array on which it operates, K is a mere enumeration which serves to distinguish the orthogonal polynomials at play. For example, FTPlan{Float64, 1, LEG2CHEB} represents the necessary pre-computations to convert 64-bit Legendre series to Chebyshev series (of the first kind). N == 1 because Chebyshev and Legendre series are naturally represented with vectors of coefficients. However, this particular plan may operate not only on vectors but also on matrices, column-by-column.

    The developer's right to build from source

    Precompiled binaries are important for users, but development in C may be greatly accelerated by coupling it with a dynamic language such as Julia. For this reason, the repository preserves the developer's right to build the C library from source by setting an environment variable to trigger the build script:

    julia> ENV["FT_BUILD_FROM_SOURCE"] = "true"
    +"true"
    +
    +(@v1.5) pkg> build FastTransforms
    +   Building FFTW ──────────→ `~/.julia/packages/FFTW/ayqyZ/deps/build.log`
    +   Building TimeZones ─────→ `~/.julia/packages/TimeZones/K98G0/deps/build.log`
    +   Building FastTransforms → `~/.julia/dev/FastTransforms/deps/build.log`
    +
    +julia> using FastTransforms
    +[ Info: Precompiling FastTransforms [057dd010-8810-581a-b7be-e3fc3b93f78c]
    +

    This lets the developer experiment with new features through ccalling into bleeding edge source code. Customizing the build script further allows the developer to track a different branch or even a fork.

    From release to release to release

    To get from a C library release to a Julia package release, the developer needs to update Yggdrasil's build_tarballs.jl script for the new version and its 256-bit SHA. On macOS, the SHA can be found by:

    shell> curl https://codeload.github.com/MikaelSlevinsky/FastTransforms/tar.gz/v0.6.2 --output FastTransforms.tar.gz
    +  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    +                                 Dload  Upload   Total   Spent    Left  Speed
    +100  168k    0  168k    0     0   429k      0 --:--:-- --:--:-- --:--:--  429k
    +
    +shell> shasum -a 256 FastTransforms.tar.gz
    +fd00befcb0c20ba962a8744a7b9139355071ee95be70420de005b7c0f6e023aa  FastTransforms.tar.gz
    +
    +shell> rm -f FastTransforms.tar.gz
    +

    Using SHA.jl, the SHA can also be found by:

    shell> curl https://codeload.github.com/MikaelSlevinsky/FastTransforms/tar.gz/v0.6.2 --output FastTransforms.tar.gz
    +  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
    +                                 Dload  Upload   Total   Spent    Left  Speed
    +100  168k    0  168k    0     0   442k      0 --:--:-- --:--:-- --:--:--  443k
    +
    +julia> using SHA
    +
    +julia> open("FastTransforms.tar.gz") do f
    +           bytes2hex(sha256(f))
    +       end
    +"fd00befcb0c20ba962a8744a7b9139355071ee95be70420de005b7c0f6e023aa"
    +
    +shell> rm -f FastTransforms.tar.gz
    +

    Then we wait for the friendly folks at JuliaPackaging to merge the pull request to Yggdrasil, triggering a new release of the FastTransforms_jll.jl meta package that stores all precompiled binaries. With this release, we update the FastTransforms.jl Project.toml to point to the latest release and register the new version.

    Since development of Yggdrasil is quite rapid, a fork may easily become stale. Git permits the developer to forcibly make a master branch on a fork even with upstream master:

    git fetch upstream
    +git checkout master
    +git reset --hard upstream/master
    +git push origin master --force
    diff --git a/v0.16.8/generated/annulus.html b/v0.16.8/generated/annulus.html new file mode 100644 index 00000000..d5f0f812 --- /dev/null +++ b/v0.16.8/generated/annulus.html @@ -0,0 +1,2709 @@ +
    + diff --git a/v0.16.8/generated/annulus/index.html b/v0.16.8/generated/annulus/index.html new file mode 100644 index 00000000..d24511bd --- /dev/null +++ b/v0.16.8/generated/annulus/index.html @@ -0,0 +1,38 @@ + +Integration on an annulus · FastTransforms.jl

    Integration on an annulus

    In this example, we explore integration of the function:

    \[ f(x,y) = \frac{x^3}{x^2+y^2-\frac{1}{4}},\]

    over the annulus defined by $\{(r,\theta) : \rho < r < 1, 0 < \theta < 2\pi\}$ with parameter $\rho = \frac{2}{3}$. We will calculate the integral:

    \[ \int_0^{2\pi}\int_{\frac{2}{3}}^1 f(r\cos\theta,r\sin\theta)^2r{\rm\,d}r{\rm\,d}\theta,\]

    by analyzing the function in an annulus polynomial series. We analyze the function on an $N\times M$ tensor product grid defined by:

    \[\begin{aligned} +r_n & = \sqrt{\cos^2\left[(n+\tfrac{1}{2})\pi/2N\right] + \rho^2 \sin^2\left[(n+\tfrac{1}{2})\pi/2N\right]},\quad{\rm for}\quad 0\le n < N,\quad{\rm and}\\ +\theta_m & = 2\pi m/M,\quad{\rm for}\quad 0\le m < M; +\end{aligned}\]

    we convert the function samples to Chebyshev×Fourier coefficients using plan_annulus_analysis; and finally, we transform the Chebyshev×Fourier coefficients to annulus polynomial coefficients using plan_ann2cxf.

    For the storage pattern of the arrays, please consult the documentation.

    using FastTransforms, LinearAlgebra, Plots
    +const GENFIGS = joinpath(pkgdir(FastTransforms), "docs/src/generated")
    +!isdir(GENFIGS) && mkdir(GENFIGS)
    +plotlyjs()
    Plots.PlotlyJSBackend()

    Our function $f$ on the annulus:

    f = (x,y) -> x^3/(x^2+y^2-1/4)
    #1 (generic function with 1 method)

    The annulus polynomial degree:

    N = 8
    +M = 4N-3
    29

    The annulus inner radius:

    ρ = 2/3
    0.6666666666666666

    The radial grid:

    r = [begin t = (N-n-0.5)/(2N); ct = sinpi(t); st = cospi(t); sqrt(ct^2+ρ^2*st^2) end for n in 0:N-1]
    8-element Vector{Float64}:
    + 0.9973277184004194
    + 0.9763124517373388
    + 0.9362410410518701
    + 0.8811435628419545
    + 0.8173313074308551
    + 0.7535895152498838
    + 0.7008983100472356
    + 0.6706577864713554

    The angular grid (mod $\pi$):

    θ = (0:M-1)*2/M
    0.0:0.06896551724137931:1.9310344827586206

    On the mapped tensor product grid, our function samples are:

    F = [f(r*cospi(θ), r*sinpi(θ)) for r in r, θ in θ]
    8×29 Matrix{Float64}:
    + 1.33215  1.24089  0.995869  0.672118  0.361447  0.136908  0.0255072  0.000211389  -0.00564085  -0.0675532  -0.235438  -0.509748  -0.838068  -1.13371  -1.30886  -1.30886  -1.13371  -0.838068  -0.509748  -0.235438  -0.0675532  -0.00564085  0.000211389  0.0255072  0.136908  0.361447  0.672118  0.995869  1.24089
    + 1.32342  1.23275  0.989337  0.66771   0.359076  0.13601   0.0253399  0.000210003  -0.00560385  -0.0671101  -0.233894  -0.506405  -0.832572  -1.12628  -1.30028  -1.30028  -1.12628  -0.832572  -0.506405  -0.233894  -0.0671101  -0.00560385  0.000210003  0.0253399  0.13601   0.359076  0.66771   0.989337  1.23275
    + 1.30981  1.22008  0.979168  0.660847  0.355385  0.134612  0.0250795  0.000207844  -0.00554625  -0.0664203  -0.23149   -0.5012    -0.824014  -1.1147   -1.28691  -1.28691  -1.1147   -0.824014  -0.5012    -0.23149   -0.0664203  -0.00554625  0.000207844  0.0250795  0.134612  0.355385  0.660847  0.979168  1.22008
    + 1.29961  1.21057  0.97154   0.655698  0.352617  0.133563  0.0248841  0.000206225  -0.00550305  -0.0659028  -0.229687  -0.497295  -0.817594  -1.10601  -1.27689  -1.27689  -1.10601  -0.817594  -0.497295  -0.229687  -0.0659028  -0.00550305  0.000206225  0.0248841  0.133563  0.352617  0.655698  0.97154   1.21057
    + 1.30613  1.21665  0.976415  0.658989  0.354386  0.134233  0.025009   0.00020726   -0.00553066  -0.0662336  -0.230839  -0.499791  -0.821697  -1.11156  -1.28329  -1.28329  -1.11156  -0.821697  -0.499791  -0.230839  -0.0662336  -0.00553066  0.00020726   0.025009   0.134233  0.354386  0.658989  0.976415  1.21665
    + 1.34623  1.25399  1.00639   0.679218  0.365265  0.138354  0.0257767  0.000213622  -0.00570044  -0.0682668  -0.237925  -0.515133  -0.846922  -1.14569  -1.32269  -1.32269  -1.14569  -0.846922  -0.515133  -0.237925  -0.0682668  -0.00570044  0.000213622  0.0257767  0.138354  0.365265  0.679218  1.00639   1.25399
    + 1.42719  1.32941  1.06692   0.720069  0.387234  0.146675  0.027327   0.00022647   -0.00604329  -0.0723726  -0.252235  -0.546115  -0.897858  -1.21459  -1.40224  -1.40224  -1.21459  -0.897858  -0.546115  -0.252235  -0.0723726  -0.00604329  0.00022647   0.027327   0.146675  0.387234  0.720069  1.06692   1.32941
    + 1.5099   1.40645  1.12874   0.761795  0.409673  0.155175  0.0289105  0.000239594  -0.00639348  -0.0765664  -0.266852  -0.577762  -0.949887  -1.28498  -1.4835   -1.4835   -1.28498  -0.949887  -0.577762  -0.266852  -0.0765664  -0.00639348  0.000239594  0.0289105  0.155175  0.409673  0.761795  1.12874   1.40645

    We superpose a surface plot of $f$ on top of the grid:

    X = [r*cospi(θ) for r in r, θ in θ]
    +Y = [r*sinpi(θ) for r in r, θ in θ]
    +scatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:red)
    +surface!(X, Y, F; legend=false, xlabel="x", ylabel="y", zlabel="f")
    +savefig(joinpath(GENFIGS, "annulus.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/annulus.html"

    We precompute an Annulus–Chebyshev×Fourier plan:

    α, β, γ = 0, 0, 0
    +P = plan_ann2cxf(F, α, β, γ, ρ)
    FastTransforms Annulus--Chebyshev×Fourier plan for 8×29-element array of Float64

    And an FFTW Chebyshev×Fourier analysis plan on the annulus:

    PA = plan_annulus_analysis(F, ρ)
    FastTransforms plan for FFTW Chebyshev×Fourier analysis on the annulus for 8×29-element array of Float64

    Its annulus coefficients are:

    U = P\(PA*F)
    8×29 Matrix{Float64}:
    + -1.22671e-17   2.92896e-17   0.926725      2.04896e-17  -7.722e-18     6.1888e-17    0.29418      -1.81602e-17   4.69005e-18   1.20498e-17   6.76339e-18   1.11857e-17  -1.99742e-17  -6.13512e-19  -4.02194e-17   6.23458e-17   3.04077e-17   3.12444e-17  -1.0558e-17    3.83711e-17   8.17668e-17  -1.08653e-17   5.99963e-17  -1.56088e-17  -4.23425e-17  -8.2245e-18    4.68313e-17  -3.30615e-17  -4.80225e-17
    + -5.57014e-18  -2.254e-18    -0.124037     -5.91733e-18   3.70137e-17  -1.89099e-17  -0.0976704     1.024e-18    -2.07932e-18  -9.77876e-18   1.98227e-17  -1.04302e-17   7.22713e-18  -5.50321e-18   4.99656e-17  -4.01755e-17  -1.81639e-17  -2.52689e-17   1.66849e-17  -2.67731e-17  -6.74982e-17   5.4336e-18   -6.11451e-17   1.0013e-17    2.95944e-17   7.96412e-18  -5.49385e-17   2.50418e-17   4.69813e-17
    + -2.33965e-17   1.12715e-18   0.042116      9.94105e-19  -1.44328e-17   9.15449e-18   0.0336531     3.6262e-19    1.34875e-17   7.39131e-18  -7.1196e-18    6.73552e-18   6.8403e-18    1.31493e-18  -1.89046e-17   2.30498e-17   5.34226e-18   1.03454e-17  -1.40577e-17   1.67754e-17   1.98659e-17  -8.57e-18      3.84689e-17  -1.14124e-17  -4.16632e-17  -5.45601e-18   3.66387e-17  -2.14064e-17  -4.31795e-17
    +  2.21067e-18   4.00391e-18  -0.0139459     3.14722e-18  -1.97145e-18   5.82968e-18  -0.011224      6.26797e-18   2.18831e-17   6.88701e-18  -7.02346e-18   7.40166e-18  -2.2024e-18    9.55486e-18   4.62749e-18   2.9721e-18   -6.75798e-18   3.40533e-18   1.03823e-17   2.2961e-19   -1.52373e-17   7.73146e-18  -1.96827e-17   5.91455e-18   1.30222e-17   3.25478e-18  -1.53646e-17   8.18752e-18   6.59625e-18
    + -1.96208e-17   7.71573e-19   0.00458845   -2.03822e-18   1.86344e-17   3.19547e-18   0.00369818   -1.86152e-18  -3.29302e-18   8.11326e-19  -4.97022e-21  -1.77139e-18   1.47439e-18  -6.8012e-18    2.63512e-18  -4.24712e-18   5.7017e-18   -7.2048e-18    7.38785e-18  -4.72462e-18   1.59607e-17  -5.27319e-18   1.44348e-17  -1.67467e-18  -4.59916e-19   8.00009e-19   5.99498e-18  -3.34661e-18  -2.03062e-18
    +  1.3498e-17    1.71852e-19  -0.00150441    7.97602e-19  -9.38596e-18  -3.21855e-18  -0.00121128   -4.47164e-19  -1.76175e-17  -4.83245e-18   6.52956e-18  -5.47568e-18   5.27089e-18  -2.9175e-18    5.23985e-18  -5.70705e-18  -3.147e-18    -3.85137e-19  -3.05417e-18  -5.31797e-19  -4.09175e-18   3.59849e-18   4.48894e-18   3.4972e-18    1.74387e-18   1.53405e-18   8.8938e-18    4.33464e-18   5.85819e-18
    +  5.24011e-17  -4.20047e-18   0.000517281  -2.62968e-18   1.29799e-17  -9.06153e-18   0.000424358  -4.57265e-18   2.49476e-18  -6.80939e-18  -6.07451e-18  -2.399e-18     1.03771e-18   6.6648e-19   -1.96393e-17   1.69496e-20  -1.42128e-18   5.37575e-18  -1.16727e-17   3.57204e-19  -7.01129e-18   2.48838e-18  -1.17285e-17   4.39475e-19   5.83824e-18  -1.63971e-18  -3.91773e-19   1.39577e-18   1.02075e-17
    + -8.95802e-18   6.39707e-19  -0.000162126   3.55753e-18   7.44168e-18   4.28763e-18  -5.40419e-5    5.16629e-18   8.97839e-18   5.4486e-18    3.6724e-18    4.64571e-18  -1.67417e-18   6.04678e-19   5.73104e-18  -2.13942e-18  -1.44968e-17  -3.57457e-18   1.24167e-17  -5.67995e-18  -1.09651e-17  -4.98049e-18   6.22788e-18  -2.89642e-18  -1.52622e-17  -2.30036e-18   1.82749e-18  -1.26575e-18  -9.91876e-18

    The annulus coefficients are useful for integration. The integral of $[f(x,y)]^2$ over the annulus is approximately the square of the 2-norm of the coefficients:

    norm(U)^2, 5π/8*(1675/4536+9*log(3)/32-3*log(7)/32)
    (0.9735516844404257, 0.973547572736036)

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/automaticdifferentiation/index.html b/v0.16.8/generated/automaticdifferentiation/index.html new file mode 100644 index 00000000..fee33542 --- /dev/null +++ b/v0.16.8/generated/automaticdifferentiation/index.html @@ -0,0 +1,19 @@ + +Automatic differentiation through spherical harmonic transforms · FastTransforms.jl

    Automatic differentiation through spherical harmonic transforms

    This example finds a positive value of $\lambda$ in:

    \[f(r) = \sin[\lambda (k\cdot r)],\]

    for some $k,r\in\mathbb{S}^2$ such that $\int_{\mathbb{S}^2} f^2 {\rm\,d}\Omega = 1$. We do this by using derivative information through:

    \[\dfrac{\partial f}{\partial \lambda} = (k\cdot r) \cos[\lambda (k\cdot r)].\]
    using FastTransforms, LinearAlgebra

    The colatitudinal grid (mod $\pi$):

    N = 15
    +θ = (0.5:N-0.5)/N
    0.03333333333333333:0.06666666666666667:0.9666666666666667

    The longitudinal grid (mod $\pi$):

    M = 2*N-1
    +φ = (0:M-1)*2/M
    0.0:0.06896551724137931:1.9310344827586206

    We precompute a spherical harmonic–Fourier plan:

    P = plan_sph2fourier(Float64, N)
    FastTransforms Spherical harmonic--Fourier plan for 15×29-element array of Float64

    And an FFTW Fourier analysis plan on $\mathbb{S}^2$:

    PA = plan_sph_analysis(Float64, N, M)
    FastTransforms plan for FFTW Fourier analysis on the sphere for 15×29-element array of Float64

    Our choice of $k$ and angular parametrization of $r$:

    k = [2/7, 3/7, 6/7]
    +r = (θ,φ) -> [sinpi(θ)*cospi(φ), sinpi(θ)*sinpi(φ), cospi(θ)]
    #1 (generic function with 1 method)

    Our initial guess for $\lambda$:

    λ = 1.0
    1.0

    Then we run Newton iteration and grab an espresso:

    for _ in 1:7
    +    F = [sin(λ*(k⋅r(θ,φ))) for θ in θ, φ in φ]
    +    Fλ = [(k⋅r(θ,φ))*cos(λ*(k⋅r(θ,φ))) for θ in θ, φ in φ]
    +    U = P\(PA*F)
    +    Uλ = P\(PA*Fλ)
    +    global λ = λ - (norm(U)^2-1)/(2*sum(U.*Uλ))
    +    println("λ: $(rpad(λ, 18)) and the 2-norm: $(rpad(norm(U), 18))")
    +end
    λ: 0.5565017029393282 and the 2-norm: 1.8510924318185522
    +λ: 0.5031571262839712 and the 2-norm: 1.104184591487036 
    +λ: 0.5010418434316171 and the 2-norm: 1.0040147091934828
    +λ: 0.5010383094266806 and the 2-norm: 1.000006698425886 
    +λ: 0.5010383094167955 and the 2-norm: 1.0000000000187363
    +λ: 0.5010383094167954 and the 2-norm: 1.0000000000000002
    +λ: 0.5010383094167955 and the 2-norm: 0.9999999999999999
    +

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/chebyshev/index.html b/v0.16.8/generated/chebyshev/index.html new file mode 100644 index 00000000..3a55e3c9 --- /dev/null +++ b/v0.16.8/generated/chebyshev/index.html @@ -0,0 +1,19 @@ + +Chebyshev transform · FastTransforms.jl

    Chebyshev transform

    This demonstrates the Chebyshev transform and inverse transform, explaining precisely the normalization and points

    using FastTransforms
    +n = 20
    20

    First kind points $\to$ first kind polynomials

    p_1 = chebyshevpoints(Float64, n, Val(1))
    +f = exp.(p_1)
    +f̌ = chebyshevtransform(f, Val(1))
    +f̃ = x -> [cos(k*acos(x)) for k=0:n-1]' * f̌
    +f̃(0.1) ≈ exp(0.1)
    true

    First kind polynomials $\to$ first kind points

    ichebyshevtransform(f̌, Val(1)) ≈ exp.(p_1)
    true

    Second kind points $\to$ first kind polynomials

    p_2 = chebyshevpoints(Float64, n, Val(2))
    +f = exp.(p_2)
    +f̌ = chebyshevtransform(f, Val(2))
    +f̃ = x -> [cos(k*acos(x)) for k=0:n-1]' * f̌
    +f̃(0.1) ≈ exp(0.1)
    true

    First kind polynomials $\to$ second kind points

    ichebyshevtransform(f̌, Val(2)) ≈ exp.(p_2)
    true

    First kind points $\to$ second kind polynomials

    p_1 = chebyshevpoints(Float64, n, Val(1))
    +f = exp.(p_1)
    +f̌ = chebyshevutransform(f, Val(1))
    +f̃ = x -> [sin((k+1)*acos(x))/sin(acos(x)) for k=0:n-1]' * f̌
    +f̃(0.1) ≈ exp(0.1)
    true

    Second kind polynomials $\to$ first kind points

    ichebyshevutransform(f̌, Val(1)) ≈ exp.(p_1)
    true

    Second kind points $\to$ second kind polynomials

    p_2 = chebyshevpoints(Float64, n, Val(2))[2:n-1]
    +f = exp.(p_2)
    +f̌ = chebyshevutransform(f, Val(2))
    +f̃ = x -> [sin((k+1)*acos(x))/sin(acos(x)) for k=0:n-3]' * f̌
    +f̃(0.1) ≈ exp(0.1)
    true

    Second kind polynomials $\to$ second kind points

    ichebyshevutransform(f̌, Val(2)) ≈ exp.(p_2)
    true

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/disk/index.html b/v0.16.8/generated/disk/index.html new file mode 100644 index 00000000..4d961de8 --- /dev/null +++ b/v0.16.8/generated/disk/index.html @@ -0,0 +1,189 @@ + +Holomorphic integration on the unit disk · FastTransforms.jl

    Holomorphic integration on the unit disk

    In this example, we explore integration of a harmonic function:

    \[ f(x,y) = \frac{x^2-y^2+1}{(x^2-y^2+1)^2+(2xy+1)^2},\]

    over the unit disk. In this case, we know from complex analysis that the integral of a holomorphic function is equal to $\pi \times f(0,0)$. We analyze the function on an $N\times M$ tensor product grid defined by:

    \[\begin{aligned} +r_n & = \cos\left[(n+\tfrac{1}{2})\pi/2N\right],\quad{\rm for}\quad 0\le n < N,\quad{\rm and}\\ +\theta_m & = 2\pi m/M,\quad{\rm for}\quad 0\le m < M; +\end{aligned}\]

    we convert the function samples to Chebyshev×Fourier coefficients using plan_disk_analysis; and finally, we transform the Chebyshev×Fourier coefficients to Zernike polynomial coefficients using plan_disk2cxf.

    For the storage pattern of the arrays, please consult the documentation.

    using FastTransforms, LinearAlgebra, Plots
    +const GENFIGS = joinpath(pkgdir(FastTransforms), "docs/src/generated")
    +!isdir(GENFIGS) && mkdir(GENFIGS)
    +plotlyjs()
    Plots.PlotlyJSBackend()

    Our function $f$ on the disk:

    f = (x,y) -> (x^2-y^2+1)/((x^2-y^2+1)^2+(2x*y+1)^2)
    #1 (generic function with 1 method)

    The Zernike polynomial degree:

    N = 15
    +M = 4N-3
    57

    The radial grid:

    r = [sinpi((N-n-0.5)/(2N)) for n in 0:N-1]
    15-element Vector{Float64}:
    + 0.9986295347545738
    + 0.9876883405951378
    + 0.9659258262890683
    + 0.9335804264972017
    + 0.8910065241883678
    + 0.838670567945424
    + 0.7771459614569709
    + 0.7071067811865475
    + 0.6293203910498375
    + 0.5446390350150271
    + 0.45399049973954675
    + 0.35836794954530027
    + 0.25881904510252074
    + 0.15643446504023087
    + 0.052335956242943835

    The angular grid (mod $\pi$):

    θ = (0:M-1)*2/M
    0.0:0.03508771929824561:1.9649122807017543

    On the mapped tensor product grid, our function samples are:

    F = [f(r*cospi(θ), r*sinpi(θ)) for r in r, θ in θ]
    15×57 Matrix{Float64}:
    + 0.400329  0.36696   0.336645  0.308443  0.281619  0.25557   0.22977   0.203733  0.176996  0.149111  0.119689  0.0885456  0.0561428  0.0249494  0.00382185  0.0233794  0.192001  0.82415   1.84146   1.85719   1.41721   1.08969   0.879424  0.739148  0.639757  0.565314  0.506844  0.459027  0.418538  0.383193  0.351486  0.32233   0.294899  0.268532  0.24267   0.216811  0.190481  0.163223  0.134611  0.104328  0.0724218  0.0400826  0.0120549  0.00476215  0.075801  0.422295  1.37342   1.98551   1.63411   1.23553   0.973247  0.802761  0.685557  0.600091  0.534475  0.481845  0.438023
    + 0.402946  0.369531  0.339215  0.31106   0.284337  0.258454  0.232899  0.207211  0.180965  0.153777  0.125364  0.0957188  0.0656309  0.0381784  0.0233592   0.0535023  0.23469   0.838287  1.74173   1.78814   1.39763   1.08662   0.881061  0.742049  0.642889  0.56837   0.509752  0.461793  0.421195  0.385781  0.35405   0.324917  0.297559  0.271324  0.245665  0.220098  0.194183  0.16751   0.139734  0.110675  0.0806214  0.0512076  0.0280171  0.0289628   0.112787  0.46247   1.32844   1.88443   1.59532   1.22668   0.973254  0.805245  0.688639  0.603204  0.53746   0.48468   0.44073
    + 0.408107  0.374635  0.344345  0.316308  0.289809  0.264275  0.239228  0.214259  0.189018  0.16325   0.136874  0.110236   0.0847405  0.0645701  0.0616188   0.110283   0.308499  0.852043  1.57431   1.65952   1.35481   1.07725   0.882418  0.74674   0.648492  0.574076  0.515313  0.467166  0.426411  0.390904  0.359157  0.330094  0.302904  0.276953  0.251718  0.226757  0.201691  0.176211  0.150131  0.123537  0.0971828  0.0735249  0.059617   0.0756242   0.180187  0.525812  1.24639   1.70902   1.5172    1.20513   0.970751  0.808756  0.693948  0.608911  0.543108  0.490146  0.446017
    + 0.415648  0.382189  0.352011  0.324209  0.298096  0.273134  0.248897  0.225051  0.201367  0.177773  0.154485  0.132336   0.113545   0.103633   0.116351    0.186253   0.393918  0.849832  1.38148   1.49082   1.28527   1.05638   0.879972  0.751049  0.655222  0.581588  0.52299   0.474802  0.433974  0.398441  0.366752  0.33786   0.310977  0.2855    0.260948  0.236942  0.213198  0.189555  0.166059  0.143176  0.122289   0.106906   0.105724   0.140558    0.26534   0.588182  1.1413    1.4992    1.40336   1.16548   0.961348  0.810521  0.699782  0.616152  0.550745  0.497814  0.453615
    + 0.425289  0.392035  0.362148  0.334773  0.309271  0.285158  0.262081  0.239809  0.218269  0.197619  0.178435  0.162105   0.151689   0.153844   0.183081    0.270225   0.470832  0.826183  1.19548   1.30726   1.19053   1.01926   0.869418  0.751971  0.661094  0.589601  0.531924  0.48414   0.443527  0.408177  0.376729  0.348191  0.321822  0.297066  0.273507  0.250853  0.228945  0.20781   0.187783  0.169776  0.15586    0.150546   0.163666   0.216532    0.352149  0.631169  1.0287    1.29056   1.26502   1.10458   0.940232  0.806897  0.703689  0.623316  0.559314  0.506989  0.463072
    + 0.436597  0.403911  0.374626  0.347975  0.323392  0.300472  0.278957  0.258746  0.239942  0.222959  0.208736  0.199165   0.19792    0.212076   0.254963    0.349717   0.526163  0.785631  1.03278   1.13127   1.07899   0.964458  0.847102  0.746235  0.663661  0.596384  0.540917  0.494365  0.454527  0.419771  0.388896  0.361011  0.335454  0.311744  0.289549  0.268688  0.249152  0.23118   0.215414  0.203195  0.197165   0.20243    0.228745   0.293986    0.426183  0.648643  0.920719  1.10477   1.11859   1.02459   0.904279  0.794291  0.702811  0.628337  0.567372  0.51668   0.47372
    + 0.448951  0.417414  0.389209  0.363706  0.340449  0.319139  0.299632  0.28197   0.266434  0.253672  0.244908  0.242329   0.249735   0.273549   0.32399     0.414856   0.556748  0.73654   0.898135  0.976631  0.96284   0.895308  0.811683  0.731268  0.660475  0.599969  0.54849   0.504405  0.466222  0.432719  0.402938  0.376152  0.351819  0.329563  0.309162  0.29056   0.273906  0.259647  0.248682  0.242655  0.244458   0.259053   0.294635   0.36347     0.47935   0.644419  0.824368  0.950029  0.979333  0.933025  0.853895  0.770471  0.694553  0.628995  0.573203  0.525623  0.484659
    + 0.461538  0.431966  0.405508  0.381723  0.360304  0.341079  0.324035  0.309345  0.297441  0.289121  0.285721  0.289387   0.303423   0.332641   0.383252    0.461146   0.566675  0.686278  0.79016   0.848441  0.853234  0.818825  0.765072  0.706268  0.649804  0.598546  0.553073  0.513009  0.477665  0.446331  0.418379  0.393304  0.370732  0.350422  0.332279  0.316375  0.303005  0.292765  0.286694  0.286496  0.294846   0.315771   0.354858   0.418544    0.510882  0.626287  0.742362  0.826153  0.856971  0.839629  0.793294  0.735701  0.677489  0.623454  0.575098  0.532405  0.494793
    + 0.473406  0.446815  0.422943  0.401579  0.382592  0.365953  0.35177   0.340321  0.332115  0.327962  0.329086  0.337225   0.354715   0.384367   0.428886    0.489368   0.562769  0.639621  0.705232  0.746138  0.75726   0.742897  0.711918  0.672777  0.631361  0.591026  0.553364  0.51894   0.487799  0.459755  0.434554  0.411958  0.391793  0.373976  0.358542  0.345678  0.33577   0.329466  0.327769  0.332147  0.344633   0.367837   0.404636   0.457191    0.524883  0.601613  0.674803  0.729338  0.755332  0.752747  0.728907  0.692933  0.652092  0.610928  0.571808  0.535736  0.502968
    + 0.483592  0.461074  0.44072   0.422552  0.406616  0.393018  0.381958  0.373761  0.368913  0.368096  0.372211  0.382374   0.399829   0.425704   0.460521    0.503436   0.551426  0.599039  0.639428  0.66664   0.677821  0.673802  0.657934  0.634338  0.606657  0.577562  0.548776  0.521299  0.49565   0.472064  0.450625  0.431361  0.4143    0.399515  0.387153  0.377475  0.370881  0.36795   0.369472  0.37646   0.390112   0.411659   0.442005   0.481097    0.527085  0.575698  0.62056   0.654949  0.674261  0.67754   0.667091  0.646854  0.620817  0.592158  0.563054  0.534833  0.508227
    + 0.491347  0.47384   0.457857  0.443596  0.43124   0.420991  0.413088  0.407835  0.405607  0.406854  0.41208   0.421791   0.436393   0.456016   0.480289    0.508089   0.537411  0.565495  0.589313  0.606297  0.614986  0.615273  0.608182  0.595383  0.578689  0.55973   0.539808  0.519875  0.500596  0.482417  0.465645  0.450499  0.437168  0.425839  0.416729  0.410109  0.406316  0.405766  0.408937  0.416345  0.428463   0.445585   0.467622   0.493853    0.522719  0.551798  0.578117  0.598782  0.611716  0.616137  0.612554  0.602381  0.587414  0.569403  0.549822  0.529795  0.510121
    + 0.496372  0.484362  0.473263  0.463344  0.454844  0.447987  0.442992  0.440085  0.43949   0.441422  0.446059  0.453506   0.463734   0.476516   0.491364    0.507491   0.523832  0.539138  0.552155  0.561824  0.567461  0.568845  0.566188  0.560036  0.551118  0.54022   0.528088  0.515374  0.502621  0.490272  0.478681  0.468141  0.458903  0.451197  0.445243  0.441264  0.439485  0.440128  0.443394  0.44943   0.458281   0.469829   0.483724   0.499329    0.51571   0.531695  0.546006  0.557461  0.565171  0.568681  0.567994  0.563506  0.555873  0.545868  0.534265  0.521767  0.508973
    + 0.498951  0.492196  0.485875  0.480211  0.475399  0.471612  0.469002  0.467693  0.467782  0.469331  0.472348  0.476782   0.482503   0.489293   0.496841    0.504746   0.512549  0.519761  0.525915  0.530618  0.533588  0.534687  0.533917  0.531408  0.527389  0.522155  0.516029  0.509344  0.502414  0.495534  0.488967  0.482948  0.477687  0.473367  0.470152  0.468178  0.467558  0.468372  0.470657  0.474394  0.479493   0.485782   0.492995   0.500776    0.508691  0.516259  0.522997  0.528468  0.532332  0.534375  0.53453   0.532867  0.52957   0.524904  0.519183  0.512736  0.505891
    + 0.499854  0.497256  0.494799  0.492592  0.490727  0.489288  0.488339  0.487926  0.488075  0.488789  0.490046  0.491797   0.493969   0.496462   0.499157    0.501918   0.5046    0.507061  0.509167  0.510805  0.511889  0.512367  0.512222  0.51147   0.510163  0.508376  0.506206  0.503765  0.501171  0.498544  0.496003  0.493658  0.491611  0.48995   0.488749  0.488063  0.48793   0.488363  0.489352  0.490864  0.492836   0.495182   0.497793   0.500538    0.503278  0.505867  0.508166  0.51005   0.51142   0.512206  0.512372  0.511919  0.510882  0.509324  0.507332  0.505012  0.502479
    + 0.499998  0.4997    0.499416  0.49916   0.498945  0.498781  0.498675  0.498633  0.498657  0.498746  0.498895  0.499098   0.499346   0.499625   0.499922    0.500224   0.500515  0.500781  0.50101   0.501189  0.50131   0.501367  0.501358  0.501283  0.501146  0.500953  0.500715  0.500442  0.500148  0.499848  0.499555  0.499284  0.499047  0.498856  0.49872   0.498646  0.498637  0.498693  0.498813  0.498991  0.499217   0.499482   0.499772   0.500074    0.500372  0.500652  0.500901  0.501106  0.501257  0.501347  0.501371  0.501328  0.501222  0.501056  0.500839  0.500582  0.500297

    We superpose a surface plot of $f$ on top of the grid:

    X = [r*cospi(θ) for r in r, θ in θ]
    +Y = [r*sinpi(θ) for r in r, θ in θ]
    +scatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:red)
    +surface!(X, Y, F; legend=false, xlabel="x", ylabel="y", zlabel="f")
    +savefig(joinpath(GENFIGS, "zernike.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/zernike.html"

    We precompute a (generalized) Zernike–Chebyshev×Fourier plan:

    α, β = 0, 0
    +P = plan_disk2cxf(F, α, β)
    FastTransforms Zernike--Chebyshev×Fourier plan for 15×57-element array of Float64

    And an FFTW Chebyshev×Fourier analysis plan on the disk:

    PA = plan_disk_analysis(F)
    FastTransforms plan for FFTW Chebyshev×Fourier analysis on the disk for 15×57-element array of Float64

    Its Zernike coefficients are:

    U = P\(PA*F)
    15×57 Matrix{Float64}:
    +  0.886227     3.60709e-6  -1.8336e-6   -0.361801     3.60559e-11  -1.17688e-6   6.36308e-6   0.140125     -0.140125     -6.35177e-6   -7.70959e-6  1.89039e-10  0.118427     1.54098e-5  7.4099e-7    -0.0522214    -0.0522214    -1.71856e-5  1.64002e-5   0.0472361    -5.20197e-10  4.08953e-7   -3.63399e-5  -0.0217254    0.0217254    3.88099e-5   3.92308e-5  -1.24018e-9   -0.0202253    -8.31939e-5  -2.14893e-7   0.00949917    0.00949917   8.82306e-5   -8.80125e-5   -0.00898531   2.80468e-9   -1.10226e-7   0.000185657   0.00427337   -0.00427337   -0.000194603  -0.000194714  6.17793e-9   0.00408335   0.000406568  5.5777e-8    -0.00195832   -0.0019583    -0.000423167  0.000423111  0.00188439   -1.33894e-8   2.79926e-8   -0.000878195  -0.00090912   0.000909147
    +  1.04025e-17  4.60728e-6  -2.33805e-6  -4.33e-11     4.33e-11     -1.22625e-6   6.53675e-6   3.57706e-17  -1.46429e-10  -5.65109e-6   -6.90982e-6  1.84987e-10  1.84987e-10  1.21904e-5  6.29629e-7   -4.19031e-10  -2.48746e-18  -1.21069e-5  1.14861e-5   4.50193e-10  -4.50193e-10  3.03358e-7   -2.25713e-5   9.64739e-18  9.39347e-10  2.10848e-5   2.13797e-5  -9.62216e-10  -9.62216e-10  -3.90991e-5  -1.42777e-7   1.94644e-9    2.52523e-17  3.51181e-5   -3.49801e-5   -1.94972e-9   1.94972e-9   -6.65696e-8   6.06806e-5    1.62452e-17  -3.87473e-9   -4.9981e-5    -5.00452e-5   3.82278e-9   3.82278e-9   7.63297e-5   3.09339e-8   -7.49277e-9    3.07275e-19  -5.04164e-5   5.03866e-5   7.2952e-9    -7.2952e-9    1.38574e-8   -4.45519e-5    2.75116e-17  1.36316e-8
    +  4.31967e-17  4.76065e-6  -2.40899e-6  -4.59639e-11  4.59638e-11  -1.12866e-6   5.89804e-6  -4.92893e-18  -1.43511e-10  -4.51295e-6   -5.57325e-6  1.70088e-10  1.70088e-10  8.73447e-6  4.92668e-7   -3.63967e-10  -1.96912e-17  -7.74165e-6  7.28634e-6   3.70513e-10  -3.70513e-10  2.09854e-7   -1.26794e-5  -1.115e-17    7.33255e-10  1.02945e-5   1.04878e-5  -7.12279e-10  -7.12279e-10  -1.63841e-5  -8.90173e-8   1.36506e-9   -1.79643e-17  1.23112e-5   -1.22292e-5   -1.29344e-9   1.29344e-9   -3.78749e-8   1.71213e-5   -1.31822e-17  -2.42653e-9   -1.07347e-5   -1.07697e-5   2.25423e-9   2.25423e-9   1.13275e-5   1.62097e-8   -4.14789e-9    4.72154e-18  -4.10621e-6   4.09201e-6   3.57033e-9   -3.57033e-9   7.2136e-9    -3.89728e-6    1.18842e-17  7.03625e-9
    + -8.6759e-18   4.3306e-6   -2.18254e-6  -4.50915e-11  4.50915e-11  -9.41975e-7   4.79767e-6   9.95472e-18  -1.3221e-10   -3.27045e-6   -4.09126e-6  1.48194e-10  1.48194e-10  5.69834e-6  3.57019e-7   -3.00851e-10   2.82407e-18  -4.50516e-6  4.19432e-6   2.90868e-10  -2.90868e-10  1.35612e-7   -6.44339e-6   7.09943e-18  5.46652e-10  4.50749e-6   4.62617e-6  -5.03847e-10  -5.03847e-10  -6.09951e-6  -5.21037e-8   9.1491e-10    1.52128e-18  3.77955e-6   -3.73364e-6   -8.19854e-10  8.19854e-10  -2.03036e-8   4.12363e-6    2.08255e-17  -1.45125e-9   -1.88522e-6   -1.90324e-6   1.26862e-9   1.26862e-9   1.23872e-6   7.40728e-9   -2.01666e-9    4.52885e-18  -6.4875e-7    6.41095e-7   1.96336e-9   -1.96336e-9   3.94603e-9   -4.95856e-7    1.37158e-17  3.81545e-9
    + -1.55357e-17  3.55971e-6  -1.7846e-6   -4.1593e-11   4.1593e-11   -7.20914e-7   3.55774e-6   1.25952e-17  -1.15465e-10  -2.16169e-6   -2.74892e-6  1.22948e-10  1.22948e-10  3.3937e-6   2.40326e-7   -2.37394e-10   1.15486e-17  -2.38904e-6  2.19119e-6   2.18301e-10  -2.18301e-10  8.19355e-8   -2.95988e-6  -5.32282e-18  3.89943e-10  1.76401e-6   1.8323e-6   -3.41184e-10  -3.41184e-10  -2.0084e-6   -2.86395e-8   5.87175e-10  -4.46611e-18  1.01021e-6   -9.86038e-7   -4.97705e-10  4.97705e-10  -1.02636e-8   8.36501e-7   -1.96829e-17  -8.31421e-10  -2.51578e-7   -2.59455e-7   6.11155e-10  6.11155e-10  2.81636e-7   4.14107e-9   -1.17835e-9    5.45336e-18  -1.31206e-7   1.26866e-7   1.1332e-9    -1.1332e-9    2.26757e-9   -8.50354e-8    6.1748e-18   2.17398e-9
    +  4.5607e-17   2.67365e-6  -1.33163e-6  -3.63778e-11  3.63778e-11  -5.08751e-7   2.4183e-6   -1.79334e-18  -9.60672e-11  -1.3062e-6    -1.69561e-6  9.74399e-11  9.74399e-11  1.84711e-6  1.50509e-7   -1.79257e-10   3.76234e-18  -1.15523e-6  1.03773e-6   1.56975e-10  -1.56975e-10  4.63055e-8   -1.22747e-6   1.76766e-18  2.66772e-10  6.14181e-7   6.51026e-7  -2.21796e-10  -2.21796e-10  -5.82251e-7  -1.47961e-8   3.62177e-10   3.79631e-18  2.3447e-7    -2.22474e-7   -2.90765e-10  2.90765e-10  -4.27394e-9   1.32135e-7    3.89533e-18  -3.9572e-10   -7.37753e-8   -7.83499e-8   3.78556e-10  3.78556e-10  7.69466e-8   2.43764e-9   -7.22143e-10   5.49309e-18  -3.3267e-8    3.06793e-8   6.86748e-10  -6.86748e-10  1.36854e-9   -1.89956e-8    2.38165e-18  1.30213e-9
    +  5.17884e-18  1.84493e-6  -9.11632e-7  -3.03234e-11  3.03234e-11  -3.31998e-7   1.51086e-6  -9.81832e-20  -7.63919e-11  -7.22019e-7   -9.61716e-7  7.39635e-11  7.39635e-11  9.19025e-7  8.7759e-8    -1.29855e-10  -9.09509e-18  -5.0973e-7   4.44593e-7   1.08464e-10  -1.08464e-10  2.44943e-8   -4.5896e-7   -9.96677e-18  1.75682e-10  1.89131e-7   2.07797e-7  -1.3908e-10   -1.3908e-10   -1.48285e-7  -7.20906e-9   2.15876e-10  -5.63307e-18  4.31232e-8   -3.83843e-8   -1.35983e-10  1.35983e-10  -2.58242e-9   4.86298e-8   -5.91649e-18  -2.58784e-10  -2.49419e-8   -2.77411e-8   2.45364e-10  2.45364e-10  2.49291e-8   1.50968e-9   -4.63692e-10   5.12088e-18  -1.04761e-8   8.85511e-9   4.36633e-10  -4.36633e-10  8.66632e-10  -5.46345e-9    5.4617e-18   8.19335e-10
    + -3.03871e-17  1.17276e-6  -5.74087e-7  -2.41606e-11  2.41606e-11  -2.00616e-7   8.68671e-7  -6.96842e-19  -5.82253e-11  -3.64941e-7   -5.01985e-7  5.39205e-11  5.39205e-11  4.17975e-7  4.76625e-8   -9.05511e-11  -7.94098e-18  -2.05562e-7  1.71822e-7   7.23176e-11  -7.23176e-11  1.21586e-8   -1.5476e-7    2.76426e-18  1.11916e-10  5.11842e-8   6.01101e-8  -8.43279e-11  -8.43279e-11  -2.90142e-8  -2.68449e-9   9.8079e-11    3.48626e-18  1.93294e-8   -1.63497e-8   -9.30964e-11  9.30964e-11  -1.64272e-9   2.0359e-8    -6.43e-20     -1.75944e-10  -9.61519e-9   -1.14155e-8   1.65598e-10  1.65598e-10  9.47999e-9   9.81067e-10  -3.10521e-10  -4.22278e-18  -4.06062e-9   2.99682e-9   2.90001e-10  -2.90001e-10  5.7406e-10   -2.00747e-9   -3.75041e-19  5.39466e-10
    +  1.15904e-17  6.87558e-7  -3.32907e-7  -1.84685e-11  1.84685e-11  -1.12306e-7   4.59773e-7   1.30243e-17  -4.265e-11    -1.68481e-7   -2.41286e-7  3.78985e-11  3.78985e-11  1.73828e-7  2.4139e-8    -6.10346e-11  -3.679e-18    -7.61356e-8  5.9745e-8    4.66938e-11  -4.66938e-11  5.69883e-9   -4.73542e-8   8.93103e-19  6.84382e-11  1.00798e-8   1.31808e-8  -3.64534e-11  -3.64534e-11  -1.46721e-8  -1.7526e-9    6.92775e-11  -7.65573e-18  9.70857e-9   -7.74328e-9   -6.54378e-11  6.54379e-11  -1.09391e-9   9.61505e-9    3.11249e-19  -1.23027e-10  -4.18802e-9   -5.39773e-9   1.15147e-10  1.15147e-10  4.18575e-9   6.64834e-10  -2.1464e-10    2.95795e-18  -1.89907e-9   1.17239e-9   1.99193e-10  -1.99193e-10  3.95103e-10  -9.19881e-10   3.54531e-18  3.68061e-10
    +  1.3655e-17   3.71865e-7  -1.77783e-7  -1.35612e-11  1.35612e-11  -5.82608e-8   2.24022e-7   5.17824e-18  -3.01692e-11  -7.09608e-8   -1.06944e-7  2.57607e-11  2.57607e-11  6.63405e-8  1.14574e-8   -3.98083e-11   1.78738e-17  -2.62265e-8  1.87191e-8   2.83655e-11  -2.83655e-11  1.81554e-9   -1.02616e-8   2.36022e-18  2.72302e-11  5.57557e-9   7.66477e-9  -2.60181e-11  -2.60181e-11  -8.14921e-9  -1.19076e-9   4.92954e-11   1.02848e-17  5.39512e-9   -4.04931e-9   -4.64096e-11  4.64096e-11  -7.54615e-10  5.0669e-9     9.15652e-18  -8.69428e-11  -2.04308e-9   -2.88332e-9   8.10649e-11  8.10649e-11  2.11288e-9   4.64752e-10  -1.50494e-10   3.12591e-18  -1.03471e-9   5.23655e-10  1.39056e-10  -1.39056e-10  2.79431e-10  -5.01563e-10   5.09065e-18  2.55748e-10
    + -1.70371e-17  1.85546e-7  -8.74169e-8  -9.6428e-12   9.6428e-12   -2.80375e-8   1.00537e-7  -1.47205e-17  -2.06073e-11  -2.73295e-8   -4.39821e-8  1.69233e-11  1.69233e-11  2.34206e-8  5.10163e-9   -2.35204e-11   8.47131e-18  -5.91169e-9  3.77929e-9   9.88461e-12  -9.88462e-12  1.24842e-9   -6.38622e-9   5.95056e-18  1.91141e-11  3.32832e-9   4.77417e-9  -1.82332e-11  -1.82332e-11  -4.89671e-9  -8.28984e-10  3.44828e-11   5.52642e-18  3.25458e-9   -2.31249e-9   -3.24e-11     3.24e-11     -5.30949e-10  2.93011e-9   -6.15329e-18  -6.05679e-11  -1.10379e-9   -1.6978e-9    5.63435e-11  5.63436e-11  1.1914e-9    3.3001e-10   -1.04342e-10   1.12709e-19  -6.27959e-10  2.63577e-10  9.6157e-11   -9.6157e-11   2.00002e-10  -3.071e-10     3.66282e-18  1.76348e-10
    + -3.29615e-17  8.54426e-8  -3.95787e-8  -6.58741e-12  6.58744e-12  -1.26163e-8   4.18408e-8  -2.64892e-17  -1.3631e-11   -9.62687e-9   -1.67874e-8  9.48624e-12  9.48623e-12  4.72571e-9  1.23574e-9   -6.65263e-12  -4.22361e-18  -3.91558e-9  2.44388e-9   6.57828e-12  -6.57828e-12  8.65402e-10  -4.14906e-9   1.43425e-18  1.2711e-11   2.09945e-9   3.10576e-9  -1.21149e-11  -1.21149e-11  -3.10737e-9  -5.79121e-10  2.28905e-11   5.54319e-18  2.07394e-9   -1.41354e-9   -2.1486e-11   2.1486e-11   -3.73369e-10  1.81245e-9   -1.16961e-17  -4.01214e-11  -6.48005e-10  -1.06694e-9   3.72789e-11  3.72789e-11  7.26798e-10  2.33379e-10  -6.89482e-11   7.31145e-18  -4.05112e-10  1.46777e-10  6.34527e-11  -6.34527e-11  1.42127e-10  -1.99851e-10   5.42192e-18  1.16198e-10
    +  1.6415e-17   3.66259e-8  -1.66324e-8  -4.39971e-12  4.39972e-12  -5.20978e-9   1.59586e-8   5.56694e-19  -7.0843e-12   -1.58674e-9   -2.96274e-9  1.91297e-12  1.91297e-12  3.12298e-9  8.33281e-10  -3.95183e-12  -4.20797e-18  -2.58884e-9  1.5939e-9    3.90661e-12  -3.90663e-12  5.8643e-10   -2.71374e-9   2.69379e-18  7.54633e-12  1.34984e-9   2.03322e-9  -7.18992e-12  -7.18992e-12  -2.00561e-9  -3.94051e-10  1.35798e-11  -4.17599e-18  1.34233e-9   -8.92165e-10  -1.27412e-11  1.27412e-11  -2.54934e-10  1.15296e-9   -8.61255e-18  -2.37812e-11  -3.99094e-10  -6.85581e-10  2.20855e-11  2.20855e-11  4.59097e-10  1.5982e-10   -4.0826e-11   -1.5289e-18   -2.64588e-10  8.74454e-11  3.75507e-11  -3.75507e-11  9.75761e-11  -1.31247e-10  -4.8282e-18   6.87229e-11
    +  8.80953e-18  1.42637e-8  -6.34424e-9  -2.10397e-12  2.10396e-12  -6.84193e-10  1.98342e-9  -7.07889e-20  -7.77237e-13  -9.64872e-10  -1.8079e-9   8.82103e-13  8.82103e-13  1.90051e-9  5.11075e-10  -1.82213e-12   6.93021e-18  -1.57577e-9  9.64939e-10  1.80116e-12  -1.80117e-12  3.60351e-10  -1.64478e-9   5.43119e-18  3.47896e-12  8.12528e-10  1.2328e-9   -3.31434e-12  -3.31434e-12  -1.2092e-9   -2.42517e-10  6.2592e-12   -2.80085e-18  8.10242e-10  -5.33001e-10  -5.872e-12    5.872e-12    -1.57104e-10  6.91093e-10  -6.77559e-18  -1.09586e-11  -2.3601e-10   -4.12661e-10  1.01758e-11  1.01758e-11  2.74436e-10  9.85995e-11  -1.88077e-11  -4.72317e-18  -1.60322e-10  5.09818e-11  1.7296e-11   -1.7296e-11   6.02559e-11  -7.9705e-11   -7.79753e-20  3.16487e-11
    + -3.17011e-17  3.5367e-9   -1.55057e-9  -5.05699e-14  5.05682e-14  -1.24617e-9   3.61129e-9  -1.06861e-18  -1.49121e-13  -1.75608e-9   -3.29176e-9  1.69228e-13  1.6923e-13   3.45928e-9  9.31108e-10  -3.49576e-13  -5.73066e-19  -2.86824e-9  1.75527e-9   3.45549e-13  -3.4555e-13   6.56655e-10  -2.99235e-9  -1.72502e-18  6.67424e-13  1.47702e-9   2.24293e-9  -6.35833e-13  -6.35833e-13  -2.1985e-9   -4.42011e-10  1.20078e-12   1.97444e-18  1.47335e-9   -9.68009e-10  -1.12648e-12  1.12649e-12  -2.86382e-10  1.25563e-9    2.20447e-19  -2.10227e-12  -4.28097e-10  -7.50132e-10  1.95208e-12  1.95208e-12  4.98453e-10  1.79759e-10  -3.60793e-12   1.54178e-18  -2.91666e-10  9.23134e-11  3.31791e-12  -3.31791e-12  1.09866e-10  -1.45042e-10  -1.11051e-18  6.07111e-12

    The Zernike coefficients are useful for integration. The integral of $f(x,y)$ over the disk should be $\pi/2$ by harmonicity. The coefficient of $Z_{0,0}$ multiplied by √π is:

    U[1, 1]*sqrt(π)
    1.5707963267948968

    Using an orthonormal basis, the integral of $[f(x,y)]^2$ over the disk is approximately the square of the 2-norm of the coefficients:

    norm(U)^2, π/(2*sqrt(2))*log1p(sqrt(2))
    (0.9789599193439185, 0.9789599179781414)

    But there's more! Next, we repeat the experiment using the Dunkl-Xu orthonormal polynomials supported on the rectangularized disk.

    N = 2N
    +M = N
    30

    We analyze the function on an $N\times M$ mapped tensor product $xy$-grid defined by:

    \[\begin{aligned} +x_n & = \cos\left(\frac{2n+1}{2N}\pi\right) = \sin\left(\frac{N-2n-1}{2N}\pi\right),\quad {\rm for} \quad 0 \le n < N,\quad{\rm and}\\ +z_m & = \cos\left(\frac{2m+1}{2M}\pi\right) = \sin\left(\frac{M-2m-1}{2M}\pi\right),\quad {\rm for} \quad 0 \le m < M,\\ +y_{n,m} & = \sqrt{1-x_n^2}z_m. +\end{aligned}\]

    Slightly more accuracy can be expected by using an auxiliary array:

    \[ w_n = \sin\left(\frac{2n+1}{2N}\pi\right),\quad {\rm for} \quad 0 \le n < N,\]

    so that $y_{n,m} = w_nz_m$.

    The x grid

    w = [sinpi((n+0.5)/N) for n in 0:N-1]
    +x = [sinpi((N-2n-1)/(2N)) for n in 0:N-1]
    30-element Vector{Float64}:
    +  0.9986295347545738
    +  0.9876883405951378
    +  0.9659258262890683
    +  0.9335804264972017
    +  0.8910065241883678
    +  0.838670567945424
    +  0.7771459614569709
    +  0.7071067811865475
    +  0.6293203910498375
    +  0.5446390350150271
    +  0.45399049973954675
    +  0.35836794954530027
    +  0.25881904510252074
    +  0.15643446504023087
    +  0.052335956242943835
    + -0.052335956242943835
    + -0.15643446504023087
    + -0.25881904510252074
    + -0.35836794954530027
    + -0.45399049973954675
    + -0.5446390350150271
    + -0.6293203910498375
    + -0.7071067811865475
    + -0.7771459614569709
    + -0.838670567945424
    + -0.8910065241883678
    + -0.9335804264972017
    + -0.9659258262890683
    + -0.9876883405951378
    + -0.9986295347545738

    The z grid

    z = [sinpi((M-2m-1)/(2M)) for m in 0:M-1]
    30-element Vector{Float64}:
    +  0.9986295347545738
    +  0.9876883405951378
    +  0.9659258262890683
    +  0.9335804264972017
    +  0.8910065241883678
    +  0.838670567945424
    +  0.7771459614569709
    +  0.7071067811865475
    +  0.6293203910498375
    +  0.5446390350150271
    +  0.45399049973954675
    +  0.35836794954530027
    +  0.25881904510252074
    +  0.15643446504023087
    +  0.052335956242943835
    + -0.052335956242943835
    + -0.15643446504023087
    + -0.25881904510252074
    + -0.35836794954530027
    + -0.45399049973954675
    + -0.5446390350150271
    + -0.6293203910498375
    + -0.7071067811865475
    + -0.7771459614569709
    + -0.838670567945424
    + -0.8910065241883678
    + -0.9335804264972017
    + -0.9659258262890683
    + -0.9876883405951378
    + -0.9986295347545738

    On the mapped tensor product grid, our function samples are:

    F = [f(x[n], w[n]*z) for n in 1:N, z in z]
    30×30 Matrix{Float64}:
    + 0.383725    0.383905   0.384264   0.384798  0.3855    0.386365  0.387383  0.388542  0.389832  0.391237  0.392744  0.394337  0.395997  0.397708  0.399451  0.401207  0.402957  0.404681  0.406361  0.407977  0.409512  0.410949  0.41227   0.413462  0.41451   0.415403  0.41613   0.416683   0.417055   0.417242
    + 0.353509    0.354039   0.355094   0.356664  0.358732  0.36128   0.364281  0.367707  0.371524  0.375695  0.380177  0.384927  0.389897  0.395036  0.400292  0.405609  0.41093   0.416197  0.421352  0.426336  0.431089  0.435556  0.439683  0.443417  0.446713  0.449527  0.451824  0.453573   0.454752   0.455346
    + 0.325652    0.32653    0.328275   0.330873  0.334296  0.338513  0.343483  0.349158  0.355488  0.362412  0.36987   0.377792  0.386108  0.394741  0.40361   0.412629  0.421708  0.43075   0.439655  0.44832   0.456637  0.464501  0.471805  0.478449  0.484336  0.489382  0.493512  0.496665   0.498793   0.499866
    + 0.29943     0.300665   0.303122   0.306774  0.311585  0.317506  0.324478  0.332436  0.341308  0.351018  0.361484  0.372625  0.384354  0.396582  0.409213  0.422145  0.435264  0.448446  0.461551  0.474426  0.486904  0.498809  0.50996   0.520175  0.529284  0.537127  0.54357   0.548501   0.551834   0.553515
    + 0.274261    0.275876   0.279088   0.283858  0.290132  0.297838  0.306895  0.317212  0.328692  0.341239  0.354758  0.36916   0.384358  0.400269  0.416811  0.43389   0.451401  0.469213  0.487163  0.505054  0.522647  0.539669  0.555819  0.570781  0.584246  0.595923  0.605564  0.612965   0.617979   0.620509
    + 0.249651    0.251685   0.255724   0.261714  0.269574  0.279203  0.290482  0.303282  0.31747   0.332923  0.349529  0.367198  0.385862  0.405474  0.426001  0.44741   0.469656  0.492656  0.516277  0.540305  0.564443  0.588294  0.611378  0.633149  0.653036  0.670489  0.685018  0.696234   0.703855   0.707707
    + 0.225163    0.227669   0.232643   0.240006  0.249642  0.261402  0.275112  0.290582  0.307622  0.326061  0.345762  0.366637  0.388654  0.411835  0.43625   0.461998  0.489179  0.517862  0.548041  0.579594  0.612236  0.645481  0.678629  0.710777  0.740882  0.76785   0.790662  0.808467   0.820649   0.826828
    + 0.200384    0.203443   0.209507   0.218467  0.230156  0.244357  0.260808  0.279223  0.299317  0.32084   0.343606  0.367524  0.392611  0.418996  0.446912  0.47667   0.508629  0.543152  0.580544  0.620979  0.664413  0.710473  0.758363  0.806792  0.853985  0.897808  0.936015  0.966541   0.987766   0.99863
    + 0.174918    0.178645   0.186025   0.196908  0.211057  0.228154  0.247802  0.269562  0.292995  0.317717  0.343461  0.370116  0.397762  0.426667  0.457278  0.490195  0.526141  0.565917  0.610353  0.660232  0.716173  0.778452  0.846763  0.919914  0.995547  1.07001   1.13854   1.19588    1.23718    1.25878
    + 0.148385    0.152947   0.161975   0.175262  0.192474  0.213137  0.23665   0.262328  0.289486  0.317533  0.346071  0.374964  0.404363  0.43471   0.4667    0.501255  0.539494  0.582713  0.632375  0.690092  0.75756   0.836429  0.928002  1.03272   1.1493    1.27371   1.39809   1.51064    1.59716    1.64443
    + 0.120453    0.126104   0.137278   0.153696  0.174875  0.200102  0.228448  0.258839  0.290208  0.321663  0.352638  0.382979  0.41296   0.443231  0.47475   0.508726  0.546578  0.589942  0.640699  0.701019  0.773401  0.860651  0.965732  1.0913    1.23871   1.40612   1.58568   1.76048    1.90408    1.98636
    + 0.0909577   0.098092   0.112194   0.132868  0.159398  0.19068   0.225238  0.261383  0.297474  0.332223  0.364913  0.395469  0.424393  0.452621  0.481372  0.512033  0.546102  0.585165  0.630904  0.685083  0.749484  0.825684  0.914588  1.01552   1.12484   1.23449   1.33202   1.40445    1.44601    1.46226
    + 0.0602361   0.0695018  0.0877988  0.114536  0.148582  0.188133  0.230785  0.273857  0.314915  0.352268  0.385224  0.414044  0.439685  0.46349   0.486923  0.511411  0.53824   0.568495  0.60296   0.641919  0.684785  0.729453  0.77136   0.802572  0.811931  0.788253  0.727788  0.642222   0.558465   0.506932
    + 0.0300951   0.0426105  0.0672646  0.103059  0.148022  0.199015  0.251986  0.302743  0.347947  0.385818  0.416228  0.440285  0.45973   0.476426  0.492035  0.507855  0.524738  0.542996  0.562232  0.581051  0.596627  0.604238  0.597148  0.56764   0.510053  0.425442  0.32469   0.226238   0.149204   0.107374
    + 0.00673069  0.0245336  0.0593763  0.109244  0.17025   0.236535  0.301213  0.358181  0.403763  0.437224  0.460093  0.47501   0.484736  0.491598  0.497272  0.502743  0.508304  0.513517  0.517087  0.516699  0.508899  0.489293  0.453432  0.398651  0.326385  0.243411  0.160485  0.0888546  0.0371183  0.010234
    + 0.010234    0.0371183  0.0888546  0.160485  0.243411  0.326385  0.398651  0.453432  0.489293  0.508899  0.516699  0.517087  0.513517  0.508304  0.502743  0.497272  0.491598  0.484736  0.47501   0.460093  0.437224  0.403763  0.358181  0.301213  0.236535  0.17025   0.109244  0.0593763  0.0245336  0.00673069
    + 0.107374    0.149204   0.226238   0.32469   0.425442  0.510053  0.56764   0.597148  0.604238  0.596627  0.581051  0.562232  0.542996  0.524738  0.507855  0.492035  0.476426  0.45973   0.440285  0.416228  0.385818  0.347947  0.302743  0.251986  0.199015  0.148022  0.103059  0.0672646  0.0426105  0.0300951
    + 0.506932    0.558465   0.642222   0.727788  0.788253  0.811931  0.802572  0.77136   0.729453  0.684785  0.641919  0.60296   0.568495  0.53824   0.511411  0.486923  0.46349   0.439685  0.414044  0.385224  0.352268  0.314915  0.273857  0.230785  0.188133  0.148582  0.114536  0.0877988  0.0695018  0.0602361
    + 1.46226     1.44601    1.40445    1.33202   1.23449   1.12484   1.01552   0.914588  0.825684  0.749484  0.685083  0.630904  0.585165  0.546102  0.512033  0.481372  0.452621  0.424393  0.395469  0.364913  0.332223  0.297474  0.261383  0.225238  0.19068   0.159398  0.132868  0.112194   0.098092   0.0909577
    + 1.98636     1.90408    1.76048    1.58568   1.40612   1.23871   1.0913    0.965732  0.860651  0.773401  0.701019  0.640699  0.589942  0.546578  0.508726  0.47475   0.443231  0.41296   0.382979  0.352638  0.321663  0.290208  0.258839  0.228448  0.200102  0.174875  0.153696  0.137278   0.126104   0.120453
    + 1.64443     1.59716    1.51064    1.39809   1.27371   1.1493    1.03272   0.928002  0.836429  0.75756   0.690092  0.632375  0.582713  0.539494  0.501255  0.4667    0.43471   0.404363  0.374964  0.346071  0.317533  0.289486  0.262328  0.23665   0.213137  0.192474  0.175262  0.161975   0.152947   0.148385
    + 1.25878     1.23718    1.19588    1.13854   1.07001   0.995547  0.919914  0.846763  0.778452  0.716173  0.660232  0.610353  0.565917  0.526141  0.490195  0.457278  0.426667  0.397762  0.370116  0.343461  0.317717  0.292995  0.269562  0.247802  0.228154  0.211057  0.196908  0.186025   0.178645   0.174918
    + 0.99863     0.987766   0.966541   0.936015  0.897808  0.853985  0.806792  0.758363  0.710473  0.664413  0.620979  0.580544  0.543152  0.508629  0.47667   0.446912  0.418996  0.392611  0.367524  0.343606  0.32084   0.299317  0.279223  0.260808  0.244357  0.230156  0.218467  0.209507   0.203443   0.200384
    + 0.826828    0.820649   0.808467   0.790662  0.76785   0.740882  0.710777  0.678629  0.645481  0.612236  0.579594  0.548041  0.517862  0.489179  0.461998  0.43625   0.411835  0.388654  0.366637  0.345762  0.326061  0.307622  0.290582  0.275112  0.261402  0.249642  0.240006  0.232643   0.227669   0.225163
    + 0.707707    0.703855   0.696234   0.685018  0.670489  0.653036  0.633149  0.611378  0.588294  0.564443  0.540305  0.516277  0.492656  0.469656  0.44741   0.426001  0.405474  0.385862  0.367198  0.349529  0.332923  0.31747   0.303282  0.290482  0.279203  0.269574  0.261714  0.255724   0.251685   0.249651
    + 0.620509    0.617979   0.612965   0.605564  0.595923  0.584246  0.570781  0.555819  0.539669  0.522647  0.505054  0.487163  0.469213  0.451401  0.43389   0.416811  0.400269  0.384358  0.36916   0.354758  0.341239  0.328692  0.317212  0.306895  0.297838  0.290132  0.283858  0.279088   0.275876   0.274261
    + 0.553515    0.551834   0.548501   0.54357   0.537127  0.529284  0.520175  0.50996   0.498809  0.486904  0.474426  0.461551  0.448446  0.435264  0.422145  0.409213  0.396582  0.384354  0.372625  0.361484  0.351018  0.341308  0.332436  0.324478  0.317506  0.311585  0.306774  0.303122   0.300665   0.29943
    + 0.499866    0.498793   0.496665   0.493512  0.489382  0.484336  0.478449  0.471805  0.464501  0.456637  0.44832   0.439655  0.43075   0.421708  0.412629  0.40361   0.394741  0.386108  0.377792  0.36987   0.362412  0.355488  0.349158  0.343483  0.338513  0.334296  0.330873  0.328275   0.32653    0.325652
    + 0.455346    0.454752   0.453573   0.451824  0.449527  0.446713  0.443417  0.439683  0.435556  0.431089  0.426336  0.421352  0.416197  0.41093   0.405609  0.400292  0.395036  0.389897  0.384927  0.380177  0.375695  0.371524  0.367707  0.364281  0.36128   0.358732  0.356664  0.355094   0.354039   0.353509
    + 0.417242    0.417055   0.416683   0.41613   0.415403  0.41451   0.413462  0.41227   0.410949  0.409512  0.407977  0.406361  0.404681  0.402957  0.401207  0.399451  0.397708  0.395997  0.394337  0.392744  0.391237  0.389832  0.388542  0.387383  0.386365  0.3855    0.384798  0.384264   0.383905   0.383725

    We superpose a surface plot of $f$ on top of the grid:

    X = [x for x in x, z in z]
    +Y = [w*z for w in w, z in z]
    +scatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:green)
    +surface!(X, Y, F; legend=false, xlabel="x", ylabel="y", zlabel="f")
    +savefig(joinpath(GENFIGS, "dunklxu.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/dunklxu.html"

    We precompute a Dunkl-Xu–Chebyshev plan:

    P = plan_rectdisk2cheb(F, β)
    FastTransforms Dunkl-Xu--Chebyshev² plan for 30×30-element array of Float64

    And an FFTW Chebyshev² analysis plan on the rectangularized disk:

    PA = plan_rectdisk_analysis(F)
    FastTransforms plan for FFTW Chebyshev analysis on the rectangularized disk for 30×30-element array of Float64

    Its Dunkl-Xu coefficients are:

    U = P\(PA*F)
    30×30 Matrix{Float64}:
    +  0.886226      2.88387e-18  -6.09829e-7    7.35851e-18  -0.0236857    -1.47226e-18  -0.00550977    2.32206e-18  -0.000650943   1.21902e-18   2.15779e-9   -5.41906e-19   1.86065e-5   -3.45643e-21   4.38992e-6    7.16086e-19   4.19398e-7   -1.83364e-18  -1.00953e-7    2.70552e-18  -8.14396e-8   -5.42887e-19  -3.94076e-8    1.3337e-19   -1.67897e-8    9.86492e-19  -6.33162e-9   -3.20905e-18  -2.11252e-9    6.15501e-19
    + -1.77522e-18  -0.361799     -4.0846e-18   -0.062663     -1.17608e-18   2.72128e-6    2.30691e-19   0.00252359   -2.63137e-18   0.000679258  -4.46159e-18   9.1001e-5     6.38235e-18   1.03955e-6    5.22321e-19  -2.31664e-6    1.94715e-18  -3.11859e-7   -1.79784e-18   1.77496e-7   -2.62985e-18   1.44389e-7    2.91238e-18   6.82707e-8   -7.25576e-18   2.5634e-8     1.20042e-18   7.91583e-9    1.49738e-18   1.6359e-9
    + -5.19659e-7    1.8508e-18    0.105921     -4.31929e-18   0.0404829     5.73996e-19   0.00663284   -1.0327e-18   -5.56102e-6   -4.21579e-19  -0.000301082   1.47301e-19  -8.77391e-5    5.41984e-22  -1.39615e-5   -8.87659e-20  -1.31088e-6    9.44811e-20  -2.80392e-7    5.51227e-20  -2.38006e-7   -4.98362e-20  -1.39444e-7    2.17216e-20  -5.76521e-8    2.30505e-19  -1.77475e-8   -9.7631e-19   -3.52357e-9    2.0364e-19
    + -1.27221e-18   0.125331      4.97304e-18   1.52509e-6    1.45775e-18  -0.013651      7.22456e-21  -0.00478429    2.98148e-18  -0.000775222   4.75045e-18   4.86933e-6   -6.43203e-18   4.00219e-5   -4.98601e-19   1.28528e-5   -1.75937e-18   2.68143e-6    1.53754e-18   5.35246e-7    2.12609e-18   1.5728e-7    -2.22161e-18   5.72745e-8    5.21008e-18   1.62262e-8   -8.09068e-19   4.075e-10    -9.18958e-19  -1.20696e-9
    + -0.0886209     5.9287e-18   -0.0913638     3.0208e-18   -0.0231032    -8.79578e-19   2.55845e-6    3.0702e-20    0.00173316   -2.27626e-20   0.000591205   7.34455e-20   9.51801e-5   -1.76615e-22  -9.67049e-7   -2.32129e-19  -5.17388e-6    7.52376e-19  -1.60228e-6   -1.32782e-18  -2.52759e-7    3.07657e-19   9.35469e-9   -8.51145e-20   2.66735e-8   -6.95778e-19   1.62648e-8    2.22225e-18   7.6679e-9    -4.29514e-19
    + -2.27783e-19  -2.79797e-6   -7.72126e-18   0.0328526    -1.8342e-18    0.0160342     9.1729e-19    0.00332497   -2.80639e-18  -8.62281e-6   -4.2378e-18   -0.000228689   5.32969e-18  -7.87989e-5    3.83086e-19  -1.43006e-5    1.25448e-18  -1.11779e-6   -1.0031e-18    2.57992e-8   -1.25205e-18  -9.03781e-8    1.15981e-18  -8.97012e-8   -2.35026e-18  -4.18139e-8    3.12661e-19  -1.37244e-8    3.79461e-19  -2.86072e-9
    +  0.0632999     3.51932e-18   0.0392743     1.49837e-19   3.65838e-6   -1.38938e-18  -0.00566089    8.65236e-20  -0.00237159    4.64215e-19  -0.0004495    -2.36182e-19   7.81213e-6   -6.26519e-21   3.39614e-5    4.25838e-19   1.24485e-5   -1.20569e-18   2.90796e-6    1.93539e-18   5.68462e-7   -4.14661e-19   1.34604e-7    1.07214e-19   3.66282e-8    7.3063e-19    6.0499e-9    -2.39201e-18  -9.48683e-10   4.62309e-19
    +  3.09083e-18  -0.0381303     6.45574e-18  -0.0305859     1.32867e-18  -0.00858298    1.18843e-18   4.65679e-6    2.44694e-18   0.000859316   3.22841e-18   0.000335164  -3.73751e-18   6.02308e-5   -2.3993e-19   -1.60502e-6   -6.34732e-19  -4.61957e-6    3.88944e-19  -1.57519e-6    3.0958e-19   -2.83912e-7   -8.05568e-20   6.48665e-9   -9.16014e-20   2.64839e-8    1.4656e-20    1.29647e-8    1.77924e-20   3.53416e-9
    + -0.0246173     1.34369e-18  -7.2626e-6    -6.12659e-19   0.0116417    -1.5041e-18    0.00624266   -1.85365e-18   0.00144602   -4.90943e-19  -1.39151e-5    3.17046e-19  -0.000132715  -1.2879e-20   -5.15476e-5   -5.01755e-19  -1.08626e-5    1.3675e-18   -1.14678e-6   -2.05969e-18  -1.60201e-8    4.1645e-19   -6.95967e-8   -8.86395e-20  -5.06628e-8   -6.56352e-19  -1.89806e-8    2.14815e-18  -4.88118e-9   -4.14794e-19
    +  2.96922e-18   0.0318389    -7.01232e-18   0.0141265    -1.88894e-18   5.77928e-6    2.25083e-18  -0.00227906   -1.49048e-18  -0.00104803   -1.8946e-18   -0.000212855   1.43332e-18   1.03295e-5    3.07928e-20   2.34123e-5   -3.37163e-20   9.30847e-6    2.08986e-19   2.35417e-6    5.45452e-19   3.9768e-7    -5.99282e-19   5.08658e-8    1.44195e-18  -3.96513e-9   -2.31687e-19  -6.27377e-9   -2.80629e-19  -2.22939e-9
    +  4.3203e-6    -1.01505e-18  -0.0150888     3.50579e-18  -0.0112343    -3.04793e-18  -0.00328812    1.6965e-19    1.04744e-5    1.13928e-18   0.00039214   -4.16429e-19   0.000165953  -4.32603e-20   3.20022e-5    5.4276e-19   -1.20827e-6   -1.2744e-18   -2.94655e-6    1.81728e-18  -7.04511e-7   -2.92334e-19  -5.6071e-8     7.05523e-20   3.46324e-8    5.34236e-19   2.06785e-8   -1.75157e-18   7.17059e-9    3.39977e-19
    +  2.8983e-18   -0.013664      6.5678e-18   -1.51866e-5    5.4757e-19    0.00436874    2.16097e-18   0.00244523    1.06017e-18   0.000590637   4.65336e-19  -2.14758e-5   -9.40954e-20  -7.38896e-5    2.3552e-20   -3.13213e-5    5.26085e-19  -7.72648e-6   -6.82977e-19  -1.29269e-6   -8.74011e-19  -2.78823e-7    9.5171e-19   -5.90858e-8   -2.26756e-18  -1.01665e-8    3.58531e-19  -5.87834e-11   4.39097e-19   6.08272e-10
    +  0.00851225   -3.46779e-18   0.0134873    -4.47271e-18   0.00537692   -8.3977e-19    6.02617e-6   -3.08821e-18  -0.000910525  -3.39517e-19  -0.000437065   3.03366e-19  -8.7068e-5    -8.80118e-20   1.1278e-5    -3.65139e-19   1.49731e-5    1.04786e-18   4.52269e-6   -1.08717e-18   1.07064e-6    2.22069e-19   1.46243e-7   -7.88106e-20  -1.38814e-8   -4.24262e-19  -1.70166e-8    1.34473e-18  -7.00317e-9   -2.34873e-19
    + -5.243e-19     1.53467e-5   -3.42908e-18  -0.00600077   -1.14879e-18  -0.00428943    1.57332e-18  -0.00126564    4.71504e-19   2.25421e-5    1.05408e-18   0.000179497  -3.19824e-18   8.01025e-5   -4.07863e-19   1.7027e-5    -1.1788e-18    1.57076e-6    8.41234e-19   2.06968e-7    1.08582e-18   6.4408e-8    -1.00962e-18   3.71494e-8    2.54812e-18   1.54347e-8   -4.43537e-19   4.19595e-9   -5.02122e-19   6.39706e-10
    + -0.00737561    3.20877e-19  -0.00609917    5.01968e-18  -2.74248e-5   -1.69707e-18   0.00166484    4.53517e-19   0.000938074   1.49633e-18   0.000214292  -4.51956e-19  -2.95524e-5   -1.70254e-19  -4.43089e-5    4.86992e-19  -1.48998e-5   -3.74819e-19  -4.66705e-6    8.30785e-19  -1.1166e-6    -1.63135e-19  -1.75326e-7   -5.17937e-20   6.20197e-11   2.28331e-19   1.22805e-8   -9.15375e-19   5.74874e-9    2.71057e-19
    + -1.53896e-18   0.00528716    2.99138e-18   0.00556329   -2.15535e-19   0.00208938   -7.47732e-21  -5.2783e-7    -6.15068e-19  -0.000359085  -2.14571e-18  -0.000171677   2.3754e-18   -2.96656e-5    1.23813e-20   2.10201e-6    1.54216e-19   2.03799e-6   -3.37798e-19   7.36548e-7   -8.65849e-19   1.34796e-7    1.57582e-18  -8.41342e-9   -3.22682e-18  -1.56944e-8    3.58566e-19  -6.34761e-9    6.01843e-19  -1.40381e-9
    +  0.00325817   -2.84485e-19   3.77292e-5   -6.03158e-18  -0.00236387    1.7388e-18   -0.0016225    -1.91543e-18  -0.000450124   4.45629e-20   4.2479e-5     6.05433e-20   9.29879e-5   -2.32382e-19   3.37099e-5    4.71114e-19   1.28552e-5    8.98504e-19   3.9506e-6    -2.91014e-19   9.51441e-7    1.15619e-19   1.58677e-7   -3.87565e-19   5.78941e-9   -4.52573e-19  -8.22477e-9    7.86929e-19  -4.24338e-9    2.31952e-19
    + -1.89824e-18  -0.00475403   -2.71301e-19  -0.00260261    3.02312e-19  -4.17061e-5   -1.89426e-18   0.000603349   2.04618e-18   0.000321014   3.43974e-18   4.91036e-5   -6.38959e-18  -1.33075e-5   -1.05918e-18  -9.95643e-6   -2.63009e-18  -4.40482e-6    1.5221e-18   -1.35103e-6    1.63207e-18  -2.69324e-7   -1.27253e-19  -1.41967e-8    1.6452e-18    1.40866e-8   -7.11669e-19   7.16251e-9   -2.35918e-19   1.77508e-9
    + -2.1087e-5     4.43105e-18   0.00246819    5.58103e-18   0.00221801    5.16957e-19   0.000774953   1.78195e-18  -2.27028e-5    1.01858e-18  -0.000146058  -3.94509e-19  -5.59485e-5   -6.27763e-19  -2.5516e-5     1.37015e-18  -9.52201e-6    7.96212e-19  -2.90084e-6    3.76863e-19  -7.0138e-7    -2.09039e-20  -1.20528e-7   -3.15268e-19  -6.49799e-9   -8.95548e-20   5.20338e-9   -4.60083e-19   2.87275e-9    4.70547e-19
    +  6.06272e-20   0.00217575   -2.66229e-18   7.86173e-5   -6.71472e-19  -0.000845473  -2.57966e-18  -0.000526267  -2.09351e-18  -9.24417e-5   -3.21392e-18   2.85383e-5    8.09944e-19   2.55329e-5   -6.62568e-19   1.39518e-5   -1.59662e-18   5.53959e-6   -4.47258e-19   1.63754e-6    3.62645e-20   3.34514e-7    2.00636e-18   2.71988e-8   -3.09107e-18  -1.21682e-8   -2.21799e-19  -7.17118e-9    1.08785e-18  -1.87466e-9
    + -0.00127442    3.52931e-19  -0.00226313   -4.30745e-18  -0.00105975    1.87531e-18  -4.70324e-5    6.00057e-19   0.000173699  -1.38557e-19   6.84882e-5   -3.26853e-19   3.73772e-5   -5.60827e-20   1.67333e-5    9.3379e-19    6.1804e-6     8.39235e-19   1.87498e-6   -2.66208e-19   4.54341e-7    3.00091e-19   7.92679e-8    1.95688e-20   4.9557e-9    -8.34156e-21  -3.08203e-9   -2.03576e-19  -1.77447e-9    7.2992e-20
    +  1.96865e-18  -7.54358e-5    3.58988e-18   0.000953128   1.6236e-18    0.00073895   -2.40377e-18   0.000186348   2.16847e-18  -3.08415e-5    2.54719e-18  -4.20801e-5    1.22943e-19  -2.97992e-5    3.21331e-19  -1.49958e-5   -8.15942e-19  -5.73922e-6   -1.98008e-18  -1.67382e-6    1.43452e-18  -3.45419e-7   -1.22162e-18  -3.19319e-8    3.32858e-18   1.04223e-8   -1.08684e-18   6.70585e-9    4.47261e-19   1.79997e-9
    +  0.00115733    1.30891e-18   0.00108248    4.06073e-18   0.000140675  -2.51786e-19  -0.00015525    2.19311e-18  -6.00244e-5   -3.22812e-19  -3.94963e-5   -3.02667e-19  -2.12639e-5    4.02577e-19  -9.44009e-6    1.85579e-19  -3.47007e-6   -2.98953e-19  -1.05071e-6   -7.43343e-19  -2.54885e-7    2.09385e-19  -4.47918e-8    9.68517e-19  -2.98189e-9    1.09376e-18   1.6509e-9    -1.31313e-18   9.71987e-10  -9.95033e-19
    +  1.48521e-18  -0.000757848  -5.47813e-18  -0.000843449  -1.0829e-18   -0.000328982   5.05077e-19   8.77607e-7   -6.47403e-19   4.13033e-5   -7.47716e-19   4.36922e-5    3.11321e-18   2.88832e-5    2.20016e-19   1.41096e-5    5.10479e-19   5.3233e-6    -1.4537e-18    1.5442e-6    -2.20346e-19   3.20051e-7    7.40593e-19   3.10541e-8   -2.56423e-19  -8.83962e-9   -1.51978e-19  -5.9456e-9    -2.58702e-19  -1.61537e-9
    + -0.000553886  -2.72894e-18  -0.000187639  -1.75508e-18   0.000102621  -1.51373e-18   3.50362e-5   -7.82231e-19   2.80559e-5   -1.16799e-18   1.831e-5      2.74456e-19   9.80506e-6    9.84228e-19   4.33835e-6   -3.15583e-19   1.59166e-6    2.69126e-20   4.81568e-7    1.46454e-18   1.16874e-7    9.49945e-20   2.05996e-8   -1.29623e-18   1.40536e-9   -3.22261e-19  -7.42251e-10   9.2967e-19   -4.4125e-10    3.14499e-19
    +  3.43006e-19   0.00067785    7.65451e-18   0.000443404   1.23865e-18   5.25409e-5    6.64849e-19  -8.79182e-6    2.73158e-19  -3.88737e-5    3.09642e-19  -3.84611e-5   -2.37757e-18  -2.48679e-5   -5.12093e-19  -1.20249e-5   -1.41333e-19  -4.51391e-6    9.67661e-19  -1.30691e-6    5.07231e-19  -2.71299e-7    9.18246e-19  -2.67727e-8    1.99136e-19   7.24306e-9   -1.49026e-19   4.95787e-9   -1.41127e-18   1.35319e-9
    +  0.000104898  -1.01818e-18  -4.97719e-5   -7.29653e-19  -1.14056e-5    5.87956e-19  -1.12136e-5    4.60098e-19  -8.949e-6      4.53171e-19  -5.82665e-6   -2.44462e-19  -3.11536e-6   -6.1681e-19   -1.37708e-6    5.61031e-19  -5.04943e-7   -8.46536e-20  -1.52739e-7   -3.66863e-19  -3.7074e-8    -2.38249e-19  -6.54014e-9    1.24858e-19  -4.49338e-10   7.25589e-19   2.34081e-10  -4.87718e-19   1.39557e-10  -5.94023e-19
    + -3.13646e-18  -0.000389793  -3.28188e-18  -8.04943e-5   -1.37241e-19  -3.68665e-5   -2.30965e-18   8.03845e-6   -6.09189e-19   2.97453e-5   -5.0944e-19    2.89916e-5    1.05019e-18   1.86472e-5    6.3629e-19    8.99472e-6    1.43239e-18   3.37228e-6   -1.20318e-18   9.75922e-7    4.1214e-20    2.02668e-7   -1.14334e-19   2.00821e-8    1.81185e-19  -5.36499e-9   -1.23364e-19  -3.68864e-9    4.2811e-20   -1.00792e-9
    +  1.54054e-5    1.23828e-18   1.00144e-6    1.84463e-19   1.23964e-6   -8.43152e-20   1.21824e-6    5.74481e-20   9.71898e-7   -1.03935e-19   6.32656e-7   -8.20175e-20   3.38215e-7    1.5389e-19    1.49487e-7   -1.12048e-19   5.48103e-8   -2.06987e-19   1.65791e-8    6.79198e-20   4.02426e-9    1.22785e-19   7.09969e-10  -6.46596e-20   4.88112e-11  -5.51333e-20  -2.53943e-11   1.23995e-19  -1.51441e-11   7.96269e-20
    + -1.5778e-18    0.000145153   1.32424e-19   0.000143445  -7.6147e-20    6.55677e-5    2.22587e-19  -1.45469e-5    3.01577e-19  -5.3233e-5     3.22253e-20  -5.18305e-5   -8.36085e-22  -3.33247e-5   -1.86065e-19  -1.60719e-5   -4.43286e-19  -6.0251e-6     8.63083e-20  -1.74358e-6    5.65738e-21  -3.62096e-7    4.33784e-20  -3.58901e-8   -1.49965e-19   9.57958e-9    1.3012e-20    6.5884e-9     3.28648e-19   1.80042e-9

    The Dunkl-Xu coefficients are useful for integration. The integral of $f(x,y)$ over the disk should be $\pi/2$ by harmonicity. The coefficient of $P_{0,0}$ multiplied by √π is:

    U[1, 1]*sqrt(π)
    1.5707955409153043

    Using an orthonormal basis, the integral of $[f(x,y)]^2$ over the disk is approximately the square of the 2-norm of the coefficients:

    norm(U)^2, π/(2*sqrt(2))*log1p(sqrt(2))
    (0.978937045726087, 0.9789599179781414)

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/dunklxu.html b/v0.16.8/generated/dunklxu.html new file mode 100644 index 00000000..83e3cb8c --- /dev/null +++ b/v0.16.8/generated/dunklxu.html @@ -0,0 +1,6845 @@ +
    + diff --git a/v0.16.8/generated/halfrange.html b/v0.16.8/generated/halfrange.html new file mode 100644 index 00000000..5ba49302 --- /dev/null +++ b/v0.16.8/generated/halfrange.html @@ -0,0 +1,3032 @@ + +
    + diff --git a/v0.16.8/generated/halfrange/index.html b/v0.16.8/generated/halfrange/index.html new file mode 100644 index 00000000..6fbdbc5e --- /dev/null +++ b/v0.16.8/generated/halfrange/index.html @@ -0,0 +1,94 @@ + +Half-range Chebyshev polynomials · FastTransforms.jl

    Half-range Chebyshev polynomials

    In this paper, Daan Huybrechs introduced the so-called half-range Chebyshev polynomials as the semi-classical orthogonal polynomials with respect to the inner product:

    \[\langle f, g \rangle = \int_0^1 f(x) g(x)\frac{{\rm d} x}{\sqrt{1-x^2}}.\]

    By the variable transformation $y = 2x-1$, the resulting polynomials can be related to orthogonal polynomials on $(-1,1)$ with the Jacobi weight $(1-y)^{-\frac{1}{2}}$ modified by the weight $(3+y)^{-\frac{1}{2}}$.

    We shall use the fact that:

    \[\frac{1}{\sqrt{3+y}} = \sqrt{\frac{2}{3+\sqrt{8}}}\sum_{n=0}^\infty P_n(y) \left(\frac{-1}{3+\sqrt{8}}\right)^n,\]

    and results from this paper to consider the half-range Chebyshev polynomials as modifications of the Jacobi polynomials $P_n^{(-\frac{1}{2},0)}(y)$.

    using FastTransforms, LinearAlgebra, Plots, LaTeXStrings
    +const GENFIGS = joinpath(pkgdir(FastTransforms), "docs/src/generated")
    +!isdir(GENFIGS) && mkdir(GENFIGS)
    +plotlyjs()
    Plots.PlotlyJSBackend()

    We truncate the generating function to ensure a relative error less than eps() in the uniform norm on $(-1,1)$:

    z = -1/(3+sqrt(8))
    +K = sqrt(-2z)
    +N = ceil(Int, log(abs(z), eps()/2*(1-abs(z))/K) - 1)
    +d = K .* z .^(0:N)
    21-element Vector{Float64}:
    +  0.585786437626905
    + -0.10050506338833466
    +  0.017243942703102998
    + -0.0029585928302833363
    +  0.0005076142785970194
    + -8.70928412987791e-5
    +  1.4942769195655289e-5
    + -2.563773875152638e-6
    +  4.3987405526054037e-7
    + -7.547045641060418e-8
    +  1.2948683203084688e-8
    + -2.221642807903953e-9
    +  3.8117364433902886e-10
    + -6.53990581302203e-11
    +  1.122070444229295e-11
    + -1.925168523537399e-12
    +  3.303066989314436e-13
    + -5.6671670051262317e-14
    +  9.723321376130305e-15
    + -1.6682582055195078e-15
    +  2.862278569867433e-16

    Then, we convert this representation to the expansion in Jacobi polynomials $P_n^{(-\frac{1}{2}, 0)}(y)$:

    u = jac2jac(d, 0.0, 0.0, -0.5, 0.0; norm1 = false, norm2 = true)
    21-element Vector{Float64}:
    +  0.9340010840223151
    + -0.09412895357801879
    +  0.012332003442981326
    + -0.0017749924171044493
    +  0.00026739546832682813
    + -4.137724994351243e-5
    +  6.516867953544994e-6
    + -1.0393137552650633e-6
    +  1.673019401749671e-7
    + -2.7126077156467505e-8
    +  4.423525597533419e-9
    + -7.247452797834485e-10
    +  1.1920483520702293e-10
    + -1.9671182646957104e-11
    +  3.2552876283504113e-12
    + -5.400110170678753e-13
    +  8.977555063800248e-14
    + -1.4948797757615094e-14
    +  2.4980123321513196e-15
    + -4.125155260660654e-16
    +  7.540496818753807e-17

    Our working polynomial degree will be:

    n = 100
    100

    We compute the connection coefficients between the modified orthogonal polynomials and the Jacobi polynomials:

    P = plan_modifiedjac2jac(Float64, n+1, -0.5, 0.0, u)
    FastTransforms Modified Jacobi--Jacobi plan for 101-element array of Float64

    We store the connection to first kind Chebyshev polynomials:

    P1 = plan_jac2cheb(Float64, n+1, -0.5, 0.0; normjac = true)
    FastTransforms Jacobi--Chebyshev plan for 101-element array of Float64

    We compute the Chebyshev series for the degree-$k\le n$ modified polynomial and its values at the Chebyshev points:

    q = k -> lmul!(P1, lmul!(P, [zeros(k); 1.0; zeros(n-k)]))
    +qvals = k-> ichebyshevtransform(q(k))
    #3 (generic function with 1 method)

    With the symmetric Jacobi matrix for $P_n^{(-\frac{1}{2}, 0)}(y)$ and the modified plan, we may compute the modified Jacobi matrix and the corresponding roots (as eigenvalues):

    XP = SymTridiagonal([-inv((4n-1)*(4n-5)) for n in 1:n+1], [4n*(2n-1)/(4n-1)/sqrt((4n-3)*(4n+1)) for n in 1:n])
    +XQ = FastTransforms.modified_jacobi_matrix(P, XP)
    +SymTridiagonal(XQ.dv[1:10], XQ.ev[1:9])
    10×10 LinearAlgebra.SymTridiagonal{Float64, Vector{Float64}}:
    + 0.27324    0.615517     ⋅           ⋅            ⋅            ⋅            ⋅            ⋅            ⋅             ⋅ 
    + 0.615517  -0.0327708   0.509195     ⋅            ⋅            ⋅            ⋅            ⋅            ⋅             ⋅ 
    +  ⋅         0.509195   -0.0115134   0.50391       ⋅            ⋅            ⋅            ⋅            ⋅             ⋅ 
    +  ⋅          ⋅          0.50391    -0.00564494   0.502131      ⋅            ⋅            ⋅            ⋅             ⋅ 
    +  ⋅          ⋅           ⋅          0.502131    -0.00333235   0.501338      ⋅            ⋅            ⋅             ⋅ 
    +  ⋅          ⋅           ⋅           ⋅           0.501338    -0.00219677   0.500918      ⋅            ⋅             ⋅ 
    +  ⋅          ⋅           ⋅           ⋅            ⋅           0.500918    -0.00155663   0.500668      ⋅             ⋅ 
    +  ⋅          ⋅           ⋅           ⋅            ⋅            ⋅           0.500668    -0.00116057   0.500509       ⋅ 
    +  ⋅          ⋅           ⋅           ⋅            ⋅            ⋅            ⋅           0.500509    -0.000898551   0.5004
    +  ⋅          ⋅           ⋅           ⋅            ⋅            ⋅            ⋅            ⋅           0.5004       -0.000716244

    And we plot:

    x = (chebyshevpoints(Float64, n+1, Val(1)) .+ 1 ) ./ 2
    +p = plot(x, qvals(0); linewidth=2.0, legend = false, xlim=(0,1), xlabel=L"x",
    +         ylabel=L"T^h_n(x)", title="Half-Range Chebyshev Polynomials and Their Roots",
    +         extra_plot_kwargs = KW(:include_mathjax => "cdn"))
    +for k in 1:10
    +    λ = (eigvals(SymTridiagonal(XQ.dv[1:k], XQ.ev[1:k-1])) .+ 1) ./ 2
    +    plot!(x, qvals(k); linewidth=2.0, color=palette(:default)[k+1])
    +    scatter!(λ, zero(λ); markersize=2.5, color=palette(:default)[k+1])
    +end
    +p
    +savefig(joinpath(GENFIGS, "halfrange.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/halfrange.html"

    By Theorem 2.20 it turns out that the derivatives of the half-range Chebyshev polynomials are a linear combination of at most two polynomials orthogonal with respect to $\sqrt{(3+y)(1-y)}(1+y)$ on $(-1,1)$. This fact enables us to compute the banded differentiation matrix:

    v̂ = 3*[u; 0]+XP[1:N+2, 1:N+1]*u
    +v = jac2jac(v̂, -0.5, 0.0, 0.5, 1.0; norm1 = true, norm2 = true)
    +function threshold!(A::AbstractArray, ϵ)
    +    for i in eachindex(A)
    +        if abs(A[i]) < ϵ A[i] = 0 end
    +    end
    +    A
    +end
    +P′ = plan_modifiedjac2jac(Float64, n+1, 0.5, 1.0, v)
    +DP = UpperTriangular(diagm(1=>[sqrt(n*(n+1/2)) for n in 1:n])) # The classical differentiation matrix representing 𝒟 P^{(-1/2,0)}(y) = P^{(1/2,1)}(y) D_P.
    +DQ = UpperTriangular(threshold!(P′\(DP*(P*I)), 100eps())) # The semi-classical differentiation matrix representing 𝒟 Q(y) = Q̂(y) D_Q.
    +UpperTriangular(DQ[1:10,1:10])
    10×10 LinearAlgebra.UpperTriangular{Float64, Matrix{Float64}}:
    + 0.0  2.11682  0.481094  0.0       0.0      0.0       0.0       0.0       0.0       0.0
    +  ⋅   0.0      3.82901   0.789619  0.0      0.0       0.0       0.0       0.0       0.0
    +  ⋅    ⋅       0.0       5.53918   1.08781  0.0       0.0       0.0       0.0       0.0
    +  ⋅    ⋅        ⋅        0.0       7.24821  1.38334   0.0       0.0       0.0       0.0
    +  ⋅    ⋅        ⋅         ⋅        0.0      8.95658   1.67782   0.0       0.0       0.0
    +  ⋅    ⋅        ⋅         ⋅         ⋅       0.0      10.6646    1.97177   0.0       0.0
    +  ⋅    ⋅        ⋅         ⋅         ⋅        ⋅        0.0      12.3723    2.26542   0.0
    +  ⋅    ⋅        ⋅         ⋅         ⋅        ⋅         ⋅        0.0      14.0799    2.55888
    +  ⋅    ⋅        ⋅         ⋅         ⋅        ⋅         ⋅         ⋅        0.0      15.7874
    +  ⋅    ⋅        ⋅         ⋅         ⋅        ⋅         ⋅         ⋅         ⋅        0.0

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/nonlocaldiffusion/index.html b/v0.16.8/generated/nonlocaldiffusion/index.html new file mode 100644 index 00000000..e7a78dc7 --- /dev/null +++ b/v0.16.8/generated/nonlocaldiffusion/index.html @@ -0,0 +1,69 @@ + +Nonlocal diffusion on mathbbS^2 · FastTransforms.jl

    Nonlocal diffusion on $\mathbb{S}^2$

    This example calculates the spectrum of the nonlocal diffusion operator:

    \[\mathcal{L}_\delta u = \int_{\mathbb{S}^2} \rho_\delta(|\mathbf{x}-\mathbf{y}|)\left[u(\mathbf{x}) - u(\mathbf{y})\right] \,\mathrm{d}\Omega(\mathbf{y}),\]

    defined in Eq. (2) of

    R. M. Slevinsky, H. Montanelli, and Q. Du, A spectral method for nonlocal diffusion operators on the sphere, J. Comp. Phys., 372:893–911, 2018.

    In the above, $0<\delta<2$, $-1<\alpha<1$, and the kernel:

    \[\rho_\delta(|\mathbf{x}-\mathbf{y}|) = \frac{4(1+\alpha)}{\pi \delta^{2+2\alpha}} \frac{\chi_{[0,\delta]}(|\mathbf{x}-\mathbf{y}|)}{|\mathbf{x}-\mathbf{y}|^{2-2\alpha}},\]

    where $\chi_I(\cdot)$ is the indicator function on the set $I$.

    This nonlocal operator is diagonalized by spherical harmonics:

    \[\mathcal{L}_\delta Y_\ell^m(\mathbf{x}) = \lambda_\ell(\alpha, \delta) Y_\ell^m(\mathbf{x}),\]

    and its eigenfunctions are given by the generalized Funk–Hecke formula:

    \[\lambda_\ell(\alpha, \delta) = \frac{(1+\alpha) 2^{2+\alpha}}{\delta^{2+2\alpha}}\int_{1-\delta^2/2}^1 \left[P_\ell(t)-1\right] (1-t)^{\alpha-1} \,\mathrm{d} t.\]

    In the paper, the authors use Clenshaw–Curtis quadrature and asymptotic evaluation of Legendre polynomials to achieve $\mathcal{O}(n^2\log n)$ complexity for the evaluation of the first $n$ eigenvalues. With a change of basis, this complexity can be reduced to $\mathcal{O}(n\log n)$.

    First, we represent:

    \[P_n(t) - 1 = \sum_{j=0}^{n-1} \left[P_{j+1}(t) - P_j(t)\right] = -\sum_{j=0}^{n-1} (1-t) P_j^{(1,0)}(t).\]

    Then, we represent $P_j^{(1,0)}(t)$ with Jacobi polynomials $P_i^{(\alpha,0)}(t)$ and we integrate using DLMF 18.9.16:

    \[\int_x^1 P_i^{(\alpha,0)}(t)(1-t)^\alpha\,\mathrm{d}t = \left\{ \begin{array}{cc} \frac{(1-x)^{\alpha+1}}{\alpha+1} & \mathrm{for~}i=0,\\ \frac{1}{2i}(1-x)^{\alpha+1}(1+x)P_{i-1}^{(\alpha+1,1)}(x), & \mathrm{for~}i>0.\end{array}\right.\]

    The code below implements this algorithm, making use of the Jacobi–Jacobi transform plan_jac2jac. For numerical stability, the conversion from Jacobi polynomials $P_j^{(1,0)}(t)$ to $P_i^{(\alpha,0)}(t)$ is divided into conversion from $P_j^{(1,0)}(t)$ to $P_k^{(0,0)}(t)$, before conversion from $P_k^{(0,0)}(t)$ to $P_i^{(\alpha,0)}(t)$.

    using FastTransforms, LinearAlgebra
    +
    +function oprec!(n::Integer, v::AbstractVector, alpha::Real, delta2::Real)
    +    if n > 0
    +        v[1] = 1
    +    end
    +    if n > 1
    +        v[2] = (4*alpha+8-(alpha+4)*delta2)/4
    +    end
    +    for i = 1:n-2
    +        v[i+2] = (((2*i+alpha+2)*(2*i+alpha+4)+alpha*(alpha+2))/(2*(i+1)*(2*i+alpha+2))*(2*i+alpha+3)/(i+alpha+3) - delta2/4*(2*i+alpha+3)/(i+1)*(2*i+alpha+4)/(i+alpha+3))*v[i+1] - (i+alpha+1)/(i+alpha+3)*(2*i+alpha+4)/(2*i+alpha+2)*v[i]
    +    end
    +    return v
    +end
    +
    +function evaluate_lambda(n::Integer, alpha::T, delta::T) where T
    +    delta2 = delta*delta
    +    scl = (1+alpha)*(2-delta2/2)
    +
    +    lambda = Vector{T}(undef, n)
    +
    +    if n > 0
    +        lambda[1] = 0
    +    end
    +    if n > 1
    +        lambda[2] = -2
    +    end
    +
    +    oprec!(n-2, view(lambda, 3:n), alpha, delta2)
    +
    +    for i = 2:n-1
    +        lambda[i+1] *= -scl/(i-1)
    +    end
    +
    +    p = plan_jac2jac(T, n-1, zero(T), zero(T), alpha, zero(T))
    +
    +    lmul!(p', view(lambda, 2:n))
    +
    +    for i = 2:n-1
    +        lambda[i+1] = ((2i-1)*lambda[i+1] + (i-1)*lambda[i])/i
    +    end
    +
    +    for i = 2:n-1
    +        lambda[i+1] += lambda[i]
    +    end
    +
    +    return lambda
    +end
    evaluate_lambda (generic function with 1 method)

    The spectrum in Float64:

    lambda = evaluate_lambda(10, -0.5, 1.0)
    10-element Vector{Float64}:
    +   0.0
    +  -2.0
    +  -5.5
    +  -9.75
    + -14.09375
    + -18.203125
    + -22.08984375
    + -25.935546875
    + -29.8870849609375
    + -33.95416259765625

    The spectrum in BigFloat:

    lambdabf = evaluate_lambda(10, parse(BigFloat, "-0.5"), parse(BigFloat, "1.0"))
    10-element Vector{BigFloat}:
    +   0.0
    +  -2.0
    +  -5.5
    +  -9.75
    + -14.09375
    + -18.203125
    + -22.08984375
    + -25.935546875
    + -29.8870849609375
    + -33.95416259765625

    The $\infty$-norm relative error:

    norm(lambda-lambdabf, Inf)/norm(lambda, Inf)
    0.0

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/padua/index.html b/v0.16.8/generated/padua/index.html new file mode 100644 index 00000000..712fd960 --- /dev/null +++ b/v0.16.8/generated/padua/index.html @@ -0,0 +1,16 @@ + +Padua transform · FastTransforms.jl

    Padua transform

    This demonstrates the Padua transform and inverse transform, explaining precisely the normalization and points

    using FastTransforms

    We define the Padua points and extract Cartesian components:

    N = 15
    +pts = paduapoints(N)
    +x = pts[:,1]
    +y = pts[:,2];
    +nothing #hide

    We take the Padua transform of the function:

    f = (x,y) -> exp(x + cos(y))
    +f̌ = paduatransform(f.(x , y));
    +nothing #hide

    and use the coefficients to create an approximation to the function $f$:

    f̃ = (x,y) -> begin
    +    j = 1
    +    ret = 0.0
    +    for n in 0:N, k in 0:n
    +        ret += f̌[j]*cos((n-k)*acos(x)) * cos(k*acos(y))
    +        j += 1
    +    end
    +    ret
    +end
    #3 (generic function with 1 method)

    At a particular point, is the function well-approximated?

    f̃(0.1,0.2) ≈ f(0.1,0.2)
    true

    Does the inverse transform bring us back to the grid?

    ipaduatransform(f̌) ≈ f̃.(x,y)
    true

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/proriol.html b/v0.16.8/generated/proriol.html new file mode 100644 index 00000000..f434cd22 --- /dev/null +++ b/v0.16.8/generated/proriol.html @@ -0,0 +1,2705 @@ +
    + diff --git a/v0.16.8/generated/semiclassical.html b/v0.16.8/generated/semiclassical.html new file mode 100644 index 00000000..2f00fd6f --- /dev/null +++ b/v0.16.8/generated/semiclassical.html @@ -0,0 +1,3028 @@ + +
    + diff --git a/v0.16.8/generated/semiclassical/index.html b/v0.16.8/generated/semiclassical/index.html new file mode 100644 index 00000000..208e56df --- /dev/null +++ b/v0.16.8/generated/semiclassical/index.html @@ -0,0 +1,94 @@ + +Semi-classical Jacobi polynomials · FastTransforms.jl

    Semi-classical Jacobi polynomials

    In this example, we will consider the semi-classical orthogonal polynomials with respect to the inner product:

    \[\langle f, g \rangle = \int_{-1}^1 f(x) g(x) w(x){\rm d} x,\]

    where $w(x) = w^{(\alpha,\beta,\gamma,\delta,\epsilon)}(x) = (1-x)^\alpha(1+x)^\beta(2+x)^\gamma(3+x)^\delta(5-x)^\epsilon$ is a modification of the Jacobi weight. We shall use results from this paper to consider these semi-classical orthogonal polynomials as modifications of the orthonormalized Jacobi polynomials $\tilde{P}_n^{(\alpha,\beta)}(x)$.

    using ApproxFun, FastTransforms, LazyArrays, LinearAlgebra, Plots, LaTeXStrings
    +const GENFIGS = joinpath(pkgdir(FastTransforms), "docs/src/generated")
    +!isdir(GENFIGS) && mkdir(GENFIGS)
    +plotlyjs()
    Plots.PlotlyJSBackend()

    We set the five parameters:

    α,β,γ,δ,ϵ = -0.125, -0.25, 0.123, 0.456, 0.789
    (-0.125, -0.25, 0.123, 0.456, 0.789)

    We use ApproxFun to construct a finite normalized Jacobi series as a proxy for $(2+x)^\gamma(3+x)^\delta(5-x)^\epsilon$.

    u = Fun(x->(2+x)^γ*(3+x)^δ*(5-x)^ϵ, NormalizedJacobi(β, α))
    Fun(NormalizedJacobi(-0.25,-0.125), [9.44307, 0.378961, -0.175993, 0.00993571, -0.00159705, 0.000269325, -5.50832e-5, 1.18886e-5, -2.70741e-6, 6.33251e-7, -1.51159e-7, 3.65681e-8, -8.93731e-9, 2.2014e-9, -5.45681e-10, 1.35976e-10, -3.40364e-11, 8.55277e-12, -2.15663e-12, 5.45371e-13, -1.38184e-13, 3.50987e-14, -8.6989e-15, 2.26453e-15, -6.27902e-16])

    Our working polynomial degree will be:

    n = 100
    100

    We compute the connection coefficients between the modified orthogonal polynomials and the Jacobi polynomials:

    P = plan_modifiedjac2jac(Float64, n+1, α, β, u.coefficients)
    FastTransforms Modified Jacobi--Jacobi plan for 101-element array of Float64

    We store the connection to first kind Chebyshev polynomials:

    P1 = plan_jac2cheb(Float64, n+1, α, β; normjac = true)
    FastTransforms Jacobi--Chebyshev plan for 101-element array of Float64

    We compute the Chebyshev series for the degree-$k\le n$ modified polynomial and its values at the Chebyshev points:

    q = k -> lmul!(P1, lmul!(P, [zeros(k); 1.0; zeros(n-k)]))
    +qvals = k -> ichebyshevtransform(q(k))
    #5 (generic function with 1 method)

    With the symmetric Jacobi matrix for $\tilde{P}_n^{(\alpha, \beta)}(x)$ and the modified plan, we may compute the modified Jacobi matrix and the corresponding roots (as eigenvalues):

    x = Fun(x->x, NormalizedJacobi(β, α))
    +XP = SymTridiagonal(Symmetric(Multiplication(x, space(x))[1:n+1, 1:n+1]))
    +XQ = FastTransforms.modified_jacobi_matrix(P, XP)
    +view(XQ, 1:7, 1:7)
    7×7 view(::LinearAlgebra.SymTridiagonal{Float64, Vector{Float64}}, 1:7, 1:7) with eltype Float64:
    + -0.052227  0.611763      ⋅           ⋅            ⋅            ⋅           ⋅ 
    +  0.611763  0.000494468  0.518899     ⋅            ⋅            ⋅           ⋅ 
    +   ⋅        0.518899     0.00129929  0.507083      ⋅            ⋅           ⋅ 
    +   ⋅         ⋅           0.507083    0.000851746  0.503749      ⋅           ⋅ 
    +   ⋅         ⋅            ⋅          0.503749     0.000542956  0.502328     ⋅ 
    +   ⋅         ⋅            ⋅           ⋅           0.502328     0.00037014  0.501587
    +   ⋅         ⋅            ⋅           ⋅            ⋅           0.501587    0.000267516

    And we plot:

    x = chebyshevpoints(Float64, n+1, Val(1))
    +p = plot(x, qvals(0); linewidth=2.0, legend = false, xlim=(-1,1), xlabel=L"x",
    +         ylabel=L"Q_n(x)", title="Semi-classical Jacobi Polynomials and Their Roots",
    +         extra_plot_kwargs = KW(:include_mathjax => "cdn"))
    +for k in 1:10
    +    λ = eigvals(SymTridiagonal(XQ.dv[1:k], XQ.ev[1:k-1]))
    +    plot!(x, qvals(k); linewidth=2.0, color=palette(:default)[k+1])
    +    scatter!(λ, zero(λ); markersize=2.5, color=palette(:default)[k+1])
    +end
    +p
    +savefig(joinpath(GENFIGS, "semiclassical.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/semiclassical.html"

    By Theorem 2.20 it turns out that the derivatives of these particular semi-classical Jacobi polynomials are a linear combination of at most four polynomials orthogonal with respect to the weight $w^{(\alpha+1,\beta+1,\gamma+1,\delta+1,\epsilon+1)}(x)$ on $(-1,1)$. This fact enables us to compute the banded differentiation matrix:

    v = Fun(x->(2+x)^(γ+1)*(3+x)^(δ+1)*(5-x)^(ϵ+1), NormalizedJacobi(β+1, α+1))
    +function threshold!(A::AbstractArray, ϵ)
    +    for i in eachindex(A)
    +        if abs(A[i]) < ϵ A[i] = 0 end
    +    end
    +    A
    +end
    +P′ = plan_modifiedjac2jac(Float64, n+1, α+1, β+1, v.coefficients)
    +DP = UpperTriangular(diagm(1=>[sqrt(n*(n+α+β+1)) for n in 1:n])) # The classical differentiation matrix representing 𝒟 P^{(α,β)}(x) = P^{(α+1,β+1)}(x) D_P.
    +DQ = UpperTriangular(threshold!(P′\(DP*(P*I)), 100eps())) # The semi-classical differentiation matrix representing 𝒟 Q(x) = Q̂(x) D_Q.
    +UpperTriangular(DQ[1:9, 1:9])
    9×9 LinearAlgebra.UpperTriangular{Float64, Matrix{Float64}}:
    + 0.0  7.02067   3.74167  -0.0809111  -0.113147    0.0         0.0         0.0         0.0
    +  ⋅   0.0      12.0138    5.7562     -0.0612112  -0.149381    0.0         0.0         0.0
    +  ⋅    ⋅        0.0      17.1606      7.59222    -0.0517326  -0.177356    0.0         0.0
    +  ⋅    ⋅         ⋅        0.0        22.3446      9.38452    -0.0442887  -0.203279    0.0
    +  ⋅    ⋅         ⋅         ⋅          0.0        27.5348     11.1618     -0.0369428  -0.228469
    +  ⋅    ⋅         ⋅         ⋅           ⋅          0.0        32.7255     12.932      -0.0294519
    +  ⋅    ⋅         ⋅         ⋅           ⋅           ⋅          0.0        37.916      14.6983
    +  ⋅    ⋅         ⋅         ⋅           ⋅           ⋅           ⋅          0.0        43.1061
    +  ⋅    ⋅         ⋅         ⋅           ⋅           ⋅           ⋅           ⋅          0.0

    A faster method now exists via the GramMatrix architecture and its associated displacement equation. Given the modified orthogonal polynomial moments implied by the normalized Jacobi series for $u(x)$, we pad this vector to the necessary size and construct the GramMatrix with these moments, the multiplication operator, and the constant $\tilde{P}_0^{(\alpha,\beta)}(x)$:

    μ = PaddedVector(u.coefficients, 2n+1)
    +x = Fun(x->x, NormalizedJacobi(β, α))
    +XP2 = SymTridiagonal(Symmetric(Multiplication(x, space(x))[1:2n+1, 1:2n+1]))
    +p0 = Fun(NormalizedJacobi(β, α), [1])(0)
    +G = GramMatrix(μ, XP2, p0)
    +view(G, 1:7, 1:7)
    7×7 view(::GramMatrix{Float64, LinearAlgebra.Symmetric{Float64, BandedMatrices.BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, LinearAlgebra.SymTridiagonal{Float64, Vector{Float64}}}, 1:7, 1:7) with eltype Float64:
    +  6.23087      0.250052     -0.116126      0.00655593  -0.00105379   0.00017771   -3.63458e-5
    +  0.250052     6.16778       0.20056      -0.0956742    0.00537811  -0.000867428   0.00014667
    + -0.116126     0.20056       6.21001       0.195291    -0.092858     0.00516771   -0.000829459
    +  0.00655593  -0.0956742     0.195291      6.21487      0.194013    -0.091981      0.00510563
    + -0.00105379   0.00537811   -0.092858      0.194013     6.21641      0.193488     -0.0915835
    +  0.00017771  -0.000867428   0.00516771   -0.091981     0.193488     6.21711       0.193216
    + -3.63458e-5   0.00014667   -0.000829459   0.00510563  -0.0915835    0.193216      6.21749

    And compute its cholesky factorization. The upper-triangular Cholesky factor represents the connection between original Jacobi and semi-classical Jacobi as ${\bf P}^{(\alpha,\beta)}(x) = {\bf Q}(x) R$.

    R = cholesky(G).U
    +UpperTriangular(view(R, 1:7, 1:7))
    7×7 LinearAlgebra.UpperTriangular{Float64, SubArray{Float64, 2, LinearAlgebra.UpperTriangular{Float64, LinearAlgebra.Adjoint{Float64, BandedMatrices.BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}, false}}:
    + 2.49617  0.100174  -0.0465217   0.0026264  -0.000422164   7.1193e-5    -1.45606e-5
    +  ⋅       2.48148    0.0827006  -0.0386613   0.00218434   -0.000352435   5.96937e-5
    +  ⋅        ⋅         2.49018     0.0797576  -0.0373701     0.00208827   -0.000335346
    +  ⋅        ⋅          ⋅          2.49139     0.079104     -0.036992      0.00206099
    +  ⋅        ⋅          ⋅           ⋅          2.49174       0.0788577    -0.0368254
    +  ⋅        ⋅          ⋅           ⋅           ⋅            2.49189       0.0787344
    +  ⋅        ⋅          ⋅           ⋅           ⋅             ⋅            2.49197

    Every else works almost as before, including evaluation on a Chebyshev grid:

    q = k -> lmul!(P1, ldiv!(R, [zeros(k); 1.0; zeros(n-k)]))
    +qvals = k -> ichebyshevtransform(q(k))
    #17 (generic function with 1 method)

    Computation of the modified Jacobi matrix:

    XQ1 = FastTransforms.modified_jacobi_matrix(R, XP)
    +norm(XQ-XQ1)/norm(XQ)
    2.4194977316379476e-16

    Plotting:

    x = chebyshevpoints(Float64, n+1, Val(1))
    +p = plot(x, qvals(0); linewidth=2.0, legend = false, xlim=(-1,1), xlabel=L"x",
    +         ylabel=L"Q_n(x)", title="Semi-classical Jacobi Polynomials and Their Roots",
    +         extra_plot_kwargs = KW(:include_mathjax => "cdn"))
    +for k in 1:10
    +    λ = eigvals(SymTridiagonal(XQ1.dv[1:k], XQ1.ev[1:k-1]))
    +    plot!(x, qvals(k); linewidth=2.0, color=palette(:default)[k+1])
    +    scatter!(λ, zero(λ); markersize=2.5, color=palette(:default)[k+1])
    +end
    +p
    +savefig(joinpath(GENFIGS, "semiclassical1.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/semiclassical1.html"

    And banded differentiation:

    μ′ = PaddedVector(v.coefficients, 2n+1)
    +x′ = Fun(x->x, NormalizedJacobi(β+1, α+1))
    +XP′ = SymTridiagonal(Symmetric(Multiplication(x′, space(x′))[1:2n+1, 1:2n+1]))
    +p0′ = Fun(NormalizedJacobi(β+1, α+1), [1])(0)
    +G′ = GramMatrix(μ′, XP′, p0′)
    +R′ = cholesky(G′).U
    +DP = UpperTriangular(diagm(1=>[sqrt(n*(n+α+β+1)) for n in 1:n])) # The classical differentiation matrix representing 𝒟 P^{(α,β)}(x) = P^{(α+1,β+1)}(x) D_P.
    +DQ = UpperTriangular(threshold!(R′*(DP*(R\I)), 100eps())) # The semi-classical differentiation matrix representing 𝒟 Q(x) = Q̂(x) D_Q.
    +UpperTriangular(DQ[1:9, 1:9])
    9×9 LinearAlgebra.UpperTriangular{Float64, Matrix{Float64}}:
    + 0.0  7.02067   3.74167  -0.0809111  -0.113147    0.0         0.0         0.0         0.0
    +  ⋅   0.0      12.0138    5.7562     -0.0612112  -0.149381    0.0         0.0         0.0
    +  ⋅    ⋅        0.0      17.1606      7.59222    -0.0517326  -0.177356    0.0         0.0
    +  ⋅    ⋅         ⋅        0.0        22.3446      9.38452    -0.0442887  -0.203279    0.0
    +  ⋅    ⋅         ⋅         ⋅          0.0        27.5348     11.1618     -0.0369428  -0.228469
    +  ⋅    ⋅         ⋅         ⋅           ⋅          0.0        32.7255     12.932      -0.0294519
    +  ⋅    ⋅         ⋅         ⋅           ⋅           ⋅          0.0        37.916      14.6983
    +  ⋅    ⋅         ⋅         ⋅           ⋅           ⋅           ⋅          0.0        43.1061
    +  ⋅    ⋅         ⋅         ⋅           ⋅           ⋅           ⋅           ⋅          0.0

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/semiclassical1.html b/v0.16.8/generated/semiclassical1.html new file mode 100644 index 00000000..00ac1160 --- /dev/null +++ b/v0.16.8/generated/semiclassical1.html @@ -0,0 +1,3028 @@ + +
    + diff --git a/v0.16.8/generated/sphere/index.html b/v0.16.8/generated/sphere/index.html new file mode 100644 index 00000000..9d149f06 --- /dev/null +++ b/v0.16.8/generated/sphere/index.html @@ -0,0 +1,133 @@ + +Spherical harmonic addition theorem · FastTransforms.jl

    Spherical harmonic addition theorem

    This example confirms numerically that

    \[f(z) = \frac{P_n(z\cdot y) - P_n(x\cdot y)}{z\cdot y - x\cdot y},\]

    is actually a degree-$(n-1)$ polynomial on $\mathbb{S}^2$, where $P_n$ is the degree-$n$ Legendre polynomial, and $x,y,z \in \mathbb{S}^2$. To verify, we sample the function on a $N\times M$ equiangular grid defined by:

    \[\begin{aligned} +\theta_n & = (n+\tfrac{1}{2})\pi/N,\quad{\rm for}\quad 0\le n < N,\quad{\rm and}\\ +\varphi_m & = 2\pi m/M,\quad{\rm for}\quad 0\le m < M; +\end{aligned}\]

    we convert the function samples to Fourier coefficients using plan_sph_analysis; and finally, we transform the Fourier coefficients to spherical harmonic coefficients using plan_sph2fourier.

    In the basis of spherical harmonics, it is plain to see the addition theorem in action, since $P_n(x\cdot y)$ should only consist of exact-degree-$n$ harmonics.

    For the storage pattern of the arrays, please consult the documentation.

    function threshold!(A::AbstractArray, ϵ)
    +    for i in eachindex(A)
    +        if abs(A[i]) < ϵ A[i] = 0 end
    +    end
    +    A
    +end
    +
    +using FastTransforms, LinearAlgebra, Plots
    +const GENFIGS = joinpath(pkgdir(FastTransforms), "docs/src/generated")
    +!isdir(GENFIGS) && mkdir(GENFIGS)
    +plotlyjs()
    Plots.PlotlyJSBackend()

    The colatitudinal grid (mod $\pi$):

    N = 15
    +θ = (0.5:N-0.5)/N
    0.03333333333333333:0.06666666666666667:0.9666666666666667

    The longitudinal grid (mod $\pi$):

    M = 2*N-1
    +φ = (0:M-1)*2/M
    0.0:0.06896551724137931:1.9310344827586206

    Arbitrarily, we place $x$ at the North pole:

    x = [0,0,1]
    3-element Vector{Int64}:
    + 0
    + 0
    + 1

    Another vector is completely free:

    y = normalize([.123,.456,.789])
    3-element Vector{Float64}:
    + 0.13375998748853216
    + 0.4958906853233388
    + 0.8580213831581455

    Thus $z \in \mathbb{S}^2$ is our variable vector, parameterized in spherical coordinates:

    z = (θ,φ) -> [sinpi(θ)*cospi(φ), sinpi(θ)*sinpi(φ), cospi(θ)]
    #1 (generic function with 1 method)

    On the tensor product grid, the Legendre polynomial $P_n(z\cdot y)$ is:

    A = [(2k+1)/(k+1) for k in 0:N-1]
    +B = zeros(N)
    +C = [k/(k+1) for k in 0:N]
    +c = zeros(N); c[N] = 1
    +pts = vec([z(θ, φ)⋅y for θ in θ, φ in φ])
    +phi0 = ones(N*M)
    +F = reshape(FastTransforms.clenshaw!(c, A, B, C, pts, phi0, zeros(N*M)), N, M)
    15×29 Matrix{Float64}:
    +  0.264259    0.299171     0.304985    0.288068    0.261038    0.237692     0.228241    0.236528     0.259192    0.286391     0.304437    0.300462     0.26755      0.207601     0.130208    0.0483744   -0.0262845   -0.0865116   -0.129804   -0.156955   -0.169985    -0.170403    -0.158265    -0.132139   -0.0899937  -0.0308858   0.0429655   0.124641    0.202756
    +  0.212068    0.303332     0.129215   -0.186607   -0.387155   -0.383993    -0.338172   -0.379747    -0.392602   -0.206438     0.109443    0.299961     0.225231    -0.0101802   -0.207053   -0.258628    -0.187516    -0.070652     0.0323131   0.0988479   0.12977      0.130741     0.102005     0.0380582  -0.0627707  -0.180155   -0.256899   -0.215501   -0.0267606
    + -0.115553    0.236712     0.221776   -0.251073   -0.32857     0.421619     0.986223    0.482429    -0.299585   -0.280602     0.198511    0.253762    -0.0930651   -0.258938    -0.0793421   0.160653     0.233501     0.154045     0.0336174  -0.0560314  -0.0990238   -0.100375    -0.0604041    0.0261339   0.145985    0.231751    0.1719     -0.0610864  -0.255787
    + -0.18454    -0.186901     0.216999    0.207436   -0.278408   -0.36511     -0.189358   -0.35156     -0.304334    0.180746     0.238643   -0.165767    -0.202157     0.128252     0.217098   -0.00943667  -0.200512    -0.194373    -0.0821865   0.0208264   0.0732008    0.0748654    0.0260895   -0.074028   -0.188494   -0.206184   -0.027257    0.20837     0.147067
    +  0.233218   -0.0443128   -0.25662     0.0443223   0.302577    0.209245     0.107407    0.198264     0.305263    0.0716125   -0.25045    -0.0709297    0.228915     0.0560634   -0.209167   -0.109098     0.135993     0.209367     0.121014    0.0107106  -0.049922    -0.0518826    0.00472316   0.112882    0.206906    0.148044   -0.0921222  -0.214775    0.0327421
    + -0.14959     0.176398     0.159536   -0.157586   -0.253853   -0.135785    -0.0630475  -0.127292    -0.249419   -0.174706     0.141057    0.191837    -0.130845    -0.171771     0.128955    0.181407    -0.058914    -0.206946    -0.154207   -0.0410986   0.0276329    0.029906    -0.034464    -0.146673   -0.208687   -0.0754426   0.17029     0.145612   -0.156134
    +  0.03232    -0.216991    -0.0542418   0.201432    0.206916    0.0892457    0.0316764   0.0822717    0.200041    0.210302    -0.0334057  -0.219505     0.00906962   0.211107    -0.0222883  -0.209099    -0.0231776    0.189332     0.183999    0.0724419  -0.00503206  -0.00766855   0.065182     0.177672    0.19593    -0.0044746  -0.206821   -0.0443208   0.20777
    +  0.0772106   0.200813    -0.0345837  -0.214416   -0.166372   -0.0543381   -0.0063074  -0.0483886   -0.158601   -0.217382    -0.0533452   0.193042     0.0976693   -0.187906    -0.085199    0.193101     0.105896    -0.154519    -0.211246   -0.107108   -0.019323    -0.0162213   -0.09921     -0.206977   -0.166608    0.0879047   0.201099   -0.0639311  -0.196895
    + -0.161616   -0.14919      0.105731    0.2116      0.130202    0.0251362   -0.0160611   0.0199531    0.122174    0.210305     0.12046    -0.134582    -0.17451      0.114917     0.174042   -0.130385    -0.182374     0.0957622    0.234753    0.148573    0.0475436    0.0437788    0.140028     0.233975    0.113813   -0.1691     -0.148371    0.159712    0.133414
    +  0.208908    0.0728989   -0.161008   -0.198486   -0.0961065   0.00135321   0.037119    0.00590617  -0.0881639  -0.194067    -0.170766    0.0549875    0.211431    -0.00338118  -0.21986     0.016122     0.234375     0.00021735  -0.247537   -0.203094   -0.0836434   -0.0787903   -0.19406     -0.253043   -0.023216    0.231655    0.0407554  -0.218225   -0.0261102
    + -0.203495    0.0220031    0.200371    0.176174    0.0619327  -0.0270702   -0.058089   -0.0310551    0.0543296   0.169516     0.204695    0.0395021   -0.194934    -0.128043     0.183785    0.141369    -0.211961    -0.150004     0.2205      0.283345    0.137864     0.130789     0.275142     0.23809    -0.126501   -0.226893    0.11958     0.198142   -0.109095
    +  0.12233    -0.127714    -0.219526   -0.142772   -0.0253159   0.0536809    0.080125    0.0571016   -0.0183211  -0.134724    -0.218347   -0.140698     0.10537      0.230635    -0.0169741  -0.260275     0.00868827   0.306062    -0.0323035  -0.400665   -0.252906    -0.23893     -0.40434     -0.0688019   0.303902    0.0393269  -0.259455   -0.0416906   0.225524
    +  0.0533261   0.221676     0.20588     0.0928744  -0.0169863  -0.083121    -0.10464    -0.0859165   -0.0229991   0.0845139    0.199903    0.226054     0.0700661   -0.185075    -0.235303    0.0671548    0.306034     0.0030983   -0.399433   -0.020757    0.815719     0.855083     0.0350084   -0.404293   -0.0323252   0.304047    0.0929697  -0.224541   -0.198835
    + -0.251975   -0.233798    -0.13019    -0.0152352   0.0703864   0.11835      0.133806    0.120358     0.0748091  -0.00825682  -0.122061   -0.22853     -0.255028    -0.136944     0.097903    0.288106     0.247787    -0.0273998   -0.313828   -0.4047     -0.353264    -0.349855    -0.403561    -0.327222   -0.0497156   0.234981    0.294129    0.11465    -0.123547
    +  0.0890404   0.00957584  -0.0584588  -0.110278   -0.145276   -0.165114    -0.171728   -0.165964    -0.14708    -0.113177    -0.062519    0.00451035   0.0834519    0.16497      0.23634     0.285407     0.305513     0.298672     0.274919    0.248139    0.230823     0.230209     0.246547     0.273036    0.297446    0.305825    0.287718    0.240496    0.170292

    We superpose a surface plot of $f$ on top of the grid:

    X = [sinpi(θ)*cospi(φ) for θ in θ, φ in φ]
    +Y = [sinpi(θ)*sinpi(φ) for θ in θ, φ in φ]
    +Z = [cospi(θ) for θ in θ, φ in φ]
    +scatter3d(vec(X), vec(Y), vec(Z); markersize=1.25, markercolor=:violetred)
    +surface!(X, Y, Z; surfacecolor=F, legend=false, xlabel="x", ylabel="y", zlabel="f")
    +savefig(joinpath(GENFIGS, "sphere1.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/sphere1.html"

    We show the cut in the surface to help illustrate the definition of the grid. In particular, we do not sample the poles.

    We precompute a spherical harmonic–Fourier plan:

    P = plan_sph2fourier(F)
    FastTransforms Spherical harmonic--Fourier plan for 15×29-element array of Float64

    And an FFTW Fourier analysis plan on $\mathbb{S}^2$:

    PA = plan_sph_analysis(F)
    FastTransforms plan for FFTW Fourier analysis on the sphere for 15×29-element array of Float64

    Its spherical harmonic coefficients demonstrate that it is exact-degree-$n$:

    V = PA*F
    +U = threshold!(P\V, 400*eps())
    15×29 Matrix{Float64}:
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0         -1.66397e-5  2.73274e-5
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0         -0.000271538  -7.91038e-5   0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         3.29805e-5  -0.00164832   0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.00703526  -0.00174747  0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0122275  0.0220184  0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0        -0.0503776  0.0488881  0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0       -0.134224  -0.0799001   0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0729185  -0.259962   0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.337609  0.00337719  0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0610941  0.235853  0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.0       0.0       0.0289877  -0.0164793  0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0         0.0        0.0       0.190197  0.192109  0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.0       0.0        -0.0788841  0.135585  0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.0       0.188313  0.0507949   0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0
    + 0.142187  0.0       0.0         0.0        0.0       0.0       0.0       0.0         0.0        0.0        0.0       0.0       0.0         0.0         0.0        0.0        0.0         0.0        0.0        0.0        0.0        0.0          0.0         0.0          0.0          0.0           0.0          0.0         0.0

    The $L^2(\mathbb{S}^2)$ norm of the function is:

    nrm1 = norm(U)
    0.6582728344942347

    Similarly, on the tensor product grid, our function samples are:

    Pnxy = FastTransforms.clenshaw!(c, A, B, C, [x⋅y], [1.0], [0.0])[1]
    +F = [(F[n, m] - Pnxy)/(z(θ[n], φ[m])⋅y - x⋅y) for n in 1:N, m in 1:M]
    15×29 Matrix{Float64}:
    +  5.19948      4.13834      2.99067      1.90658      1.02691     0.455272    0.249877    0.429314    0.977414    1.83893      2.91328     4.06148      5.13287      6.0026       6.60156      6.92544     7.02254     6.96965     6.84793     6.72603     6.65164      6.64905     6.71906     6.83899     6.96269     7.02276     6.93845     6.63197     6.05227
    +  5.95491      2.78879     -1.44975     -4.81316     -5.93907    -5.32122    -4.74802    -5.26014    -5.93537    -4.96628     -1.72861     2.51536      5.80241      7.01649      6.35996      4.76275     3.10172     1.83264     1.03553     0.610092    0.43191      0.426508    0.591355    0.996377    1.76414     3.00054     4.64424     6.26964     7.0226
    +  6.89687      5.65236      0.11585     -5.28724     -4.64181     1.51819     5.42995     1.95544    -4.33608    -5.4796      -0.331651    5.39124      6.95616      4.78949      1.90996      0.265776   -0.0679633   0.206459    0.546026    0.760489    0.851318     0.854026    0.770114    0.565133    0.231314   -0.0604333   0.208258    1.74968     4.58324
    +  3.06027      6.5357       5.89997     -0.165743    -5.46592    -5.06636    -3.28816    -4.90175    -5.62054    -0.644121     5.6253      6.677        3.31846      0.440384    -0.00401181   0.652985    1.01303     0.876591    0.580633    0.35795     0.254199     0.250991    0.347269    0.561893    0.857659    1.01648     0.69514     0.0273999   0.337402
    + -0.070137     1.60923      5.43093      6.93528      3.91137    -0.131309   -1.75656    -0.336142    3.61343     6.85843      5.66343     1.83509     -0.053904     0.487406     1.01741      0.644213    0.136921    0.0101545   0.134135    0.275013    0.346961     0.349218    0.282296    0.144972    0.0138328   0.115298    0.603776    1.01615     0.548272
    +  0.945078     0.135483     0.27158      2.71505      5.55048     6.82449     7.00499     6.85725     5.69314     2.92844      0.369819    0.0844295    0.912316     0.807551     0.149683     0.0509116   0.357273    0.499174    0.407141    0.269902    0.193177     0.1907      0.262329    0.397299    0.498435    0.37596     0.0666419   0.119637    0.764012
    +  0.3347       0.96741      0.756526     0.0516758    0.0403323   0.667862    1.0399      0.710559    0.0718486   0.0205398    0.70939     0.987443     0.382027     0.0075432    0.314675     0.493074    0.249535    0.0255986   0.0288774   0.124344    0.187529     0.189637    0.130366    0.0344678   0.0191719   0.228563    0.486554    0.340488    0.0125441
    +  0.19163      0.0244645    0.474228     0.953439     0.971777    0.756739    0.645454    0.743468    0.95977     0.969839     0.515354    0.0373859    0.165042     0.488731     0.32132      0.0219213   0.0963195   0.301654    0.329627    0.240493    0.171995     0.169627    0.234193    0.325354    0.310183    0.111448    0.0141702   0.296273    0.495085
    +  0.41699      0.454012     0.154439     0.00689009   0.147415    0.349199    0.434542    0.359728    0.162073    0.00898106   0.134876    0.43942      0.434649     0.100528     0.0376636    0.284172    0.302882    0.085971   -0.0128005   0.0446154   0.109712     0.112106    0.0501911  -0.0122374   0.0727995   0.291434    0.297253    0.0501979   0.0815347
    +  0.00653828   0.144506     0.416175     0.496049     0.398793    0.286378    0.242449    0.28086     0.390091    0.493228     0.429442    0.163601     0.00423886   0.186207     0.340647     0.145106   -0.0125214   0.139641    0.288402    0.253913    0.179097     0.176118    0.248108    0.291182    0.154331   -0.0106262   0.126633    0.337571    0.204303
    +  0.334489     0.165749     0.014265     0.0385386    0.156172    0.253936    0.289478    0.258454    0.164306    0.0451436    0.010362    0.151498     0.32921      0.257363     0.0225829    0.0493168   0.268651    0.220231   -0.0026208  -0.0383697   0.0440181    0.047986   -0.0336588  -0.0128432   0.205569    0.277144    0.0634765   0.012466    0.242082
    +  0.0666146    0.257095     0.341563     0.293211     0.203674    0.139862    0.117949    0.137043    0.198126    0.287354     0.341672    0.267702     0.0789497   -0.00992474   0.150427     0.293905    0.12293    -0.051658    0.138809    0.33873     0.255252     0.247571    0.340446    0.15898    -0.0503184   0.104503    0.292551    0.165851   -0.00643622
    +  0.106032    -0.00382806   0.00704658   0.088086     0.17021     0.221457    0.238521    0.223661    0.174806    0.0942214    0.0112304  -0.00679647   0.0953468    0.252997     0.275056     0.0878466  -0.0516354   0.119191    0.338121    0.128404   -0.323093    -0.344224    0.0980961   0.340427    0.138821   -0.0504052   0.0724608   0.267888    0.261055
    +  0.286625     0.280994     0.220196     0.149338     0.0951419   0.0642734   0.0542416   0.0629728   0.0923113   0.144964     0.215269    0.278062     0.288893     0.21207      0.0695276   -0.0416382  -0.0180382   0.136094    0.292814    0.340282    0.310784     0.308881    0.339519    0.300016    0.148439   -0.0107592  -0.0450601   0.0595874   0.203734
    +  0.0747987    0.122395     0.163672     0.195512     0.217272    0.229726    0.233902    0.230262    0.2184      0.197306     0.166153    0.125451     0.0781262    0.0298766   -0.0118277   -0.0400996  -0.0514099  -0.0472393  -0.0335309  -0.0182388  -0.00839924  -0.0080514  -0.0173325  -0.0324517  -0.0465243  -0.0515701  -0.0414172  -0.0142377   0.0267486

    We superpose a surface plot of $f$ on top of the grid:

    scatter3d(vec(X), vec(Y), vec(Z); markersize=1.25, markercolor=:violetred)
    +surface!(X, Y, Z; surfacecolor=F, legend=false, xlabel="x", ylabel="y", zlabel="f")
    +savefig(joinpath(GENFIGS, "sphere2.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/sphere2.html"

    Its spherical harmonic coefficients demonstrate that it is degree-$(n-1)$:

    V = PA*F
    +U = threshold!(P\V, 400*eps())
    15×29 Matrix{Float64}:
    +  2.07907     0.87453     0.235893    0.069594   -0.119618    0.0581001   0.0586842   0.0859934  -0.0488866  -0.015775   -0.060899   -0.0291623  -0.000291717  -0.00253358   0.00903247   0.000694039   0.000413142  -0.00117608  0.0011413   0.000780662  0.00140576  0.000942806  -0.000234181  8.63587e-6  -0.00043161  -0.000121732  -3.54626e-5  0.0  0.0
    +  1.51317     0.44642     0.120416   -0.169934    0.292081    0.328839    0.332145    0.288911   -0.164244   -0.0423205  -0.163378   -0.0586349  -0.000586539  -0.00145765   0.00519666  -0.00998075   -0.00594126   -0.00862106  0.00836616  0.00369554   0.00665466  0.00342882   -0.000851678  2.16057e-5  -0.00107982   0.0           0.0         0.0  0.0
    +  0.36606    -0.627659   -0.169303   -0.592046    1.0176      0.703541    0.710614    0.503834   -0.286426   -0.056082   -0.216504   -0.0224552  -0.000224625   0.0140577   -0.0501173   -0.0493515    -0.0293776    -0.0276576   0.0268398   0.00914327   0.0164645   0.00585456   -0.0014542    0.0          0.0          0.0           0.0         0.0  0.0
    + -0.225238   -1.3923     -0.375555   -0.884141    1.51965     0.893241    0.902221    0.498016   -0.283118   -0.0162747  -0.0628284   0.165928    0.00165982    0.0536982   -0.191439    -0.123087     -0.0732701    -0.0534663   0.0518855   0.0122482    0.0220556   0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.0279478  -1.24976    -0.337105   -0.80053     1.37594     0.669715    0.676448    0.113165   -0.0643333   0.096013    0.370657    0.512707    0.00512874    0.109365    -0.389897    -0.195697     -0.116493     -0.0592355   0.0574841   0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.642706   -0.460978   -0.124343   -0.408306    0.701792    0.115506    0.116667   -0.53107     0.30191     0.2422      0.935011    0.866631    0.00866913    0.145962    -0.520371    -0.183527     -0.109249      0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.924445    0.171516    0.0462641  -0.0394459   0.0677993  -0.395183   -0.399156   -1.05835     0.601662    0.335991    1.29709     0.970497    0.00970813    0.116526    -0.415426     0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.619857    0.0934262   0.0252005   0.0128822  -0.0221418  -0.505099   -0.510177   -1.1197      0.636541    0.30573     1.18027     0.65018     0.00650392    0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.0816312  -0.512221   -0.138165   -0.239451    0.411566   -0.194804   -0.196763   -0.706203    0.401471    0.16128     0.622619    0.0         0.0           0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    + -0.15003    -0.975789   -0.263206   -0.507765    0.872741    0.197111    0.199092   -0.186337    0.105931    0.0         0.0         0.0         0.0           0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.105958   -0.834521   -0.225101   -0.515565    0.886148    0.287159    0.290046    0.0         0.0         0.0         0.0         0.0         0.0           0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.530802   -0.266039   -0.0717606  -0.261012    0.448626    0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0           0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.668154    0.140073    0.0377829   0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0           0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.390394    0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0           0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0
    +  0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0         0.0           0.0          0.0          0.0           0.0           0.0         0.0         0.0          0.0         0.0           0.0          0.0          0.0          0.0           0.0         0.0  0.0

    Finally, the Legendre polynomial $P_n(z\cdot x)$ is aligned with the grid:

    pts = vec([z(θ, φ)⋅x for θ in θ, φ in φ])
    +F = reshape(FastTransforms.clenshaw!(c, A, B, C, pts, phi0, zeros(N*M)), N, M)
    15×29 Matrix{Float64}:
    +  0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808
    + -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968
    +  0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489
    + -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835
    +  0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901
    + -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532
    +  0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677
    + -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473  -0.209473
    +  0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677   0.210677
    + -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532  -0.214532
    +  0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901   0.221901
    + -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835  -0.234835
    +  0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489   0.258489
    + -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968   -0.30968
    +  0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808   0.501808

    We superpose a surface plot of $f$ on top of the grid:

    scatter3d(vec(X), vec(Y), vec(Z); markersize=1.25, markercolor=:violetred)
    +surface!(X, Y, Z; surfacecolor=F, legend=false, xlabel="x", ylabel="y", zlabel="f")
    +savefig(joinpath(GENFIGS, "sphere3.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/sphere3.html"

    It only has one nonnegligible spherical harmonic coefficient. Can you spot it?

    V = PA*F
    +U = threshold!(P\V, 400*eps())
    15×29 Matrix{Float64}:
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.0       0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0
    + 0.658273  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0  0.0

    That nonnegligible coefficient should be

    ret = eval("√(2π/($(N-1)+1/2))")
    "√(2π/(14+1/2))"

    which is approximately

    eval(Meta.parse(ret))
    0.6582728344942353

    since the convention in this library is to orthonormalize.

    nrm2 = norm(U)
    0.6582728344942352

    Note that the integrals of both functions $P_n(z\cdot y)$ and $P_n(z\cdot x)$ and their $L^2(\mathbb{S}^2)$ norms are the same because of rotational invariance. The integral of either is perhaps not interesting as it is mathematically zero, but the norms of either should be approximately the same.

    nrm1 ≈ nrm2
    true

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/sphere1.html b/v0.16.8/generated/sphere1.html new file mode 100644 index 00000000..85cd7e2e --- /dev/null +++ b/v0.16.8/generated/sphere1.html @@ -0,0 +1,4432 @@ +
    + diff --git a/v0.16.8/generated/sphere2.html b/v0.16.8/generated/sphere2.html new file mode 100644 index 00000000..f16faef8 --- /dev/null +++ b/v0.16.8/generated/sphere2.html @@ -0,0 +1,4432 @@ +
    + diff --git a/v0.16.8/generated/sphere3.html b/v0.16.8/generated/sphere3.html new file mode 100644 index 00000000..948046a3 --- /dev/null +++ b/v0.16.8/generated/sphere3.html @@ -0,0 +1,4432 @@ +
    + diff --git a/v0.16.8/generated/spinweighted/index.html b/v0.16.8/generated/spinweighted/index.html new file mode 100644 index 00000000..4f4ae506 --- /dev/null +++ b/v0.16.8/generated/spinweighted/index.html @@ -0,0 +1,56 @@ + +Spin-weighted spherical harmonics · FastTransforms.jl

    Spin-weighted spherical harmonics

    This example plays with analysis of:

    \[f(r) = e^{{\rm i} k\cdot r},\]

    for some $k\in\mathbb{R}^3$ and where $r\in\mathbb{S}^2$, using spin-$0$ spherical harmonics.

    It applies ð, the spin-raising operator, both on the spin-$0$ coefficients as well as the original function, followed by a spin-$1$ analysis to compare coefficients.

    For the storage pattern of the arrays, please consult the documentation.

    using FastTransforms, LinearAlgebra

    The colatitudinal grid (mod $\pi$):

    N = 10
    +θ = (0.5:N-0.5)/N
    0.05:0.1:0.95

    The longitudinal grid (mod $\pi$):

    M = 2*N-1
    +φ = (0:M-1)*2/M
    0.0:0.10526315789473684:1.894736842105263

    Our choice of $k$ and angular parametrization of $r$:

    k = [2/7, 3/7, 6/7]
    +r = (θ,φ) -> [sinpi(θ)*cospi(φ), sinpi(θ)*sinpi(φ), cospi(θ)]
    #1 (generic function with 1 method)

    On the tensor product grid, our function samples are:

    F = [exp(im*(k⋅r(θ,φ))) for θ in θ, φ in φ]
    10×19 Matrix{ComplexF64}:
    + 0.628413+0.77788im   0.613246+0.789892im   0.603399+0.79744im    0.600106+0.79992im    0.603786+0.797146im   0.613972+0.789328im   0.629387+0.777092im   0.64815+0.761513im   0.668065+0.744103im   0.686931+0.726723im  0.702801+0.711386im    0.71416+0.699982im   0.720001+0.693973im    0.71983+0.694151im  0.713662+0.700491im   0.702017+0.71216im    0.685934+0.727664im  0.666955+0.745098im   0.647044+0.762452im
    + 0.626742+0.779227im  0.582025+0.813171im   0.552374+0.833596im   0.542362+0.840145im    0.55355+0.832816im   0.584193+0.811615im   0.629571+0.776943im   0.68294+0.730474im   0.736952+0.675945im   0.785185+0.619262im  0.823211+0.567736im   0.848825+0.528674im   0.861428+0.507879im   0.861065+0.508495im   0.84773+0.530428im   0.821392+0.570364im   0.782715+0.62238im   0.734019+0.679129im   0.679858+0.733344im
    + 0.690857+0.722991im  0.625071+0.780568im   0.580335+0.814378im   0.565059+0.82505im    0.582122+0.813101im   0.628309+0.777964im   0.694941+0.719066im  0.769832+0.638246im   0.840471+0.541857im   0.897514+0.440985im  0.936972+0.349406im   0.959893+0.280368im   0.969821+0.243819im   0.969549+0.244899im  0.958985+0.283457im   0.935221+0.354065im   0.894765+0.446538im  0.836798+0.547511im    0.76563+0.643282im
    + 0.799876+0.600166im  0.729022+0.68449im    0.678871+0.734257im   0.661444+0.749994im   0.680901+0.732375im   0.732596+0.680663im   0.804139+0.594441im  0.878702+0.477371im   0.940401+0.340068im    0.97989+0.199537im  0.997175+0.0751106im  0.999864-0.0165003im  0.997938-0.0641824im  0.998027-0.062782im  0.999923-0.0124432im  0.996684+0.0813636im  0.978303+0.207181im  0.937478+0.348046im   0.874727+0.484617im
    + 0.914598+0.404364im  0.858511+0.512795im   0.815749+0.578405im   0.800419+0.599441im    0.81752+0.5759im     0.861473+0.507803im   0.917769+0.397116im  0.967817+0.251653im   0.996186+0.0872572im   0.99722-0.07452im   0.977203-0.212305im   0.950621-0.310353im    0.93288-0.360187im   0.933439-0.358735im  0.952008-0.306074im   0.978656-0.205506im   0.997827-0.065887im   0.99532+0.0966353im  0.965471+0.260509im
    + 0.989052+0.147569im  0.963701+0.266985im   0.939852+0.341582im   0.930644+0.365927im   0.940896+0.338696im   0.965234+0.261387im   0.990188+0.13974im   0.999905-0.0137846im  0.983699-0.179822im    0.94183-0.33609im    0.88602-0.463647im   0.834409-0.551146im   0.804097-0.594498im   0.805021-0.593247im  0.836879-0.547388im   0.889222-0.457475im   0.944703-0.327927im  0.985349-0.170549im   0.999989-0.00462386im
    +  0.99096-0.134156im  0.999703-0.0243628im  0.998928+0.0462861im  0.997566+0.0697274im  0.999053+0.0435207im  0.999562-0.0295972im  0.989978-0.141225im  0.960887-0.276941im   0.908431-0.418034im   0.837893-0.545834im  0.762849-0.646576im   0.700449-0.713703im   0.665602-0.746307im   0.666649-0.745372im  0.703339-0.710855im    0.76689-0.641779im   0.842129-0.539276im   0.91195-0.410301im   0.963143-0.26899im
    + 0.919472-0.393156im  0.950297-0.311346im   0.966254-0.257589im   0.970887-0.23954im    0.965686-0.259711im   0.948995-0.315292im    0.91723-0.398357im  0.867837-0.49685im    0.802371-0.596825im   0.727938-0.685643im  0.656033-0.754733im   0.599431-0.800426im   0.568692-0.82255im    0.569608-0.821916im  0.602006-0.798492im   0.659781-0.751458im   0.732172-0.68112im   0.806377-0.591401im   0.871077-0.491147im
    +  0.80566-0.592379im  0.837633-0.546233im   0.856754-0.515725im   0.862863-0.505438im   0.856026-0.516933im   0.836173-0.548466im     0.8035-0.595305im  0.759389-0.650637im   0.707251-0.706962im   0.652712-0.757606im  0.602883-0.79783im    0.564968-0.825113im   0.544739-0.838606im   0.545338-0.838216im  0.566673-0.823943im   0.605429-0.795899im   0.655721-0.755004im  0.710305-0.703894im   0.762122-0.647434im
    + 0.695346-0.718675im   0.70912-0.705088im   0.717813-0.696236im   0.720677-0.693271im   0.717475-0.696585im   0.708471-0.70574im    0.694445-0.719545im  0.676692-0.736266im   0.656981-0.753907im   0.637428-0.77051im   0.620269-0.784389im   0.607563-0.794272im   0.600886-0.799335im   0.601083-0.799186im  0.608129-0.793839im   0.621132-0.783706im   0.638483-0.769636im  0.658105-0.752927im    0.67776-0.735284im

    We precompute a spin-$0$ spherical harmonic–Fourier plan:

    P = plan_spinsph2fourier(F, 0)
    FastTransforms Spin-weighted spherical harmonic--Fourier plan for 10×19-element array of ComplexF64

    And an FFTW Fourier analysis plan on $\mathbb{S}^2$:

    PA = plan_spinsph_analysis(F, 0)
    FastTransforms plan for FFTW Fourier analysis on the sphere (spin-weighted) for 10×19-element array of ComplexF64

    Its spin-$0$ spherical harmonic coefficients are:

    U⁰ = P\(PA*F)
    10×19 Matrix{ComplexF64}:
    +      2.98294-8.51991e-17im     -0.560381+0.373587im        0.560381+0.373587im        0.0307268-0.0737442im       0.0307268+0.0737442im      0.00123905+0.0063329im     -0.00123905+0.0063329im    -0.000278656-0.000280997im  -0.000278656+0.000280997im    1.91763e-5+3.91877e-6im    -1.91763e-5+3.91877e-6im    -7.51512e-7+3.05775e-7im    -7.51512e-7-3.05775e-7im     1.62607e-8-2.39542e-8im    -1.62607e-8-2.39542e-8im   -7.57573e-12+9.06989e-10im   -7.6043e-12-9.06983e-10im  -1.32856e-11-2.14392e-11im   1.44574e-11-2.09394e-11im
    + -9.83939e-17+1.585im           -0.147488-0.221233im       -0.147488+0.221233im        0.0242802+0.0101168im      -0.0242802+0.0101168im       -0.001828+0.000357651im     -0.001828-0.000357651im    7.31346e-5-7.25251e-5im    -7.31346e-5-7.25251e-5im    -9.36425e-7+4.58234e-6im    -9.36425e-7-4.58234e-6im    -6.79393e-8-1.66977e-7im     6.79393e-8-1.66977e-7im     4.99533e-9+3.39094e-9im     4.99533e-9-3.39094e-9im   -1.78808e-10-1.4939e-12im    1.78807e-10-1.49874e-12im   3.97537e-12-2.47069e-12im   3.88749e-12+2.67669e-12im
    +    -0.296042+1.9373e-16im      0.0419095-0.0279397im     -0.0419095-0.0279397im     -0.00179667+0.00431201im    -0.00179667-0.00431201im    -5.92556e-5-0.000302862im    5.92556e-5-0.000302862im    1.12623e-5+1.13569e-5im     1.12623e-5-1.13569e-5im    -6.70874e-7-1.37097e-7im     6.70874e-7-1.37097e-7im     2.31726e-8-9.42846e-9im     2.31726e-8+9.42846e-9im   -4.48157e-10+6.60198e-10im   4.48157e-10+6.60199e-10im   1.83296e-13-2.21049e-11im   1.86671e-13+2.21043e-11im   2.77146e-13+4.85403e-13im  -3.40624e-13+4.58315e-13im
    +  7.69323e-17-0.0243812im      0.00315419+0.00473128im    0.00315419-0.00473128im   -0.000498246-0.000207603im   0.000498246-0.000207603im    3.42215e-5-6.6955e-6im      3.42215e-5+6.6955e-6im     -1.23971e-6+1.22938e-6im     1.23971e-6+1.22938e-6im     1.44141e-8-7.05344e-8im     1.44141e-8+7.05344e-8im    9.54963e-10+2.34704e-9im   -9.54963e-10+2.34704e-9im   -6.22737e-11-4.22728e-11im  -6.22737e-11+4.22728e-11im   2.09765e-12+1.71393e-14im  -2.09747e-12+1.79766e-14im  -5.56471e-13+3.3894e-13im   -5.39577e-13-3.78603e-13im
    + -0.000199834-6.42779e-17im  -0.000327232+0.000218154im  0.000327232+0.000218154im    1.67027e-5-4.00864e-5im     1.67027e-5+4.00864e-5im      5.5389e-7+2.83099e-6im     -5.5389e-7+2.83099e-6im    -1.01124e-7-1.01974e-7im    -1.01124e-7+1.01974e-7im     5.69484e-9+1.16377e-9im    -5.69484e-9+1.16377e-9im   -1.69612e-10+6.90117e-11im  -1.69612e-10-6.90117e-11im   2.98197e-12-4.39287e-12im  -2.98201e-12-4.39288e-12im  -3.48909e-14+4.21983e-12im  -3.57157e-14-4.21966e-12im  -4.58893e-14-8.03264e-14im    5.6381e-14-7.5835e-14im
    + -6.51867e-17-0.000282488im    -7.0029e-6-1.05044e-5im    -7.0029e-6+1.05044e-5im     2.24809e-6+9.36704e-7im    -2.24809e-6+9.36704e-7im    -1.76539e-7+3.45402e-8im    -1.76539e-7-3.45402e-8im     6.55393e-9-6.49931e-9im    -6.55393e-9-6.49931e-9im   -7.13679e-11+3.49235e-10im   -7.1368e-11-3.49235e-10im  -4.99715e-12-1.22817e-11im   4.99718e-12-1.22817e-11im   1.69023e-11+1.14737e-11im   1.69023e-11-1.14737e-11im  -5.44917e-13-4.41379e-15im   5.44856e-13-4.70669e-15im    1.5798e-13-9.50585e-14im   1.52381e-13+1.08137e-13im
    +   3.58969e-5-4.03624e-17im    -4.7402e-7+3.16014e-7im     4.7402e-7+3.16014e-7im    -3.23608e-8+7.76658e-8im    -3.23608e-8-7.76658e-8im     -1.6111e-9-8.2345e-9im       1.6111e-9-8.2345e-9im     2.28327e-10+2.30246e-10im   2.28327e-10-2.30246e-10im  -1.02557e-11-2.09579e-12im   1.02557e-11-2.09576e-12im   4.54949e-11-1.8511e-11im    4.54949e-11+1.85109e-11im  -5.65258e-13+8.32684e-13im   5.65261e-13+8.3268e-13im    9.40322e-15-1.14115e-12im   9.65269e-15+1.14112e-12im   8.76404e-15+1.53587e-14im  -1.07761e-14+1.4515e-14im
    +  1.02759e-16+2.64492e-6im    -5.98533e-8-8.978e-8im     -5.98533e-8+8.978e-8im      -2.2753e-10-9.48042e-11im    2.2753e-10-9.48042e-11im   2.65455e-10-5.19369e-11im   2.65455e-10+5.19368e-11im  -1.37076e-11+1.35933e-11im   1.37076e-11+1.35933e-11im   3.35969e-11-1.64405e-10im   3.35969e-11+1.64405e-10im   1.96453e-12+4.82831e-12im  -1.96456e-12+4.82829e-12im  -8.01172e-12-5.43855e-12im  -8.01172e-12+5.43851e-12im   2.15355e-13+1.72018e-15im  -2.15344e-13+1.85439e-15im  -7.69555e-14+4.59648e-14im  -7.40025e-14-5.28722e-14im
    +  -1.25204e-7-1.00025e-16im    6.65757e-9-4.43838e-9im   -6.65757e-9-4.43838e-9im   -1.43603e-11+3.44646e-11im  -1.43603e-11-3.44647e-11im   5.78456e-14+2.95764e-13im  -5.78679e-14+2.9576e-13im   -3.63314e-11-3.66368e-11im  -3.63314e-11+3.66367e-11im   7.38143e-13+1.50851e-13im   -7.3814e-13+1.50867e-13im  -7.24159e-12+2.94646e-12im  -7.24159e-12-2.94644e-12im   4.07073e-14-5.99537e-14im  -4.06954e-14-5.99558e-14im  -1.50601e-15+1.8179e-13im   -1.53602e-15-1.81804e-13im  -6.15023e-16-1.09078e-15im   7.91118e-16-1.04469e-15im
    + -1.37837e-16-3.0609e-9im     4.29751e-10+6.44627e-10im  4.29751e-10-6.44627e-10im  -5.01384e-12-2.08911e-12im   5.01382e-12-2.08911e-12im  -3.61552e-10+7.07385e-11im  -3.61552e-10-7.07385e-11im   2.83376e-12-2.81014e-12im  -2.83376e-12-2.81015e-12im  -4.57901e-11+2.24071e-10im  -4.57901e-11-2.24071e-10im  -4.06243e-13-9.98407e-13im   4.06233e-13-9.98415e-13im   1.09292e-11+7.41901e-12im   1.09292e-11-7.41901e-12im   -4.4566e-14-3.61759e-16im   4.45481e-14-3.97552e-16im   1.05374e-13-6.28694e-14im   1.01304e-13+7.23998e-14im

    We can check its $L^2(\mathbb{S}^2)$ norm against an exact result:

    norm(U⁰) ≈ sqrt(4π)
    true

    Spin can be incremented by applying ð, either on the spin-$0$ coefficients:

    U¹c = zero(U⁰)
    +for n in 1:N-1
    +    U¹c[n, 1] = sqrt(n*(n+1))*U⁰[n+1, 1]
    +end
    +for m in 1:M÷2
    +    for n in 0:N-1
    +        U¹c[n+1, 2m] = -sqrt((n+m)*(n+m+1))*U⁰[n+1, 2m]
    +        U¹c[n+1, 2m+1] = sqrt((n+m)*(n+m+1))*U⁰[n+1, 2m+1]
    +    end
    +end

    or on the original function through analysis with spin-$1$ spherical harmonics:

    F = [-(k[1]*(im*cospi(θ)*cospi(φ) + sinpi(φ)) + k[2]*(im*cospi(θ)*sinpi(φ)-cospi(φ)) - im*k[3]*sinpi(θ))*exp(im*(k⋅r(θ,φ))) for θ in θ, φ in φ]
    10×19 Matrix{ComplexF64}:
    +   0.384531+0.240303im     0.405167+0.0811656im   0.376168-0.08059im    0.296802-0.228644im      0.17173-0.345547im    0.0121942-0.415058im     -0.164084-0.425345im    -0.334877-0.37218im      -0.47719-0.260862im    -0.571781-0.105926im  -0.607006+0.0715576im   -0.58067+0.248234im      -0.499453+0.402825im     -0.376425+0.519276im   -0.227802+0.588046im  -0.0700889+0.605739im   0.0817378+0.573795im    0.214909+0.497059im   0.318781+0.382786im
    +    0.16375+0.41829im      0.162116+0.268361im    0.128477+0.110061im   0.056034-0.0418675im  -0.0588234-0.167146im    -0.211042-0.242529im     -0.383203-0.247832im    -0.546769-0.173942im    -0.669506-0.0288607im   -0.726395+0.162453im  -0.708448+0.365492im   -0.624684+0.547246im      -0.496849+0.685091im     -0.350631+0.769743im   -0.208037+0.802572im  -0.0835191+0.79034im     0.016198+0.740573im   0.0899356+0.659195im    0.13893+0.55045im
    + 0.00394925+0.589002im   -0.0517508+0.441892im   -0.117739+0.283703im  -0.202276+0.132736im    -0.313608+0.0132761im   -0.450683-0.0475101im    -0.596088-0.0271995im   -0.717144+0.0808626im   -0.777618+0.259594im    -0.754769+0.470906im  -0.650847+0.67007im    -0.491452+0.823236im      -0.313141+0.917212im     -0.149502+0.957306im  -0.0230169+0.957535im   0.0563716+0.930505im   0.0891711+0.881918im    0.083394+0.810775im  0.0511118+0.713512im
    +  -0.037706+0.764342im    -0.167663+0.63523im    -0.287398+0.487323im  -0.400578+0.346904im    -0.514827+0.244114im     -0.62967+0.207393im     -0.727882+0.254883im    -0.777945+0.383583im    -0.749353+0.563975im    -0.631836+0.748617im  -0.444017+0.892859im   -0.224888+0.974245im     -0.0160482+0.997806im      0.151723+0.986424im    0.261377+0.965157im    0.306018+0.948535im    0.286044+0.935214im    0.209798+0.910832im  0.0944472+0.857391im
    +  0.0677134+0.90671im     -0.132933+0.832114im    -0.31272+0.722356im  -0.463011+0.610267im    -0.584223+0.531084im     -0.67363+0.512373im     -0.717075+0.564833im    -0.692616+0.674959im    -0.585463+0.805978im    -0.402896+0.912201im  -0.175697+0.960918im   0.0558086+0.947262im       0.258917+0.892857im      0.415705+0.832204im    0.518079+0.796763im    0.559103+0.802847im    0.530434+0.845158im    0.428907+0.898149im   0.265719+0.927327im
    +   0.292353+0.944771im    0.0581069+0.961031im   -0.162367+0.923101im  -0.343726+0.861107im    -0.474077+0.809852im    -0.546787+0.794409im     -0.553921+0.82068im      -0.48849+0.87246im     -0.353637+0.917742im    -0.169005+0.924095im  0.0340849+0.875449im    0.226308+0.779766im       0.391603+0.66433im       0.527207+0.564551im    0.633493+0.513im       0.702424+0.529934im    0.714639+0.614543im    0.649544+0.740756im   0.502126+0.864782im
    +   0.544556+0.82786im      0.335621+0.941682im     0.11692+0.992061im  -0.074329+0.994789im    -0.214433+0.975768im    -0.291963+0.955971im     -0.303796+0.942141im    -0.254076+0.925583im    -0.155653+0.88869im    -0.0290943+0.815954im    0.10377+0.703491im    0.228799+0.562131im       0.344287+0.414327im      0.457269+0.288908im    0.572819+0.215991im    0.682616+0.220188im    0.761104+0.310327im    0.774782+0.470071im   0.701202+0.658896im
    +   0.711777+0.57455im      0.575876+0.753741im    0.402359+0.877629im   0.227778+0.943189im    0.0807159+0.961489im   -0.0227441+0.946886im     -0.078234+0.908848im   -0.0903981+0.849391im   -0.0697694+0.765587im   -0.0288206+0.65453im   0.0229208+0.517715im   0.0830404+0.363193im       0.157068+0.205921im      0.254332+0.067373im    0.379593-0.026087im    0.524118-0.0484074im   0.662039+0.0163403im    0.75688+0.163406im   0.777104+0.364037im
    +   0.726602+0.264733im     0.673634+0.460754im    0.564658+0.62254im     0.42451+0.734172im     0.277783+0.792276im     0.142935+0.801596im     0.0303916+0.769731im   -0.0562551+0.703542im    -0.117442+0.608011im    -0.154422+0.487008im  -0.166521+0.34507im    -0.149734+0.189474im     -0.0974708+0.0321493im  -0.00385489-0.109276im    0.131046-0.212499im    0.296212-0.254862im    0.468111-0.220723im    0.615102-0.109082im   0.707182+0.0630756im
    +   0.597178-0.0185423im    0.601301+0.161421im    0.546217+0.32944im    0.442188+0.46657im      0.304261+0.559965im     0.149097+0.603283im   -0.00741158+0.595734im    -0.151367+0.540622im    -0.271099+0.44408im     -0.356905+0.314404im  -0.400841+0.161998im   -0.397025-0.000359286im   -0.342634-0.157415im     -0.239438-0.292068im  -0.0953011-0.38711im    0.0751723-0.428079im    0.251638-0.406595im    0.410936-0.323077im    0.53139-0.187637im

    We change plans with spin-$1$ now and reanalyze:

    P = plan_spinsph2fourier(F, 1)
    +PA = plan_spinsph_analysis(F, 1)
    +U¹s = P\(PA*F)
    10×19 Matrix{ComplexF64}:
    +  4.81048e-17+2.24152im          0.792499-0.528332im        0.792499+0.528332im       -0.0752649+0.180636im       0.0752649+0.180636im     -0.00429218-0.0219378im     -0.00429218+0.0219378im      0.00124619+0.00125666im    -0.00124619+0.00125666im   -0.000105033-2.1464e-5im    -0.000105033+2.1464e-5im      4.87035e-6-1.98165e-6im    -4.87035e-6-1.98165e-6im    -1.21684e-7+1.79257e-7im    -1.21684e-7-1.79257e-7im     6.4556e-11-7.69602e-9im   -6.42651e-11-7.6961e-9im      1.3734e-10+1.99137e-10im   1.25853e-10-2.02909e-10im
    +    -0.725151+5.32221e-18im      0.361271+0.541907im       -0.361271+0.541907im       -0.0841092-0.0350455im     -0.0841092+0.0350455im     0.00817504-0.00159947im    -0.00817504-0.00159947im   -0.000400574+0.000397236im  -0.000400574-0.000397236im    6.06873e-6-2.9697e-5im     -6.06873e-6-2.9697e-5im      5.08411e-7+1.24954e-6im     5.08411e-7-1.24954e-6im    -4.23861e-8-2.87724e-8im     4.23861e-8-2.87724e-8im     1.69612e-9+1.41282e-11im    1.69628e-9-1.41119e-11im  -4.07203e-11+2.96639e-11im   3.63017e-11+2.53159e-11im
    + -7.43762e-17-0.0844589im       -0.145179+0.096786im       -0.145179-0.096786im       0.00803495-0.0192839im    -0.00803495-0.0192839im    0.000324556+0.00165884im    0.000324556-0.00165884im    -7.29881e-5-7.36014e-5im     7.29881e-5-7.36014e-5im     5.02037e-6+1.02593e-6im     5.02037e-6-1.02593e-6im     -1.9664e-7+8.00072e-8im      1.9664e-7+8.00072e-8im     4.25378e-9-6.26388e-9im     4.25378e-9+6.26388e-9im    6.53269e-12+2.1811e-10im   -6.52146e-12+2.18144e-10im  -1.63776e-11+3.366e-12im    -1.53622e-11-3.76794e-12im
    + -0.000893686-1.84222e-18im     -0.014106-0.0211589im       0.014106-0.0211589im      0.00272901+0.00113709im    0.00272901-0.00113709im   -0.00022178+4.33918e-5im     0.00022178+4.33918e-5im     9.27716e-6-9.19981e-6im     9.27716e-6+9.19981e-6im    -1.22275e-7+5.98394e-7im     1.22275e-7+5.98394e-7im    -9.06826e-9-2.22464e-8im    -9.06826e-9+2.22464e-8im    6.14926e-10+3.8178e-10im   -6.14926e-10+3.81779e-10im  -2.02946e-11+8.95683e-11im  -2.03114e-11-8.95764e-11im  -7.74583e-13-2.47296e-12im   9.78849e-13-2.19174e-12im
    + -2.77419e-17-0.00154725im     0.00179232-0.00119488im    0.00179232+0.00119488im   -0.000108246+0.00025979im   0.000108246+0.00025979im   -4.14499e-6-2.11852e-5im    -4.14499e-6+2.11852e-5im     8.58374e-7+8.65614e-7im    -8.58374e-7+8.65614e-7im    -5.40698e-8-1.11423e-8im    -5.40698e-8+1.11423e-8im     1.63049e-9-7.15813e-10im   -1.63049e-9-7.15813e-10im       2.6e-10+2.34806e-10im       2.6e-10-2.34805e-10im  -9.52905e-12-1.46897e-12im   9.53119e-12-1.47348e-12im   3.24098e-12-6.83905e-13im   3.02544e-12+8.12829e-13im
    +  0.000232639-3.672e-17im      4.53837e-5+6.80755e-5im   -4.53837e-5+6.80755e-5im    -1.68233e-5-7.00961e-6im   -1.68233e-5+7.00961e-6im    1.49733e-6-2.92965e-7im    -1.49733e-6-2.92965e-7im    -6.18845e-8+6.17602e-8im    -6.18845e-8-6.17602e-8im    4.71847e-10-3.03855e-9im   -4.71847e-10-3.03855e-9im     1.02475e-9-3.12162e-10im    1.02475e-9+3.12161e-10im  -2.32851e-11+2.79721e-11im    2.3285e-11+2.79721e-11im   5.51359e-12-2.47804e-11im   5.51954e-12+2.47829e-11im   2.05758e-13+6.50666e-13im  -2.63466e-13+5.82305e-13im
    +   -2.539e-17+1.97929e-5im     3.54721e-6-2.36505e-6im    3.54721e-6+2.36505e-6im     2.74198e-7-6.5817e-7im    -2.74198e-7-6.5817e-7im     1.49997e-8+7.82205e-8im     1.49997e-8-7.82205e-8im    -2.72196e-9-2.73494e-9im     2.72196e-9-2.73494e-9im    4.22222e-10-1.58584e-9im    4.22222e-10+1.58584e-9im     1.4028e-11+4.2318e-11im   -1.40281e-11+4.2318e-11im   -7.00664e-11-6.32065e-11im  -7.00664e-11+6.32064e-11im    1.8132e-12+2.78513e-13im  -1.81361e-12+2.79436e-13im  -8.89729e-13+1.90111e-13im  -8.28862e-13-2.3028e-13im
    +   -1.0618e-6-1.60227e-16im    5.06265e-7+7.59331e-7im   -5.06265e-7+7.59331e-7im     2.28542e-9+1.27481e-9im    2.28542e-9-1.27481e-9im   -1.53825e-9+3.35011e-10im    1.53825e-9+3.35011e-10im   -2.24932e-9-2.42853e-9im    -2.24932e-9+2.42853e-9im    1.43487e-10+3.57671e-11im  -1.43487e-10+3.57671e-11im  -4.84249e-10+1.47683e-10im  -4.84249e-10-1.47683e-10im   9.17835e-12-1.10319e-11im  -9.17827e-12-1.10319e-11im  -2.61497e-12+1.18851e-11im  -2.61825e-12-1.18864e-11im  -8.21156e-14-2.58948e-13im   1.05894e-13-2.32289e-13im
    +  1.80271e-18-2.92736e-8im    -6.36569e-8+4.17996e-8im   -6.36569e-8-4.17996e-8im    6.18282e-10-1.39021e-9im  -6.18282e-10-1.39021e-9im  -4.16445e-10+7.77363e-11im  -4.16445e-10-7.77363e-11im    8.6631e-12-8.2083e-12im   -8.66306e-12-8.20835e-12im  -6.71953e-11+2.52391e-10im  -6.71953e-11-2.52391e-10im  -1.00987e-12-3.04635e-12im   1.00985e-12-3.0463e-12im    1.11584e-11+1.00647e-11im   1.11584e-11-1.00647e-11im  -1.30587e-13-2.0048e-14im    1.30633e-13-2.01267e-14im   1.41977e-13-3.03707e-14im   1.32247e-13+3.68603e-14im
    +   -1.3507e-9+1.40212e-16im  -3.62349e-10-4.74615e-10im  3.62349e-10-4.74615e-10im    1.35757e-9-2.98609e-9im    1.35757e-9+2.98609e-9im  -2.68037e-12-1.17672e-11im   2.68035e-12-1.17672e-11im    3.06502e-9+3.30916e-9im     3.06502e-9-3.30916e-9im    -2.9668e-11-7.39519e-12im    2.9668e-11-7.39519e-12im   6.60325e-10-2.01412e-10im   6.60325e-10+2.01411e-10im  -1.89842e-12+2.28193e-12im   1.89842e-12+2.28191e-12im   3.56751e-12-1.6238e-11im    3.57202e-12+1.62398e-11im   1.69962e-14+5.36059e-14im  -2.19325e-14+4.80988e-14im

    Finally, we check $L^2(\mathbb{S}^2)$ norms against another exact result:

    norm(U¹c) ≈ norm(U¹s) ≈ sqrt(8π/3*(k⋅k))
    true

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/subspaceangles/index.html b/v0.16.8/generated/subspaceangles/index.html new file mode 100644 index 00000000..cfe8ce96 --- /dev/null +++ b/v0.16.8/generated/subspaceangles/index.html @@ -0,0 +1,24 @@ + +Subspace angles · FastTransforms.jl

    Subspace angles

    This example considers the angles between neighbouring Laguerre polynomials with a perturbed measure:

    \[\cos\theta_n = \frac{\langle L_n, L_{n+k}\rangle}{\|L_n\|_2 \|L_{n+k}\|_2},\quad{\rm for}\quad 0\le n < N-k,\]

    where the inner product is defined by $\langle f, g\rangle = \int_0^\infty f(x) g(x) x^\beta e^{-x}{\rm\,d}x$.

    We do so by connecting Laguerre polynomials to the normalized generalized Laguerre polynomials associated with the perturbed measure. It follows by the inner product of the connection coefficients that:

    \[\cos\theta_n = \frac{(V^\top V)_{n, n+k}}{\sqrt{(V^\top V)_{n, n}(V^\top V)_{n+k, n+k}}}.\]
    using FastTransforms, LinearAlgebra

    The neighbouring index k and the maximum degree N-1:

    k, N = 1, 11
    (1, 11)

    The Laguerre connection parameters:

    α, β = 0.0, 0.125
    (0.0, 0.125)

    We precompute a Laguerre–Laguerre plan:

    P = plan_lag2lag(Float64, N, α, β; norm2=true)
    FastTransforms Laguerre--Laguerre plan for 11-element array of Float64

    We apply the plan to the identity, followed by the adjoint plan:

    VtV = parent(P*I)
    +lmul!(P', VtV)
    11×11 Matrix{Float64}:
    +  0.941743    -0.117718    -0.0515016  -0.0321885  -0.0231355  -0.01793    -0.0145681  -0.0122268  -0.0105074  -0.00919399  -0.00815966
    + -0.117718     1.07418     -0.125995   -0.0539157  -0.0333201  -0.0237861  -0.0183502  -0.0148608  -0.0124417  -0.0106716   -0.00932328
    + -0.0515016   -0.125995     1.14505    -0.131707   -0.0557687  -0.0342413  -0.024336   -0.0187146  -0.0151194  -0.0126345   -0.0108205
    + -0.0321885   -0.0539157   -0.131707    1.19444    -0.136106   -0.0572798  -0.0350206  -0.0248132  -0.0190369  -0.0153515   -0.0128093
    + -0.0231355   -0.0333201   -0.0557687  -0.136106    1.23272    -0.139703   -0.0585599  -0.0356975  -0.0252354  -0.0193261   -0.015562
    + -0.01793     -0.0237861   -0.0342413  -0.0572798  -0.139703    1.26415    -0.142756   -0.059673   -0.0362968  -0.0256145   -0.0195886
    + -0.0145681   -0.0183502   -0.024336   -0.0350206  -0.0585599  -0.142756    1.29092    -0.145414   -0.0606594  -0.0368352   -0.0259588
    + -0.0122268   -0.0148608   -0.0187146  -0.0248132  -0.0356975  -0.059673   -0.145414    1.31429    -0.147773   -0.0615464   -0.0373246
    + -0.0105074   -0.0124417   -0.0151194  -0.0190369  -0.0252354  -0.0362968  -0.0606594  -0.147773    1.33507    -0.149896    -0.062353
    + -0.00919399  -0.0106716   -0.0126345  -0.0153515  -0.0193261  -0.0256145  -0.0368352  -0.0615464  -0.149896    1.3538      -0.151829
    + -0.00815966  -0.00932328  -0.0108205  -0.0128093  -0.015562   -0.0195886  -0.0259588  -0.0373246  -0.062353   -0.151829     1.37089

    From this matrix, the angles are recovered from:

    θ = [acos(VtV[n, n+k]/sqrt(VtV[n, n]*VtV[n+k, n+k])) for n in 1:N-k]
    10-element Vector{Float64}:
    + 1.6881063520094897
    + 1.6846487354051982
    + 1.6836556387180577
    + 1.6831998143073255
    + 1.6829427202726823
    + 1.68277949501306
    + 1.682667534322365
    + 1.6825864250312665
    + 1.6825252245704025
    + 1.682477567030148

    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/triangle/index.html b/v0.16.8/generated/triangle/index.html new file mode 100644 index 00000000..a26c5e2a --- /dev/null +++ b/v0.16.8/generated/triangle/index.html @@ -0,0 +1,182 @@ + +Calculus on the reference triangle · FastTransforms.jl

    Calculus on the reference triangle

    In this example, we sample a bivariate function:

    \[f(x,y) = \frac{1}{1+x^2+y^2},\]

    on the reference triangle with vertices $(0,0)$, $(0,1)$, and $(1,0)$ and analyze it in a Proriol series. Then, we find Proriol series for each component of its gradient by term-by-term differentiation of our expansion, and we compare them with the true Proriol series by sampling an exact expression for the gradient.

    We analyze $f(x,y)$ on an $N\times M$ mapped tensor product grid defined by:

    \[\begin{aligned} +x & = (1+u)/2,\quad{\rm and}\quad y = (1-u)(1+v)/4,\quad {\rm where:}\\ +u_n & = \cos\left[(n+\tfrac{1}{2})\pi/N\right],\quad{\rm for}\quad 0\le n < N,\quad{\rm and}\\ +v_m & = \cos\left[(m+\tfrac{1}{2})\pi/M\right],\quad{\rm for}\quad 0\le m < M; +\end{aligned}\]

    we convert the function samples to mapped Chebyshev² coefficients using plan_tri_analysis; and finally, we transform the mapped Chebyshev² coefficients to Proriol coefficients using plan_tri2cheb.

    For the storage pattern of the arrays, please consult the documentation.

    using FastTransforms, LinearAlgebra, Plots
    +const GENFIGS = joinpath(pkgdir(FastTransforms), "docs/src/generated")
    +!isdir(GENFIGS) && mkdir(GENFIGS)
    +plotlyjs()
    Plots.PlotlyJSBackend()

    Our function $f$ and the Cartesian components of its gradient:

    f = (x,y) -> 1/(1+x^2+y^2)
    +fx = (x,y) -> -2x/(1+x^2+y^2)^2
    +fy = (x,y) -> -2y/(1+x^2+y^2)^2
    #5 (generic function with 1 method)

    The polynomial degree:

    N = 15
    +M = N
    15

    The parameters of the Proriol series:

    α, β, γ = 0, 0, 0
    (0, 0, 0)

    The $u$ grid:

    u = [sinpi((N-2n-1)/(2N)) for n in 0:N-1]
    15-element Vector{Float64}:
    +  0.9945218953682733
    +  0.9510565162951536
    +  0.8660254037844386
    +  0.7431448254773942
    +  0.5877852522924731
    +  0.4067366430758002
    +  0.20791169081775934
    +  0.0
    + -0.20791169081775934
    + -0.4067366430758002
    + -0.5877852522924731
    + -0.7431448254773942
    + -0.8660254037844386
    + -0.9510565162951536
    + -0.9945218953682733

    And the $v$ grid:

    v = [sinpi((M-2m-1)/(2M)) for m in 0:M-1]
    15-element Vector{Float64}:
    +  0.9945218953682733
    +  0.9510565162951536
    +  0.8660254037844386
    +  0.7431448254773942
    +  0.5877852522924731
    +  0.4067366430758002
    +  0.20791169081775934
    +  0.0
    + -0.20791169081775934
    + -0.4067366430758002
    + -0.5877852522924731
    + -0.7431448254773942
    + -0.8660254037844386
    + -0.9510565162951536
    + -0.9945218953682733

    Instead of using the $u\times v$ grid, we use one with more accuracy near the origin. Defining $x$ by:

    x = [sinpi((2N-2n-1)/(4N))^2 for n in 0:N-1]
    15-element Vector{Float64}:
    + 0.9972609476841365
    + 0.9755282581475768
    + 0.9330127018922194
    + 0.8715724127386971
    + 0.7938926261462365
    + 0.7033683215379002
    + 0.6039558454088797
    + 0.4999999999999999
    + 0.3960441545911204
    + 0.2966316784620999
    + 0.2061073738537634
    + 0.12842758726130288
    + 0.06698729810778066
    + 0.024471741852423214
    + 0.0027390523158633317

    And $w$ by:

    w = [sinpi((2M-2m-1)/(4M))^2 for m in 0:M-1]
    15-element Vector{Float64}:
    + 0.9972609476841365
    + 0.9755282581475768
    + 0.9330127018922194
    + 0.8715724127386971
    + 0.7938926261462365
    + 0.7033683215379002
    + 0.6039558454088797
    + 0.4999999999999999
    + 0.3960441545911204
    + 0.2966316784620999
    + 0.2061073738537634
    + 0.12842758726130288
    + 0.06698729810778066
    + 0.024471741852423214
    + 0.0027390523158633317

    We see how the two grids are related:

    ((1 .+ u)./2 ≈ x) * ((1 .- u).*(1 .+ v')/4 ≈ reverse(x).*w')
    true

    On the mapped tensor product grid, our function samples are:

    F = [f(x[n+1], x[N-n]*w[m+1]) for n in 0:N-1, m in 0:M-1]
    15×15 Matrix{Float64}:
    + 0.50137   0.50137   0.50137   0.50137   0.50137   0.50137   0.501371  0.501371  0.501371  0.501371  0.501371  0.501371  0.501371  0.501371  0.501371
    + 0.512229  0.512236  0.512249  0.512266  0.512286  0.512308  0.512328  0.512346  0.512361  0.512372  0.512379  0.512383  0.512385  0.512385  0.512386
    + 0.53334   0.533395  0.533499  0.53364   0.533806  0.533979  0.534145  0.534292  0.534412  0.5345    0.534558  0.534592  0.534607  0.534612  0.534613
    + 0.56305   0.563274  0.563699  0.564281  0.564961  0.565675  0.566362  0.56697   0.567464  0.56783   0.568072  0.568211  0.568275  0.568295  0.568299
    + 0.597903  0.598554  0.599792  0.601491  0.603486  0.60559   0.607622  0.609427  0.6109    0.611994  0.612719  0.613134  0.613325  0.613387  0.613397
    + 0.632017  0.633527  0.636406  0.640382  0.645085  0.650086  0.654955  0.659315  0.662898  0.665571  0.66735   0.66837   0.668842  0.668995  0.669018
    + 0.657568  0.660489  0.666088  0.673894  0.683237  0.693308  0.703247  0.712263  0.719753  0.725392  0.729168  0.731342  0.73235   0.732678  0.732728
    + 0.667275  0.672082  0.681371  0.694488  0.710446  0.727971  0.745606  0.761905  0.775667  0.786165  0.79326   0.79737   0.799283  0.799904  0.799999
    + 0.65806   0.664903  0.678251  0.69738   0.721111  0.74777   0.775252  0.801255  0.82368   0.841081  0.85299   0.859943  0.863194  0.864252  0.864414
    + 0.632907  0.641519  0.658477  0.683152  0.714388  0.750331  0.788365  0.825306  0.857936  0.883766  0.901708  0.912284  0.917254  0.918876  0.919123
    + 0.599054  0.608911  0.628482  0.657352  0.694582  0.738395  0.78593   0.833301  0.876165  0.910799  0.935231  0.94978   0.956655  0.958904  0.959246
    + 0.564342  0.574908  0.59603   0.627532  0.668777  0.718232  0.773048  0.82891   0.880558  0.923076  0.953504  0.971796  0.980486  0.983334  0.983768
    + 0.534691  0.545579  0.567447  0.600326  0.643856  0.69679   0.756419  0.818253  0.876403  0.924997  0.960184  0.981503  0.991676  0.995016  0.995526
    + 0.513598  0.524591  0.546739  0.58021   0.624846  0.679621  0.74199   0.80742   0.869666  0.922224  0.960591  0.983966  0.995154  0.998833  0.999394
    + 0.502741  0.513754  0.535975  0.569641  0.614694  0.670229  0.733797  0.800871  0.865052  0.919526  0.959458  0.983854  0.99555   0.999397  0.999985

    We superpose a surface plot of $f$ on top of the grid:

    X = [x for x in x, w in w]
    +Y = [x[N-n]*w[m+1] for n in 0:N-1, m in 0:M-1]
    +scatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:blue)
    +surface!(X, Y, F; legend=false, xlabel="x", ylabel="y", zlabel="f")
    +savefig(joinpath(GENFIGS, "proriol.html"))
    "/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/proriol.html"

    We precompute a Proriol–Chebyshev² plan:

    P = plan_tri2cheb(F, α, β, γ)
    FastTransforms Proriol--Chebyshev² plan for 15×15-element array of Float64

    And an FFTW Chebyshev² plan on the triangle:

    PA = plan_tri_analysis(F)
    FastTransforms plan for FFTW Chebyshev analysis on the triangle for 15×15-element array of Float64

    Its Proriol-$(α,β,γ)$ coefficients are:

    U = P\(PA*F)
    15×15 Matrix{Float64}:
    +  1.53694      -0.193325     -0.0251445     0.0109626    -0.000813095  -0.000299751   8.30397e-5   -1.59722e-6   -3.2141e-6     6.1667e-7     3.19775e-8   -3.21495e-8    4.17144e-9    6.97174e-10  -3.06613e-10
    + -0.111616      0.0391775    -0.00636098   -0.000168172   0.000311296  -5.50434e-5   -2.99195e-6    2.97964e-6   -4.20688e-7   -5.4534e-8     2.85785e-8   -2.74994e-9   -7.77992e-10   2.56775e-10  -1.20763e-11
    + -0.0620411     0.00717668    0.00153132   -0.000551474   4.1134e-5     1.40597e-5   -4.21186e-6    2.00844e-7    1.36869e-7   -3.34625e-8    3.38022e-10   1.36685e-9   -2.6459e-10   -1.30929e-11   1.45495e-11
    +  0.0111316    -0.0036578     0.00043735    4.52913e-5   -2.72385e-5    3.78477e-6    3.57508e-7   -2.26663e-7    2.88459e-8    4.02905e-9   -1.98431e-9    2.01016e-10   4.97746e-11  -1.48758e-11  -2.03146e-12
    +  0.00194132   -7.70184e-5   -0.000145948   3.68556e-5   -1.34273e-6   -1.26813e-6    3.06047e-7   -7.57685e-9   -1.11605e-8    2.45432e-9   -1.63544e-12  -1.03205e-10   9.8773e-12    5.45517e-12  -6.15774e-13
    + -0.000642637   0.000243768  -2.28339e-5   -5.91216e-6    2.28045e-6   -2.36988e-7   -4.55496e-8    1.90448e-8   -1.91046e-9   -4.16463e-10   1.54281e-10   1.00975e-11  -8.91873e-12  -7.74998e-13   5.33203e-13
    + -4.38389e-5   -1.71425e-5    1.23092e-5   -2.29813e-6   -6.48598e-8    1.17977e-7   -2.21226e-8   -4.58497e-10   1.02068e-9   -1.63471e-10  -4.64131e-11   6.91422e-12   3.5224e-12   -3.14298e-13  -2.28438e-13
    +  2.79805e-5   -1.30453e-5    7.26152e-7    5.87656e-7   -1.71884e-7    1.12463e-8    5.13657e-9   -1.54461e-9    7.05239e-11   8.70592e-11   6.67156e-12  -5.87108e-12  -8.8146e-13    3.5065e-13    6.60112e-14
    +  1.15026e-6    1.8828e-6    -8.87898e-7    1.24893e-7    1.74103e-8   -1.00961e-8    1.44036e-9    1.53829e-10  -9.59941e-11  -3.49153e-11   3.35895e-12   3.178e-12    -1.72628e-14  -2.20905e-13  -4.41417e-15
    + -1.05261e-6    6.07061e-7    9.40225e-9   -4.93564e-8    1.14023e-8   -2.56371e-10  -4.79206e-10   1.50921e-11   6.48843e-11   1.18558e-11  -4.29767e-12  -1.50757e-12   2.19175e-13   1.20461e-13  -1.21213e-14
    + -1.0706e-7    -1.2895e-7     5.63778e-8   -5.46716e-9   -1.98245e-9    6.62772e-10   1.96009e-10  -4.05866e-11  -3.72009e-11  -3.44512e-12   3.09917e-12   6.84678e-13  -1.9369e-13   -6.2004e-14    1.20543e-14
    +  4.44232e-8   -2.74042e-8   -3.41194e-9    3.7536e-9    -3.47875e-10  -3.34332e-10  -7.92618e-11   2.84843e-11   1.87606e-11   8.64628e-13  -1.73542e-12  -2.9854e-13    1.16624e-13   2.95553e-14  -7.5397e-15
    +  1.13247e-8    6.98157e-9   -3.2324e-9    -1.06114e-10   1.55319e-10   1.35282e-10   2.8768e-11   -1.28905e-11  -7.59282e-12  -1.99176e-13   7.32664e-13   1.12739e-13  -5.05664e-14  -1.1679e-14    3.30654e-15
    + -2.57523e-9    1.14806e-9    1.12793e-10   2.51422e-11  -4.12541e-11  -3.49672e-11  -7.18293e-12   3.43673e-12   1.96276e-12   3.98594e-14  -1.91744e-13  -2.85196e-14   1.33316e-14   2.99912e-15  -8.74775e-16
    + -7.03699e-10  -8.33285e-12  -8.53391e-12  -1.88826e-12   3.13558e-12   2.65053e-12   5.42528e-13  -2.61311e-13  -1.4878e-13   -2.93192e-15   1.45531e-14   2.15661e-15  -1.01287e-15  -2.27009e-16   6.63378e-17

    Similarly, our function's gradient samples are:

    Fx = [fx(x[n+1], x[N-n]*w[m+1]) for n in 0:N-1, m in 0:M-1]
    15×15 Matrix{Float64}:
    + -0.501366    -0.501366    -0.501366    -0.501367   -0.501367   -0.501368   -0.501368    -0.501369    -0.501369    -0.501369    -0.501369    -0.501369    -0.501369    -0.50137    -0.50137
    + -0.511916    -0.511929    -0.511955    -0.51199    -0.51203    -0.512073   -0.512114    -0.51215     -0.512179    -0.512201    -0.512215    -0.512223    -0.512227    -0.512228   -0.512228
    + -0.530794    -0.530903    -0.53111     -0.531392   -0.531721   -0.532067   -0.532398    -0.532691    -0.532929    -0.533105    -0.533222    -0.533288    -0.533319    -0.533329   -0.53333
    + -0.552621    -0.553061    -0.553896    -0.555039   -0.556378   -0.557787   -0.559142    -0.560343    -0.56132     -0.562044    -0.562524    -0.562798    -0.562924    -0.562965   -0.562972
    + -0.567613    -0.568852    -0.571206    -0.574447   -0.578264   -0.582304   -0.586217    -0.589705    -0.59256     -0.594683    -0.596093    -0.5969      -0.597274    -0.597395   -0.597413
    + -0.561915    -0.564604    -0.569746    -0.576887   -0.585391   -0.594503   -0.603442    -0.611504    -0.618167    -0.623163    -0.626498    -0.628414    -0.629303    -0.629591   -0.629635
    + -0.522296    -0.526946    -0.535918    -0.548553   -0.563869   -0.580614   -0.59738     -0.612796    -0.625752    -0.635596    -0.64223     -0.646065    -0.647848    -0.648427   -0.648515
    + -0.445256    -0.451694    -0.464267    -0.482314   -0.504734   -0.529941   -0.555929    -0.580499    -0.60166     -0.618055    -0.629262    -0.635798    -0.638853    -0.639847   -0.639998
    + -0.343008    -0.350179    -0.364379    -0.385223   -0.411887   -0.442905   -0.476058    -0.508529    -0.537391    -0.560337    -0.576318    -0.585751    -0.590188    -0.591636   -0.591857
    + -0.237644    -0.244156    -0.257234    -0.276874   -0.302772   -0.334005   -0.368724    -0.404089    -0.436673    -0.463364    -0.482369    -0.49375     -0.499145    -0.500911   -0.501181
    + -0.14793     -0.152838    -0.162821    -0.178123   -0.198871   -0.22475    -0.254619    -0.286238    -0.316443    -0.341954    -0.360547    -0.371851    -0.377255    -0.37903    -0.379301
    + -0.0818036   -0.0848957   -0.0912482   -0.101149   -0.114882   -0.132501   -0.153497    -0.176483    -0.199161    -0.218858    -0.233525    -0.242571    -0.246928    -0.248365   -0.248585
    + -0.0383026   -0.0398784   -0.0431393   -0.0482832  -0.0555393  -0.0650468  -0.0766563   -0.0897011   -0.102903    -0.114631    -0.123518    -0.129064    -0.131754    -0.132643   -0.132779
    + -0.0129105   -0.013469    -0.0146303   -0.0164765  -0.0191091  -0.0226062  -0.0269458   -0.0319076   -0.0370169   -0.0416263   -0.0451619   -0.0473866   -0.0484703   -0.0488293  -0.0488842
    + -0.00138458  -0.00144591  -0.00157369  -0.0017776  -0.0020699  -0.0024608  -0.00294973  -0.00351363  -0.00409934  -0.00463189  -0.00504292  -0.00530263  -0.00542945  -0.0054715  -0.00547794

    and:

    Fy = [fy(x[n+1], x[N-n]*w[m+1]) for n in 0:N-1, m in 0:M-1]
    15×15 Matrix{Float64}:
    + -0.00137327  -0.00134334  -0.0012848  -0.00120019  -0.00109322  -0.000968569  -0.000831675  -0.000688523  -0.000545372  -0.000408476  -0.00028382  -0.000176851  -9.22448e-5   -3.36988e-5   -3.77181e-6
    + -0.0128066   -0.0125278   -0.0119824  -0.0111941   -0.0101972   -0.00903524   -0.00775884   -0.0064238    -0.00508851   -0.00381138   -0.00264832  -0.00165022   -0.000860756  -0.000314451  -3.51956e-5
    + -0.0380049   -0.0371844   -0.0355776  -0.0332524   -0.0303075   -0.0268691    -0.0230859    -0.0191228    -0.0151537    -0.0113536    -0.00789053  -0.00491728   -0.00256498   -0.000937054  -0.000104882
    + -0.0812065   -0.0795001   -0.0761501  -0.0712824   -0.0650859   -0.0578104    -0.0497602    -0.0412837    -0.0327574    -0.0245665    -0.017084    -0.0106504    -0.00555645   -0.00203003   -0.000227217
    + -0.146958    -0.144069    -0.138361   -0.129983    -0.119184    -0.106332     -0.0919169    -0.0765485    -0.0609267    -0.0457968    -0.0318962   -0.0199018    -0.0103872    -0.00379541   -0.000424822
    + -0.236327    -0.232283    -0.224184   -0.212046    -0.195994    -0.176349     -0.153701     -0.128945     -0.103249     -0.0779568    -0.0544563   -0.0340361    -0.0177782    -0.00649768   -0.000727317
    + -0.341557    -0.337089    -0.327887   -0.313516    -0.293548    -0.267799     -0.236589     -0.200921     -0.162512     -0.123634     -0.0868006   -0.0544092    -0.028458     -0.0104055    -0.00116482
    + -0.444036    -0.44064     -0.433167   -0.420371    -0.400704    -0.372744     -0.335756     -0.290249     -0.238284     -0.183335     -0.129696    -0.0816541    -0.042795     -0.0156582    -0.00175299
    + -0.521645    -0.520944    -0.518445   -0.512009    -0.498657    -0.475067     -0.438456     -0.387746     -0.32456      -0.253471     -0.181141    -0.114718     -0.0602899    -0.0220791    -0.00247217
    + -0.561955    -0.56477     -0.56909    -0.572203    -0.569958    -0.557059     -0.528047     -0.479085     -0.410077     -0.325915     -0.235743    -0.15036      -0.0792838    -0.0290664    -0.00325507
    + -0.568241    -0.574301    -0.585148   -0.597987    -0.608136    -0.608908     -0.592332     -0.551271     -0.482733     -0.39071      -0.286235    -0.183948     -0.0973409    -0.0357278    -0.00400177
    + -0.553639    -0.562044    -0.577773   -0.598286    -0.618953    -0.632479     -0.629146     -0.598851     -0.535295     -0.440581     -0.326642    -0.211418     -0.112256     -0.0412478    -0.00462083
    + -0.532026    -0.541842    -0.560603   -0.586131    -0.614126    -0.637241     -0.644834     -0.624688     -0.567634     -0.473605     -0.354585    -0.230866     -0.122928     -0.0452109    -0.00506551
    + -0.513246    -0.523783    -0.544148   -0.572459    -0.604752    -0.633849     -0.648741     -0.635973     -0.584411     -0.492221     -0.371057    -0.242599     -0.129432     -0.0476343    -0.00533757
    + -0.502731    -0.513558    -0.534584   -0.564086    -0.5983      -0.630184     -0.648628     -0.639638     -0.591107     -0.500247     -0.378429    -0.247947     -0.132421     -0.0487506    -0.00546294

    For the partial derivative with respect to $x$, Olver et al. derive simple expressions for the representation of this component using a Proriol-$(α+1,β,γ+1)$ series.

    Gx = zeros(Float64, N, M)
    +for m = 0:M-2
    +    for n = 0:N-2
    +        cf1 = m == 0 ? sqrt((n+1)*(n+2m+α+β+γ+3)/(2m+β+γ+2)*(m+γ+1)*8) : sqrt((n+1)*(n+2m+α+β+γ+3)/(2m+β+γ+1)*(m+β+γ+1)/(2m+β+γ+2)*(m+γ+1)*8)
    +        cf2 = sqrt((n+α+1)*(m+1)/(2m+β+γ+2)*(m+β+1)/(2m+β+γ+3)*(n+2m+β+γ+3)*8)
    +        Gx[n+1, m+1] = cf1*U[n+2, m+1] + cf2*U[n+1, m+2]
    +    end
    +end
    +Px = plan_tri2cheb(Fx, α+1, β, γ+1)
    +Ux = Px\(PA*Fx)
    15×15 Matrix{Float64}:
    + -0.773299      0.0719368     0.0119032    -0.00401514    0.00019856    0.000113662  -2.54579e-5   -2.37734e-7    1.03154e-6   -1.60364e-7   -1.48715e-8    9.00448e-9   -8.97984e-10  -2.25712e-10   7.08345e-11
    + -0.223004      0.012725      0.00860848   -0.00187243   -6.32049e-5    8.83801e-5   -1.1938e-5    -1.70295e-6    7.84936e-7   -6.04351e-8   -2.29491e-8    6.45891e-9   -1.23274e-10  -2.55873e-10   5.02863e-11
    +  0.11832      -0.0184961    -0.000231272   0.000708416  -0.000135183  -8.87531e-7    5.70658e-6   -1.08175e-6   -3.24208e-8    5.24395e-8   -8.50439e-9   -6.81366e-10   4.94759e-10  -5.56212e-11  -1.16264e-11
    + -0.00167066    0.00241796   -0.00105495    0.000134423   2.32113e-5   -1.10992e-5    1.1835e-6     2.55024e-7   -1.00326e-7    8.05316e-9    2.80938e-9   -8.7387e-10    3.23657e-11   3.71003e-11  -4.71068e-12
    + -0.00812992    0.00143193    9.5529e-5    -8.6497e-5     1.46322e-5    6.06568e-7   -7.52503e-7    1.2809e-7     6.41825e-9   -6.76798e-9    1.05309e-9    1.02809e-10  -6.38887e-11  -4.60392e-12   3.43243e-12
    +  0.00134269   -0.000440563   9.61255e-5   -3.9763e-6    -4.07863e-6    1.16773e-6   -7.04875e-8   -3.76919e-8    1.09538e-8   -5.76688e-10  -3.72602e-10   6.21711e-11   2.34835e-11  -3.2882e-12   -1.02884e-12
    +  0.000287063  -5.03055e-5   -1.79725e-5    8.218e-6     -1.05921e-6   -1.54886e-7    8.35392e-8   -1.11246e-8   -1.37121e-9    7.34787e-10   2.35493e-11  -4.77271e-11  -3.34076e-12   2.78949e-12   2.71211e-14
    + -0.000114154   3.91247e-5   -6.41411e-6   -4.57437e-7    4.91696e-7   -1.01409e-7    1.49415e-12   4.73486e-9   -8.87703e-10  -2.29361e-10   4.39281e-11   2.01683e-11  -2.11614e-12  -1.32214e-12   2.00992e-13
    +  6.85033e-7   -1.42592e-6    2.06904e-6   -6.34246e-7    4.7282e-8     2.34694e-8   -7.6778e-9     5.5085e-10    4.78984e-10   2.64819e-11  -3.78611e-11  -5.1067e-12    2.54966e-12   4.06715e-13  -1.864e-13
    +  5.33318e-6   -2.34997e-6    2.9001e-7     9.45302e-8   -4.55097e-8    7.14241e-9    5.63984e-10  -6.44351e-10  -2.12017e-10   3.18388e-11   2.34425e-11  -6.60806e-13  -1.88678e-12  -1.3375e-14    1.29399e-13
    + -7.178e-7      3.37971e-7   -1.76689e-7    3.81304e-8   -1.11295e-9   -2.48346e-9    1.24297e-10   4.4888e-10    8.62743e-11  -3.44107e-11  -1.28198e-11   1.79781e-12   1.16066e-12  -8.54664e-14  -7.76696e-14
    + -1.15794e-7    9.93748e-8   -5.08059e-9   -9.45944e-9    2.65499e-9    1.0741e-9    -1.63514e-10  -2.32795e-10  -3.2556e-11    2.03989e-11   5.96492e-12  -1.21808e-12  -5.75474e-13   6.48293e-14   3.81294e-14
    +  3.9894e-8    -2.50603e-8    1.18665e-8   -3.69658e-10  -9.43959e-10  -3.54061e-10   7.05516e-11   8.25944e-11   9.98239e-12  -7.57296e-12  -2.02892e-12   4.70119e-13   2.00988e-13  -2.57424e-14  -1.32678e-14
    + -2.62946e-9   -2.09989e-9   -2.15583e-10   7.49659e-11   1.79606e-10   6.58835e-11  -1.40885e-11  -1.57067e-11  -1.81381e-12   1.45833e-12   3.81132e-13  -9.14684e-14  -3.80521e-14   5.0455e-15    2.50858e-15
    + -2.54665e-10   1.01738e-11   9.71511e-12  -3.41148e-12  -8.12007e-12  -2.97149e-12   6.40143e-13   7.10069e-13   8.15917e-14  -6.60158e-14  -1.72077e-14   4.14496e-15   1.71962e-15  -2.2876e-16   -1.13402e-16

    For the partial derivative with respect to y, the analogous formulae result in a Proriol-$(α,β+1,γ+1)$ series.

    Gy = zeros(Float64, N, M)
    +for m = 0:M-2
    +    for n = 0:N-2
    +        Gy[n+1, m+1] = 4*sqrt((m+1)*(m+β+γ+2))*U[n+1, m+2]
    +    end
    +end
    +Py = plan_tri2cheb(Fy, α, β+1, γ+1)
    +Uy = Py\(PA*Fy)
    15×15 Matrix{Float64}:
    + -1.09361      -0.246364      0.151902     -0.0145451    -0.00656722    0.00215264   -4.78099e-5   -0.00010909    2.3401e-5     1.34141e-6   -1.47744e-6    2.0787e-7     3.67354e-8   -1.65807e-8    1.30376e-9
    +  0.221621     -0.0623246    -0.00233026    0.00556863   -0.00120594   -7.75602e-5    8.91904e-5   -1.42786e-5   -2.06939e-6    1.19894e-6   -1.26335e-7   -3.89258e-8    1.42118e-8   -5.60413e-10  -5.94789e-10
    +  0.0405975     0.0150038    -0.00764145    0.000735827   0.000308032  -0.000109184   6.01193e-6    4.6455e-6    -1.26982e-6    1.41852e-8    6.28061e-8   -1.31763e-8   -5.9232e-10    7.38193e-10  -7.35368e-11
    + -0.0206916     0.00428514    0.000627575  -0.000487257   8.29203e-5    9.26771e-6   -6.78478e-6    9.79044e-7    1.52891e-7   -8.32462e-8    9.23683e-9    2.37699e-9   -9.33549e-10  -2.54744e-11   5.13027e-11
    + -0.000435682  -0.00142999    0.000510686  -2.40196e-5   -2.77834e-5    7.93359e-6   -2.26768e-7   -3.78776e-7    9.31367e-8   -7.2912e-11   -4.72764e-9    9.19194e-10   1.83342e-10  -5.07975e-11  -9.73934e-12
    +  0.00137896   -0.000223726  -8.19213e-5    4.07942e-5   -5.19191e-6   -1.18071e-6    5.70025e-7   -6.48815e-8   -1.5805e-8     6.74933e-9   -5.22325e-10  -3.74577e-10   2.04346e-11   2.31629e-11  -1.45177e-12
    + -9.69728e-5    0.000120605  -3.18437e-5   -1.1605e-6     2.58441e-6   -5.73589e-7   -1.36421e-8    3.47148e-8   -6.95597e-9   -3.86259e-10   4.86604e-10   7.26716e-11  -3.26991e-11  -5.56081e-12   2.18954e-12
    + -7.37954e-5    7.11448e-6    8.14267e-6   -3.07439e-6    2.46945e-7    1.33361e-7   -4.63869e-8    3.49405e-9    1.69907e-9   -3.52262e-10  -2.0628e-10    1.07045e-11   1.73416e-11  -1.8863e-13   -1.24582e-12
    +  1.06509e-5   -8.69913e-6    1.73077e-6    3.10766e-7   -2.22347e-7    3.70118e-8    3.9365e-9    -2.94133e-9   -2.1645e-10    2.94085e-10   6.42746e-11  -2.03559e-11  -6.99253e-12   1.20561e-12   5.53977e-13
    +  3.43376e-6    9.14735e-8   -6.84306e-7    2.05405e-7   -4.3435e-9    -1.35246e-8    2.85641e-9    1.15843e-9   -9.56842e-11  -1.59766e-10  -1.45705e-11   1.36984e-11   2.42348e-12  -9.13606e-13  -2.1722e-13
    + -7.29088e-7    5.54006e-7   -7.49665e-8   -3.61409e-8    1.78364e-8   -4.16571e-10  -1.36673e-9   -4.10814e-10   8.7904e-11    6.99201e-11   1.76879e-12  -6.65703e-12  -7.49913e-13   4.67293e-13   7.67801e-14
    + -1.56131e-7   -3.60972e-8    5.21717e-8   -9.4804e-9    -1.42828e-9    2.71687e-10   4.84151e-10   1.24081e-10  -3.76632e-11  -2.38535e-11   1.8587e-13    2.38967e-12   2.02458e-13  -1.7174e-13   -2.30964e-14
    +  4.09267e-8   -3.39594e-8   -3.06743e-9    7.64151e-10   3.1345e-10   -7.59843e-11  -1.14715e-10  -2.73663e-11   9.55255e-12   5.56757e-12  -1.22703e-13  -5.69904e-13  -4.18788e-14   4.1357e-14    5.08049e-15
    +  8.57039e-9    6.52951e-9   -7.39973e-11  -9.29778e-11  -3.74097e-11   9.74901e-12   1.40429e-11   3.27131e-12  -1.19385e-12  -6.78321e-13   1.80885e-14   6.99172e-14   4.88939e-15  -5.08953e-15  -6.06728e-16
    + -2.86296e-9    1.21911e-13   2.03235e-12   2.54849e-12   1.02299e-12  -2.68873e-13  -3.8519e-13   -8.94733e-14   3.28268e-14   1.85955e-14  -5.06217e-16  -1.9183e-15   -1.33318e-16   1.39692e-16   1.65859e-17

    The $2$-norm relative error in differentiating the Proriol series for $f(x,y)$ term-by-term and its sampled gradient is:

    hypot(norm(Ux-Gx), norm(Uy-Gy))/hypot(norm(Ux), norm(Uy))
    1.8769900773500217e-8

    This error can be improved upon by increasing $N$ and $M$.


    This page was generated using Literate.jl.

    diff --git a/v0.16.8/generated/zernike.html b/v0.16.8/generated/zernike.html new file mode 100644 index 00000000..3bc6c7ea --- /dev/null +++ b/v0.16.8/generated/zernike.html @@ -0,0 +1,6485 @@ +
    + diff --git a/v0.16.8/index.html b/v0.16.8/index.html new file mode 100644 index 00000000..e3abd889 --- /dev/null +++ b/v0.16.8/index.html @@ -0,0 +1,2 @@ + +Home · FastTransforms.jl

    FastTransforms.jl Documentation

    Introduction

    FastTransforms.jl allows the user to conveniently work with orthogonal polynomials with degrees well into the millions.

    This package provides a Julia wrapper for the C library of the same name. Additionally, all three types of nonuniform fast Fourier transforms available, as well as the Padua transform.

    Fast orthogonal polynomial transforms

    For this documentation, please see the documentation for FastTransforms. Most transforms have separate forward and inverse plans. In some instances, however, the inverse is in the sense of least-squares, and therefore only the forward transform is planned.

    Fast Cholesky factorization of the Gram matrix

    FastTransforms.GramMatrixType
    GramMatrix(W::AbstractMatrix, X::AbstractMatrix)

    Construct a symmetric positive-definite Gram matrix with data stored in $W$. Given a family of orthogonal polynomials ${\bf P}(x) = \{p_0(x), p_1(x),\ldots\}$ and a continuous inner product $\langle f, g\rangle$, the Gram matrix is defined by:

    \[W_{i,j} = \langle p_{i-1}, p_{j-1}\rangle.\]

    Moreover, given $X$, the transposed Jacobi matrix that satisfies $x {\bf P}(x) = {\bf P}(x) X$, the Gram matrix satisfies the skew-symmetric rank-2 displacement equation ($X = X_{1:n, 1:n}$):

    \[X^\top W - WX = GJG^\top,\]

    where $J = \begin{pmatrix} 0 & 1\\ -1 & 0\end{pmatrix}$ and where:

    \[G_{:, 1} = e_n,\quad{\rm and}\quad G_{:, 2} = W_{n-1, :}X_{n-1, n} - X^\top W_{:, n}.\]

    Fast ($O(n^2)$) Cholesky factorization of the Gram matrix returns the connection coefficients between ${\bf P}(x)$ and the polynomials ${\bf Q}(x)$ orthogonal in the modified inner product, ${\bf P}(x) = {\bf Q}(x) R$.

    source
    FastTransforms.ChebyshevGramMatrixType
    ChebyshevGramMatrix(μ::AbstractVector)

    Construct a Chebyshev–Gram matrix of size (length(μ)+1)÷2 with entries:

    \[W_{i,j} = \frac{\mu_{|i-j|+1} +\mu_{i+j-1}}{2}.\]

    Due to the linearization of a product of two first-kind Chebyshev polynomials, the Chebyshev–Gram matrix can be constructed from modified Chebyshev moments:

    \[\mu_{n} = \langle T_{n-1}, 1\rangle.\]

    Specialized construction and Cholesky factorization is given for this type.

    See also GramMatrix for the general case.

    source

    Nonuniform fast Fourier transforms

    FastTransforms.nufft1Function

    Computes a nonuniform fast Fourier transform of type I:

    \[f_j = \sum_{k=0}^{N-1} c_k e^{-2\pi{\rm i} \frac{j}{N} \omega_k},\quad{\rm for}\quad 0 \le j \le N-1.\]
    source

    Computes a 2D nonuniform fast Fourier transform of type I-I:

    \[F_{i,j} = \sum_{k=0}^{M-1}\sum_{\ell=0}^{N-1} C_{k,\ell} e^{-2\pi{\rm i} (\frac{i}{M} \omega_k + \frac{j}{N} \pi_{\ell})},\quad{\rm for}\quad 0 \le i \le M-1,\quad 0 \le j \le N-1.\]
    source
    FastTransforms.nufft2Function

    Computes a nonuniform fast Fourier transform of type II:

    \[f_j = \sum_{k=0}^{N-1} c_k e^{-2\pi{\rm i} x_j k},\quad{\rm for}\quad 0 \le j \le N-1.\]
    source

    Computes a 2D nonuniform fast Fourier transform of type II-II:

    \[F_{i,j} = \sum_{k=0}^{M-1}\sum_{\ell=0}^{N-1} C_{k,\ell} e^{-2\pi{\rm i} (x_i k + y_j \ell)},\quad{\rm for}\quad 0 \le i \le M-1,\quad 0 \le j \le N-1.\]
    source
    FastTransforms.nufft3Function

    Computes a nonuniform fast Fourier transform of type III:

    \[f_j = \sum_{k=0}^{N-1} c_k e^{-2\pi{\rm i} x_j \omega_k},\quad{\rm for}\quad 0 \le j \le N-1.\]
    source

    Other Exported Methods

    FastTransforms.gauntFunction

    Calculates the Gaunt coefficients, defined by:

    \[a(m,n,\mu,\nu,q) = \frac{2(n+\nu-2q)+1}{2} \frac{(n+\nu-2q-m-\mu)!}{(n+\nu-2q+m+\mu)!} \int_{-1}^{+1} P_n^m(x) P_\nu^\mu(x) P_{n+\nu-2q}^{m+\mu}(x) {\rm\,d}x.\]

    or defined by:

    \[P_n^m(x) P_\nu^\mu(x) = \sum_{q=0}^{q_{\rm max}} a(m,n,\mu,\nu,q) P_{n+\nu-2q}^{m+\mu}(x)\]

    This is a Julia implementation of the stable recurrence described in:

    Y.-l. Xu, Fast evaluation of Gaunt coefficients: recursive approach, J. Comp. Appl. Math., 85:53–65, 1997.

    source

    Calculates the Gaunt coefficients in 64-bit floating-point arithmetic.

    source
    FastTransforms.sphevaluateFunction

    Pointwise evaluation of real orthonormal spherical harmonic:

    \[Y_\ell^m(\theta,\varphi) = (-1)^{|m|}\sqrt{(\ell+\frac{1}{2})\frac{(\ell-|m|)!}{(\ell+|m|)!}} P_\ell^{|m|}(\cos\theta) \sqrt{\frac{2-\delta_{m,0}}{2\pi}} \left\{\begin{array}{ccc} \cos m\varphi & {\rm for} & m \ge 0,\\ \sin(-m\varphi) & {\rm for} & m < 0.\end{array}\right.\]
    source

    Internal Methods

    Miscellaneous Special Functions

    FastTransforms.δFunction

    The Kronecker $\delta$ function:

    \[\delta_{k,j} = \left\{\begin{array}{ccc} 1 & {\rm for} & k = j,\\ 0 & {\rm for} & k \ne j.\end{array}\right.\]
    source
    FastTransforms.ΛFunction

    The Lambda function $\Lambda(z) = \frac{\Gamma(z+\frac{1}{2})}{\Gamma(z+1)}$ for the ratio of gamma functions.

    source

    For 64-bit floating-point arithmetic, the Lambda function uses the asymptotic series for $\tau$ in Appendix B of

    I. Bogaert and B. Michiels and J. Fostier, 𝒪(1) computation of Legendre polynomials and Gauss–Legendre nodes and weights for parallel computing, SIAM J. Sci. Comput., 34:C83–C101, 2012.

    source

    The Lambda function $\Lambda(z,λ₁,λ₂) = \frac{\Gamma(z+\lambda_1)}{Γ(z+\lambda_2)}$ for the ratio of gamma functions.

    source
    FastTransforms.lambertwFunction

    The principal branch of the Lambert-W function, defined by $x = W_0(x) e^{W_0(x)}$, computed using Halley's method for $x \in [-e^{-1},\infty)$.

    source

    Modified Chebyshev Moment-Based Quadrature

    FastTransforms.chebyshevlogmoments1Function

    Modified Chebyshev moments of the first kind with respect to the logarithmic weight:

    \[ \int_{-1}^{+1} T_n(x) \log\left(\frac{1-x}{2}\right){\rm\,d}x.\]
    source
    FastTransforms.chebyshevlogmoments2Function

    Modified Chebyshev moments of the second kind with respect to the logarithmic weight:

    \[ \int_{-1}^{+1} U_n(x) \log\left(\frac{1-x}{2}\right){\rm\,d}x.\]
    source

    Elliptic

    FastTransforms.EllipticModule

    FastTransforms submodule for the computation of some elliptic integrals and functions.

    Complete elliptic integrals of the first and second kinds:

    \[K(k) = \int_0^{\frac{\pi}{2}} \frac{{\rm d}\theta}{\sqrt{1-k^2\sin^2\theta}},\quad{\rm and},\]
    \[E(k) = \int_0^{\frac{\pi}{2}} \sqrt{1-k^2\sin^2\theta} {\rm\,d}\theta.\]

    Jacobian elliptic functions:

    \[x = \int_0^{\operatorname{sn}(x,k)} \frac{{\rm d}t}{\sqrt{(1-t^2)(1-k^2t^2)}},\]
    \[x = \int_{\operatorname{cn}(x,k)}^1 \frac{{\rm d}t}{\sqrt{(1-t^2)[1-k^2(1-t^2)]}},\]
    \[x = \int_{\operatorname{dn}(x,k)}^1 \frac{{\rm d}t}{\sqrt{(1-t^2)(t^2-1+k^2)}},\]

    and the remaining nine are defined by:

    \[\operatorname{pq}(x,k) = \frac{\operatorname{pr}(x,k)}{\operatorname{qr}(x,k)} = \frac{1}{\operatorname{qp}(x,k)}.\]
    source
    diff --git a/v0.16.8/search/index.html b/v0.16.8/search/index.html new file mode 100644 index 00000000..40ee1831 --- /dev/null +++ b/v0.16.8/search/index.html @@ -0,0 +1,2 @@ + +Search · FastTransforms.jl diff --git a/v0.16.8/search_index.js b/v0.16.8/search_index.js new file mode 100644 index 00000000..a37b6073 --- /dev/null +++ b/v0.16.8/search_index.js @@ -0,0 +1,3 @@ +var documenterSearchIndex = {"docs": +[{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/spinweighted.jl\"","category":"page"},{"location":"generated/spinweighted/#Spin-weighted-spherical-harmonics-1","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"","category":"section"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"This example plays with analysis of:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"f(r) = e^rm i kcdot r","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"for some kinmathbbR^3 and where rinmathbbS^2, using spin-0 spherical harmonics.","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"It applies ð, the spin-raising operator, both on the spin-0 coefficients as well as the original function, followed by a spin-1 analysis to compare coefficients.","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"For the storage pattern of the arrays, please consult the documentation.","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"using FastTransforms, LinearAlgebra","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"The colatitudinal grid (mod pi):","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"N = 10\nθ = (0.5:N-0.5)/N","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"0.05:0.1:0.95","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"The longitudinal grid (mod pi):","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"M = 2*N-1\nφ = (0:M-1)*2/M","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"0.0:0.10526315789473684:1.894736842105263","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"Our choice of k and angular parametrization of r:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"k = [2/7, 3/7, 6/7]\nr = (θ,φ) -> [sinpi(θ)*cospi(φ), sinpi(θ)*sinpi(φ), cospi(θ)]","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"#1 (generic function with 1 method)","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"On the tensor product grid, our function samples are:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"F = [exp(im*(k⋅r(θ,φ))) for θ in θ, φ in φ]","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"10×19 Matrix{ComplexF64}:\n 0.628413+0.77788im 0.613246+0.789892im 0.603399+0.79744im 0.600106+0.79992im 0.603786+0.797146im 0.613972+0.789328im 0.629387+0.777092im 0.64815+0.761513im 0.668065+0.744103im 0.686931+0.726723im 0.702801+0.711386im 0.71416+0.699982im 0.720001+0.693973im 0.71983+0.694151im 0.713662+0.700491im 0.702017+0.71216im 0.685934+0.727664im 0.666955+0.745098im 0.647044+0.762452im\n 0.626742+0.779227im 0.582025+0.813171im 0.552374+0.833596im 0.542362+0.840145im 0.55355+0.832816im 0.584193+0.811615im 0.629571+0.776943im 0.68294+0.730474im 0.736952+0.675945im 0.785185+0.619262im 0.823211+0.567736im 0.848825+0.528674im 0.861428+0.507879im 0.861065+0.508495im 0.84773+0.530428im 0.821392+0.570364im 0.782715+0.62238im 0.734019+0.679129im 0.679858+0.733344im\n 0.690857+0.722991im 0.625071+0.780568im 0.580335+0.814378im 0.565059+0.82505im 0.582122+0.813101im 0.628309+0.777964im 0.694941+0.719066im 0.769832+0.638246im 0.840471+0.541857im 0.897514+0.440985im 0.936972+0.349406im 0.959893+0.280368im 0.969821+0.243819im 0.969549+0.244899im 0.958985+0.283457im 0.935221+0.354065im 0.894765+0.446538im 0.836798+0.547511im 0.76563+0.643282im\n 0.799876+0.600166im 0.729022+0.68449im 0.678871+0.734257im 0.661444+0.749994im 0.680901+0.732375im 0.732596+0.680663im 0.804139+0.594441im 0.878702+0.477371im 0.940401+0.340068im 0.97989+0.199537im 0.997175+0.0751106im 0.999864-0.0165003im 0.997938-0.0641824im 0.998027-0.062782im 0.999923-0.0124432im 0.996684+0.0813636im 0.978303+0.207181im 0.937478+0.348046im 0.874727+0.484617im\n 0.914598+0.404364im 0.858511+0.512795im 0.815749+0.578405im 0.800419+0.599441im 0.81752+0.5759im 0.861473+0.507803im 0.917769+0.397116im 0.967817+0.251653im 0.996186+0.0872572im 0.99722-0.07452im 0.977203-0.212305im 0.950621-0.310353im 0.93288-0.360187im 0.933439-0.358735im 0.952008-0.306074im 0.978656-0.205506im 0.997827-0.065887im 0.99532+0.0966353im 0.965471+0.260509im\n 0.989052+0.147569im 0.963701+0.266985im 0.939852+0.341582im 0.930644+0.365927im 0.940896+0.338696im 0.965234+0.261387im 0.990188+0.13974im 0.999905-0.0137846im 0.983699-0.179822im 0.94183-0.33609im 0.88602-0.463647im 0.834409-0.551146im 0.804097-0.594498im 0.805021-0.593247im 0.836879-0.547388im 0.889222-0.457475im 0.944703-0.327927im 0.985349-0.170549im 0.999989-0.00462386im\n 0.99096-0.134156im 0.999703-0.0243628im 0.998928+0.0462861im 0.997566+0.0697274im 0.999053+0.0435207im 0.999562-0.0295972im 0.989978-0.141225im 0.960887-0.276941im 0.908431-0.418034im 0.837893-0.545834im 0.762849-0.646576im 0.700449-0.713703im 0.665602-0.746307im 0.666649-0.745372im 0.703339-0.710855im 0.76689-0.641779im 0.842129-0.539276im 0.91195-0.410301im 0.963143-0.26899im\n 0.919472-0.393156im 0.950297-0.311346im 0.966254-0.257589im 0.970887-0.23954im 0.965686-0.259711im 0.948995-0.315292im 0.91723-0.398357im 0.867837-0.49685im 0.802371-0.596825im 0.727938-0.685643im 0.656033-0.754733im 0.599431-0.800426im 0.568692-0.82255im 0.569608-0.821916im 0.602006-0.798492im 0.659781-0.751458im 0.732172-0.68112im 0.806377-0.591401im 0.871077-0.491147im\n 0.80566-0.592379im 0.837633-0.546233im 0.856754-0.515725im 0.862863-0.505438im 0.856026-0.516933im 0.836173-0.548466im 0.8035-0.595305im 0.759389-0.650637im 0.707251-0.706962im 0.652712-0.757606im 0.602883-0.79783im 0.564968-0.825113im 0.544739-0.838606im 0.545338-0.838216im 0.566673-0.823943im 0.605429-0.795899im 0.655721-0.755004im 0.710305-0.703894im 0.762122-0.647434im\n 0.695346-0.718675im 0.70912-0.705088im 0.717813-0.696236im 0.720677-0.693271im 0.717475-0.696585im 0.708471-0.70574im 0.694445-0.719545im 0.676692-0.736266im 0.656981-0.753907im 0.637428-0.77051im 0.620269-0.784389im 0.607563-0.794272im 0.600886-0.799335im 0.601083-0.799186im 0.608129-0.793839im 0.621132-0.783706im 0.638483-0.769636im 0.658105-0.752927im 0.67776-0.735284im","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"We precompute a spin-0 spherical harmonic–Fourier plan:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"P = plan_spinsph2fourier(F, 0)","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"FastTransforms Spin-weighted spherical harmonic--Fourier plan for 10×19-element array of ComplexF64","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"And an FFTW Fourier analysis plan on mathbbS^2:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"PA = plan_spinsph_analysis(F, 0)","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"FastTransforms plan for FFTW Fourier analysis on the sphere (spin-weighted) for 10×19-element array of ComplexF64","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"Its spin-0 spherical harmonic coefficients are:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"U⁰ = P\\(PA*F)","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"10×19 Matrix{ComplexF64}:\n 2.98294-8.51991e-17im -0.560381+0.373587im 0.560381+0.373587im 0.0307268-0.0737442im 0.0307268+0.0737442im 0.00123905+0.0063329im -0.00123905+0.0063329im -0.000278656-0.000280997im -0.000278656+0.000280997im 1.91763e-5+3.91877e-6im -1.91763e-5+3.91877e-6im -7.51512e-7+3.05775e-7im -7.51512e-7-3.05775e-7im 1.62607e-8-2.39542e-8im -1.62607e-8-2.39542e-8im -7.57573e-12+9.06989e-10im -7.6043e-12-9.06983e-10im -1.32856e-11-2.14392e-11im 1.44574e-11-2.09394e-11im\n -9.83939e-17+1.585im -0.147488-0.221233im -0.147488+0.221233im 0.0242802+0.0101168im -0.0242802+0.0101168im -0.001828+0.000357651im -0.001828-0.000357651im 7.31346e-5-7.25251e-5im -7.31346e-5-7.25251e-5im -9.36425e-7+4.58234e-6im -9.36425e-7-4.58234e-6im -6.79393e-8-1.66977e-7im 6.79393e-8-1.66977e-7im 4.99533e-9+3.39094e-9im 4.99533e-9-3.39094e-9im -1.78808e-10-1.4939e-12im 1.78807e-10-1.49874e-12im 3.97537e-12-2.47069e-12im 3.88749e-12+2.67669e-12im\n -0.296042+1.9373e-16im 0.0419095-0.0279397im -0.0419095-0.0279397im -0.00179667+0.00431201im -0.00179667-0.00431201im -5.92556e-5-0.000302862im 5.92556e-5-0.000302862im 1.12623e-5+1.13569e-5im 1.12623e-5-1.13569e-5im -6.70874e-7-1.37097e-7im 6.70874e-7-1.37097e-7im 2.31726e-8-9.42846e-9im 2.31726e-8+9.42846e-9im -4.48157e-10+6.60198e-10im 4.48157e-10+6.60199e-10im 1.83296e-13-2.21049e-11im 1.86671e-13+2.21043e-11im 2.77146e-13+4.85403e-13im -3.40624e-13+4.58315e-13im\n 7.69323e-17-0.0243812im 0.00315419+0.00473128im 0.00315419-0.00473128im -0.000498246-0.000207603im 0.000498246-0.000207603im 3.42215e-5-6.6955e-6im 3.42215e-5+6.6955e-6im -1.23971e-6+1.22938e-6im 1.23971e-6+1.22938e-6im 1.44141e-8-7.05344e-8im 1.44141e-8+7.05344e-8im 9.54963e-10+2.34704e-9im -9.54963e-10+2.34704e-9im -6.22737e-11-4.22728e-11im -6.22737e-11+4.22728e-11im 2.09765e-12+1.71393e-14im -2.09747e-12+1.79766e-14im -5.56471e-13+3.3894e-13im -5.39577e-13-3.78603e-13im\n -0.000199834-6.42779e-17im -0.000327232+0.000218154im 0.000327232+0.000218154im 1.67027e-5-4.00864e-5im 1.67027e-5+4.00864e-5im 5.5389e-7+2.83099e-6im -5.5389e-7+2.83099e-6im -1.01124e-7-1.01974e-7im -1.01124e-7+1.01974e-7im 5.69484e-9+1.16377e-9im -5.69484e-9+1.16377e-9im -1.69612e-10+6.90117e-11im -1.69612e-10-6.90117e-11im 2.98197e-12-4.39287e-12im -2.98201e-12-4.39288e-12im -3.48909e-14+4.21983e-12im -3.57157e-14-4.21966e-12im -4.58893e-14-8.03264e-14im 5.6381e-14-7.5835e-14im\n -6.51867e-17-0.000282488im -7.0029e-6-1.05044e-5im -7.0029e-6+1.05044e-5im 2.24809e-6+9.36704e-7im -2.24809e-6+9.36704e-7im -1.76539e-7+3.45402e-8im -1.76539e-7-3.45402e-8im 6.55393e-9-6.49931e-9im -6.55393e-9-6.49931e-9im -7.13679e-11+3.49235e-10im -7.1368e-11-3.49235e-10im -4.99715e-12-1.22817e-11im 4.99718e-12-1.22817e-11im 1.69023e-11+1.14737e-11im 1.69023e-11-1.14737e-11im -5.44917e-13-4.41379e-15im 5.44856e-13-4.70669e-15im 1.5798e-13-9.50585e-14im 1.52381e-13+1.08137e-13im\n 3.58969e-5-4.03624e-17im -4.7402e-7+3.16014e-7im 4.7402e-7+3.16014e-7im -3.23608e-8+7.76658e-8im -3.23608e-8-7.76658e-8im -1.6111e-9-8.2345e-9im 1.6111e-9-8.2345e-9im 2.28327e-10+2.30246e-10im 2.28327e-10-2.30246e-10im -1.02557e-11-2.09579e-12im 1.02557e-11-2.09576e-12im 4.54949e-11-1.8511e-11im 4.54949e-11+1.85109e-11im -5.65258e-13+8.32684e-13im 5.65261e-13+8.3268e-13im 9.40322e-15-1.14115e-12im 9.65269e-15+1.14112e-12im 8.76404e-15+1.53587e-14im -1.07761e-14+1.4515e-14im\n 1.02759e-16+2.64492e-6im -5.98533e-8-8.978e-8im -5.98533e-8+8.978e-8im -2.2753e-10-9.48042e-11im 2.2753e-10-9.48042e-11im 2.65455e-10-5.19369e-11im 2.65455e-10+5.19368e-11im -1.37076e-11+1.35933e-11im 1.37076e-11+1.35933e-11im 3.35969e-11-1.64405e-10im 3.35969e-11+1.64405e-10im 1.96453e-12+4.82831e-12im -1.96456e-12+4.82829e-12im -8.01172e-12-5.43855e-12im -8.01172e-12+5.43851e-12im 2.15355e-13+1.72018e-15im -2.15344e-13+1.85439e-15im -7.69555e-14+4.59648e-14im -7.40025e-14-5.28722e-14im\n -1.25204e-7-1.00025e-16im 6.65757e-9-4.43838e-9im -6.65757e-9-4.43838e-9im -1.43603e-11+3.44646e-11im -1.43603e-11-3.44647e-11im 5.78456e-14+2.95764e-13im -5.78679e-14+2.9576e-13im -3.63314e-11-3.66368e-11im -3.63314e-11+3.66367e-11im 7.38143e-13+1.50851e-13im -7.3814e-13+1.50867e-13im -7.24159e-12+2.94646e-12im -7.24159e-12-2.94644e-12im 4.07073e-14-5.99537e-14im -4.06954e-14-5.99558e-14im -1.50601e-15+1.8179e-13im -1.53602e-15-1.81804e-13im -6.15023e-16-1.09078e-15im 7.91118e-16-1.04469e-15im\n -1.37837e-16-3.0609e-9im 4.29751e-10+6.44627e-10im 4.29751e-10-6.44627e-10im -5.01384e-12-2.08911e-12im 5.01382e-12-2.08911e-12im -3.61552e-10+7.07385e-11im -3.61552e-10-7.07385e-11im 2.83376e-12-2.81014e-12im -2.83376e-12-2.81015e-12im -4.57901e-11+2.24071e-10im -4.57901e-11-2.24071e-10im -4.06243e-13-9.98407e-13im 4.06233e-13-9.98415e-13im 1.09292e-11+7.41901e-12im 1.09292e-11-7.41901e-12im -4.4566e-14-3.61759e-16im 4.45481e-14-3.97552e-16im 1.05374e-13-6.28694e-14im 1.01304e-13+7.23998e-14im","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"We can check its L^2(mathbbS^2) norm against an exact result:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"norm(U⁰) ≈ sqrt(4π)","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"true","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"Spin can be incremented by applying ð, either on the spin-0 coefficients:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"U¹c = zero(U⁰)\nfor n in 1:N-1\n U¹c[n, 1] = sqrt(n*(n+1))*U⁰[n+1, 1]\nend\nfor m in 1:M÷2\n for n in 0:N-1\n U¹c[n+1, 2m] = -sqrt((n+m)*(n+m+1))*U⁰[n+1, 2m]\n U¹c[n+1, 2m+1] = sqrt((n+m)*(n+m+1))*U⁰[n+1, 2m+1]\n end\nend","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"or on the original function through analysis with spin-1 spherical harmonics:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"F = [-(k[1]*(im*cospi(θ)*cospi(φ) + sinpi(φ)) + k[2]*(im*cospi(θ)*sinpi(φ)-cospi(φ)) - im*k[3]*sinpi(θ))*exp(im*(k⋅r(θ,φ))) for θ in θ, φ in φ]","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"10×19 Matrix{ComplexF64}:\n 0.384531+0.240303im 0.405167+0.0811656im 0.376168-0.08059im 0.296802-0.228644im 0.17173-0.345547im 0.0121942-0.415058im -0.164084-0.425345im -0.334877-0.37218im -0.47719-0.260862im -0.571781-0.105926im -0.607006+0.0715576im -0.58067+0.248234im -0.499453+0.402825im -0.376425+0.519276im -0.227802+0.588046im -0.0700889+0.605739im 0.0817378+0.573795im 0.214909+0.497059im 0.318781+0.382786im\n 0.16375+0.41829im 0.162116+0.268361im 0.128477+0.110061im 0.056034-0.0418675im -0.0588234-0.167146im -0.211042-0.242529im -0.383203-0.247832im -0.546769-0.173942im -0.669506-0.0288607im -0.726395+0.162453im -0.708448+0.365492im -0.624684+0.547246im -0.496849+0.685091im -0.350631+0.769743im -0.208037+0.802572im -0.0835191+0.79034im 0.016198+0.740573im 0.0899356+0.659195im 0.13893+0.55045im\n 0.00394925+0.589002im -0.0517508+0.441892im -0.117739+0.283703im -0.202276+0.132736im -0.313608+0.0132761im -0.450683-0.0475101im -0.596088-0.0271995im -0.717144+0.0808626im -0.777618+0.259594im -0.754769+0.470906im -0.650847+0.67007im -0.491452+0.823236im -0.313141+0.917212im -0.149502+0.957306im -0.0230169+0.957535im 0.0563716+0.930505im 0.0891711+0.881918im 0.083394+0.810775im 0.0511118+0.713512im\n -0.037706+0.764342im -0.167663+0.63523im -0.287398+0.487323im -0.400578+0.346904im -0.514827+0.244114im -0.62967+0.207393im -0.727882+0.254883im -0.777945+0.383583im -0.749353+0.563975im -0.631836+0.748617im -0.444017+0.892859im -0.224888+0.974245im -0.0160482+0.997806im 0.151723+0.986424im 0.261377+0.965157im 0.306018+0.948535im 0.286044+0.935214im 0.209798+0.910832im 0.0944472+0.857391im\n 0.0677134+0.90671im -0.132933+0.832114im -0.31272+0.722356im -0.463011+0.610267im -0.584223+0.531084im -0.67363+0.512373im -0.717075+0.564833im -0.692616+0.674959im -0.585463+0.805978im -0.402896+0.912201im -0.175697+0.960918im 0.0558086+0.947262im 0.258917+0.892857im 0.415705+0.832204im 0.518079+0.796763im 0.559103+0.802847im 0.530434+0.845158im 0.428907+0.898149im 0.265719+0.927327im\n 0.292353+0.944771im 0.0581069+0.961031im -0.162367+0.923101im -0.343726+0.861107im -0.474077+0.809852im -0.546787+0.794409im -0.553921+0.82068im -0.48849+0.87246im -0.353637+0.917742im -0.169005+0.924095im 0.0340849+0.875449im 0.226308+0.779766im 0.391603+0.66433im 0.527207+0.564551im 0.633493+0.513im 0.702424+0.529934im 0.714639+0.614543im 0.649544+0.740756im 0.502126+0.864782im\n 0.544556+0.82786im 0.335621+0.941682im 0.11692+0.992061im -0.074329+0.994789im -0.214433+0.975768im -0.291963+0.955971im -0.303796+0.942141im -0.254076+0.925583im -0.155653+0.88869im -0.0290943+0.815954im 0.10377+0.703491im 0.228799+0.562131im 0.344287+0.414327im 0.457269+0.288908im 0.572819+0.215991im 0.682616+0.220188im 0.761104+0.310327im 0.774782+0.470071im 0.701202+0.658896im\n 0.711777+0.57455im 0.575876+0.753741im 0.402359+0.877629im 0.227778+0.943189im 0.0807159+0.961489im -0.0227441+0.946886im -0.078234+0.908848im -0.0903981+0.849391im -0.0697694+0.765587im -0.0288206+0.65453im 0.0229208+0.517715im 0.0830404+0.363193im 0.157068+0.205921im 0.254332+0.067373im 0.379593-0.026087im 0.524118-0.0484074im 0.662039+0.0163403im 0.75688+0.163406im 0.777104+0.364037im\n 0.726602+0.264733im 0.673634+0.460754im 0.564658+0.62254im 0.42451+0.734172im 0.277783+0.792276im 0.142935+0.801596im 0.0303916+0.769731im -0.0562551+0.703542im -0.117442+0.608011im -0.154422+0.487008im -0.166521+0.34507im -0.149734+0.189474im -0.0974708+0.0321493im -0.00385489-0.109276im 0.131046-0.212499im 0.296212-0.254862im 0.468111-0.220723im 0.615102-0.109082im 0.707182+0.0630756im\n 0.597178-0.0185423im 0.601301+0.161421im 0.546217+0.32944im 0.442188+0.46657im 0.304261+0.559965im 0.149097+0.603283im -0.00741158+0.595734im -0.151367+0.540622im -0.271099+0.44408im -0.356905+0.314404im -0.400841+0.161998im -0.397025-0.000359286im -0.342634-0.157415im -0.239438-0.292068im -0.0953011-0.38711im 0.0751723-0.428079im 0.251638-0.406595im 0.410936-0.323077im 0.53139-0.187637im","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"We change plans with spin-1 now and reanalyze:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"P = plan_spinsph2fourier(F, 1)\nPA = plan_spinsph_analysis(F, 1)\nU¹s = P\\(PA*F)","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"10×19 Matrix{ComplexF64}:\n 4.81048e-17+2.24152im 0.792499-0.528332im 0.792499+0.528332im -0.0752649+0.180636im 0.0752649+0.180636im -0.00429218-0.0219378im -0.00429218+0.0219378im 0.00124619+0.00125666im -0.00124619+0.00125666im -0.000105033-2.1464e-5im -0.000105033+2.1464e-5im 4.87035e-6-1.98165e-6im -4.87035e-6-1.98165e-6im -1.21684e-7+1.79257e-7im -1.21684e-7-1.79257e-7im 6.4556e-11-7.69602e-9im -6.42651e-11-7.6961e-9im 1.3734e-10+1.99137e-10im 1.25853e-10-2.02909e-10im\n -0.725151+5.32221e-18im 0.361271+0.541907im -0.361271+0.541907im -0.0841092-0.0350455im -0.0841092+0.0350455im 0.00817504-0.00159947im -0.00817504-0.00159947im -0.000400574+0.000397236im -0.000400574-0.000397236im 6.06873e-6-2.9697e-5im -6.06873e-6-2.9697e-5im 5.08411e-7+1.24954e-6im 5.08411e-7-1.24954e-6im -4.23861e-8-2.87724e-8im 4.23861e-8-2.87724e-8im 1.69612e-9+1.41282e-11im 1.69628e-9-1.41119e-11im -4.07203e-11+2.96639e-11im 3.63017e-11+2.53159e-11im\n -7.43762e-17-0.0844589im -0.145179+0.096786im -0.145179-0.096786im 0.00803495-0.0192839im -0.00803495-0.0192839im 0.000324556+0.00165884im 0.000324556-0.00165884im -7.29881e-5-7.36014e-5im 7.29881e-5-7.36014e-5im 5.02037e-6+1.02593e-6im 5.02037e-6-1.02593e-6im -1.9664e-7+8.00072e-8im 1.9664e-7+8.00072e-8im 4.25378e-9-6.26388e-9im 4.25378e-9+6.26388e-9im 6.53269e-12+2.1811e-10im -6.52146e-12+2.18144e-10im -1.63776e-11+3.366e-12im -1.53622e-11-3.76794e-12im\n -0.000893686-1.84222e-18im -0.014106-0.0211589im 0.014106-0.0211589im 0.00272901+0.00113709im 0.00272901-0.00113709im -0.00022178+4.33918e-5im 0.00022178+4.33918e-5im 9.27716e-6-9.19981e-6im 9.27716e-6+9.19981e-6im -1.22275e-7+5.98394e-7im 1.22275e-7+5.98394e-7im -9.06826e-9-2.22464e-8im -9.06826e-9+2.22464e-8im 6.14926e-10+3.8178e-10im -6.14926e-10+3.81779e-10im -2.02946e-11+8.95683e-11im -2.03114e-11-8.95764e-11im -7.74583e-13-2.47296e-12im 9.78849e-13-2.19174e-12im\n -2.77419e-17-0.00154725im 0.00179232-0.00119488im 0.00179232+0.00119488im -0.000108246+0.00025979im 0.000108246+0.00025979im -4.14499e-6-2.11852e-5im -4.14499e-6+2.11852e-5im 8.58374e-7+8.65614e-7im -8.58374e-7+8.65614e-7im -5.40698e-8-1.11423e-8im -5.40698e-8+1.11423e-8im 1.63049e-9-7.15813e-10im -1.63049e-9-7.15813e-10im 2.6e-10+2.34806e-10im 2.6e-10-2.34805e-10im -9.52905e-12-1.46897e-12im 9.53119e-12-1.47348e-12im 3.24098e-12-6.83905e-13im 3.02544e-12+8.12829e-13im\n 0.000232639-3.672e-17im 4.53837e-5+6.80755e-5im -4.53837e-5+6.80755e-5im -1.68233e-5-7.00961e-6im -1.68233e-5+7.00961e-6im 1.49733e-6-2.92965e-7im -1.49733e-6-2.92965e-7im -6.18845e-8+6.17602e-8im -6.18845e-8-6.17602e-8im 4.71847e-10-3.03855e-9im -4.71847e-10-3.03855e-9im 1.02475e-9-3.12162e-10im 1.02475e-9+3.12161e-10im -2.32851e-11+2.79721e-11im 2.3285e-11+2.79721e-11im 5.51359e-12-2.47804e-11im 5.51954e-12+2.47829e-11im 2.05758e-13+6.50666e-13im -2.63466e-13+5.82305e-13im\n -2.539e-17+1.97929e-5im 3.54721e-6-2.36505e-6im 3.54721e-6+2.36505e-6im 2.74198e-7-6.5817e-7im -2.74198e-7-6.5817e-7im 1.49997e-8+7.82205e-8im 1.49997e-8-7.82205e-8im -2.72196e-9-2.73494e-9im 2.72196e-9-2.73494e-9im 4.22222e-10-1.58584e-9im 4.22222e-10+1.58584e-9im 1.4028e-11+4.2318e-11im -1.40281e-11+4.2318e-11im -7.00664e-11-6.32065e-11im -7.00664e-11+6.32064e-11im 1.8132e-12+2.78513e-13im -1.81361e-12+2.79436e-13im -8.89729e-13+1.90111e-13im -8.28862e-13-2.3028e-13im\n -1.0618e-6-1.60227e-16im 5.06265e-7+7.59331e-7im -5.06265e-7+7.59331e-7im 2.28542e-9+1.27481e-9im 2.28542e-9-1.27481e-9im -1.53825e-9+3.35011e-10im 1.53825e-9+3.35011e-10im -2.24932e-9-2.42853e-9im -2.24932e-9+2.42853e-9im 1.43487e-10+3.57671e-11im -1.43487e-10+3.57671e-11im -4.84249e-10+1.47683e-10im -4.84249e-10-1.47683e-10im 9.17835e-12-1.10319e-11im -9.17827e-12-1.10319e-11im -2.61497e-12+1.18851e-11im -2.61825e-12-1.18864e-11im -8.21156e-14-2.58948e-13im 1.05894e-13-2.32289e-13im\n 1.80271e-18-2.92736e-8im -6.36569e-8+4.17996e-8im -6.36569e-8-4.17996e-8im 6.18282e-10-1.39021e-9im -6.18282e-10-1.39021e-9im -4.16445e-10+7.77363e-11im -4.16445e-10-7.77363e-11im 8.6631e-12-8.2083e-12im -8.66306e-12-8.20835e-12im -6.71953e-11+2.52391e-10im -6.71953e-11-2.52391e-10im -1.00987e-12-3.04635e-12im 1.00985e-12-3.0463e-12im 1.11584e-11+1.00647e-11im 1.11584e-11-1.00647e-11im -1.30587e-13-2.0048e-14im 1.30633e-13-2.01267e-14im 1.41977e-13-3.03707e-14im 1.32247e-13+3.68603e-14im\n -1.3507e-9+1.40212e-16im -3.62349e-10-4.74615e-10im 3.62349e-10-4.74615e-10im 1.35757e-9-2.98609e-9im 1.35757e-9+2.98609e-9im -2.68037e-12-1.17672e-11im 2.68035e-12-1.17672e-11im 3.06502e-9+3.30916e-9im 3.06502e-9-3.30916e-9im -2.9668e-11-7.39519e-12im 2.9668e-11-7.39519e-12im 6.60325e-10-2.01412e-10im 6.60325e-10+2.01411e-10im -1.89842e-12+2.28193e-12im 1.89842e-12+2.28191e-12im 3.56751e-12-1.6238e-11im 3.57202e-12+1.62398e-11im 1.69962e-14+5.36059e-14im -2.19325e-14+4.80988e-14im","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"Finally, we check L^2(mathbbS^2) norms against another exact result:","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"norm(U¹c) ≈ norm(U¹s) ≈ sqrt(8π/3*(k⋅k))","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"true","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"","category":"page"},{"location":"generated/spinweighted/#","page":"Spin-weighted spherical harmonics","title":"Spin-weighted spherical harmonics","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/annulus.jl\"","category":"page"},{"location":"generated/annulus/#Integration-on-an-annulus-1","page":"Integration on an annulus","title":"Integration on an annulus","text":"","category":"section"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"In this example, we explore integration of the function:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":" f(xy) = fracx^3x^2+y^2-frac14","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"over the annulus defined by (rtheta) rho r 1 0 theta 2pi with parameter rho = frac23. We will calculate the integral:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":" int_0^2piint_frac23^1 f(rcosthetarsintheta)^2rrmdrrmdtheta","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"by analyzing the function in an annulus polynomial series. We analyze the function on an Ntimes M tensor product grid defined by:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"beginaligned\nr_n = sqrtcos^2left(n+tfrac12)pi2Nright + rho^2 sin^2left(n+tfrac12)pi2Nrightquadrm forquad 0le n Nquadrm and\ntheta_m = 2pi mMquadrm forquad 0le m M\nendaligned","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"we convert the function samples to Chebyshev×Fourier coefficients using plan_annulus_analysis; and finally, we transform the Chebyshev×Fourier coefficients to annulus polynomial coefficients using plan_ann2cxf.","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"For the storage pattern of the arrays, please consult the documentation.","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"using FastTransforms, LinearAlgebra, Plots\nconst GENFIGS = joinpath(pkgdir(FastTransforms), \"docs/src/generated\")\n!isdir(GENFIGS) && mkdir(GENFIGS)\nplotlyjs()","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"Plots.PlotlyJSBackend()","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"Our function f on the annulus:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"f = (x,y) -> x^3/(x^2+y^2-1/4)","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"#1 (generic function with 1 method)","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"The annulus polynomial degree:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"N = 8\nM = 4N-3","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"29","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"The annulus inner radius:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"ρ = 2/3","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"0.6666666666666666","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"The radial grid:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"r = [begin t = (N-n-0.5)/(2N); ct = sinpi(t); st = cospi(t); sqrt(ct^2+ρ^2*st^2) end for n in 0:N-1]","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"8-element Vector{Float64}:\n 0.9973277184004194\n 0.9763124517373388\n 0.9362410410518701\n 0.8811435628419545\n 0.8173313074308551\n 0.7535895152498838\n 0.7008983100472356\n 0.6706577864713554","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"The angular grid (mod pi):","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"θ = (0:M-1)*2/M","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"0.0:0.06896551724137931:1.9310344827586206","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"On the mapped tensor product grid, our function samples are:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"F = [f(r*cospi(θ), r*sinpi(θ)) for r in r, θ in θ]","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"8×29 Matrix{Float64}:\n 1.33215 1.24089 0.995869 0.672118 0.361447 0.136908 0.0255072 0.000211389 -0.00564085 -0.0675532 -0.235438 -0.509748 -0.838068 -1.13371 -1.30886 -1.30886 -1.13371 -0.838068 -0.509748 -0.235438 -0.0675532 -0.00564085 0.000211389 0.0255072 0.136908 0.361447 0.672118 0.995869 1.24089\n 1.32342 1.23275 0.989337 0.66771 0.359076 0.13601 0.0253399 0.000210003 -0.00560385 -0.0671101 -0.233894 -0.506405 -0.832572 -1.12628 -1.30028 -1.30028 -1.12628 -0.832572 -0.506405 -0.233894 -0.0671101 -0.00560385 0.000210003 0.0253399 0.13601 0.359076 0.66771 0.989337 1.23275\n 1.30981 1.22008 0.979168 0.660847 0.355385 0.134612 0.0250795 0.000207844 -0.00554625 -0.0664203 -0.23149 -0.5012 -0.824014 -1.1147 -1.28691 -1.28691 -1.1147 -0.824014 -0.5012 -0.23149 -0.0664203 -0.00554625 0.000207844 0.0250795 0.134612 0.355385 0.660847 0.979168 1.22008\n 1.29961 1.21057 0.97154 0.655698 0.352617 0.133563 0.0248841 0.000206225 -0.00550305 -0.0659028 -0.229687 -0.497295 -0.817594 -1.10601 -1.27689 -1.27689 -1.10601 -0.817594 -0.497295 -0.229687 -0.0659028 -0.00550305 0.000206225 0.0248841 0.133563 0.352617 0.655698 0.97154 1.21057\n 1.30613 1.21665 0.976415 0.658989 0.354386 0.134233 0.025009 0.00020726 -0.00553066 -0.0662336 -0.230839 -0.499791 -0.821697 -1.11156 -1.28329 -1.28329 -1.11156 -0.821697 -0.499791 -0.230839 -0.0662336 -0.00553066 0.00020726 0.025009 0.134233 0.354386 0.658989 0.976415 1.21665\n 1.34623 1.25399 1.00639 0.679218 0.365265 0.138354 0.0257767 0.000213622 -0.00570044 -0.0682668 -0.237925 -0.515133 -0.846922 -1.14569 -1.32269 -1.32269 -1.14569 -0.846922 -0.515133 -0.237925 -0.0682668 -0.00570044 0.000213622 0.0257767 0.138354 0.365265 0.679218 1.00639 1.25399\n 1.42719 1.32941 1.06692 0.720069 0.387234 0.146675 0.027327 0.00022647 -0.00604329 -0.0723726 -0.252235 -0.546115 -0.897858 -1.21459 -1.40224 -1.40224 -1.21459 -0.897858 -0.546115 -0.252235 -0.0723726 -0.00604329 0.00022647 0.027327 0.146675 0.387234 0.720069 1.06692 1.32941\n 1.5099 1.40645 1.12874 0.761795 0.409673 0.155175 0.0289105 0.000239594 -0.00639348 -0.0765664 -0.266852 -0.577762 -0.949887 -1.28498 -1.4835 -1.4835 -1.28498 -0.949887 -0.577762 -0.266852 -0.0765664 -0.00639348 0.000239594 0.0289105 0.155175 0.409673 0.761795 1.12874 1.40645","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"We superpose a surface plot of f on top of the grid:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"X = [r*cospi(θ) for r in r, θ in θ]\nY = [r*sinpi(θ) for r in r, θ in θ]\nscatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:red)\nsurface!(X, Y, F; legend=false, xlabel=\"x\", ylabel=\"y\", zlabel=\"f\")\nsavefig(joinpath(GENFIGS, \"annulus.html\"))","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/annulus.html\"","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"We precompute an Annulus–Chebyshev×Fourier plan:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"α, β, γ = 0, 0, 0\nP = plan_ann2cxf(F, α, β, γ, ρ)","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"FastTransforms Annulus--Chebyshev×Fourier plan for 8×29-element array of Float64","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"And an FFTW Chebyshev×Fourier analysis plan on the annulus:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"PA = plan_annulus_analysis(F, ρ)","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"FastTransforms plan for FFTW Chebyshev×Fourier analysis on the annulus for 8×29-element array of Float64","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"Its annulus coefficients are:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"U = P\\(PA*F)","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"8×29 Matrix{Float64}:\n -1.22671e-17 2.92896e-17 0.926725 2.04896e-17 -7.722e-18 6.1888e-17 0.29418 -1.81602e-17 4.69005e-18 1.20498e-17 6.76339e-18 1.11857e-17 -1.99742e-17 -6.13512e-19 -4.02194e-17 6.23458e-17 3.04077e-17 3.12444e-17 -1.0558e-17 3.83711e-17 8.17668e-17 -1.08653e-17 5.99963e-17 -1.56088e-17 -4.23425e-17 -8.2245e-18 4.68313e-17 -3.30615e-17 -4.80225e-17\n -5.57014e-18 -2.254e-18 -0.124037 -5.91733e-18 3.70137e-17 -1.89099e-17 -0.0976704 1.024e-18 -2.07932e-18 -9.77876e-18 1.98227e-17 -1.04302e-17 7.22713e-18 -5.50321e-18 4.99656e-17 -4.01755e-17 -1.81639e-17 -2.52689e-17 1.66849e-17 -2.67731e-17 -6.74982e-17 5.4336e-18 -6.11451e-17 1.0013e-17 2.95944e-17 7.96412e-18 -5.49385e-17 2.50418e-17 4.69813e-17\n -2.33965e-17 1.12715e-18 0.042116 9.94105e-19 -1.44328e-17 9.15449e-18 0.0336531 3.6262e-19 1.34875e-17 7.39131e-18 -7.1196e-18 6.73552e-18 6.8403e-18 1.31493e-18 -1.89046e-17 2.30498e-17 5.34226e-18 1.03454e-17 -1.40577e-17 1.67754e-17 1.98659e-17 -8.57e-18 3.84689e-17 -1.14124e-17 -4.16632e-17 -5.45601e-18 3.66387e-17 -2.14064e-17 -4.31795e-17\n 2.21067e-18 4.00391e-18 -0.0139459 3.14722e-18 -1.97145e-18 5.82968e-18 -0.011224 6.26797e-18 2.18831e-17 6.88701e-18 -7.02346e-18 7.40166e-18 -2.2024e-18 9.55486e-18 4.62749e-18 2.9721e-18 -6.75798e-18 3.40533e-18 1.03823e-17 2.2961e-19 -1.52373e-17 7.73146e-18 -1.96827e-17 5.91455e-18 1.30222e-17 3.25478e-18 -1.53646e-17 8.18752e-18 6.59625e-18\n -1.96208e-17 7.71573e-19 0.00458845 -2.03822e-18 1.86344e-17 3.19547e-18 0.00369818 -1.86152e-18 -3.29302e-18 8.11326e-19 -4.97022e-21 -1.77139e-18 1.47439e-18 -6.8012e-18 2.63512e-18 -4.24712e-18 5.7017e-18 -7.2048e-18 7.38785e-18 -4.72462e-18 1.59607e-17 -5.27319e-18 1.44348e-17 -1.67467e-18 -4.59916e-19 8.00009e-19 5.99498e-18 -3.34661e-18 -2.03062e-18\n 1.3498e-17 1.71852e-19 -0.00150441 7.97602e-19 -9.38596e-18 -3.21855e-18 -0.00121128 -4.47164e-19 -1.76175e-17 -4.83245e-18 6.52956e-18 -5.47568e-18 5.27089e-18 -2.9175e-18 5.23985e-18 -5.70705e-18 -3.147e-18 -3.85137e-19 -3.05417e-18 -5.31797e-19 -4.09175e-18 3.59849e-18 4.48894e-18 3.4972e-18 1.74387e-18 1.53405e-18 8.8938e-18 4.33464e-18 5.85819e-18\n 5.24011e-17 -4.20047e-18 0.000517281 -2.62968e-18 1.29799e-17 -9.06153e-18 0.000424358 -4.57265e-18 2.49476e-18 -6.80939e-18 -6.07451e-18 -2.399e-18 1.03771e-18 6.6648e-19 -1.96393e-17 1.69496e-20 -1.42128e-18 5.37575e-18 -1.16727e-17 3.57204e-19 -7.01129e-18 2.48838e-18 -1.17285e-17 4.39475e-19 5.83824e-18 -1.63971e-18 -3.91773e-19 1.39577e-18 1.02075e-17\n -8.95802e-18 6.39707e-19 -0.000162126 3.55753e-18 7.44168e-18 4.28763e-18 -5.40419e-5 5.16629e-18 8.97839e-18 5.4486e-18 3.6724e-18 4.64571e-18 -1.67417e-18 6.04678e-19 5.73104e-18 -2.13942e-18 -1.44968e-17 -3.57457e-18 1.24167e-17 -5.67995e-18 -1.09651e-17 -4.98049e-18 6.22788e-18 -2.89642e-18 -1.52622e-17 -2.30036e-18 1.82749e-18 -1.26575e-18 -9.91876e-18","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"The annulus coefficients are useful for integration. The integral of f(xy)^2 over the annulus is approximately the square of the 2-norm of the coefficients:","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"norm(U)^2, 5π/8*(1675/4536+9*log(3)/32-3*log(7)/32)","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"(0.9735516844404257, 0.973547572736036)","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"","category":"page"},{"location":"generated/annulus/#","page":"Integration on an annulus","title":"Integration on an annulus","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/subspaceangles.jl\"","category":"page"},{"location":"generated/subspaceangles/#Subspace-angles-1","page":"Subspace angles","title":"Subspace angles","text":"","category":"section"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"This example considers the angles between neighbouring Laguerre polynomials with a perturbed measure:","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"costheta_n = fraclangle L_n L_n+krangleL_n_2 L_n+k_2quadrm forquad 0le n N-k","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"where the inner product is defined by langle f grangle = int_0^infty f(x) g(x) x^beta e^-xrmdx.","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"We do so by connecting Laguerre polynomials to the normalized generalized Laguerre polynomials associated with the perturbed measure. It follows by the inner product of the connection coefficients that:","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"costheta_n = frac(V^top V)_n n+ksqrt(V^top V)_n n(V^top V)_n+k n+k","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"using FastTransforms, LinearAlgebra","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"The neighbouring index k and the maximum degree N-1:","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"k, N = 1, 11","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"(1, 11)","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"The Laguerre connection parameters:","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"α, β = 0.0, 0.125","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"(0.0, 0.125)","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"We precompute a Laguerre–Laguerre plan:","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"P = plan_lag2lag(Float64, N, α, β; norm2=true)","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"FastTransforms Laguerre--Laguerre plan for 11-element array of Float64","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"We apply the plan to the identity, followed by the adjoint plan:","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"VtV = parent(P*I)\nlmul!(P', VtV)","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"11×11 Matrix{Float64}:\n 0.941743 -0.117718 -0.0515016 -0.0321885 -0.0231355 -0.01793 -0.0145681 -0.0122268 -0.0105074 -0.00919399 -0.00815966\n -0.117718 1.07418 -0.125995 -0.0539157 -0.0333201 -0.0237861 -0.0183502 -0.0148608 -0.0124417 -0.0106716 -0.00932328\n -0.0515016 -0.125995 1.14505 -0.131707 -0.0557687 -0.0342413 -0.024336 -0.0187146 -0.0151194 -0.0126345 -0.0108205\n -0.0321885 -0.0539157 -0.131707 1.19444 -0.136106 -0.0572798 -0.0350206 -0.0248132 -0.0190369 -0.0153515 -0.0128093\n -0.0231355 -0.0333201 -0.0557687 -0.136106 1.23272 -0.139703 -0.0585599 -0.0356975 -0.0252354 -0.0193261 -0.015562\n -0.01793 -0.0237861 -0.0342413 -0.0572798 -0.139703 1.26415 -0.142756 -0.059673 -0.0362968 -0.0256145 -0.0195886\n -0.0145681 -0.0183502 -0.024336 -0.0350206 -0.0585599 -0.142756 1.29092 -0.145414 -0.0606594 -0.0368352 -0.0259588\n -0.0122268 -0.0148608 -0.0187146 -0.0248132 -0.0356975 -0.059673 -0.145414 1.31429 -0.147773 -0.0615464 -0.0373246\n -0.0105074 -0.0124417 -0.0151194 -0.0190369 -0.0252354 -0.0362968 -0.0606594 -0.147773 1.33507 -0.149896 -0.062353\n -0.00919399 -0.0106716 -0.0126345 -0.0153515 -0.0193261 -0.0256145 -0.0368352 -0.0615464 -0.149896 1.3538 -0.151829\n -0.00815966 -0.00932328 -0.0108205 -0.0128093 -0.015562 -0.0195886 -0.0259588 -0.0373246 -0.062353 -0.151829 1.37089","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"From this matrix, the angles are recovered from:","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"θ = [acos(VtV[n, n+k]/sqrt(VtV[n, n]*VtV[n+k, n+k])) for n in 1:N-k]","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"10-element Vector{Float64}:\n 1.6881063520094897\n 1.6846487354051982\n 1.6836556387180577\n 1.6831998143073255\n 1.6829427202726823\n 1.68277949501306\n 1.682667534322365\n 1.6825864250312665\n 1.6825252245704025\n 1.682477567030148","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"","category":"page"},{"location":"generated/subspaceangles/#","page":"Subspace angles","title":"Subspace angles","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/chebyshev.jl\"","category":"page"},{"location":"generated/chebyshev/#Chebyshev-transform-1","page":"Chebyshev transform","title":"Chebyshev transform","text":"","category":"section"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"This demonstrates the Chebyshev transform and inverse transform, explaining precisely the normalization and points","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"using FastTransforms\nn = 20","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"20","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"First kind points to first kind polynomials","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"p_1 = chebyshevpoints(Float64, n, Val(1))\nf = exp.(p_1)\nf̌ = chebyshevtransform(f, Val(1))\nf̃ = x -> [cos(k*acos(x)) for k=0:n-1]' * f̌\nf̃(0.1) ≈ exp(0.1)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"First kind polynomials to first kind points","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"ichebyshevtransform(f̌, Val(1)) ≈ exp.(p_1)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"Second kind points to first kind polynomials","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"p_2 = chebyshevpoints(Float64, n, Val(2))\nf = exp.(p_2)\nf̌ = chebyshevtransform(f, Val(2))\nf̃ = x -> [cos(k*acos(x)) for k=0:n-1]' * f̌\nf̃(0.1) ≈ exp(0.1)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"First kind polynomials to second kind points","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"ichebyshevtransform(f̌, Val(2)) ≈ exp.(p_2)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"First kind points to second kind polynomials","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"p_1 = chebyshevpoints(Float64, n, Val(1))\nf = exp.(p_1)\nf̌ = chebyshevutransform(f, Val(1))\nf̃ = x -> [sin((k+1)*acos(x))/sin(acos(x)) for k=0:n-1]' * f̌\nf̃(0.1) ≈ exp(0.1)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"Second kind polynomials to first kind points","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"ichebyshevutransform(f̌, Val(1)) ≈ exp.(p_1)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"Second kind points to second kind polynomials","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"p_2 = chebyshevpoints(Float64, n, Val(2))[2:n-1]\nf = exp.(p_2)\nf̌ = chebyshevutransform(f, Val(2))\nf̃ = x -> [sin((k+1)*acos(x))/sin(acos(x)) for k=0:n-3]' * f̌\nf̃(0.1) ≈ exp(0.1)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"Second kind polynomials to second kind points","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"ichebyshevutransform(f̌, Val(2)) ≈ exp.(p_2)","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"true","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"","category":"page"},{"location":"generated/chebyshev/#","page":"Chebyshev transform","title":"Chebyshev transform","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/triangle.jl\"","category":"page"},{"location":"generated/triangle/#Calculus-on-the-reference-triangle-1","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"","category":"section"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"In this example, we sample a bivariate function:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"f(xy) = frac11+x^2+y^2","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"on the reference triangle with vertices (00), (01), and (10) and analyze it in a Proriol series. Then, we find Proriol series for each component of its gradient by term-by-term differentiation of our expansion, and we compare them with the true Proriol series by sampling an exact expression for the gradient.","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"We analyze f(xy) on an Ntimes M mapped tensor product grid defined by:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"beginaligned\nx = (1+u)2quadrm andquad y = (1-u)(1+v)4quad rm where\nu_n = cosleft(n+tfrac12)piNrightquadrm forquad 0le n Nquadrm and\nv_m = cosleft(m+tfrac12)piMrightquadrm forquad 0le m M\nendaligned","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"we convert the function samples to mapped Chebyshev² coefficients using plan_tri_analysis; and finally, we transform the mapped Chebyshev² coefficients to Proriol coefficients using plan_tri2cheb.","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"For the storage pattern of the arrays, please consult the documentation.","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"using FastTransforms, LinearAlgebra, Plots\nconst GENFIGS = joinpath(pkgdir(FastTransforms), \"docs/src/generated\")\n!isdir(GENFIGS) && mkdir(GENFIGS)\nplotlyjs()","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Plots.PlotlyJSBackend()","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Our function f and the Cartesian components of its gradient:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"f = (x,y) -> 1/(1+x^2+y^2)\nfx = (x,y) -> -2x/(1+x^2+y^2)^2\nfy = (x,y) -> -2y/(1+x^2+y^2)^2","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"#5 (generic function with 1 method)","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"The polynomial degree:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"N = 15\nM = N","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"The parameters of the Proriol series:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"α, β, γ = 0, 0, 0","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"(0, 0, 0)","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"The u grid:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"u = [sinpi((N-2n-1)/(2N)) for n in 0:N-1]","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15-element Vector{Float64}:\n 0.9945218953682733\n 0.9510565162951536\n 0.8660254037844386\n 0.7431448254773942\n 0.5877852522924731\n 0.4067366430758002\n 0.20791169081775934\n 0.0\n -0.20791169081775934\n -0.4067366430758002\n -0.5877852522924731\n -0.7431448254773942\n -0.8660254037844386\n -0.9510565162951536\n -0.9945218953682733","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"And the v grid:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"v = [sinpi((M-2m-1)/(2M)) for m in 0:M-1]","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15-element Vector{Float64}:\n 0.9945218953682733\n 0.9510565162951536\n 0.8660254037844386\n 0.7431448254773942\n 0.5877852522924731\n 0.4067366430758002\n 0.20791169081775934\n 0.0\n -0.20791169081775934\n -0.4067366430758002\n -0.5877852522924731\n -0.7431448254773942\n -0.8660254037844386\n -0.9510565162951536\n -0.9945218953682733","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Instead of using the utimes v grid, we use one with more accuracy near the origin. Defining x by:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"x = [sinpi((2N-2n-1)/(4N))^2 for n in 0:N-1]","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15-element Vector{Float64}:\n 0.9972609476841365\n 0.9755282581475768\n 0.9330127018922194\n 0.8715724127386971\n 0.7938926261462365\n 0.7033683215379002\n 0.6039558454088797\n 0.4999999999999999\n 0.3960441545911204\n 0.2966316784620999\n 0.2061073738537634\n 0.12842758726130288\n 0.06698729810778066\n 0.024471741852423214\n 0.0027390523158633317","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"And w by:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"w = [sinpi((2M-2m-1)/(4M))^2 for m in 0:M-1]","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15-element Vector{Float64}:\n 0.9972609476841365\n 0.9755282581475768\n 0.9330127018922194\n 0.8715724127386971\n 0.7938926261462365\n 0.7033683215379002\n 0.6039558454088797\n 0.4999999999999999\n 0.3960441545911204\n 0.2966316784620999\n 0.2061073738537634\n 0.12842758726130288\n 0.06698729810778066\n 0.024471741852423214\n 0.0027390523158633317","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"We see how the two grids are related:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"((1 .+ u)./2 ≈ x) * ((1 .- u).*(1 .+ v')/4 ≈ reverse(x).*w')","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"true","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"On the mapped tensor product grid, our function samples are:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"F = [f(x[n+1], x[N-n]*w[m+1]) for n in 0:N-1, m in 0:M-1]","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15×15 Matrix{Float64}:\n 0.50137 0.50137 0.50137 0.50137 0.50137 0.50137 0.501371 0.501371 0.501371 0.501371 0.501371 0.501371 0.501371 0.501371 0.501371\n 0.512229 0.512236 0.512249 0.512266 0.512286 0.512308 0.512328 0.512346 0.512361 0.512372 0.512379 0.512383 0.512385 0.512385 0.512386\n 0.53334 0.533395 0.533499 0.53364 0.533806 0.533979 0.534145 0.534292 0.534412 0.5345 0.534558 0.534592 0.534607 0.534612 0.534613\n 0.56305 0.563274 0.563699 0.564281 0.564961 0.565675 0.566362 0.56697 0.567464 0.56783 0.568072 0.568211 0.568275 0.568295 0.568299\n 0.597903 0.598554 0.599792 0.601491 0.603486 0.60559 0.607622 0.609427 0.6109 0.611994 0.612719 0.613134 0.613325 0.613387 0.613397\n 0.632017 0.633527 0.636406 0.640382 0.645085 0.650086 0.654955 0.659315 0.662898 0.665571 0.66735 0.66837 0.668842 0.668995 0.669018\n 0.657568 0.660489 0.666088 0.673894 0.683237 0.693308 0.703247 0.712263 0.719753 0.725392 0.729168 0.731342 0.73235 0.732678 0.732728\n 0.667275 0.672082 0.681371 0.694488 0.710446 0.727971 0.745606 0.761905 0.775667 0.786165 0.79326 0.79737 0.799283 0.799904 0.799999\n 0.65806 0.664903 0.678251 0.69738 0.721111 0.74777 0.775252 0.801255 0.82368 0.841081 0.85299 0.859943 0.863194 0.864252 0.864414\n 0.632907 0.641519 0.658477 0.683152 0.714388 0.750331 0.788365 0.825306 0.857936 0.883766 0.901708 0.912284 0.917254 0.918876 0.919123\n 0.599054 0.608911 0.628482 0.657352 0.694582 0.738395 0.78593 0.833301 0.876165 0.910799 0.935231 0.94978 0.956655 0.958904 0.959246\n 0.564342 0.574908 0.59603 0.627532 0.668777 0.718232 0.773048 0.82891 0.880558 0.923076 0.953504 0.971796 0.980486 0.983334 0.983768\n 0.534691 0.545579 0.567447 0.600326 0.643856 0.69679 0.756419 0.818253 0.876403 0.924997 0.960184 0.981503 0.991676 0.995016 0.995526\n 0.513598 0.524591 0.546739 0.58021 0.624846 0.679621 0.74199 0.80742 0.869666 0.922224 0.960591 0.983966 0.995154 0.998833 0.999394\n 0.502741 0.513754 0.535975 0.569641 0.614694 0.670229 0.733797 0.800871 0.865052 0.919526 0.959458 0.983854 0.99555 0.999397 0.999985","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"We superpose a surface plot of f on top of the grid:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"X = [x for x in x, w in w]\nY = [x[N-n]*w[m+1] for n in 0:N-1, m in 0:M-1]\nscatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:blue)\nsurface!(X, Y, F; legend=false, xlabel=\"x\", ylabel=\"y\", zlabel=\"f\")\nsavefig(joinpath(GENFIGS, \"proriol.html\"))","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/proriol.html\"","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"We precompute a Proriol–Chebyshev² plan:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"P = plan_tri2cheb(F, α, β, γ)","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"FastTransforms Proriol--Chebyshev² plan for 15×15-element array of Float64","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"And an FFTW Chebyshev² plan on the triangle:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"PA = plan_tri_analysis(F)","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"FastTransforms plan for FFTW Chebyshev analysis on the triangle for 15×15-element array of Float64","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Its Proriol-(αβγ) coefficients are:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"U = P\\(PA*F)","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15×15 Matrix{Float64}:\n 1.53694 -0.193325 -0.0251445 0.0109626 -0.000813095 -0.000299751 8.30397e-5 -1.59722e-6 -3.2141e-6 6.1667e-7 3.19775e-8 -3.21495e-8 4.17144e-9 6.97174e-10 -3.06613e-10\n -0.111616 0.0391775 -0.00636098 -0.000168172 0.000311296 -5.50434e-5 -2.99195e-6 2.97964e-6 -4.20688e-7 -5.4534e-8 2.85785e-8 -2.74994e-9 -7.77992e-10 2.56775e-10 -1.20763e-11\n -0.0620411 0.00717668 0.00153132 -0.000551474 4.1134e-5 1.40597e-5 -4.21186e-6 2.00844e-7 1.36869e-7 -3.34625e-8 3.38022e-10 1.36685e-9 -2.6459e-10 -1.30929e-11 1.45495e-11\n 0.0111316 -0.0036578 0.00043735 4.52913e-5 -2.72385e-5 3.78477e-6 3.57508e-7 -2.26663e-7 2.88459e-8 4.02905e-9 -1.98431e-9 2.01016e-10 4.97746e-11 -1.48758e-11 -2.03146e-12\n 0.00194132 -7.70184e-5 -0.000145948 3.68556e-5 -1.34273e-6 -1.26813e-6 3.06047e-7 -7.57685e-9 -1.11605e-8 2.45432e-9 -1.63544e-12 -1.03205e-10 9.8773e-12 5.45517e-12 -6.15774e-13\n -0.000642637 0.000243768 -2.28339e-5 -5.91216e-6 2.28045e-6 -2.36988e-7 -4.55496e-8 1.90448e-8 -1.91046e-9 -4.16463e-10 1.54281e-10 1.00975e-11 -8.91873e-12 -7.74998e-13 5.33203e-13\n -4.38389e-5 -1.71425e-5 1.23092e-5 -2.29813e-6 -6.48598e-8 1.17977e-7 -2.21226e-8 -4.58497e-10 1.02068e-9 -1.63471e-10 -4.64131e-11 6.91422e-12 3.5224e-12 -3.14298e-13 -2.28438e-13\n 2.79805e-5 -1.30453e-5 7.26152e-7 5.87656e-7 -1.71884e-7 1.12463e-8 5.13657e-9 -1.54461e-9 7.05239e-11 8.70592e-11 6.67156e-12 -5.87108e-12 -8.8146e-13 3.5065e-13 6.60112e-14\n 1.15026e-6 1.8828e-6 -8.87898e-7 1.24893e-7 1.74103e-8 -1.00961e-8 1.44036e-9 1.53829e-10 -9.59941e-11 -3.49153e-11 3.35895e-12 3.178e-12 -1.72628e-14 -2.20905e-13 -4.41417e-15\n -1.05261e-6 6.07061e-7 9.40225e-9 -4.93564e-8 1.14023e-8 -2.56371e-10 -4.79206e-10 1.50921e-11 6.48843e-11 1.18558e-11 -4.29767e-12 -1.50757e-12 2.19175e-13 1.20461e-13 -1.21213e-14\n -1.0706e-7 -1.2895e-7 5.63778e-8 -5.46716e-9 -1.98245e-9 6.62772e-10 1.96009e-10 -4.05866e-11 -3.72009e-11 -3.44512e-12 3.09917e-12 6.84678e-13 -1.9369e-13 -6.2004e-14 1.20543e-14\n 4.44232e-8 -2.74042e-8 -3.41194e-9 3.7536e-9 -3.47875e-10 -3.34332e-10 -7.92618e-11 2.84843e-11 1.87606e-11 8.64628e-13 -1.73542e-12 -2.9854e-13 1.16624e-13 2.95553e-14 -7.5397e-15\n 1.13247e-8 6.98157e-9 -3.2324e-9 -1.06114e-10 1.55319e-10 1.35282e-10 2.8768e-11 -1.28905e-11 -7.59282e-12 -1.99176e-13 7.32664e-13 1.12739e-13 -5.05664e-14 -1.1679e-14 3.30654e-15\n -2.57523e-9 1.14806e-9 1.12793e-10 2.51422e-11 -4.12541e-11 -3.49672e-11 -7.18293e-12 3.43673e-12 1.96276e-12 3.98594e-14 -1.91744e-13 -2.85196e-14 1.33316e-14 2.99912e-15 -8.74775e-16\n -7.03699e-10 -8.33285e-12 -8.53391e-12 -1.88826e-12 3.13558e-12 2.65053e-12 5.42528e-13 -2.61311e-13 -1.4878e-13 -2.93192e-15 1.45531e-14 2.15661e-15 -1.01287e-15 -2.27009e-16 6.63378e-17","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Similarly, our function's gradient samples are:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Fx = [fx(x[n+1], x[N-n]*w[m+1]) for n in 0:N-1, m in 0:M-1]","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15×15 Matrix{Float64}:\n -0.501366 -0.501366 -0.501366 -0.501367 -0.501367 -0.501368 -0.501368 -0.501369 -0.501369 -0.501369 -0.501369 -0.501369 -0.501369 -0.50137 -0.50137\n -0.511916 -0.511929 -0.511955 -0.51199 -0.51203 -0.512073 -0.512114 -0.51215 -0.512179 -0.512201 -0.512215 -0.512223 -0.512227 -0.512228 -0.512228\n -0.530794 -0.530903 -0.53111 -0.531392 -0.531721 -0.532067 -0.532398 -0.532691 -0.532929 -0.533105 -0.533222 -0.533288 -0.533319 -0.533329 -0.53333\n -0.552621 -0.553061 -0.553896 -0.555039 -0.556378 -0.557787 -0.559142 -0.560343 -0.56132 -0.562044 -0.562524 -0.562798 -0.562924 -0.562965 -0.562972\n -0.567613 -0.568852 -0.571206 -0.574447 -0.578264 -0.582304 -0.586217 -0.589705 -0.59256 -0.594683 -0.596093 -0.5969 -0.597274 -0.597395 -0.597413\n -0.561915 -0.564604 -0.569746 -0.576887 -0.585391 -0.594503 -0.603442 -0.611504 -0.618167 -0.623163 -0.626498 -0.628414 -0.629303 -0.629591 -0.629635\n -0.522296 -0.526946 -0.535918 -0.548553 -0.563869 -0.580614 -0.59738 -0.612796 -0.625752 -0.635596 -0.64223 -0.646065 -0.647848 -0.648427 -0.648515\n -0.445256 -0.451694 -0.464267 -0.482314 -0.504734 -0.529941 -0.555929 -0.580499 -0.60166 -0.618055 -0.629262 -0.635798 -0.638853 -0.639847 -0.639998\n -0.343008 -0.350179 -0.364379 -0.385223 -0.411887 -0.442905 -0.476058 -0.508529 -0.537391 -0.560337 -0.576318 -0.585751 -0.590188 -0.591636 -0.591857\n -0.237644 -0.244156 -0.257234 -0.276874 -0.302772 -0.334005 -0.368724 -0.404089 -0.436673 -0.463364 -0.482369 -0.49375 -0.499145 -0.500911 -0.501181\n -0.14793 -0.152838 -0.162821 -0.178123 -0.198871 -0.22475 -0.254619 -0.286238 -0.316443 -0.341954 -0.360547 -0.371851 -0.377255 -0.37903 -0.379301\n -0.0818036 -0.0848957 -0.0912482 -0.101149 -0.114882 -0.132501 -0.153497 -0.176483 -0.199161 -0.218858 -0.233525 -0.242571 -0.246928 -0.248365 -0.248585\n -0.0383026 -0.0398784 -0.0431393 -0.0482832 -0.0555393 -0.0650468 -0.0766563 -0.0897011 -0.102903 -0.114631 -0.123518 -0.129064 -0.131754 -0.132643 -0.132779\n -0.0129105 -0.013469 -0.0146303 -0.0164765 -0.0191091 -0.0226062 -0.0269458 -0.0319076 -0.0370169 -0.0416263 -0.0451619 -0.0473866 -0.0484703 -0.0488293 -0.0488842\n -0.00138458 -0.00144591 -0.00157369 -0.0017776 -0.0020699 -0.0024608 -0.00294973 -0.00351363 -0.00409934 -0.00463189 -0.00504292 -0.00530263 -0.00542945 -0.0054715 -0.00547794","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"and:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Fy = [fy(x[n+1], x[N-n]*w[m+1]) for n in 0:N-1, m in 0:M-1]","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15×15 Matrix{Float64}:\n -0.00137327 -0.00134334 -0.0012848 -0.00120019 -0.00109322 -0.000968569 -0.000831675 -0.000688523 -0.000545372 -0.000408476 -0.00028382 -0.000176851 -9.22448e-5 -3.36988e-5 -3.77181e-6\n -0.0128066 -0.0125278 -0.0119824 -0.0111941 -0.0101972 -0.00903524 -0.00775884 -0.0064238 -0.00508851 -0.00381138 -0.00264832 -0.00165022 -0.000860756 -0.000314451 -3.51956e-5\n -0.0380049 -0.0371844 -0.0355776 -0.0332524 -0.0303075 -0.0268691 -0.0230859 -0.0191228 -0.0151537 -0.0113536 -0.00789053 -0.00491728 -0.00256498 -0.000937054 -0.000104882\n -0.0812065 -0.0795001 -0.0761501 -0.0712824 -0.0650859 -0.0578104 -0.0497602 -0.0412837 -0.0327574 -0.0245665 -0.017084 -0.0106504 -0.00555645 -0.00203003 -0.000227217\n -0.146958 -0.144069 -0.138361 -0.129983 -0.119184 -0.106332 -0.0919169 -0.0765485 -0.0609267 -0.0457968 -0.0318962 -0.0199018 -0.0103872 -0.00379541 -0.000424822\n -0.236327 -0.232283 -0.224184 -0.212046 -0.195994 -0.176349 -0.153701 -0.128945 -0.103249 -0.0779568 -0.0544563 -0.0340361 -0.0177782 -0.00649768 -0.000727317\n -0.341557 -0.337089 -0.327887 -0.313516 -0.293548 -0.267799 -0.236589 -0.200921 -0.162512 -0.123634 -0.0868006 -0.0544092 -0.028458 -0.0104055 -0.00116482\n -0.444036 -0.44064 -0.433167 -0.420371 -0.400704 -0.372744 -0.335756 -0.290249 -0.238284 -0.183335 -0.129696 -0.0816541 -0.042795 -0.0156582 -0.00175299\n -0.521645 -0.520944 -0.518445 -0.512009 -0.498657 -0.475067 -0.438456 -0.387746 -0.32456 -0.253471 -0.181141 -0.114718 -0.0602899 -0.0220791 -0.00247217\n -0.561955 -0.56477 -0.56909 -0.572203 -0.569958 -0.557059 -0.528047 -0.479085 -0.410077 -0.325915 -0.235743 -0.15036 -0.0792838 -0.0290664 -0.00325507\n -0.568241 -0.574301 -0.585148 -0.597987 -0.608136 -0.608908 -0.592332 -0.551271 -0.482733 -0.39071 -0.286235 -0.183948 -0.0973409 -0.0357278 -0.00400177\n -0.553639 -0.562044 -0.577773 -0.598286 -0.618953 -0.632479 -0.629146 -0.598851 -0.535295 -0.440581 -0.326642 -0.211418 -0.112256 -0.0412478 -0.00462083\n -0.532026 -0.541842 -0.560603 -0.586131 -0.614126 -0.637241 -0.644834 -0.624688 -0.567634 -0.473605 -0.354585 -0.230866 -0.122928 -0.0452109 -0.00506551\n -0.513246 -0.523783 -0.544148 -0.572459 -0.604752 -0.633849 -0.648741 -0.635973 -0.584411 -0.492221 -0.371057 -0.242599 -0.129432 -0.0476343 -0.00533757\n -0.502731 -0.513558 -0.534584 -0.564086 -0.5983 -0.630184 -0.648628 -0.639638 -0.591107 -0.500247 -0.378429 -0.247947 -0.132421 -0.0487506 -0.00546294","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"For the partial derivative with respect to x, Olver et al. derive simple expressions for the representation of this component using a Proriol-(α+1βγ+1) series.","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Gx = zeros(Float64, N, M)\nfor m = 0:M-2\n for n = 0:N-2\n cf1 = m == 0 ? sqrt((n+1)*(n+2m+α+β+γ+3)/(2m+β+γ+2)*(m+γ+1)*8) : sqrt((n+1)*(n+2m+α+β+γ+3)/(2m+β+γ+1)*(m+β+γ+1)/(2m+β+γ+2)*(m+γ+1)*8)\n cf2 = sqrt((n+α+1)*(m+1)/(2m+β+γ+2)*(m+β+1)/(2m+β+γ+3)*(n+2m+β+γ+3)*8)\n Gx[n+1, m+1] = cf1*U[n+2, m+1] + cf2*U[n+1, m+2]\n end\nend\nPx = plan_tri2cheb(Fx, α+1, β, γ+1)\nUx = Px\\(PA*Fx)","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15×15 Matrix{Float64}:\n -0.773299 0.0719368 0.0119032 -0.00401514 0.00019856 0.000113662 -2.54579e-5 -2.37734e-7 1.03154e-6 -1.60364e-7 -1.48715e-8 9.00448e-9 -8.97984e-10 -2.25712e-10 7.08345e-11\n -0.223004 0.012725 0.00860848 -0.00187243 -6.32049e-5 8.83801e-5 -1.1938e-5 -1.70295e-6 7.84936e-7 -6.04351e-8 -2.29491e-8 6.45891e-9 -1.23274e-10 -2.55873e-10 5.02863e-11\n 0.11832 -0.0184961 -0.000231272 0.000708416 -0.000135183 -8.87531e-7 5.70658e-6 -1.08175e-6 -3.24208e-8 5.24395e-8 -8.50439e-9 -6.81366e-10 4.94759e-10 -5.56212e-11 -1.16264e-11\n -0.00167066 0.00241796 -0.00105495 0.000134423 2.32113e-5 -1.10992e-5 1.1835e-6 2.55024e-7 -1.00326e-7 8.05316e-9 2.80938e-9 -8.7387e-10 3.23657e-11 3.71003e-11 -4.71068e-12\n -0.00812992 0.00143193 9.5529e-5 -8.6497e-5 1.46322e-5 6.06568e-7 -7.52503e-7 1.2809e-7 6.41825e-9 -6.76798e-9 1.05309e-9 1.02809e-10 -6.38887e-11 -4.60392e-12 3.43243e-12\n 0.00134269 -0.000440563 9.61255e-5 -3.9763e-6 -4.07863e-6 1.16773e-6 -7.04875e-8 -3.76919e-8 1.09538e-8 -5.76688e-10 -3.72602e-10 6.21711e-11 2.34835e-11 -3.2882e-12 -1.02884e-12\n 0.000287063 -5.03055e-5 -1.79725e-5 8.218e-6 -1.05921e-6 -1.54886e-7 8.35392e-8 -1.11246e-8 -1.37121e-9 7.34787e-10 2.35493e-11 -4.77271e-11 -3.34076e-12 2.78949e-12 2.71211e-14\n -0.000114154 3.91247e-5 -6.41411e-6 -4.57437e-7 4.91696e-7 -1.01409e-7 1.49415e-12 4.73486e-9 -8.87703e-10 -2.29361e-10 4.39281e-11 2.01683e-11 -2.11614e-12 -1.32214e-12 2.00992e-13\n 6.85033e-7 -1.42592e-6 2.06904e-6 -6.34246e-7 4.7282e-8 2.34694e-8 -7.6778e-9 5.5085e-10 4.78984e-10 2.64819e-11 -3.78611e-11 -5.1067e-12 2.54966e-12 4.06715e-13 -1.864e-13\n 5.33318e-6 -2.34997e-6 2.9001e-7 9.45302e-8 -4.55097e-8 7.14241e-9 5.63984e-10 -6.44351e-10 -2.12017e-10 3.18388e-11 2.34425e-11 -6.60806e-13 -1.88678e-12 -1.3375e-14 1.29399e-13\n -7.178e-7 3.37971e-7 -1.76689e-7 3.81304e-8 -1.11295e-9 -2.48346e-9 1.24297e-10 4.4888e-10 8.62743e-11 -3.44107e-11 -1.28198e-11 1.79781e-12 1.16066e-12 -8.54664e-14 -7.76696e-14\n -1.15794e-7 9.93748e-8 -5.08059e-9 -9.45944e-9 2.65499e-9 1.0741e-9 -1.63514e-10 -2.32795e-10 -3.2556e-11 2.03989e-11 5.96492e-12 -1.21808e-12 -5.75474e-13 6.48293e-14 3.81294e-14\n 3.9894e-8 -2.50603e-8 1.18665e-8 -3.69658e-10 -9.43959e-10 -3.54061e-10 7.05516e-11 8.25944e-11 9.98239e-12 -7.57296e-12 -2.02892e-12 4.70119e-13 2.00988e-13 -2.57424e-14 -1.32678e-14\n -2.62946e-9 -2.09989e-9 -2.15583e-10 7.49659e-11 1.79606e-10 6.58835e-11 -1.40885e-11 -1.57067e-11 -1.81381e-12 1.45833e-12 3.81132e-13 -9.14684e-14 -3.80521e-14 5.0455e-15 2.50858e-15\n -2.54665e-10 1.01738e-11 9.71511e-12 -3.41148e-12 -8.12007e-12 -2.97149e-12 6.40143e-13 7.10069e-13 8.15917e-14 -6.60158e-14 -1.72077e-14 4.14496e-15 1.71962e-15 -2.2876e-16 -1.13402e-16","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"For the partial derivative with respect to y, the analogous formulae result in a Proriol-(αβ+1γ+1) series.","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"Gy = zeros(Float64, N, M)\nfor m = 0:M-2\n for n = 0:N-2\n Gy[n+1, m+1] = 4*sqrt((m+1)*(m+β+γ+2))*U[n+1, m+2]\n end\nend\nPy = plan_tri2cheb(Fy, α, β+1, γ+1)\nUy = Py\\(PA*Fy)","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"15×15 Matrix{Float64}:\n -1.09361 -0.246364 0.151902 -0.0145451 -0.00656722 0.00215264 -4.78099e-5 -0.00010909 2.3401e-5 1.34141e-6 -1.47744e-6 2.0787e-7 3.67354e-8 -1.65807e-8 1.30376e-9\n 0.221621 -0.0623246 -0.00233026 0.00556863 -0.00120594 -7.75602e-5 8.91904e-5 -1.42786e-5 -2.06939e-6 1.19894e-6 -1.26335e-7 -3.89258e-8 1.42118e-8 -5.60413e-10 -5.94789e-10\n 0.0405975 0.0150038 -0.00764145 0.000735827 0.000308032 -0.000109184 6.01193e-6 4.6455e-6 -1.26982e-6 1.41852e-8 6.28061e-8 -1.31763e-8 -5.9232e-10 7.38193e-10 -7.35368e-11\n -0.0206916 0.00428514 0.000627575 -0.000487257 8.29203e-5 9.26771e-6 -6.78478e-6 9.79044e-7 1.52891e-7 -8.32462e-8 9.23683e-9 2.37699e-9 -9.33549e-10 -2.54744e-11 5.13027e-11\n -0.000435682 -0.00142999 0.000510686 -2.40196e-5 -2.77834e-5 7.93359e-6 -2.26768e-7 -3.78776e-7 9.31367e-8 -7.2912e-11 -4.72764e-9 9.19194e-10 1.83342e-10 -5.07975e-11 -9.73934e-12\n 0.00137896 -0.000223726 -8.19213e-5 4.07942e-5 -5.19191e-6 -1.18071e-6 5.70025e-7 -6.48815e-8 -1.5805e-8 6.74933e-9 -5.22325e-10 -3.74577e-10 2.04346e-11 2.31629e-11 -1.45177e-12\n -9.69728e-5 0.000120605 -3.18437e-5 -1.1605e-6 2.58441e-6 -5.73589e-7 -1.36421e-8 3.47148e-8 -6.95597e-9 -3.86259e-10 4.86604e-10 7.26716e-11 -3.26991e-11 -5.56081e-12 2.18954e-12\n -7.37954e-5 7.11448e-6 8.14267e-6 -3.07439e-6 2.46945e-7 1.33361e-7 -4.63869e-8 3.49405e-9 1.69907e-9 -3.52262e-10 -2.0628e-10 1.07045e-11 1.73416e-11 -1.8863e-13 -1.24582e-12\n 1.06509e-5 -8.69913e-6 1.73077e-6 3.10766e-7 -2.22347e-7 3.70118e-8 3.9365e-9 -2.94133e-9 -2.1645e-10 2.94085e-10 6.42746e-11 -2.03559e-11 -6.99253e-12 1.20561e-12 5.53977e-13\n 3.43376e-6 9.14735e-8 -6.84306e-7 2.05405e-7 -4.3435e-9 -1.35246e-8 2.85641e-9 1.15843e-9 -9.56842e-11 -1.59766e-10 -1.45705e-11 1.36984e-11 2.42348e-12 -9.13606e-13 -2.1722e-13\n -7.29088e-7 5.54006e-7 -7.49665e-8 -3.61409e-8 1.78364e-8 -4.16571e-10 -1.36673e-9 -4.10814e-10 8.7904e-11 6.99201e-11 1.76879e-12 -6.65703e-12 -7.49913e-13 4.67293e-13 7.67801e-14\n -1.56131e-7 -3.60972e-8 5.21717e-8 -9.4804e-9 -1.42828e-9 2.71687e-10 4.84151e-10 1.24081e-10 -3.76632e-11 -2.38535e-11 1.8587e-13 2.38967e-12 2.02458e-13 -1.7174e-13 -2.30964e-14\n 4.09267e-8 -3.39594e-8 -3.06743e-9 7.64151e-10 3.1345e-10 -7.59843e-11 -1.14715e-10 -2.73663e-11 9.55255e-12 5.56757e-12 -1.22703e-13 -5.69904e-13 -4.18788e-14 4.1357e-14 5.08049e-15\n 8.57039e-9 6.52951e-9 -7.39973e-11 -9.29778e-11 -3.74097e-11 9.74901e-12 1.40429e-11 3.27131e-12 -1.19385e-12 -6.78321e-13 1.80885e-14 6.99172e-14 4.88939e-15 -5.08953e-15 -6.06728e-16\n -2.86296e-9 1.21911e-13 2.03235e-12 2.54849e-12 1.02299e-12 -2.68873e-13 -3.8519e-13 -8.94733e-14 3.28268e-14 1.85955e-14 -5.06217e-16 -1.9183e-15 -1.33318e-16 1.39692e-16 1.65859e-17","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"The 2-norm relative error in differentiating the Proriol series for f(xy) term-by-term and its sampled gradient is:","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"hypot(norm(Ux-Gx), norm(Uy-Gy))/hypot(norm(Ux), norm(Uy))","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"1.8769900773500217e-8","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"This error can be improved upon by increasing N and M.","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"","category":"page"},{"location":"generated/triangle/#","page":"Calculus on the reference triangle","title":"Calculus on the reference triangle","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/nonlocaldiffusion.jl\"","category":"page"},{"location":"generated/nonlocaldiffusion/#Nonlocal-diffusion-on-\\mathbb{S}2-1","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"","category":"section"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"This example calculates the spectrum of the nonlocal diffusion operator:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"mathcalL_delta u = int_mathbbS^2 rho_delta(mathbfx-mathbfy)leftu(mathbfx) - u(mathbfy)right mathrmdOmega(mathbfy)","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"defined in Eq. (2) of","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"R. M. Slevinsky, H. Montanelli, and Q. Du, A spectral method for nonlocal diffusion operators on the sphere, J. Comp. Phys., 372:893–911, 2018.","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"In the above, 0delta2, -1alpha1, and the kernel:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"rho_delta(mathbfx-mathbfy) = frac4(1+alpha)pi delta^2+2alpha fracchi_0delta(mathbfx-mathbfy)mathbfx-mathbfy^2-2alpha","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"where chi_I(cdot) is the indicator function on the set I.","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"This nonlocal operator is diagonalized by spherical harmonics:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"mathcalL_delta Y_ell^m(mathbfx) = lambda_ell(alpha delta) Y_ell^m(mathbfx)","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"and its eigenfunctions are given by the generalized Funk–Hecke formula:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"lambda_ell(alpha delta) = frac(1+alpha) 2^2+alphadelta^2+2alphaint_1-delta^22^1 leftP_ell(t)-1right (1-t)^alpha-1 mathrmd t","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"In the paper, the authors use Clenshaw–Curtis quadrature and asymptotic evaluation of Legendre polynomials to achieve mathcalO(n^2log n) complexity for the evaluation of the first n eigenvalues. With a change of basis, this complexity can be reduced to mathcalO(nlog n).","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"First, we represent:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"P_n(t) - 1 = sum_j=0^n-1 leftP_j+1(t) - P_j(t)right = -sum_j=0^n-1 (1-t) P_j^(10)(t)","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"Then, we represent P_j^(10)(t) with Jacobi polynomials P_i^(alpha0)(t) and we integrate using DLMF 18.9.16:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"int_x^1 P_i^(alpha0)(t)(1-t)^alphamathrmdt = left beginarraycc frac(1-x)^alpha+1alpha+1 mathrmfori=0 frac12i(1-x)^alpha+1(1+x)P_i-1^(alpha+11)(x) mathrmfori0endarrayright","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"The code below implements this algorithm, making use of the Jacobi–Jacobi transform plan_jac2jac. For numerical stability, the conversion from Jacobi polynomials P_j^(10)(t) to P_i^(alpha0)(t) is divided into conversion from P_j^(10)(t) to P_k^(00)(t), before conversion from P_k^(00)(t) to P_i^(alpha0)(t).","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"using FastTransforms, LinearAlgebra\n\nfunction oprec!(n::Integer, v::AbstractVector, alpha::Real, delta2::Real)\n if n > 0\n v[1] = 1\n end\n if n > 1\n v[2] = (4*alpha+8-(alpha+4)*delta2)/4\n end\n for i = 1:n-2\n v[i+2] = (((2*i+alpha+2)*(2*i+alpha+4)+alpha*(alpha+2))/(2*(i+1)*(2*i+alpha+2))*(2*i+alpha+3)/(i+alpha+3) - delta2/4*(2*i+alpha+3)/(i+1)*(2*i+alpha+4)/(i+alpha+3))*v[i+1] - (i+alpha+1)/(i+alpha+3)*(2*i+alpha+4)/(2*i+alpha+2)*v[i]\n end\n return v\nend\n\nfunction evaluate_lambda(n::Integer, alpha::T, delta::T) where T\n delta2 = delta*delta\n scl = (1+alpha)*(2-delta2/2)\n\n lambda = Vector{T}(undef, n)\n\n if n > 0\n lambda[1] = 0\n end\n if n > 1\n lambda[2] = -2\n end\n\n oprec!(n-2, view(lambda, 3:n), alpha, delta2)\n\n for i = 2:n-1\n lambda[i+1] *= -scl/(i-1)\n end\n\n p = plan_jac2jac(T, n-1, zero(T), zero(T), alpha, zero(T))\n\n lmul!(p', view(lambda, 2:n))\n\n for i = 2:n-1\n lambda[i+1] = ((2i-1)*lambda[i+1] + (i-1)*lambda[i])/i\n end\n\n for i = 2:n-1\n lambda[i+1] += lambda[i]\n end\n\n return lambda\nend","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"evaluate_lambda (generic function with 1 method)","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"The spectrum in Float64:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"lambda = evaluate_lambda(10, -0.5, 1.0)","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"10-element Vector{Float64}:\n 0.0\n -2.0\n -5.5\n -9.75\n -14.09375\n -18.203125\n -22.08984375\n -25.935546875\n -29.8870849609375\n -33.95416259765625","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"The spectrum in BigFloat:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"lambdabf = evaluate_lambda(10, parse(BigFloat, \"-0.5\"), parse(BigFloat, \"1.0\"))","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"10-element Vector{BigFloat}:\n 0.0\n -2.0\n -5.5\n -9.75\n -14.09375\n -18.203125\n -22.08984375\n -25.935546875\n -29.8870849609375\n -33.95416259765625","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"The infty-norm relative error:","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"norm(lambda-lambdabf, Inf)/norm(lambda, Inf)","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"0.0","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"","category":"page"},{"location":"generated/nonlocaldiffusion/#","page":"Nonlocal diffusion on mathbbS^2","title":"Nonlocal diffusion on mathbbS^2","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/disk.jl\"","category":"page"},{"location":"generated/disk/#Holomorphic-integration-on-the-unit-disk-1","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"","category":"section"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"In this example, we explore integration of a harmonic function:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":" f(xy) = fracx^2-y^2+1(x^2-y^2+1)^2+(2xy+1)^2","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"over the unit disk. In this case, we know from complex analysis that the integral of a holomorphic function is equal to pi times f(00). We analyze the function on an Ntimes M tensor product grid defined by:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"beginaligned\nr_n = cosleft(n+tfrac12)pi2Nrightquadrm forquad 0le n Nquadrm and\ntheta_m = 2pi mMquadrm forquad 0le m M\nendaligned","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"we convert the function samples to Chebyshev×Fourier coefficients using plan_disk_analysis; and finally, we transform the Chebyshev×Fourier coefficients to Zernike polynomial coefficients using plan_disk2cxf.","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"For the storage pattern of the arrays, please consult the documentation.","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"using FastTransforms, LinearAlgebra, Plots\nconst GENFIGS = joinpath(pkgdir(FastTransforms), \"docs/src/generated\")\n!isdir(GENFIGS) && mkdir(GENFIGS)\nplotlyjs()","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"Plots.PlotlyJSBackend()","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"Our function f on the disk:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"f = (x,y) -> (x^2-y^2+1)/((x^2-y^2+1)^2+(2x*y+1)^2)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"#1 (generic function with 1 method)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"The Zernike polynomial degree:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"N = 15\nM = 4N-3","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"57","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"The radial grid:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"r = [sinpi((N-n-0.5)/(2N)) for n in 0:N-1]","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"15-element Vector{Float64}:\n 0.9986295347545738\n 0.9876883405951378\n 0.9659258262890683\n 0.9335804264972017\n 0.8910065241883678\n 0.838670567945424\n 0.7771459614569709\n 0.7071067811865475\n 0.6293203910498375\n 0.5446390350150271\n 0.45399049973954675\n 0.35836794954530027\n 0.25881904510252074\n 0.15643446504023087\n 0.052335956242943835","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"The angular grid (mod pi):","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"θ = (0:M-1)*2/M","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"0.0:0.03508771929824561:1.9649122807017543","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"On the mapped tensor product grid, our function samples are:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"F = [f(r*cospi(θ), r*sinpi(θ)) for r in r, θ in θ]","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"15×57 Matrix{Float64}:\n 0.400329 0.36696 0.336645 0.308443 0.281619 0.25557 0.22977 0.203733 0.176996 0.149111 0.119689 0.0885456 0.0561428 0.0249494 0.00382185 0.0233794 0.192001 0.82415 1.84146 1.85719 1.41721 1.08969 0.879424 0.739148 0.639757 0.565314 0.506844 0.459027 0.418538 0.383193 0.351486 0.32233 0.294899 0.268532 0.24267 0.216811 0.190481 0.163223 0.134611 0.104328 0.0724218 0.0400826 0.0120549 0.00476215 0.075801 0.422295 1.37342 1.98551 1.63411 1.23553 0.973247 0.802761 0.685557 0.600091 0.534475 0.481845 0.438023\n 0.402946 0.369531 0.339215 0.31106 0.284337 0.258454 0.232899 0.207211 0.180965 0.153777 0.125364 0.0957188 0.0656309 0.0381784 0.0233592 0.0535023 0.23469 0.838287 1.74173 1.78814 1.39763 1.08662 0.881061 0.742049 0.642889 0.56837 0.509752 0.461793 0.421195 0.385781 0.35405 0.324917 0.297559 0.271324 0.245665 0.220098 0.194183 0.16751 0.139734 0.110675 0.0806214 0.0512076 0.0280171 0.0289628 0.112787 0.46247 1.32844 1.88443 1.59532 1.22668 0.973254 0.805245 0.688639 0.603204 0.53746 0.48468 0.44073\n 0.408107 0.374635 0.344345 0.316308 0.289809 0.264275 0.239228 0.214259 0.189018 0.16325 0.136874 0.110236 0.0847405 0.0645701 0.0616188 0.110283 0.308499 0.852043 1.57431 1.65952 1.35481 1.07725 0.882418 0.74674 0.648492 0.574076 0.515313 0.467166 0.426411 0.390904 0.359157 0.330094 0.302904 0.276953 0.251718 0.226757 0.201691 0.176211 0.150131 0.123537 0.0971828 0.0735249 0.059617 0.0756242 0.180187 0.525812 1.24639 1.70902 1.5172 1.20513 0.970751 0.808756 0.693948 0.608911 0.543108 0.490146 0.446017\n 0.415648 0.382189 0.352011 0.324209 0.298096 0.273134 0.248897 0.225051 0.201367 0.177773 0.154485 0.132336 0.113545 0.103633 0.116351 0.186253 0.393918 0.849832 1.38148 1.49082 1.28527 1.05638 0.879972 0.751049 0.655222 0.581588 0.52299 0.474802 0.433974 0.398441 0.366752 0.33786 0.310977 0.2855 0.260948 0.236942 0.213198 0.189555 0.166059 0.143176 0.122289 0.106906 0.105724 0.140558 0.26534 0.588182 1.1413 1.4992 1.40336 1.16548 0.961348 0.810521 0.699782 0.616152 0.550745 0.497814 0.453615\n 0.425289 0.392035 0.362148 0.334773 0.309271 0.285158 0.262081 0.239809 0.218269 0.197619 0.178435 0.162105 0.151689 0.153844 0.183081 0.270225 0.470832 0.826183 1.19548 1.30726 1.19053 1.01926 0.869418 0.751971 0.661094 0.589601 0.531924 0.48414 0.443527 0.408177 0.376729 0.348191 0.321822 0.297066 0.273507 0.250853 0.228945 0.20781 0.187783 0.169776 0.15586 0.150546 0.163666 0.216532 0.352149 0.631169 1.0287 1.29056 1.26502 1.10458 0.940232 0.806897 0.703689 0.623316 0.559314 0.506989 0.463072\n 0.436597 0.403911 0.374626 0.347975 0.323392 0.300472 0.278957 0.258746 0.239942 0.222959 0.208736 0.199165 0.19792 0.212076 0.254963 0.349717 0.526163 0.785631 1.03278 1.13127 1.07899 0.964458 0.847102 0.746235 0.663661 0.596384 0.540917 0.494365 0.454527 0.419771 0.388896 0.361011 0.335454 0.311744 0.289549 0.268688 0.249152 0.23118 0.215414 0.203195 0.197165 0.20243 0.228745 0.293986 0.426183 0.648643 0.920719 1.10477 1.11859 1.02459 0.904279 0.794291 0.702811 0.628337 0.567372 0.51668 0.47372\n 0.448951 0.417414 0.389209 0.363706 0.340449 0.319139 0.299632 0.28197 0.266434 0.253672 0.244908 0.242329 0.249735 0.273549 0.32399 0.414856 0.556748 0.73654 0.898135 0.976631 0.96284 0.895308 0.811683 0.731268 0.660475 0.599969 0.54849 0.504405 0.466222 0.432719 0.402938 0.376152 0.351819 0.329563 0.309162 0.29056 0.273906 0.259647 0.248682 0.242655 0.244458 0.259053 0.294635 0.36347 0.47935 0.644419 0.824368 0.950029 0.979333 0.933025 0.853895 0.770471 0.694553 0.628995 0.573203 0.525623 0.484659\n 0.461538 0.431966 0.405508 0.381723 0.360304 0.341079 0.324035 0.309345 0.297441 0.289121 0.285721 0.289387 0.303423 0.332641 0.383252 0.461146 0.566675 0.686278 0.79016 0.848441 0.853234 0.818825 0.765072 0.706268 0.649804 0.598546 0.553073 0.513009 0.477665 0.446331 0.418379 0.393304 0.370732 0.350422 0.332279 0.316375 0.303005 0.292765 0.286694 0.286496 0.294846 0.315771 0.354858 0.418544 0.510882 0.626287 0.742362 0.826153 0.856971 0.839629 0.793294 0.735701 0.677489 0.623454 0.575098 0.532405 0.494793\n 0.473406 0.446815 0.422943 0.401579 0.382592 0.365953 0.35177 0.340321 0.332115 0.327962 0.329086 0.337225 0.354715 0.384367 0.428886 0.489368 0.562769 0.639621 0.705232 0.746138 0.75726 0.742897 0.711918 0.672777 0.631361 0.591026 0.553364 0.51894 0.487799 0.459755 0.434554 0.411958 0.391793 0.373976 0.358542 0.345678 0.33577 0.329466 0.327769 0.332147 0.344633 0.367837 0.404636 0.457191 0.524883 0.601613 0.674803 0.729338 0.755332 0.752747 0.728907 0.692933 0.652092 0.610928 0.571808 0.535736 0.502968\n 0.483592 0.461074 0.44072 0.422552 0.406616 0.393018 0.381958 0.373761 0.368913 0.368096 0.372211 0.382374 0.399829 0.425704 0.460521 0.503436 0.551426 0.599039 0.639428 0.66664 0.677821 0.673802 0.657934 0.634338 0.606657 0.577562 0.548776 0.521299 0.49565 0.472064 0.450625 0.431361 0.4143 0.399515 0.387153 0.377475 0.370881 0.36795 0.369472 0.37646 0.390112 0.411659 0.442005 0.481097 0.527085 0.575698 0.62056 0.654949 0.674261 0.67754 0.667091 0.646854 0.620817 0.592158 0.563054 0.534833 0.508227\n 0.491347 0.47384 0.457857 0.443596 0.43124 0.420991 0.413088 0.407835 0.405607 0.406854 0.41208 0.421791 0.436393 0.456016 0.480289 0.508089 0.537411 0.565495 0.589313 0.606297 0.614986 0.615273 0.608182 0.595383 0.578689 0.55973 0.539808 0.519875 0.500596 0.482417 0.465645 0.450499 0.437168 0.425839 0.416729 0.410109 0.406316 0.405766 0.408937 0.416345 0.428463 0.445585 0.467622 0.493853 0.522719 0.551798 0.578117 0.598782 0.611716 0.616137 0.612554 0.602381 0.587414 0.569403 0.549822 0.529795 0.510121\n 0.496372 0.484362 0.473263 0.463344 0.454844 0.447987 0.442992 0.440085 0.43949 0.441422 0.446059 0.453506 0.463734 0.476516 0.491364 0.507491 0.523832 0.539138 0.552155 0.561824 0.567461 0.568845 0.566188 0.560036 0.551118 0.54022 0.528088 0.515374 0.502621 0.490272 0.478681 0.468141 0.458903 0.451197 0.445243 0.441264 0.439485 0.440128 0.443394 0.44943 0.458281 0.469829 0.483724 0.499329 0.51571 0.531695 0.546006 0.557461 0.565171 0.568681 0.567994 0.563506 0.555873 0.545868 0.534265 0.521767 0.508973\n 0.498951 0.492196 0.485875 0.480211 0.475399 0.471612 0.469002 0.467693 0.467782 0.469331 0.472348 0.476782 0.482503 0.489293 0.496841 0.504746 0.512549 0.519761 0.525915 0.530618 0.533588 0.534687 0.533917 0.531408 0.527389 0.522155 0.516029 0.509344 0.502414 0.495534 0.488967 0.482948 0.477687 0.473367 0.470152 0.468178 0.467558 0.468372 0.470657 0.474394 0.479493 0.485782 0.492995 0.500776 0.508691 0.516259 0.522997 0.528468 0.532332 0.534375 0.53453 0.532867 0.52957 0.524904 0.519183 0.512736 0.505891\n 0.499854 0.497256 0.494799 0.492592 0.490727 0.489288 0.488339 0.487926 0.488075 0.488789 0.490046 0.491797 0.493969 0.496462 0.499157 0.501918 0.5046 0.507061 0.509167 0.510805 0.511889 0.512367 0.512222 0.51147 0.510163 0.508376 0.506206 0.503765 0.501171 0.498544 0.496003 0.493658 0.491611 0.48995 0.488749 0.488063 0.48793 0.488363 0.489352 0.490864 0.492836 0.495182 0.497793 0.500538 0.503278 0.505867 0.508166 0.51005 0.51142 0.512206 0.512372 0.511919 0.510882 0.509324 0.507332 0.505012 0.502479\n 0.499998 0.4997 0.499416 0.49916 0.498945 0.498781 0.498675 0.498633 0.498657 0.498746 0.498895 0.499098 0.499346 0.499625 0.499922 0.500224 0.500515 0.500781 0.50101 0.501189 0.50131 0.501367 0.501358 0.501283 0.501146 0.500953 0.500715 0.500442 0.500148 0.499848 0.499555 0.499284 0.499047 0.498856 0.49872 0.498646 0.498637 0.498693 0.498813 0.498991 0.499217 0.499482 0.499772 0.500074 0.500372 0.500652 0.500901 0.501106 0.501257 0.501347 0.501371 0.501328 0.501222 0.501056 0.500839 0.500582 0.500297","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"We superpose a surface plot of f on top of the grid:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"X = [r*cospi(θ) for r in r, θ in θ]\nY = [r*sinpi(θ) for r in r, θ in θ]\nscatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:red)\nsurface!(X, Y, F; legend=false, xlabel=\"x\", ylabel=\"y\", zlabel=\"f\")\nsavefig(joinpath(GENFIGS, \"zernike.html\"))","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/zernike.html\"","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"We precompute a (generalized) Zernike–Chebyshev×Fourier plan:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"α, β = 0, 0\nP = plan_disk2cxf(F, α, β)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"FastTransforms Zernike--Chebyshev×Fourier plan for 15×57-element array of Float64","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"And an FFTW Chebyshev×Fourier analysis plan on the disk:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"PA = plan_disk_analysis(F)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"FastTransforms plan for FFTW Chebyshev×Fourier analysis on the disk for 15×57-element array of Float64","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"Its Zernike coefficients are:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"U = P\\(PA*F)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"15×57 Matrix{Float64}:\n 0.886227 3.60709e-6 -1.8336e-6 -0.361801 3.60559e-11 -1.17688e-6 6.36308e-6 0.140125 -0.140125 -6.35177e-6 -7.70959e-6 1.89039e-10 0.118427 1.54098e-5 7.4099e-7 -0.0522214 -0.0522214 -1.71856e-5 1.64002e-5 0.0472361 -5.20197e-10 4.08953e-7 -3.63399e-5 -0.0217254 0.0217254 3.88099e-5 3.92308e-5 -1.24018e-9 -0.0202253 -8.31939e-5 -2.14893e-7 0.00949917 0.00949917 8.82306e-5 -8.80125e-5 -0.00898531 2.80468e-9 -1.10226e-7 0.000185657 0.00427337 -0.00427337 -0.000194603 -0.000194714 6.17793e-9 0.00408335 0.000406568 5.5777e-8 -0.00195832 -0.0019583 -0.000423167 0.000423111 0.00188439 -1.33894e-8 2.79926e-8 -0.000878195 -0.00090912 0.000909147\n 1.04025e-17 4.60728e-6 -2.33805e-6 -4.33e-11 4.33e-11 -1.22625e-6 6.53675e-6 3.57706e-17 -1.46429e-10 -5.65109e-6 -6.90982e-6 1.84987e-10 1.84987e-10 1.21904e-5 6.29629e-7 -4.19031e-10 -2.48746e-18 -1.21069e-5 1.14861e-5 4.50193e-10 -4.50193e-10 3.03358e-7 -2.25713e-5 9.64739e-18 9.39347e-10 2.10848e-5 2.13797e-5 -9.62216e-10 -9.62216e-10 -3.90991e-5 -1.42777e-7 1.94644e-9 2.52523e-17 3.51181e-5 -3.49801e-5 -1.94972e-9 1.94972e-9 -6.65696e-8 6.06806e-5 1.62452e-17 -3.87473e-9 -4.9981e-5 -5.00452e-5 3.82278e-9 3.82278e-9 7.63297e-5 3.09339e-8 -7.49277e-9 3.07275e-19 -5.04164e-5 5.03866e-5 7.2952e-9 -7.2952e-9 1.38574e-8 -4.45519e-5 2.75116e-17 1.36316e-8\n 4.31967e-17 4.76065e-6 -2.40899e-6 -4.59639e-11 4.59638e-11 -1.12866e-6 5.89804e-6 -4.92893e-18 -1.43511e-10 -4.51295e-6 -5.57325e-6 1.70088e-10 1.70088e-10 8.73447e-6 4.92668e-7 -3.63967e-10 -1.96912e-17 -7.74165e-6 7.28634e-6 3.70513e-10 -3.70513e-10 2.09854e-7 -1.26794e-5 -1.115e-17 7.33255e-10 1.02945e-5 1.04878e-5 -7.12279e-10 -7.12279e-10 -1.63841e-5 -8.90173e-8 1.36506e-9 -1.79643e-17 1.23112e-5 -1.22292e-5 -1.29344e-9 1.29344e-9 -3.78749e-8 1.71213e-5 -1.31822e-17 -2.42653e-9 -1.07347e-5 -1.07697e-5 2.25423e-9 2.25423e-9 1.13275e-5 1.62097e-8 -4.14789e-9 4.72154e-18 -4.10621e-6 4.09201e-6 3.57033e-9 -3.57033e-9 7.2136e-9 -3.89728e-6 1.18842e-17 7.03625e-9\n -8.6759e-18 4.3306e-6 -2.18254e-6 -4.50915e-11 4.50915e-11 -9.41975e-7 4.79767e-6 9.95472e-18 -1.3221e-10 -3.27045e-6 -4.09126e-6 1.48194e-10 1.48194e-10 5.69834e-6 3.57019e-7 -3.00851e-10 2.82407e-18 -4.50516e-6 4.19432e-6 2.90868e-10 -2.90868e-10 1.35612e-7 -6.44339e-6 7.09943e-18 5.46652e-10 4.50749e-6 4.62617e-6 -5.03847e-10 -5.03847e-10 -6.09951e-6 -5.21037e-8 9.1491e-10 1.52128e-18 3.77955e-6 -3.73364e-6 -8.19854e-10 8.19854e-10 -2.03036e-8 4.12363e-6 2.08255e-17 -1.45125e-9 -1.88522e-6 -1.90324e-6 1.26862e-9 1.26862e-9 1.23872e-6 7.40728e-9 -2.01666e-9 4.52885e-18 -6.4875e-7 6.41095e-7 1.96336e-9 -1.96336e-9 3.94603e-9 -4.95856e-7 1.37158e-17 3.81545e-9\n -1.55357e-17 3.55971e-6 -1.7846e-6 -4.1593e-11 4.1593e-11 -7.20914e-7 3.55774e-6 1.25952e-17 -1.15465e-10 -2.16169e-6 -2.74892e-6 1.22948e-10 1.22948e-10 3.3937e-6 2.40326e-7 -2.37394e-10 1.15486e-17 -2.38904e-6 2.19119e-6 2.18301e-10 -2.18301e-10 8.19355e-8 -2.95988e-6 -5.32282e-18 3.89943e-10 1.76401e-6 1.8323e-6 -3.41184e-10 -3.41184e-10 -2.0084e-6 -2.86395e-8 5.87175e-10 -4.46611e-18 1.01021e-6 -9.86038e-7 -4.97705e-10 4.97705e-10 -1.02636e-8 8.36501e-7 -1.96829e-17 -8.31421e-10 -2.51578e-7 -2.59455e-7 6.11155e-10 6.11155e-10 2.81636e-7 4.14107e-9 -1.17835e-9 5.45336e-18 -1.31206e-7 1.26866e-7 1.1332e-9 -1.1332e-9 2.26757e-9 -8.50354e-8 6.1748e-18 2.17398e-9\n 4.5607e-17 2.67365e-6 -1.33163e-6 -3.63778e-11 3.63778e-11 -5.08751e-7 2.4183e-6 -1.79334e-18 -9.60672e-11 -1.3062e-6 -1.69561e-6 9.74399e-11 9.74399e-11 1.84711e-6 1.50509e-7 -1.79257e-10 3.76234e-18 -1.15523e-6 1.03773e-6 1.56975e-10 -1.56975e-10 4.63055e-8 -1.22747e-6 1.76766e-18 2.66772e-10 6.14181e-7 6.51026e-7 -2.21796e-10 -2.21796e-10 -5.82251e-7 -1.47961e-8 3.62177e-10 3.79631e-18 2.3447e-7 -2.22474e-7 -2.90765e-10 2.90765e-10 -4.27394e-9 1.32135e-7 3.89533e-18 -3.9572e-10 -7.37753e-8 -7.83499e-8 3.78556e-10 3.78556e-10 7.69466e-8 2.43764e-9 -7.22143e-10 5.49309e-18 -3.3267e-8 3.06793e-8 6.86748e-10 -6.86748e-10 1.36854e-9 -1.89956e-8 2.38165e-18 1.30213e-9\n 5.17884e-18 1.84493e-6 -9.11632e-7 -3.03234e-11 3.03234e-11 -3.31998e-7 1.51086e-6 -9.81832e-20 -7.63919e-11 -7.22019e-7 -9.61716e-7 7.39635e-11 7.39635e-11 9.19025e-7 8.7759e-8 -1.29855e-10 -9.09509e-18 -5.0973e-7 4.44593e-7 1.08464e-10 -1.08464e-10 2.44943e-8 -4.5896e-7 -9.96677e-18 1.75682e-10 1.89131e-7 2.07797e-7 -1.3908e-10 -1.3908e-10 -1.48285e-7 -7.20906e-9 2.15876e-10 -5.63307e-18 4.31232e-8 -3.83843e-8 -1.35983e-10 1.35983e-10 -2.58242e-9 4.86298e-8 -5.91649e-18 -2.58784e-10 -2.49419e-8 -2.77411e-8 2.45364e-10 2.45364e-10 2.49291e-8 1.50968e-9 -4.63692e-10 5.12088e-18 -1.04761e-8 8.85511e-9 4.36633e-10 -4.36633e-10 8.66632e-10 -5.46345e-9 5.4617e-18 8.19335e-10\n -3.03871e-17 1.17276e-6 -5.74087e-7 -2.41606e-11 2.41606e-11 -2.00616e-7 8.68671e-7 -6.96842e-19 -5.82253e-11 -3.64941e-7 -5.01985e-7 5.39205e-11 5.39205e-11 4.17975e-7 4.76625e-8 -9.05511e-11 -7.94098e-18 -2.05562e-7 1.71822e-7 7.23176e-11 -7.23176e-11 1.21586e-8 -1.5476e-7 2.76426e-18 1.11916e-10 5.11842e-8 6.01101e-8 -8.43279e-11 -8.43279e-11 -2.90142e-8 -2.68449e-9 9.8079e-11 3.48626e-18 1.93294e-8 -1.63497e-8 -9.30964e-11 9.30964e-11 -1.64272e-9 2.0359e-8 -6.43e-20 -1.75944e-10 -9.61519e-9 -1.14155e-8 1.65598e-10 1.65598e-10 9.47999e-9 9.81067e-10 -3.10521e-10 -4.22278e-18 -4.06062e-9 2.99682e-9 2.90001e-10 -2.90001e-10 5.7406e-10 -2.00747e-9 -3.75041e-19 5.39466e-10\n 1.15904e-17 6.87558e-7 -3.32907e-7 -1.84685e-11 1.84685e-11 -1.12306e-7 4.59773e-7 1.30243e-17 -4.265e-11 -1.68481e-7 -2.41286e-7 3.78985e-11 3.78985e-11 1.73828e-7 2.4139e-8 -6.10346e-11 -3.679e-18 -7.61356e-8 5.9745e-8 4.66938e-11 -4.66938e-11 5.69883e-9 -4.73542e-8 8.93103e-19 6.84382e-11 1.00798e-8 1.31808e-8 -3.64534e-11 -3.64534e-11 -1.46721e-8 -1.7526e-9 6.92775e-11 -7.65573e-18 9.70857e-9 -7.74328e-9 -6.54378e-11 6.54379e-11 -1.09391e-9 9.61505e-9 3.11249e-19 -1.23027e-10 -4.18802e-9 -5.39773e-9 1.15147e-10 1.15147e-10 4.18575e-9 6.64834e-10 -2.1464e-10 2.95795e-18 -1.89907e-9 1.17239e-9 1.99193e-10 -1.99193e-10 3.95103e-10 -9.19881e-10 3.54531e-18 3.68061e-10\n 1.3655e-17 3.71865e-7 -1.77783e-7 -1.35612e-11 1.35612e-11 -5.82608e-8 2.24022e-7 5.17824e-18 -3.01692e-11 -7.09608e-8 -1.06944e-7 2.57607e-11 2.57607e-11 6.63405e-8 1.14574e-8 -3.98083e-11 1.78738e-17 -2.62265e-8 1.87191e-8 2.83655e-11 -2.83655e-11 1.81554e-9 -1.02616e-8 2.36022e-18 2.72302e-11 5.57557e-9 7.66477e-9 -2.60181e-11 -2.60181e-11 -8.14921e-9 -1.19076e-9 4.92954e-11 1.02848e-17 5.39512e-9 -4.04931e-9 -4.64096e-11 4.64096e-11 -7.54615e-10 5.0669e-9 9.15652e-18 -8.69428e-11 -2.04308e-9 -2.88332e-9 8.10649e-11 8.10649e-11 2.11288e-9 4.64752e-10 -1.50494e-10 3.12591e-18 -1.03471e-9 5.23655e-10 1.39056e-10 -1.39056e-10 2.79431e-10 -5.01563e-10 5.09065e-18 2.55748e-10\n -1.70371e-17 1.85546e-7 -8.74169e-8 -9.6428e-12 9.6428e-12 -2.80375e-8 1.00537e-7 -1.47205e-17 -2.06073e-11 -2.73295e-8 -4.39821e-8 1.69233e-11 1.69233e-11 2.34206e-8 5.10163e-9 -2.35204e-11 8.47131e-18 -5.91169e-9 3.77929e-9 9.88461e-12 -9.88462e-12 1.24842e-9 -6.38622e-9 5.95056e-18 1.91141e-11 3.32832e-9 4.77417e-9 -1.82332e-11 -1.82332e-11 -4.89671e-9 -8.28984e-10 3.44828e-11 5.52642e-18 3.25458e-9 -2.31249e-9 -3.24e-11 3.24e-11 -5.30949e-10 2.93011e-9 -6.15329e-18 -6.05679e-11 -1.10379e-9 -1.6978e-9 5.63435e-11 5.63436e-11 1.1914e-9 3.3001e-10 -1.04342e-10 1.12709e-19 -6.27959e-10 2.63577e-10 9.6157e-11 -9.6157e-11 2.00002e-10 -3.071e-10 3.66282e-18 1.76348e-10\n -3.29615e-17 8.54426e-8 -3.95787e-8 -6.58741e-12 6.58744e-12 -1.26163e-8 4.18408e-8 -2.64892e-17 -1.3631e-11 -9.62687e-9 -1.67874e-8 9.48624e-12 9.48623e-12 4.72571e-9 1.23574e-9 -6.65263e-12 -4.22361e-18 -3.91558e-9 2.44388e-9 6.57828e-12 -6.57828e-12 8.65402e-10 -4.14906e-9 1.43425e-18 1.2711e-11 2.09945e-9 3.10576e-9 -1.21149e-11 -1.21149e-11 -3.10737e-9 -5.79121e-10 2.28905e-11 5.54319e-18 2.07394e-9 -1.41354e-9 -2.1486e-11 2.1486e-11 -3.73369e-10 1.81245e-9 -1.16961e-17 -4.01214e-11 -6.48005e-10 -1.06694e-9 3.72789e-11 3.72789e-11 7.26798e-10 2.33379e-10 -6.89482e-11 7.31145e-18 -4.05112e-10 1.46777e-10 6.34527e-11 -6.34527e-11 1.42127e-10 -1.99851e-10 5.42192e-18 1.16198e-10\n 1.6415e-17 3.66259e-8 -1.66324e-8 -4.39971e-12 4.39972e-12 -5.20978e-9 1.59586e-8 5.56694e-19 -7.0843e-12 -1.58674e-9 -2.96274e-9 1.91297e-12 1.91297e-12 3.12298e-9 8.33281e-10 -3.95183e-12 -4.20797e-18 -2.58884e-9 1.5939e-9 3.90661e-12 -3.90663e-12 5.8643e-10 -2.71374e-9 2.69379e-18 7.54633e-12 1.34984e-9 2.03322e-9 -7.18992e-12 -7.18992e-12 -2.00561e-9 -3.94051e-10 1.35798e-11 -4.17599e-18 1.34233e-9 -8.92165e-10 -1.27412e-11 1.27412e-11 -2.54934e-10 1.15296e-9 -8.61255e-18 -2.37812e-11 -3.99094e-10 -6.85581e-10 2.20855e-11 2.20855e-11 4.59097e-10 1.5982e-10 -4.0826e-11 -1.5289e-18 -2.64588e-10 8.74454e-11 3.75507e-11 -3.75507e-11 9.75761e-11 -1.31247e-10 -4.8282e-18 6.87229e-11\n 8.80953e-18 1.42637e-8 -6.34424e-9 -2.10397e-12 2.10396e-12 -6.84193e-10 1.98342e-9 -7.07889e-20 -7.77237e-13 -9.64872e-10 -1.8079e-9 8.82103e-13 8.82103e-13 1.90051e-9 5.11075e-10 -1.82213e-12 6.93021e-18 -1.57577e-9 9.64939e-10 1.80116e-12 -1.80117e-12 3.60351e-10 -1.64478e-9 5.43119e-18 3.47896e-12 8.12528e-10 1.2328e-9 -3.31434e-12 -3.31434e-12 -1.2092e-9 -2.42517e-10 6.2592e-12 -2.80085e-18 8.10242e-10 -5.33001e-10 -5.872e-12 5.872e-12 -1.57104e-10 6.91093e-10 -6.77559e-18 -1.09586e-11 -2.3601e-10 -4.12661e-10 1.01758e-11 1.01758e-11 2.74436e-10 9.85995e-11 -1.88077e-11 -4.72317e-18 -1.60322e-10 5.09818e-11 1.7296e-11 -1.7296e-11 6.02559e-11 -7.9705e-11 -7.79753e-20 3.16487e-11\n -3.17011e-17 3.5367e-9 -1.55057e-9 -5.05699e-14 5.05682e-14 -1.24617e-9 3.61129e-9 -1.06861e-18 -1.49121e-13 -1.75608e-9 -3.29176e-9 1.69228e-13 1.6923e-13 3.45928e-9 9.31108e-10 -3.49576e-13 -5.73066e-19 -2.86824e-9 1.75527e-9 3.45549e-13 -3.4555e-13 6.56655e-10 -2.99235e-9 -1.72502e-18 6.67424e-13 1.47702e-9 2.24293e-9 -6.35833e-13 -6.35833e-13 -2.1985e-9 -4.42011e-10 1.20078e-12 1.97444e-18 1.47335e-9 -9.68009e-10 -1.12648e-12 1.12649e-12 -2.86382e-10 1.25563e-9 2.20447e-19 -2.10227e-12 -4.28097e-10 -7.50132e-10 1.95208e-12 1.95208e-12 4.98453e-10 1.79759e-10 -3.60793e-12 1.54178e-18 -2.91666e-10 9.23134e-11 3.31791e-12 -3.31791e-12 1.09866e-10 -1.45042e-10 -1.11051e-18 6.07111e-12","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"The Zernike coefficients are useful for integration. The integral of f(xy) over the disk should be pi2 by harmonicity. The coefficient of Z_00 multiplied by √π is:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"U[1, 1]*sqrt(π)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"1.5707963267948968","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"Using an orthonormal basis, the integral of f(xy)^2 over the disk is approximately the square of the 2-norm of the coefficients:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"norm(U)^2, π/(2*sqrt(2))*log1p(sqrt(2))","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"(0.9789599193439185, 0.9789599179781414)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"But there's more! Next, we repeat the experiment using the Dunkl-Xu orthonormal polynomials supported on the rectangularized disk.","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"N = 2N\nM = N","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"30","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"We analyze the function on an Ntimes M mapped tensor product xy-grid defined by:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"beginaligned\nx_n = cosleft(frac2n+12Npiright) = sinleft(fracN-2n-12Npiright)quad rm for quad 0 le n Nquadrm and\nz_m = cosleft(frac2m+12Mpiright) = sinleft(fracM-2m-12Mpiright)quad rm for quad 0 le m M\ny_nm = sqrt1-x_n^2z_m\nendaligned","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"Slightly more accuracy can be expected by using an auxiliary array:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":" w_n = sinleft(frac2n+12Npiright)quad rm for quad 0 le n N","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"so that y_nm = w_nz_m.","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"The x grid","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"w = [sinpi((n+0.5)/N) for n in 0:N-1]\nx = [sinpi((N-2n-1)/(2N)) for n in 0:N-1]","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"30-element Vector{Float64}:\n 0.9986295347545738\n 0.9876883405951378\n 0.9659258262890683\n 0.9335804264972017\n 0.8910065241883678\n 0.838670567945424\n 0.7771459614569709\n 0.7071067811865475\n 0.6293203910498375\n 0.5446390350150271\n 0.45399049973954675\n 0.35836794954530027\n 0.25881904510252074\n 0.15643446504023087\n 0.052335956242943835\n -0.052335956242943835\n -0.15643446504023087\n -0.25881904510252074\n -0.35836794954530027\n -0.45399049973954675\n -0.5446390350150271\n -0.6293203910498375\n -0.7071067811865475\n -0.7771459614569709\n -0.838670567945424\n -0.8910065241883678\n -0.9335804264972017\n -0.9659258262890683\n -0.9876883405951378\n -0.9986295347545738","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"The z grid","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"z = [sinpi((M-2m-1)/(2M)) for m in 0:M-1]","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"30-element Vector{Float64}:\n 0.9986295347545738\n 0.9876883405951378\n 0.9659258262890683\n 0.9335804264972017\n 0.8910065241883678\n 0.838670567945424\n 0.7771459614569709\n 0.7071067811865475\n 0.6293203910498375\n 0.5446390350150271\n 0.45399049973954675\n 0.35836794954530027\n 0.25881904510252074\n 0.15643446504023087\n 0.052335956242943835\n -0.052335956242943835\n -0.15643446504023087\n -0.25881904510252074\n -0.35836794954530027\n -0.45399049973954675\n -0.5446390350150271\n -0.6293203910498375\n -0.7071067811865475\n -0.7771459614569709\n -0.838670567945424\n -0.8910065241883678\n -0.9335804264972017\n -0.9659258262890683\n -0.9876883405951378\n -0.9986295347545738","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"On the mapped tensor product grid, our function samples are:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"F = [f(x[n], w[n]*z) for n in 1:N, z in z]","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"30×30 Matrix{Float64}:\n 0.383725 0.383905 0.384264 0.384798 0.3855 0.386365 0.387383 0.388542 0.389832 0.391237 0.392744 0.394337 0.395997 0.397708 0.399451 0.401207 0.402957 0.404681 0.406361 0.407977 0.409512 0.410949 0.41227 0.413462 0.41451 0.415403 0.41613 0.416683 0.417055 0.417242\n 0.353509 0.354039 0.355094 0.356664 0.358732 0.36128 0.364281 0.367707 0.371524 0.375695 0.380177 0.384927 0.389897 0.395036 0.400292 0.405609 0.41093 0.416197 0.421352 0.426336 0.431089 0.435556 0.439683 0.443417 0.446713 0.449527 0.451824 0.453573 0.454752 0.455346\n 0.325652 0.32653 0.328275 0.330873 0.334296 0.338513 0.343483 0.349158 0.355488 0.362412 0.36987 0.377792 0.386108 0.394741 0.40361 0.412629 0.421708 0.43075 0.439655 0.44832 0.456637 0.464501 0.471805 0.478449 0.484336 0.489382 0.493512 0.496665 0.498793 0.499866\n 0.29943 0.300665 0.303122 0.306774 0.311585 0.317506 0.324478 0.332436 0.341308 0.351018 0.361484 0.372625 0.384354 0.396582 0.409213 0.422145 0.435264 0.448446 0.461551 0.474426 0.486904 0.498809 0.50996 0.520175 0.529284 0.537127 0.54357 0.548501 0.551834 0.553515\n 0.274261 0.275876 0.279088 0.283858 0.290132 0.297838 0.306895 0.317212 0.328692 0.341239 0.354758 0.36916 0.384358 0.400269 0.416811 0.43389 0.451401 0.469213 0.487163 0.505054 0.522647 0.539669 0.555819 0.570781 0.584246 0.595923 0.605564 0.612965 0.617979 0.620509\n 0.249651 0.251685 0.255724 0.261714 0.269574 0.279203 0.290482 0.303282 0.31747 0.332923 0.349529 0.367198 0.385862 0.405474 0.426001 0.44741 0.469656 0.492656 0.516277 0.540305 0.564443 0.588294 0.611378 0.633149 0.653036 0.670489 0.685018 0.696234 0.703855 0.707707\n 0.225163 0.227669 0.232643 0.240006 0.249642 0.261402 0.275112 0.290582 0.307622 0.326061 0.345762 0.366637 0.388654 0.411835 0.43625 0.461998 0.489179 0.517862 0.548041 0.579594 0.612236 0.645481 0.678629 0.710777 0.740882 0.76785 0.790662 0.808467 0.820649 0.826828\n 0.200384 0.203443 0.209507 0.218467 0.230156 0.244357 0.260808 0.279223 0.299317 0.32084 0.343606 0.367524 0.392611 0.418996 0.446912 0.47667 0.508629 0.543152 0.580544 0.620979 0.664413 0.710473 0.758363 0.806792 0.853985 0.897808 0.936015 0.966541 0.987766 0.99863\n 0.174918 0.178645 0.186025 0.196908 0.211057 0.228154 0.247802 0.269562 0.292995 0.317717 0.343461 0.370116 0.397762 0.426667 0.457278 0.490195 0.526141 0.565917 0.610353 0.660232 0.716173 0.778452 0.846763 0.919914 0.995547 1.07001 1.13854 1.19588 1.23718 1.25878\n 0.148385 0.152947 0.161975 0.175262 0.192474 0.213137 0.23665 0.262328 0.289486 0.317533 0.346071 0.374964 0.404363 0.43471 0.4667 0.501255 0.539494 0.582713 0.632375 0.690092 0.75756 0.836429 0.928002 1.03272 1.1493 1.27371 1.39809 1.51064 1.59716 1.64443\n 0.120453 0.126104 0.137278 0.153696 0.174875 0.200102 0.228448 0.258839 0.290208 0.321663 0.352638 0.382979 0.41296 0.443231 0.47475 0.508726 0.546578 0.589942 0.640699 0.701019 0.773401 0.860651 0.965732 1.0913 1.23871 1.40612 1.58568 1.76048 1.90408 1.98636\n 0.0909577 0.098092 0.112194 0.132868 0.159398 0.19068 0.225238 0.261383 0.297474 0.332223 0.364913 0.395469 0.424393 0.452621 0.481372 0.512033 0.546102 0.585165 0.630904 0.685083 0.749484 0.825684 0.914588 1.01552 1.12484 1.23449 1.33202 1.40445 1.44601 1.46226\n 0.0602361 0.0695018 0.0877988 0.114536 0.148582 0.188133 0.230785 0.273857 0.314915 0.352268 0.385224 0.414044 0.439685 0.46349 0.486923 0.511411 0.53824 0.568495 0.60296 0.641919 0.684785 0.729453 0.77136 0.802572 0.811931 0.788253 0.727788 0.642222 0.558465 0.506932\n 0.0300951 0.0426105 0.0672646 0.103059 0.148022 0.199015 0.251986 0.302743 0.347947 0.385818 0.416228 0.440285 0.45973 0.476426 0.492035 0.507855 0.524738 0.542996 0.562232 0.581051 0.596627 0.604238 0.597148 0.56764 0.510053 0.425442 0.32469 0.226238 0.149204 0.107374\n 0.00673069 0.0245336 0.0593763 0.109244 0.17025 0.236535 0.301213 0.358181 0.403763 0.437224 0.460093 0.47501 0.484736 0.491598 0.497272 0.502743 0.508304 0.513517 0.517087 0.516699 0.508899 0.489293 0.453432 0.398651 0.326385 0.243411 0.160485 0.0888546 0.0371183 0.010234\n 0.010234 0.0371183 0.0888546 0.160485 0.243411 0.326385 0.398651 0.453432 0.489293 0.508899 0.516699 0.517087 0.513517 0.508304 0.502743 0.497272 0.491598 0.484736 0.47501 0.460093 0.437224 0.403763 0.358181 0.301213 0.236535 0.17025 0.109244 0.0593763 0.0245336 0.00673069\n 0.107374 0.149204 0.226238 0.32469 0.425442 0.510053 0.56764 0.597148 0.604238 0.596627 0.581051 0.562232 0.542996 0.524738 0.507855 0.492035 0.476426 0.45973 0.440285 0.416228 0.385818 0.347947 0.302743 0.251986 0.199015 0.148022 0.103059 0.0672646 0.0426105 0.0300951\n 0.506932 0.558465 0.642222 0.727788 0.788253 0.811931 0.802572 0.77136 0.729453 0.684785 0.641919 0.60296 0.568495 0.53824 0.511411 0.486923 0.46349 0.439685 0.414044 0.385224 0.352268 0.314915 0.273857 0.230785 0.188133 0.148582 0.114536 0.0877988 0.0695018 0.0602361\n 1.46226 1.44601 1.40445 1.33202 1.23449 1.12484 1.01552 0.914588 0.825684 0.749484 0.685083 0.630904 0.585165 0.546102 0.512033 0.481372 0.452621 0.424393 0.395469 0.364913 0.332223 0.297474 0.261383 0.225238 0.19068 0.159398 0.132868 0.112194 0.098092 0.0909577\n 1.98636 1.90408 1.76048 1.58568 1.40612 1.23871 1.0913 0.965732 0.860651 0.773401 0.701019 0.640699 0.589942 0.546578 0.508726 0.47475 0.443231 0.41296 0.382979 0.352638 0.321663 0.290208 0.258839 0.228448 0.200102 0.174875 0.153696 0.137278 0.126104 0.120453\n 1.64443 1.59716 1.51064 1.39809 1.27371 1.1493 1.03272 0.928002 0.836429 0.75756 0.690092 0.632375 0.582713 0.539494 0.501255 0.4667 0.43471 0.404363 0.374964 0.346071 0.317533 0.289486 0.262328 0.23665 0.213137 0.192474 0.175262 0.161975 0.152947 0.148385\n 1.25878 1.23718 1.19588 1.13854 1.07001 0.995547 0.919914 0.846763 0.778452 0.716173 0.660232 0.610353 0.565917 0.526141 0.490195 0.457278 0.426667 0.397762 0.370116 0.343461 0.317717 0.292995 0.269562 0.247802 0.228154 0.211057 0.196908 0.186025 0.178645 0.174918\n 0.99863 0.987766 0.966541 0.936015 0.897808 0.853985 0.806792 0.758363 0.710473 0.664413 0.620979 0.580544 0.543152 0.508629 0.47667 0.446912 0.418996 0.392611 0.367524 0.343606 0.32084 0.299317 0.279223 0.260808 0.244357 0.230156 0.218467 0.209507 0.203443 0.200384\n 0.826828 0.820649 0.808467 0.790662 0.76785 0.740882 0.710777 0.678629 0.645481 0.612236 0.579594 0.548041 0.517862 0.489179 0.461998 0.43625 0.411835 0.388654 0.366637 0.345762 0.326061 0.307622 0.290582 0.275112 0.261402 0.249642 0.240006 0.232643 0.227669 0.225163\n 0.707707 0.703855 0.696234 0.685018 0.670489 0.653036 0.633149 0.611378 0.588294 0.564443 0.540305 0.516277 0.492656 0.469656 0.44741 0.426001 0.405474 0.385862 0.367198 0.349529 0.332923 0.31747 0.303282 0.290482 0.279203 0.269574 0.261714 0.255724 0.251685 0.249651\n 0.620509 0.617979 0.612965 0.605564 0.595923 0.584246 0.570781 0.555819 0.539669 0.522647 0.505054 0.487163 0.469213 0.451401 0.43389 0.416811 0.400269 0.384358 0.36916 0.354758 0.341239 0.328692 0.317212 0.306895 0.297838 0.290132 0.283858 0.279088 0.275876 0.274261\n 0.553515 0.551834 0.548501 0.54357 0.537127 0.529284 0.520175 0.50996 0.498809 0.486904 0.474426 0.461551 0.448446 0.435264 0.422145 0.409213 0.396582 0.384354 0.372625 0.361484 0.351018 0.341308 0.332436 0.324478 0.317506 0.311585 0.306774 0.303122 0.300665 0.29943\n 0.499866 0.498793 0.496665 0.493512 0.489382 0.484336 0.478449 0.471805 0.464501 0.456637 0.44832 0.439655 0.43075 0.421708 0.412629 0.40361 0.394741 0.386108 0.377792 0.36987 0.362412 0.355488 0.349158 0.343483 0.338513 0.334296 0.330873 0.328275 0.32653 0.325652\n 0.455346 0.454752 0.453573 0.451824 0.449527 0.446713 0.443417 0.439683 0.435556 0.431089 0.426336 0.421352 0.416197 0.41093 0.405609 0.400292 0.395036 0.389897 0.384927 0.380177 0.375695 0.371524 0.367707 0.364281 0.36128 0.358732 0.356664 0.355094 0.354039 0.353509\n 0.417242 0.417055 0.416683 0.41613 0.415403 0.41451 0.413462 0.41227 0.410949 0.409512 0.407977 0.406361 0.404681 0.402957 0.401207 0.399451 0.397708 0.395997 0.394337 0.392744 0.391237 0.389832 0.388542 0.387383 0.386365 0.3855 0.384798 0.384264 0.383905 0.383725","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"We superpose a surface plot of f on top of the grid:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"X = [x for x in x, z in z]\nY = [w*z for w in w, z in z]\nscatter3d(vec(X), vec(Y), vec(0F); markersize=0.75, markercolor=:green)\nsurface!(X, Y, F; legend=false, xlabel=\"x\", ylabel=\"y\", zlabel=\"f\")\nsavefig(joinpath(GENFIGS, \"dunklxu.html\"))","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/dunklxu.html\"","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"We precompute a Dunkl-Xu–Chebyshev plan:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"P = plan_rectdisk2cheb(F, β)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"FastTransforms Dunkl-Xu--Chebyshev² plan for 30×30-element array of Float64","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"And an FFTW Chebyshev² analysis plan on the rectangularized disk:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"PA = plan_rectdisk_analysis(F)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"FastTransforms plan for FFTW Chebyshev analysis on the rectangularized disk for 30×30-element array of Float64","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"Its Dunkl-Xu coefficients are:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"U = P\\(PA*F)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"30×30 Matrix{Float64}:\n 0.886226 2.88387e-18 -6.09829e-7 7.35851e-18 -0.0236857 -1.47226e-18 -0.00550977 2.32206e-18 -0.000650943 1.21902e-18 2.15779e-9 -5.41906e-19 1.86065e-5 -3.45643e-21 4.38992e-6 7.16086e-19 4.19398e-7 -1.83364e-18 -1.00953e-7 2.70552e-18 -8.14396e-8 -5.42887e-19 -3.94076e-8 1.3337e-19 -1.67897e-8 9.86492e-19 -6.33162e-9 -3.20905e-18 -2.11252e-9 6.15501e-19\n -1.77522e-18 -0.361799 -4.0846e-18 -0.062663 -1.17608e-18 2.72128e-6 2.30691e-19 0.00252359 -2.63137e-18 0.000679258 -4.46159e-18 9.1001e-5 6.38235e-18 1.03955e-6 5.22321e-19 -2.31664e-6 1.94715e-18 -3.11859e-7 -1.79784e-18 1.77496e-7 -2.62985e-18 1.44389e-7 2.91238e-18 6.82707e-8 -7.25576e-18 2.5634e-8 1.20042e-18 7.91583e-9 1.49738e-18 1.6359e-9\n -5.19659e-7 1.8508e-18 0.105921 -4.31929e-18 0.0404829 5.73996e-19 0.00663284 -1.0327e-18 -5.56102e-6 -4.21579e-19 -0.000301082 1.47301e-19 -8.77391e-5 5.41984e-22 -1.39615e-5 -8.87659e-20 -1.31088e-6 9.44811e-20 -2.80392e-7 5.51227e-20 -2.38006e-7 -4.98362e-20 -1.39444e-7 2.17216e-20 -5.76521e-8 2.30505e-19 -1.77475e-8 -9.7631e-19 -3.52357e-9 2.0364e-19\n -1.27221e-18 0.125331 4.97304e-18 1.52509e-6 1.45775e-18 -0.013651 7.22456e-21 -0.00478429 2.98148e-18 -0.000775222 4.75045e-18 4.86933e-6 -6.43203e-18 4.00219e-5 -4.98601e-19 1.28528e-5 -1.75937e-18 2.68143e-6 1.53754e-18 5.35246e-7 2.12609e-18 1.5728e-7 -2.22161e-18 5.72745e-8 5.21008e-18 1.62262e-8 -8.09068e-19 4.075e-10 -9.18958e-19 -1.20696e-9\n -0.0886209 5.9287e-18 -0.0913638 3.0208e-18 -0.0231032 -8.79578e-19 2.55845e-6 3.0702e-20 0.00173316 -2.27626e-20 0.000591205 7.34455e-20 9.51801e-5 -1.76615e-22 -9.67049e-7 -2.32129e-19 -5.17388e-6 7.52376e-19 -1.60228e-6 -1.32782e-18 -2.52759e-7 3.07657e-19 9.35469e-9 -8.51145e-20 2.66735e-8 -6.95778e-19 1.62648e-8 2.22225e-18 7.6679e-9 -4.29514e-19\n -2.27783e-19 -2.79797e-6 -7.72126e-18 0.0328526 -1.8342e-18 0.0160342 9.1729e-19 0.00332497 -2.80639e-18 -8.62281e-6 -4.2378e-18 -0.000228689 5.32969e-18 -7.87989e-5 3.83086e-19 -1.43006e-5 1.25448e-18 -1.11779e-6 -1.0031e-18 2.57992e-8 -1.25205e-18 -9.03781e-8 1.15981e-18 -8.97012e-8 -2.35026e-18 -4.18139e-8 3.12661e-19 -1.37244e-8 3.79461e-19 -2.86072e-9\n 0.0632999 3.51932e-18 0.0392743 1.49837e-19 3.65838e-6 -1.38938e-18 -0.00566089 8.65236e-20 -0.00237159 4.64215e-19 -0.0004495 -2.36182e-19 7.81213e-6 -6.26519e-21 3.39614e-5 4.25838e-19 1.24485e-5 -1.20569e-18 2.90796e-6 1.93539e-18 5.68462e-7 -4.14661e-19 1.34604e-7 1.07214e-19 3.66282e-8 7.3063e-19 6.0499e-9 -2.39201e-18 -9.48683e-10 4.62309e-19\n 3.09083e-18 -0.0381303 6.45574e-18 -0.0305859 1.32867e-18 -0.00858298 1.18843e-18 4.65679e-6 2.44694e-18 0.000859316 3.22841e-18 0.000335164 -3.73751e-18 6.02308e-5 -2.3993e-19 -1.60502e-6 -6.34732e-19 -4.61957e-6 3.88944e-19 -1.57519e-6 3.0958e-19 -2.83912e-7 -8.05568e-20 6.48665e-9 -9.16014e-20 2.64839e-8 1.4656e-20 1.29647e-8 1.77924e-20 3.53416e-9\n -0.0246173 1.34369e-18 -7.2626e-6 -6.12659e-19 0.0116417 -1.5041e-18 0.00624266 -1.85365e-18 0.00144602 -4.90943e-19 -1.39151e-5 3.17046e-19 -0.000132715 -1.2879e-20 -5.15476e-5 -5.01755e-19 -1.08626e-5 1.3675e-18 -1.14678e-6 -2.05969e-18 -1.60201e-8 4.1645e-19 -6.95967e-8 -8.86395e-20 -5.06628e-8 -6.56352e-19 -1.89806e-8 2.14815e-18 -4.88118e-9 -4.14794e-19\n 2.96922e-18 0.0318389 -7.01232e-18 0.0141265 -1.88894e-18 5.77928e-6 2.25083e-18 -0.00227906 -1.49048e-18 -0.00104803 -1.8946e-18 -0.000212855 1.43332e-18 1.03295e-5 3.07928e-20 2.34123e-5 -3.37163e-20 9.30847e-6 2.08986e-19 2.35417e-6 5.45452e-19 3.9768e-7 -5.99282e-19 5.08658e-8 1.44195e-18 -3.96513e-9 -2.31687e-19 -6.27377e-9 -2.80629e-19 -2.22939e-9\n 4.3203e-6 -1.01505e-18 -0.0150888 3.50579e-18 -0.0112343 -3.04793e-18 -0.00328812 1.6965e-19 1.04744e-5 1.13928e-18 0.00039214 -4.16429e-19 0.000165953 -4.32603e-20 3.20022e-5 5.4276e-19 -1.20827e-6 -1.2744e-18 -2.94655e-6 1.81728e-18 -7.04511e-7 -2.92334e-19 -5.6071e-8 7.05523e-20 3.46324e-8 5.34236e-19 2.06785e-8 -1.75157e-18 7.17059e-9 3.39977e-19\n 2.8983e-18 -0.013664 6.5678e-18 -1.51866e-5 5.4757e-19 0.00436874 2.16097e-18 0.00244523 1.06017e-18 0.000590637 4.65336e-19 -2.14758e-5 -9.40954e-20 -7.38896e-5 2.3552e-20 -3.13213e-5 5.26085e-19 -7.72648e-6 -6.82977e-19 -1.29269e-6 -8.74011e-19 -2.78823e-7 9.5171e-19 -5.90858e-8 -2.26756e-18 -1.01665e-8 3.58531e-19 -5.87834e-11 4.39097e-19 6.08272e-10\n 0.00851225 -3.46779e-18 0.0134873 -4.47271e-18 0.00537692 -8.3977e-19 6.02617e-6 -3.08821e-18 -0.000910525 -3.39517e-19 -0.000437065 3.03366e-19 -8.7068e-5 -8.80118e-20 1.1278e-5 -3.65139e-19 1.49731e-5 1.04786e-18 4.52269e-6 -1.08717e-18 1.07064e-6 2.22069e-19 1.46243e-7 -7.88106e-20 -1.38814e-8 -4.24262e-19 -1.70166e-8 1.34473e-18 -7.00317e-9 -2.34873e-19\n -5.243e-19 1.53467e-5 -3.42908e-18 -0.00600077 -1.14879e-18 -0.00428943 1.57332e-18 -0.00126564 4.71504e-19 2.25421e-5 1.05408e-18 0.000179497 -3.19824e-18 8.01025e-5 -4.07863e-19 1.7027e-5 -1.1788e-18 1.57076e-6 8.41234e-19 2.06968e-7 1.08582e-18 6.4408e-8 -1.00962e-18 3.71494e-8 2.54812e-18 1.54347e-8 -4.43537e-19 4.19595e-9 -5.02122e-19 6.39706e-10\n -0.00737561 3.20877e-19 -0.00609917 5.01968e-18 -2.74248e-5 -1.69707e-18 0.00166484 4.53517e-19 0.000938074 1.49633e-18 0.000214292 -4.51956e-19 -2.95524e-5 -1.70254e-19 -4.43089e-5 4.86992e-19 -1.48998e-5 -3.74819e-19 -4.66705e-6 8.30785e-19 -1.1166e-6 -1.63135e-19 -1.75326e-7 -5.17937e-20 6.20197e-11 2.28331e-19 1.22805e-8 -9.15375e-19 5.74874e-9 2.71057e-19\n -1.53896e-18 0.00528716 2.99138e-18 0.00556329 -2.15535e-19 0.00208938 -7.47732e-21 -5.2783e-7 -6.15068e-19 -0.000359085 -2.14571e-18 -0.000171677 2.3754e-18 -2.96656e-5 1.23813e-20 2.10201e-6 1.54216e-19 2.03799e-6 -3.37798e-19 7.36548e-7 -8.65849e-19 1.34796e-7 1.57582e-18 -8.41342e-9 -3.22682e-18 -1.56944e-8 3.58566e-19 -6.34761e-9 6.01843e-19 -1.40381e-9\n 0.00325817 -2.84485e-19 3.77292e-5 -6.03158e-18 -0.00236387 1.7388e-18 -0.0016225 -1.91543e-18 -0.000450124 4.45629e-20 4.2479e-5 6.05433e-20 9.29879e-5 -2.32382e-19 3.37099e-5 4.71114e-19 1.28552e-5 8.98504e-19 3.9506e-6 -2.91014e-19 9.51441e-7 1.15619e-19 1.58677e-7 -3.87565e-19 5.78941e-9 -4.52573e-19 -8.22477e-9 7.86929e-19 -4.24338e-9 2.31952e-19\n -1.89824e-18 -0.00475403 -2.71301e-19 -0.00260261 3.02312e-19 -4.17061e-5 -1.89426e-18 0.000603349 2.04618e-18 0.000321014 3.43974e-18 4.91036e-5 -6.38959e-18 -1.33075e-5 -1.05918e-18 -9.95643e-6 -2.63009e-18 -4.40482e-6 1.5221e-18 -1.35103e-6 1.63207e-18 -2.69324e-7 -1.27253e-19 -1.41967e-8 1.6452e-18 1.40866e-8 -7.11669e-19 7.16251e-9 -2.35918e-19 1.77508e-9\n -2.1087e-5 4.43105e-18 0.00246819 5.58103e-18 0.00221801 5.16957e-19 0.000774953 1.78195e-18 -2.27028e-5 1.01858e-18 -0.000146058 -3.94509e-19 -5.59485e-5 -6.27763e-19 -2.5516e-5 1.37015e-18 -9.52201e-6 7.96212e-19 -2.90084e-6 3.76863e-19 -7.0138e-7 -2.09039e-20 -1.20528e-7 -3.15268e-19 -6.49799e-9 -8.95548e-20 5.20338e-9 -4.60083e-19 2.87275e-9 4.70547e-19\n 6.06272e-20 0.00217575 -2.66229e-18 7.86173e-5 -6.71472e-19 -0.000845473 -2.57966e-18 -0.000526267 -2.09351e-18 -9.24417e-5 -3.21392e-18 2.85383e-5 8.09944e-19 2.55329e-5 -6.62568e-19 1.39518e-5 -1.59662e-18 5.53959e-6 -4.47258e-19 1.63754e-6 3.62645e-20 3.34514e-7 2.00636e-18 2.71988e-8 -3.09107e-18 -1.21682e-8 -2.21799e-19 -7.17118e-9 1.08785e-18 -1.87466e-9\n -0.00127442 3.52931e-19 -0.00226313 -4.30745e-18 -0.00105975 1.87531e-18 -4.70324e-5 6.00057e-19 0.000173699 -1.38557e-19 6.84882e-5 -3.26853e-19 3.73772e-5 -5.60827e-20 1.67333e-5 9.3379e-19 6.1804e-6 8.39235e-19 1.87498e-6 -2.66208e-19 4.54341e-7 3.00091e-19 7.92679e-8 1.95688e-20 4.9557e-9 -8.34156e-21 -3.08203e-9 -2.03576e-19 -1.77447e-9 7.2992e-20\n 1.96865e-18 -7.54358e-5 3.58988e-18 0.000953128 1.6236e-18 0.00073895 -2.40377e-18 0.000186348 2.16847e-18 -3.08415e-5 2.54719e-18 -4.20801e-5 1.22943e-19 -2.97992e-5 3.21331e-19 -1.49958e-5 -8.15942e-19 -5.73922e-6 -1.98008e-18 -1.67382e-6 1.43452e-18 -3.45419e-7 -1.22162e-18 -3.19319e-8 3.32858e-18 1.04223e-8 -1.08684e-18 6.70585e-9 4.47261e-19 1.79997e-9\n 0.00115733 1.30891e-18 0.00108248 4.06073e-18 0.000140675 -2.51786e-19 -0.00015525 2.19311e-18 -6.00244e-5 -3.22812e-19 -3.94963e-5 -3.02667e-19 -2.12639e-5 4.02577e-19 -9.44009e-6 1.85579e-19 -3.47007e-6 -2.98953e-19 -1.05071e-6 -7.43343e-19 -2.54885e-7 2.09385e-19 -4.47918e-8 9.68517e-19 -2.98189e-9 1.09376e-18 1.6509e-9 -1.31313e-18 9.71987e-10 -9.95033e-19\n 1.48521e-18 -0.000757848 -5.47813e-18 -0.000843449 -1.0829e-18 -0.000328982 5.05077e-19 8.77607e-7 -6.47403e-19 4.13033e-5 -7.47716e-19 4.36922e-5 3.11321e-18 2.88832e-5 2.20016e-19 1.41096e-5 5.10479e-19 5.3233e-6 -1.4537e-18 1.5442e-6 -2.20346e-19 3.20051e-7 7.40593e-19 3.10541e-8 -2.56423e-19 -8.83962e-9 -1.51978e-19 -5.9456e-9 -2.58702e-19 -1.61537e-9\n -0.000553886 -2.72894e-18 -0.000187639 -1.75508e-18 0.000102621 -1.51373e-18 3.50362e-5 -7.82231e-19 2.80559e-5 -1.16799e-18 1.831e-5 2.74456e-19 9.80506e-6 9.84228e-19 4.33835e-6 -3.15583e-19 1.59166e-6 2.69126e-20 4.81568e-7 1.46454e-18 1.16874e-7 9.49945e-20 2.05996e-8 -1.29623e-18 1.40536e-9 -3.22261e-19 -7.42251e-10 9.2967e-19 -4.4125e-10 3.14499e-19\n 3.43006e-19 0.00067785 7.65451e-18 0.000443404 1.23865e-18 5.25409e-5 6.64849e-19 -8.79182e-6 2.73158e-19 -3.88737e-5 3.09642e-19 -3.84611e-5 -2.37757e-18 -2.48679e-5 -5.12093e-19 -1.20249e-5 -1.41333e-19 -4.51391e-6 9.67661e-19 -1.30691e-6 5.07231e-19 -2.71299e-7 9.18246e-19 -2.67727e-8 1.99136e-19 7.24306e-9 -1.49026e-19 4.95787e-9 -1.41127e-18 1.35319e-9\n 0.000104898 -1.01818e-18 -4.97719e-5 -7.29653e-19 -1.14056e-5 5.87956e-19 -1.12136e-5 4.60098e-19 -8.949e-6 4.53171e-19 -5.82665e-6 -2.44462e-19 -3.11536e-6 -6.1681e-19 -1.37708e-6 5.61031e-19 -5.04943e-7 -8.46536e-20 -1.52739e-7 -3.66863e-19 -3.7074e-8 -2.38249e-19 -6.54014e-9 1.24858e-19 -4.49338e-10 7.25589e-19 2.34081e-10 -4.87718e-19 1.39557e-10 -5.94023e-19\n -3.13646e-18 -0.000389793 -3.28188e-18 -8.04943e-5 -1.37241e-19 -3.68665e-5 -2.30965e-18 8.03845e-6 -6.09189e-19 2.97453e-5 -5.0944e-19 2.89916e-5 1.05019e-18 1.86472e-5 6.3629e-19 8.99472e-6 1.43239e-18 3.37228e-6 -1.20318e-18 9.75922e-7 4.1214e-20 2.02668e-7 -1.14334e-19 2.00821e-8 1.81185e-19 -5.36499e-9 -1.23364e-19 -3.68864e-9 4.2811e-20 -1.00792e-9\n 1.54054e-5 1.23828e-18 1.00144e-6 1.84463e-19 1.23964e-6 -8.43152e-20 1.21824e-6 5.74481e-20 9.71898e-7 -1.03935e-19 6.32656e-7 -8.20175e-20 3.38215e-7 1.5389e-19 1.49487e-7 -1.12048e-19 5.48103e-8 -2.06987e-19 1.65791e-8 6.79198e-20 4.02426e-9 1.22785e-19 7.09969e-10 -6.46596e-20 4.88112e-11 -5.51333e-20 -2.53943e-11 1.23995e-19 -1.51441e-11 7.96269e-20\n -1.5778e-18 0.000145153 1.32424e-19 0.000143445 -7.6147e-20 6.55677e-5 2.22587e-19 -1.45469e-5 3.01577e-19 -5.3233e-5 3.22253e-20 -5.18305e-5 -8.36085e-22 -3.33247e-5 -1.86065e-19 -1.60719e-5 -4.43286e-19 -6.0251e-6 8.63083e-20 -1.74358e-6 5.65738e-21 -3.62096e-7 4.33784e-20 -3.58901e-8 -1.49965e-19 9.57958e-9 1.3012e-20 6.5884e-9 3.28648e-19 1.80042e-9","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"The Dunkl-Xu coefficients are useful for integration. The integral of f(xy) over the disk should be pi2 by harmonicity. The coefficient of P_00 multiplied by √π is:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"U[1, 1]*sqrt(π)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"1.5707955409153043","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"Using an orthonormal basis, the integral of f(xy)^2 over the disk is approximately the square of the 2-norm of the coefficients:","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"norm(U)^2, π/(2*sqrt(2))*log1p(sqrt(2))","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"(0.978937045726087, 0.9789599179781414)","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"","category":"page"},{"location":"generated/disk/#","page":"Holomorphic integration on the unit disk","title":"Holomorphic integration on the unit disk","text":"This page was generated using Literate.jl.","category":"page"},{"location":"dev/#Development-Documentation-1","page":"Development","title":"Development Documentation","text":"","category":"section"},{"location":"dev/#","page":"Development","title":"Development","text":"The core of FastTransforms.jl is developed in parallel with the C library of the same name. Julia and C interoperability is enhanced by the BinaryBuilder infrastructure, which provides the user a safe and seamless experience using a package in a different language.","category":"page"},{"location":"dev/#Why-two-packages?-1","page":"Development","title":"Why two packages?","text":"","category":"section"},{"location":"dev/#","page":"Development","title":"Development","text":"Orthogonal polynomial transforms are performance-sensitive imperative tasks. Yet, many of Julia's rich and evolving language features are simply unnecessary for defining these computational routines. Moreover, rapid language changes in Julia (as compared to C) have been more than a perturbation to this repository in the past.","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"The C library generates assembly for vectorized operations such as single instruction multiple data (SIMD) that is more efficient than that generated by a compiler without human intervention. It also uses OpenMP to introduce shared memory parallelism for large tasks. Finally, calling into precompiled binaries reduces the Julia package's pre-compilation and dependencies, improving the user experience. Some of these capabilities also exist in Julia, but with C there is frankly more control over performance.","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"C libraries are easier to call from any other language, partly explaining why the Python package manager Spack already supports the C library through third-party efforts.","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"In Julia, a parametric composite type with unrestricted type parameters is just about as big as Any. Such a type allows the Julia API to far exceed the C API in its ability to unify all of the orthogonal polynomial transforms and present them as linear operators. The mutable struct FTPlan{T, N, K}, together with AdjointFTPlan and TransposeFTPlan, are the core Julia types in this repository. Whereas T is understood to represent element type of the plan and N represents the number of leading dimensions of the array on which it operates, K is a mere enumeration which serves to distinguish the orthogonal polynomials at play. For example, FTPlan{Float64, 1, LEG2CHEB} represents the necessary pre-computations to convert 64-bit Legendre series to Chebyshev series (of the first kind). N == 1 because Chebyshev and Legendre series are naturally represented with vectors of coefficients. However, this particular plan may operate not only on vectors but also on matrices, column-by-column.","category":"page"},{"location":"dev/#The-developer's-right-to-build-from-source-1","page":"Development","title":"The developer's right to build from source","text":"","category":"section"},{"location":"dev/#","page":"Development","title":"Development","text":"Precompiled binaries are important for users, but development in C may be greatly accelerated by coupling it with a dynamic language such as Julia. For this reason, the repository preserves the developer's right to build the C library from source by setting an environment variable to trigger the build script:","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"julia> ENV[\"FT_BUILD_FROM_SOURCE\"] = \"true\"\n\"true\"\n\n(@v1.5) pkg> build FastTransforms\n Building FFTW ──────────→ `~/.julia/packages/FFTW/ayqyZ/deps/build.log`\n Building TimeZones ─────→ `~/.julia/packages/TimeZones/K98G0/deps/build.log`\n Building FastTransforms → `~/.julia/dev/FastTransforms/deps/build.log`\n\njulia> using FastTransforms\n[ Info: Precompiling FastTransforms [057dd010-8810-581a-b7be-e3fc3b93f78c]\n","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"This lets the developer experiment with new features through ccalling into bleeding edge source code. Customizing the build script further allows the developer to track a different branch or even a fork.","category":"page"},{"location":"dev/#From-release-to-release-to-release-1","page":"Development","title":"From release to release to release","text":"","category":"section"},{"location":"dev/#","page":"Development","title":"Development","text":"To get from a C library release to a Julia package release, the developer needs to update Yggdrasil's build_tarballs.jl script for the new version and its 256-bit SHA. On macOS, the SHA can be found by:","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"shell> curl https://codeload.github.com/MikaelSlevinsky/FastTransforms/tar.gz/v0.6.2 --output FastTransforms.tar.gz\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 168k 0 168k 0 0 429k 0 --:--:-- --:--:-- --:--:-- 429k\n\nshell> shasum -a 256 FastTransforms.tar.gz\nfd00befcb0c20ba962a8744a7b9139355071ee95be70420de005b7c0f6e023aa FastTransforms.tar.gz\n\nshell> rm -f FastTransforms.tar.gz\n","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"Using SHA.jl, the SHA can also be found by:","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"shell> curl https://codeload.github.com/MikaelSlevinsky/FastTransforms/tar.gz/v0.6.2 --output FastTransforms.tar.gz\n % Total % Received % Xferd Average Speed Time Time Time Current\n Dload Upload Total Spent Left Speed\n100 168k 0 168k 0 0 442k 0 --:--:-- --:--:-- --:--:-- 443k\n\njulia> using SHA\n\njulia> open(\"FastTransforms.tar.gz\") do f\n bytes2hex(sha256(f))\n end\n\"fd00befcb0c20ba962a8744a7b9139355071ee95be70420de005b7c0f6e023aa\"\n\nshell> rm -f FastTransforms.tar.gz\n","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"Then we wait for the friendly folks at JuliaPackaging to merge the pull request to Yggdrasil, triggering a new release of the FastTransforms_jll.jl meta package that stores all precompiled binaries. With this release, we update the FastTransforms.jl Project.toml to point to the latest release and register the new version.","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"Since development of Yggdrasil is quite rapid, a fork may easily become stale. Git permits the developer to forcibly make a master branch on a fork even with upstream master:","category":"page"},{"location":"dev/#","page":"Development","title":"Development","text":"git fetch upstream\ngit checkout master\ngit reset --hard upstream/master\ngit push origin master --force","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/halfrange.jl\"","category":"page"},{"location":"generated/halfrange/#Half-range-Chebyshev-polynomials-1","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"","category":"section"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"In this paper, Daan Huybrechs introduced the so-called half-range Chebyshev polynomials as the semi-classical orthogonal polynomials with respect to the inner product:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"langle f g rangle = int_0^1 f(x) g(x)fracrm d xsqrt1-x^2","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"By the variable transformation y = 2x-1, the resulting polynomials can be related to orthogonal polynomials on (-11) with the Jacobi weight (1-y)^-frac12 modified by the weight (3+y)^-frac12.","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"We shall use the fact that:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"frac1sqrt3+y = sqrtfrac23+sqrt8sum_n=0^infty P_n(y) left(frac-13+sqrt8right)^n","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"and results from this paper to consider the half-range Chebyshev polynomials as modifications of the Jacobi polynomials P_n^(-frac120)(y).","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"using FastTransforms, LinearAlgebra, Plots, LaTeXStrings\nconst GENFIGS = joinpath(pkgdir(FastTransforms), \"docs/src/generated\")\n!isdir(GENFIGS) && mkdir(GENFIGS)\nplotlyjs()","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"Plots.PlotlyJSBackend()","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"We truncate the generating function to ensure a relative error less than eps() in the uniform norm on (-11):","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"z = -1/(3+sqrt(8))\nK = sqrt(-2z)\nN = ceil(Int, log(abs(z), eps()/2*(1-abs(z))/K) - 1)\nd = K .* z .^(0:N)","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"21-element Vector{Float64}:\n 0.585786437626905\n -0.10050506338833466\n 0.017243942703102998\n -0.0029585928302833363\n 0.0005076142785970194\n -8.70928412987791e-5\n 1.4942769195655289e-5\n -2.563773875152638e-6\n 4.3987405526054037e-7\n -7.547045641060418e-8\n 1.2948683203084688e-8\n -2.221642807903953e-9\n 3.8117364433902886e-10\n -6.53990581302203e-11\n 1.122070444229295e-11\n -1.925168523537399e-12\n 3.303066989314436e-13\n -5.6671670051262317e-14\n 9.723321376130305e-15\n -1.6682582055195078e-15\n 2.862278569867433e-16","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"Then, we convert this representation to the expansion in Jacobi polynomials P_n^(-frac12 0)(y):","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"u = jac2jac(d, 0.0, 0.0, -0.5, 0.0; norm1 = false, norm2 = true)","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"21-element Vector{Float64}:\n 0.9340010840223151\n -0.09412895357801879\n 0.012332003442981326\n -0.0017749924171044493\n 0.00026739546832682813\n -4.137724994351243e-5\n 6.516867953544994e-6\n -1.0393137552650633e-6\n 1.673019401749671e-7\n -2.7126077156467505e-8\n 4.423525597533419e-9\n -7.247452797834485e-10\n 1.1920483520702293e-10\n -1.9671182646957104e-11\n 3.2552876283504113e-12\n -5.400110170678753e-13\n 8.977555063800248e-14\n -1.4948797757615094e-14\n 2.4980123321513196e-15\n -4.125155260660654e-16\n 7.540496818753807e-17","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"Our working polynomial degree will be:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"n = 100","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"100","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"We compute the connection coefficients between the modified orthogonal polynomials and the Jacobi polynomials:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"P = plan_modifiedjac2jac(Float64, n+1, -0.5, 0.0, u)","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"FastTransforms Modified Jacobi--Jacobi plan for 101-element array of Float64","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"We store the connection to first kind Chebyshev polynomials:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"P1 = plan_jac2cheb(Float64, n+1, -0.5, 0.0; normjac = true)","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"FastTransforms Jacobi--Chebyshev plan for 101-element array of Float64","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"We compute the Chebyshev series for the degree-kle n modified polynomial and its values at the Chebyshev points:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"q = k -> lmul!(P1, lmul!(P, [zeros(k); 1.0; zeros(n-k)]))\nqvals = k-> ichebyshevtransform(q(k))","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"#3 (generic function with 1 method)","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"With the symmetric Jacobi matrix for P_n^(-frac12 0)(y) and the modified plan, we may compute the modified Jacobi matrix and the corresponding roots (as eigenvalues):","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"XP = SymTridiagonal([-inv((4n-1)*(4n-5)) for n in 1:n+1], [4n*(2n-1)/(4n-1)/sqrt((4n-3)*(4n+1)) for n in 1:n])\nXQ = FastTransforms.modified_jacobi_matrix(P, XP)\nSymTridiagonal(XQ.dv[1:10], XQ.ev[1:9])","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"10×10 LinearAlgebra.SymTridiagonal{Float64, Vector{Float64}}:\n 0.27324 0.615517 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ \n 0.615517 -0.0327708 0.509195 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ \n ⋅ 0.509195 -0.0115134 0.50391 ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ 0.50391 -0.00564494 0.502131 ⋅ ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ 0.502131 -0.00333235 0.501338 ⋅ ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ 0.501338 -0.00219677 0.500918 ⋅ ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ ⋅ 0.500918 -0.00155663 0.500668 ⋅ ⋅ \n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.500668 -0.00116057 0.500509 ⋅ \n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.500509 -0.000898551 0.5004\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.5004 -0.000716244","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"And we plot:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"x = (chebyshevpoints(Float64, n+1, Val(1)) .+ 1 ) ./ 2\np = plot(x, qvals(0); linewidth=2.0, legend = false, xlim=(0,1), xlabel=L\"x\",\n ylabel=L\"T^h_n(x)\", title=\"Half-Range Chebyshev Polynomials and Their Roots\",\n extra_plot_kwargs = KW(:include_mathjax => \"cdn\"))\nfor k in 1:10\n λ = (eigvals(SymTridiagonal(XQ.dv[1:k], XQ.ev[1:k-1])) .+ 1) ./ 2\n plot!(x, qvals(k); linewidth=2.0, color=palette(:default)[k+1])\n scatter!(λ, zero(λ); markersize=2.5, color=palette(:default)[k+1])\nend\np\nsavefig(joinpath(GENFIGS, \"halfrange.html\"))","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/halfrange.html\"","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"By Theorem 2.20 it turns out that the derivatives of the half-range Chebyshev polynomials are a linear combination of at most two polynomials orthogonal with respect to sqrt(3+y)(1-y)(1+y) on (-11). This fact enables us to compute the banded differentiation matrix:","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"v̂ = 3*[u; 0]+XP[1:N+2, 1:N+1]*u\nv = jac2jac(v̂, -0.5, 0.0, 0.5, 1.0; norm1 = true, norm2 = true)\nfunction threshold!(A::AbstractArray, ϵ)\n for i in eachindex(A)\n if abs(A[i]) < ϵ A[i] = 0 end\n end\n A\nend\nP′ = plan_modifiedjac2jac(Float64, n+1, 0.5, 1.0, v)\nDP = UpperTriangular(diagm(1=>[sqrt(n*(n+1/2)) for n in 1:n])) # The classical differentiation matrix representing 𝒟 P^{(-1/2,0)}(y) = P^{(1/2,1)}(y) D_P.\nDQ = UpperTriangular(threshold!(P′\\(DP*(P*I)), 100eps())) # The semi-classical differentiation matrix representing 𝒟 Q(y) = Q̂(y) D_Q.\nUpperTriangular(DQ[1:10,1:10])","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"10×10 LinearAlgebra.UpperTriangular{Float64, Matrix{Float64}}:\n 0.0 2.11682 0.481094 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n ⋅ 0.0 3.82901 0.789619 0.0 0.0 0.0 0.0 0.0 0.0\n ⋅ ⋅ 0.0 5.53918 1.08781 0.0 0.0 0.0 0.0 0.0\n ⋅ ⋅ ⋅ 0.0 7.24821 1.38334 0.0 0.0 0.0 0.0\n ⋅ ⋅ ⋅ ⋅ 0.0 8.95658 1.67782 0.0 0.0 0.0\n ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 10.6646 1.97177 0.0 0.0\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 12.3723 2.26542 0.0\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 14.0799 2.55888\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 15.7874\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"","category":"page"},{"location":"generated/halfrange/#","page":"Half-range Chebyshev polynomials","title":"Half-range Chebyshev polynomials","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/sphere.jl\"","category":"page"},{"location":"generated/sphere/#Spherical-harmonic-addition-theorem-1","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"","category":"section"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"This example confirms numerically that","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"f(z) = fracP_n(zcdot y) - P_n(xcdot y)zcdot y - xcdot y","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"is actually a degree-(n-1) polynomial on mathbbS^2, where P_n is the degree-n Legendre polynomial, and xyz in mathbbS^2. To verify, we sample the function on a Ntimes M equiangular grid defined by:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"beginaligned\ntheta_n = (n+tfrac12)piNquadrm forquad 0le n Nquadrm and\nvarphi_m = 2pi mMquadrm forquad 0le m M\nendaligned","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"we convert the function samples to Fourier coefficients using plan_sph_analysis; and finally, we transform the Fourier coefficients to spherical harmonic coefficients using plan_sph2fourier.","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"In the basis of spherical harmonics, it is plain to see the addition theorem in action, since P_n(xcdot y) should only consist of exact-degree-n harmonics.","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"For the storage pattern of the arrays, please consult the documentation.","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"function threshold!(A::AbstractArray, ϵ)\n for i in eachindex(A)\n if abs(A[i]) < ϵ A[i] = 0 end\n end\n A\nend\n\nusing FastTransforms, LinearAlgebra, Plots\nconst GENFIGS = joinpath(pkgdir(FastTransforms), \"docs/src/generated\")\n!isdir(GENFIGS) && mkdir(GENFIGS)\nplotlyjs()","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Plots.PlotlyJSBackend()","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"The colatitudinal grid (mod pi):","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"N = 15\nθ = (0.5:N-0.5)/N","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"0.03333333333333333:0.06666666666666667:0.9666666666666667","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"The longitudinal grid (mod pi):","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"M = 2*N-1\nφ = (0:M-1)*2/M","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"0.0:0.06896551724137931:1.9310344827586206","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Arbitrarily, we place x at the North pole:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"x = [0,0,1]","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"3-element Vector{Int64}:\n 0\n 0\n 1","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Another vector is completely free:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"y = normalize([.123,.456,.789])","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"3-element Vector{Float64}:\n 0.13375998748853216\n 0.4958906853233388\n 0.8580213831581455","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Thus z in mathbbS^2 is our variable vector, parameterized in spherical coordinates:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"z = (θ,φ) -> [sinpi(θ)*cospi(φ), sinpi(θ)*sinpi(φ), cospi(θ)]","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"#1 (generic function with 1 method)","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"On the tensor product grid, the Legendre polynomial P_n(zcdot y) is:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"A = [(2k+1)/(k+1) for k in 0:N-1]\nB = zeros(N)\nC = [k/(k+1) for k in 0:N]\nc = zeros(N); c[N] = 1\npts = vec([z(θ, φ)⋅y for θ in θ, φ in φ])\nphi0 = ones(N*M)\nF = reshape(FastTransforms.clenshaw!(c, A, B, C, pts, phi0, zeros(N*M)), N, M)","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"15×29 Matrix{Float64}:\n 0.264259 0.299171 0.304985 0.288068 0.261038 0.237692 0.228241 0.236528 0.259192 0.286391 0.304437 0.300462 0.26755 0.207601 0.130208 0.0483744 -0.0262845 -0.0865116 -0.129804 -0.156955 -0.169985 -0.170403 -0.158265 -0.132139 -0.0899937 -0.0308858 0.0429655 0.124641 0.202756\n 0.212068 0.303332 0.129215 -0.186607 -0.387155 -0.383993 -0.338172 -0.379747 -0.392602 -0.206438 0.109443 0.299961 0.225231 -0.0101802 -0.207053 -0.258628 -0.187516 -0.070652 0.0323131 0.0988479 0.12977 0.130741 0.102005 0.0380582 -0.0627707 -0.180155 -0.256899 -0.215501 -0.0267606\n -0.115553 0.236712 0.221776 -0.251073 -0.32857 0.421619 0.986223 0.482429 -0.299585 -0.280602 0.198511 0.253762 -0.0930651 -0.258938 -0.0793421 0.160653 0.233501 0.154045 0.0336174 -0.0560314 -0.0990238 -0.100375 -0.0604041 0.0261339 0.145985 0.231751 0.1719 -0.0610864 -0.255787\n -0.18454 -0.186901 0.216999 0.207436 -0.278408 -0.36511 -0.189358 -0.35156 -0.304334 0.180746 0.238643 -0.165767 -0.202157 0.128252 0.217098 -0.00943667 -0.200512 -0.194373 -0.0821865 0.0208264 0.0732008 0.0748654 0.0260895 -0.074028 -0.188494 -0.206184 -0.027257 0.20837 0.147067\n 0.233218 -0.0443128 -0.25662 0.0443223 0.302577 0.209245 0.107407 0.198264 0.305263 0.0716125 -0.25045 -0.0709297 0.228915 0.0560634 -0.209167 -0.109098 0.135993 0.209367 0.121014 0.0107106 -0.049922 -0.0518826 0.00472316 0.112882 0.206906 0.148044 -0.0921222 -0.214775 0.0327421\n -0.14959 0.176398 0.159536 -0.157586 -0.253853 -0.135785 -0.0630475 -0.127292 -0.249419 -0.174706 0.141057 0.191837 -0.130845 -0.171771 0.128955 0.181407 -0.058914 -0.206946 -0.154207 -0.0410986 0.0276329 0.029906 -0.034464 -0.146673 -0.208687 -0.0754426 0.17029 0.145612 -0.156134\n 0.03232 -0.216991 -0.0542418 0.201432 0.206916 0.0892457 0.0316764 0.0822717 0.200041 0.210302 -0.0334057 -0.219505 0.00906962 0.211107 -0.0222883 -0.209099 -0.0231776 0.189332 0.183999 0.0724419 -0.00503206 -0.00766855 0.065182 0.177672 0.19593 -0.0044746 -0.206821 -0.0443208 0.20777\n 0.0772106 0.200813 -0.0345837 -0.214416 -0.166372 -0.0543381 -0.0063074 -0.0483886 -0.158601 -0.217382 -0.0533452 0.193042 0.0976693 -0.187906 -0.085199 0.193101 0.105896 -0.154519 -0.211246 -0.107108 -0.019323 -0.0162213 -0.09921 -0.206977 -0.166608 0.0879047 0.201099 -0.0639311 -0.196895\n -0.161616 -0.14919 0.105731 0.2116 0.130202 0.0251362 -0.0160611 0.0199531 0.122174 0.210305 0.12046 -0.134582 -0.17451 0.114917 0.174042 -0.130385 -0.182374 0.0957622 0.234753 0.148573 0.0475436 0.0437788 0.140028 0.233975 0.113813 -0.1691 -0.148371 0.159712 0.133414\n 0.208908 0.0728989 -0.161008 -0.198486 -0.0961065 0.00135321 0.037119 0.00590617 -0.0881639 -0.194067 -0.170766 0.0549875 0.211431 -0.00338118 -0.21986 0.016122 0.234375 0.00021735 -0.247537 -0.203094 -0.0836434 -0.0787903 -0.19406 -0.253043 -0.023216 0.231655 0.0407554 -0.218225 -0.0261102\n -0.203495 0.0220031 0.200371 0.176174 0.0619327 -0.0270702 -0.058089 -0.0310551 0.0543296 0.169516 0.204695 0.0395021 -0.194934 -0.128043 0.183785 0.141369 -0.211961 -0.150004 0.2205 0.283345 0.137864 0.130789 0.275142 0.23809 -0.126501 -0.226893 0.11958 0.198142 -0.109095\n 0.12233 -0.127714 -0.219526 -0.142772 -0.0253159 0.0536809 0.080125 0.0571016 -0.0183211 -0.134724 -0.218347 -0.140698 0.10537 0.230635 -0.0169741 -0.260275 0.00868827 0.306062 -0.0323035 -0.400665 -0.252906 -0.23893 -0.40434 -0.0688019 0.303902 0.0393269 -0.259455 -0.0416906 0.225524\n 0.0533261 0.221676 0.20588 0.0928744 -0.0169863 -0.083121 -0.10464 -0.0859165 -0.0229991 0.0845139 0.199903 0.226054 0.0700661 -0.185075 -0.235303 0.0671548 0.306034 0.0030983 -0.399433 -0.020757 0.815719 0.855083 0.0350084 -0.404293 -0.0323252 0.304047 0.0929697 -0.224541 -0.198835\n -0.251975 -0.233798 -0.13019 -0.0152352 0.0703864 0.11835 0.133806 0.120358 0.0748091 -0.00825682 -0.122061 -0.22853 -0.255028 -0.136944 0.097903 0.288106 0.247787 -0.0273998 -0.313828 -0.4047 -0.353264 -0.349855 -0.403561 -0.327222 -0.0497156 0.234981 0.294129 0.11465 -0.123547\n 0.0890404 0.00957584 -0.0584588 -0.110278 -0.145276 -0.165114 -0.171728 -0.165964 -0.14708 -0.113177 -0.062519 0.00451035 0.0834519 0.16497 0.23634 0.285407 0.305513 0.298672 0.274919 0.248139 0.230823 0.230209 0.246547 0.273036 0.297446 0.305825 0.287718 0.240496 0.170292","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"We superpose a surface plot of f on top of the grid:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"X = [sinpi(θ)*cospi(φ) for θ in θ, φ in φ]\nY = [sinpi(θ)*sinpi(φ) for θ in θ, φ in φ]\nZ = [cospi(θ) for θ in θ, φ in φ]\nscatter3d(vec(X), vec(Y), vec(Z); markersize=1.25, markercolor=:violetred)\nsurface!(X, Y, Z; surfacecolor=F, legend=false, xlabel=\"x\", ylabel=\"y\", zlabel=\"f\")\nsavefig(joinpath(GENFIGS, \"sphere1.html\"))","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/sphere1.html\"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"We show the cut in the surface to help illustrate the definition of the grid. In particular, we do not sample the poles.","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"We precompute a spherical harmonic–Fourier plan:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"P = plan_sph2fourier(F)","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"FastTransforms Spherical harmonic--Fourier plan for 15×29-element array of Float64","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"And an FFTW Fourier analysis plan on mathbbS^2:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"PA = plan_sph_analysis(F)","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"FastTransforms plan for FFTW Fourier analysis on the sphere for 15×29-element array of Float64","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Its spherical harmonic coefficients demonstrate that it is exact-degree-n:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"V = PA*F\nU = threshold!(P\\V, 400*eps())","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"15×29 Matrix{Float64}:\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -1.66397e-5 2.73274e-5\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.000271538 -7.91038e-5 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 3.29805e-5 -0.00164832 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.00703526 -0.00174747 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0122275 0.0220184 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.0503776 0.0488881 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 -0.134224 -0.0799001 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0729185 -0.259962 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.337609 0.00337719 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0610941 0.235853 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0289877 -0.0164793 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.190197 0.192109 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 -0.0788841 0.135585 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.188313 0.0507949 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.142187 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"The L^2(mathbbS^2) norm of the function is:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"nrm1 = norm(U)","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"0.6582728344942347","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Similarly, on the tensor product grid, our function samples are:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Pnxy = FastTransforms.clenshaw!(c, A, B, C, [x⋅y], [1.0], [0.0])[1]\nF = [(F[n, m] - Pnxy)/(z(θ[n], φ[m])⋅y - x⋅y) for n in 1:N, m in 1:M]","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"15×29 Matrix{Float64}:\n 5.19948 4.13834 2.99067 1.90658 1.02691 0.455272 0.249877 0.429314 0.977414 1.83893 2.91328 4.06148 5.13287 6.0026 6.60156 6.92544 7.02254 6.96965 6.84793 6.72603 6.65164 6.64905 6.71906 6.83899 6.96269 7.02276 6.93845 6.63197 6.05227\n 5.95491 2.78879 -1.44975 -4.81316 -5.93907 -5.32122 -4.74802 -5.26014 -5.93537 -4.96628 -1.72861 2.51536 5.80241 7.01649 6.35996 4.76275 3.10172 1.83264 1.03553 0.610092 0.43191 0.426508 0.591355 0.996377 1.76414 3.00054 4.64424 6.26964 7.0226\n 6.89687 5.65236 0.11585 -5.28724 -4.64181 1.51819 5.42995 1.95544 -4.33608 -5.4796 -0.331651 5.39124 6.95616 4.78949 1.90996 0.265776 -0.0679633 0.206459 0.546026 0.760489 0.851318 0.854026 0.770114 0.565133 0.231314 -0.0604333 0.208258 1.74968 4.58324\n 3.06027 6.5357 5.89997 -0.165743 -5.46592 -5.06636 -3.28816 -4.90175 -5.62054 -0.644121 5.6253 6.677 3.31846 0.440384 -0.00401181 0.652985 1.01303 0.876591 0.580633 0.35795 0.254199 0.250991 0.347269 0.561893 0.857659 1.01648 0.69514 0.0273999 0.337402\n -0.070137 1.60923 5.43093 6.93528 3.91137 -0.131309 -1.75656 -0.336142 3.61343 6.85843 5.66343 1.83509 -0.053904 0.487406 1.01741 0.644213 0.136921 0.0101545 0.134135 0.275013 0.346961 0.349218 0.282296 0.144972 0.0138328 0.115298 0.603776 1.01615 0.548272\n 0.945078 0.135483 0.27158 2.71505 5.55048 6.82449 7.00499 6.85725 5.69314 2.92844 0.369819 0.0844295 0.912316 0.807551 0.149683 0.0509116 0.357273 0.499174 0.407141 0.269902 0.193177 0.1907 0.262329 0.397299 0.498435 0.37596 0.0666419 0.119637 0.764012\n 0.3347 0.96741 0.756526 0.0516758 0.0403323 0.667862 1.0399 0.710559 0.0718486 0.0205398 0.70939 0.987443 0.382027 0.0075432 0.314675 0.493074 0.249535 0.0255986 0.0288774 0.124344 0.187529 0.189637 0.130366 0.0344678 0.0191719 0.228563 0.486554 0.340488 0.0125441\n 0.19163 0.0244645 0.474228 0.953439 0.971777 0.756739 0.645454 0.743468 0.95977 0.969839 0.515354 0.0373859 0.165042 0.488731 0.32132 0.0219213 0.0963195 0.301654 0.329627 0.240493 0.171995 0.169627 0.234193 0.325354 0.310183 0.111448 0.0141702 0.296273 0.495085\n 0.41699 0.454012 0.154439 0.00689009 0.147415 0.349199 0.434542 0.359728 0.162073 0.00898106 0.134876 0.43942 0.434649 0.100528 0.0376636 0.284172 0.302882 0.085971 -0.0128005 0.0446154 0.109712 0.112106 0.0501911 -0.0122374 0.0727995 0.291434 0.297253 0.0501979 0.0815347\n 0.00653828 0.144506 0.416175 0.496049 0.398793 0.286378 0.242449 0.28086 0.390091 0.493228 0.429442 0.163601 0.00423886 0.186207 0.340647 0.145106 -0.0125214 0.139641 0.288402 0.253913 0.179097 0.176118 0.248108 0.291182 0.154331 -0.0106262 0.126633 0.337571 0.204303\n 0.334489 0.165749 0.014265 0.0385386 0.156172 0.253936 0.289478 0.258454 0.164306 0.0451436 0.010362 0.151498 0.32921 0.257363 0.0225829 0.0493168 0.268651 0.220231 -0.0026208 -0.0383697 0.0440181 0.047986 -0.0336588 -0.0128432 0.205569 0.277144 0.0634765 0.012466 0.242082\n 0.0666146 0.257095 0.341563 0.293211 0.203674 0.139862 0.117949 0.137043 0.198126 0.287354 0.341672 0.267702 0.0789497 -0.00992474 0.150427 0.293905 0.12293 -0.051658 0.138809 0.33873 0.255252 0.247571 0.340446 0.15898 -0.0503184 0.104503 0.292551 0.165851 -0.00643622\n 0.106032 -0.00382806 0.00704658 0.088086 0.17021 0.221457 0.238521 0.223661 0.174806 0.0942214 0.0112304 -0.00679647 0.0953468 0.252997 0.275056 0.0878466 -0.0516354 0.119191 0.338121 0.128404 -0.323093 -0.344224 0.0980961 0.340427 0.138821 -0.0504052 0.0724608 0.267888 0.261055\n 0.286625 0.280994 0.220196 0.149338 0.0951419 0.0642734 0.0542416 0.0629728 0.0923113 0.144964 0.215269 0.278062 0.288893 0.21207 0.0695276 -0.0416382 -0.0180382 0.136094 0.292814 0.340282 0.310784 0.308881 0.339519 0.300016 0.148439 -0.0107592 -0.0450601 0.0595874 0.203734\n 0.0747987 0.122395 0.163672 0.195512 0.217272 0.229726 0.233902 0.230262 0.2184 0.197306 0.166153 0.125451 0.0781262 0.0298766 -0.0118277 -0.0400996 -0.0514099 -0.0472393 -0.0335309 -0.0182388 -0.00839924 -0.0080514 -0.0173325 -0.0324517 -0.0465243 -0.0515701 -0.0414172 -0.0142377 0.0267486","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"We superpose a surface plot of f on top of the grid:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"scatter3d(vec(X), vec(Y), vec(Z); markersize=1.25, markercolor=:violetred)\nsurface!(X, Y, Z; surfacecolor=F, legend=false, xlabel=\"x\", ylabel=\"y\", zlabel=\"f\")\nsavefig(joinpath(GENFIGS, \"sphere2.html\"))","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/sphere2.html\"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Its spherical harmonic coefficients demonstrate that it is degree-(n-1):","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"V = PA*F\nU = threshold!(P\\V, 400*eps())","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"15×29 Matrix{Float64}:\n 2.07907 0.87453 0.235893 0.069594 -0.119618 0.0581001 0.0586842 0.0859934 -0.0488866 -0.015775 -0.060899 -0.0291623 -0.000291717 -0.00253358 0.00903247 0.000694039 0.000413142 -0.00117608 0.0011413 0.000780662 0.00140576 0.000942806 -0.000234181 8.63587e-6 -0.00043161 -0.000121732 -3.54626e-5 0.0 0.0\n 1.51317 0.44642 0.120416 -0.169934 0.292081 0.328839 0.332145 0.288911 -0.164244 -0.0423205 -0.163378 -0.0586349 -0.000586539 -0.00145765 0.00519666 -0.00998075 -0.00594126 -0.00862106 0.00836616 0.00369554 0.00665466 0.00342882 -0.000851678 2.16057e-5 -0.00107982 0.0 0.0 0.0 0.0\n 0.36606 -0.627659 -0.169303 -0.592046 1.0176 0.703541 0.710614 0.503834 -0.286426 -0.056082 -0.216504 -0.0224552 -0.000224625 0.0140577 -0.0501173 -0.0493515 -0.0293776 -0.0276576 0.0268398 0.00914327 0.0164645 0.00585456 -0.0014542 0.0 0.0 0.0 0.0 0.0 0.0\n -0.225238 -1.3923 -0.375555 -0.884141 1.51965 0.893241 0.902221 0.498016 -0.283118 -0.0162747 -0.0628284 0.165928 0.00165982 0.0536982 -0.191439 -0.123087 -0.0732701 -0.0534663 0.0518855 0.0122482 0.0220556 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0279478 -1.24976 -0.337105 -0.80053 1.37594 0.669715 0.676448 0.113165 -0.0643333 0.096013 0.370657 0.512707 0.00512874 0.109365 -0.389897 -0.195697 -0.116493 -0.0592355 0.0574841 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.642706 -0.460978 -0.124343 -0.408306 0.701792 0.115506 0.116667 -0.53107 0.30191 0.2422 0.935011 0.866631 0.00866913 0.145962 -0.520371 -0.183527 -0.109249 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.924445 0.171516 0.0462641 -0.0394459 0.0677993 -0.395183 -0.399156 -1.05835 0.601662 0.335991 1.29709 0.970497 0.00970813 0.116526 -0.415426 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.619857 0.0934262 0.0252005 0.0128822 -0.0221418 -0.505099 -0.510177 -1.1197 0.636541 0.30573 1.18027 0.65018 0.00650392 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0816312 -0.512221 -0.138165 -0.239451 0.411566 -0.194804 -0.196763 -0.706203 0.401471 0.16128 0.622619 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n -0.15003 -0.975789 -0.263206 -0.507765 0.872741 0.197111 0.199092 -0.186337 0.105931 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.105958 -0.834521 -0.225101 -0.515565 0.886148 0.287159 0.290046 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.530802 -0.266039 -0.0717606 -0.261012 0.448626 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.668154 0.140073 0.0377829 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.390394 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Finally, the Legendre polynomial P_n(zcdot x) is aligned with the grid:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"pts = vec([z(θ, φ)⋅x for θ in θ, φ in φ])\nF = reshape(FastTransforms.clenshaw!(c, A, B, C, pts, phi0, zeros(N*M)), N, M)","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"15×29 Matrix{Float64}:\n 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808\n -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968\n 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489\n -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835\n 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901\n -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532\n 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677\n -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473 -0.209473\n 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677 0.210677\n -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532 -0.214532\n 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901 0.221901\n -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835 -0.234835\n 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489 0.258489\n -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968 -0.30968\n 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808 0.501808","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"We superpose a surface plot of f on top of the grid:","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"scatter3d(vec(X), vec(Y), vec(Z); markersize=1.25, markercolor=:violetred)\nsurface!(X, Y, Z; surfacecolor=F, legend=false, xlabel=\"x\", ylabel=\"y\", zlabel=\"f\")\nsavefig(joinpath(GENFIGS, \"sphere3.html\"))","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/sphere3.html\"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"It only has one nonnegligible spherical harmonic coefficient. Can you spot it?","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"V = PA*F\nU = threshold!(P\\V, 400*eps())","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"15×29 Matrix{Float64}:\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0\n 0.658273 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"That nonnegligible coefficient should be","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"ret = eval(\"√(2π/($(N-1)+1/2))\")","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"\"√(2π/(14+1/2))\"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"which is approximately","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"eval(Meta.parse(ret))","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"0.6582728344942353","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"since the convention in this library is to orthonormalize.","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"nrm2 = norm(U)","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"0.6582728344942352","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"Note that the integrals of both functions P_n(zcdot y) and P_n(zcdot x) and their L^2(mathbbS^2) norms are the same because of rotational invariance. The integral of either is perhaps not interesting as it is mathematically zero, but the norms of either should be approximately the same.","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"nrm1 ≈ nrm2","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"true","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"","category":"page"},{"location":"generated/sphere/#","page":"Spherical harmonic addition theorem","title":"Spherical harmonic addition theorem","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/automaticdifferentiation.jl\"","category":"page"},{"location":"generated/automaticdifferentiation/#Automatic-differentiation-through-spherical-harmonic-transforms-1","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"","category":"section"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"This example finds a positive value of lambda in:","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"f(r) = sinlambda (kcdot r)","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"for some krinmathbbS^2 such that int_mathbbS^2 f^2 rmdOmega = 1. We do this by using derivative information through:","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"dfracpartial fpartial lambda = (kcdot r) coslambda (kcdot r)","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"using FastTransforms, LinearAlgebra","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"The colatitudinal grid (mod pi):","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"N = 15\nθ = (0.5:N-0.5)/N","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"0.03333333333333333:0.06666666666666667:0.9666666666666667","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"The longitudinal grid (mod pi):","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"M = 2*N-1\nφ = (0:M-1)*2/M","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"0.0:0.06896551724137931:1.9310344827586206","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"We precompute a spherical harmonic–Fourier plan:","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"P = plan_sph2fourier(Float64, N)","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"FastTransforms Spherical harmonic--Fourier plan for 15×29-element array of Float64","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"And an FFTW Fourier analysis plan on mathbbS^2:","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"PA = plan_sph_analysis(Float64, N, M)","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"FastTransforms plan for FFTW Fourier analysis on the sphere for 15×29-element array of Float64","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"Our choice of k and angular parametrization of r:","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"k = [2/7, 3/7, 6/7]\nr = (θ,φ) -> [sinpi(θ)*cospi(φ), sinpi(θ)*sinpi(φ), cospi(θ)]","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"#1 (generic function with 1 method)","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"Our initial guess for lambda:","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"λ = 1.0","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"1.0","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"Then we run Newton iteration and grab an espresso:","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"for _ in 1:7\n F = [sin(λ*(k⋅r(θ,φ))) for θ in θ, φ in φ]\n Fλ = [(k⋅r(θ,φ))*cos(λ*(k⋅r(θ,φ))) for θ in θ, φ in φ]\n U = P\\(PA*F)\n Uλ = P\\(PA*Fλ)\n global λ = λ - (norm(U)^2-1)/(2*sum(U.*Uλ))\n println(\"λ: $(rpad(λ, 18)) and the 2-norm: $(rpad(norm(U), 18))\")\nend","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"λ: 0.5565017029393282 and the 2-norm: 1.8510924318185522\nλ: 0.5031571262839712 and the 2-norm: 1.104184591487036 \nλ: 0.5010418434316171 and the 2-norm: 1.0040147091934828\nλ: 0.5010383094266806 and the 2-norm: 1.000006698425886 \nλ: 0.5010383094167955 and the 2-norm: 1.0000000000187363\nλ: 0.5010383094167954 and the 2-norm: 1.0000000000000002\nλ: 0.5010383094167955 and the 2-norm: 0.9999999999999999\n","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"","category":"page"},{"location":"generated/automaticdifferentiation/#","page":"Automatic differentiation through spherical harmonic transforms","title":"Automatic differentiation through spherical harmonic transforms","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/padua.jl\"","category":"page"},{"location":"generated/padua/#Padua-transform-1","page":"Padua transform","title":"Padua transform","text":"","category":"section"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"This demonstrates the Padua transform and inverse transform, explaining precisely the normalization and points","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"using FastTransforms","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"We define the Padua points and extract Cartesian components:","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"N = 15\npts = paduapoints(N)\nx = pts[:,1]\ny = pts[:,2];\nnothing #hide","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"We take the Padua transform of the function:","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"f = (x,y) -> exp(x + cos(y))\nf̌ = paduatransform(f.(x , y));\nnothing #hide","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"and use the coefficients to create an approximation to the function f:","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"f̃ = (x,y) -> begin\n j = 1\n ret = 0.0\n for n in 0:N, k in 0:n\n ret += f̌[j]*cos((n-k)*acos(x)) * cos(k*acos(y))\n j += 1\n end\n ret\nend","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"#3 (generic function with 1 method)","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"At a particular point, is the function well-approximated?","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"f̃(0.1,0.2) ≈ f(0.1,0.2)","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"true","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"Does the inverse transform bring us back to the grid?","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"ipaduatransform(f̌) ≈ f̃.(x,y)","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"true","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"","category":"page"},{"location":"generated/padua/#","page":"Padua transform","title":"Padua transform","text":"This page was generated using Literate.jl.","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"EditURL = \"https://github.com/JuliaApproximation/FastTransforms.jl/blob/master/examples/semiclassical.jl\"","category":"page"},{"location":"generated/semiclassical/#Semi-classical-Jacobi-polynomials-1","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"","category":"section"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"In this example, we will consider the semi-classical orthogonal polynomials with respect to the inner product:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"langle f g rangle = int_-1^1 f(x) g(x) w(x)rm d x","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"where w(x) = w^(alphabetagammadeltaepsilon)(x) = (1-x)^alpha(1+x)^beta(2+x)^gamma(3+x)^delta(5-x)^epsilon is a modification of the Jacobi weight. We shall use results from this paper to consider these semi-classical orthogonal polynomials as modifications of the orthonormalized Jacobi polynomials tildeP_n^(alphabeta)(x).","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"using ApproxFun, FastTransforms, LazyArrays, LinearAlgebra, Plots, LaTeXStrings\nconst GENFIGS = joinpath(pkgdir(FastTransforms), \"docs/src/generated\")\n!isdir(GENFIGS) && mkdir(GENFIGS)\nplotlyjs()","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"Plots.PlotlyJSBackend()","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"We set the five parameters:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"α,β,γ,δ,ϵ = -0.125, -0.25, 0.123, 0.456, 0.789","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"(-0.125, -0.25, 0.123, 0.456, 0.789)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"We use ApproxFun to construct a finite normalized Jacobi series as a proxy for (2+x)^gamma(3+x)^delta(5-x)^epsilon.","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"u = Fun(x->(2+x)^γ*(3+x)^δ*(5-x)^ϵ, NormalizedJacobi(β, α))","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"Fun(NormalizedJacobi(-0.25,-0.125), [9.44307, 0.378961, -0.175993, 0.00993571, -0.00159705, 0.000269325, -5.50832e-5, 1.18886e-5, -2.70741e-6, 6.33251e-7, -1.51159e-7, 3.65681e-8, -8.93731e-9, 2.2014e-9, -5.45681e-10, 1.35976e-10, -3.40364e-11, 8.55277e-12, -2.15663e-12, 5.45371e-13, -1.38184e-13, 3.50987e-14, -8.6989e-15, 2.26453e-15, -6.27902e-16])","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"Our working polynomial degree will be:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"n = 100","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"100","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"We compute the connection coefficients between the modified orthogonal polynomials and the Jacobi polynomials:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"P = plan_modifiedjac2jac(Float64, n+1, α, β, u.coefficients)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"FastTransforms Modified Jacobi--Jacobi plan for 101-element array of Float64","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"We store the connection to first kind Chebyshev polynomials:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"P1 = plan_jac2cheb(Float64, n+1, α, β; normjac = true)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"FastTransforms Jacobi--Chebyshev plan for 101-element array of Float64","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"We compute the Chebyshev series for the degree-kle n modified polynomial and its values at the Chebyshev points:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"q = k -> lmul!(P1, lmul!(P, [zeros(k); 1.0; zeros(n-k)]))\nqvals = k -> ichebyshevtransform(q(k))","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"#5 (generic function with 1 method)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"With the symmetric Jacobi matrix for tildeP_n^(alpha beta)(x) and the modified plan, we may compute the modified Jacobi matrix and the corresponding roots (as eigenvalues):","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"x = Fun(x->x, NormalizedJacobi(β, α))\nXP = SymTridiagonal(Symmetric(Multiplication(x, space(x))[1:n+1, 1:n+1]))\nXQ = FastTransforms.modified_jacobi_matrix(P, XP)\nview(XQ, 1:7, 1:7)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"7×7 view(::LinearAlgebra.SymTridiagonal{Float64, Vector{Float64}}, 1:7, 1:7) with eltype Float64:\n -0.052227 0.611763 ⋅ ⋅ ⋅ ⋅ ⋅ \n 0.611763 0.000494468 0.518899 ⋅ ⋅ ⋅ ⋅ \n ⋅ 0.518899 0.00129929 0.507083 ⋅ ⋅ ⋅ \n ⋅ ⋅ 0.507083 0.000851746 0.503749 ⋅ ⋅ \n ⋅ ⋅ ⋅ 0.503749 0.000542956 0.502328 ⋅ \n ⋅ ⋅ ⋅ ⋅ 0.502328 0.00037014 0.501587\n ⋅ ⋅ ⋅ ⋅ ⋅ 0.501587 0.000267516","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"And we plot:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"x = chebyshevpoints(Float64, n+1, Val(1))\np = plot(x, qvals(0); linewidth=2.0, legend = false, xlim=(-1,1), xlabel=L\"x\",\n ylabel=L\"Q_n(x)\", title=\"Semi-classical Jacobi Polynomials and Their Roots\",\n extra_plot_kwargs = KW(:include_mathjax => \"cdn\"))\nfor k in 1:10\n λ = eigvals(SymTridiagonal(XQ.dv[1:k], XQ.ev[1:k-1]))\n plot!(x, qvals(k); linewidth=2.0, color=palette(:default)[k+1])\n scatter!(λ, zero(λ); markersize=2.5, color=palette(:default)[k+1])\nend\np\nsavefig(joinpath(GENFIGS, \"semiclassical.html\"))","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/semiclassical.html\"","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"By Theorem 2.20 it turns out that the derivatives of these particular semi-classical Jacobi polynomials are a linear combination of at most four polynomials orthogonal with respect to the weight w^(alpha+1beta+1gamma+1delta+1epsilon+1)(x) on (-11). This fact enables us to compute the banded differentiation matrix:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"v = Fun(x->(2+x)^(γ+1)*(3+x)^(δ+1)*(5-x)^(ϵ+1), NormalizedJacobi(β+1, α+1))\nfunction threshold!(A::AbstractArray, ϵ)\n for i in eachindex(A)\n if abs(A[i]) < ϵ A[i] = 0 end\n end\n A\nend\nP′ = plan_modifiedjac2jac(Float64, n+1, α+1, β+1, v.coefficients)\nDP = UpperTriangular(diagm(1=>[sqrt(n*(n+α+β+1)) for n in 1:n])) # The classical differentiation matrix representing 𝒟 P^{(α,β)}(x) = P^{(α+1,β+1)}(x) D_P.\nDQ = UpperTriangular(threshold!(P′\\(DP*(P*I)), 100eps())) # The semi-classical differentiation matrix representing 𝒟 Q(x) = Q̂(x) D_Q.\nUpperTriangular(DQ[1:9, 1:9])","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"9×9 LinearAlgebra.UpperTriangular{Float64, Matrix{Float64}}:\n 0.0 7.02067 3.74167 -0.0809111 -0.113147 0.0 0.0 0.0 0.0\n ⋅ 0.0 12.0138 5.7562 -0.0612112 -0.149381 0.0 0.0 0.0\n ⋅ ⋅ 0.0 17.1606 7.59222 -0.0517326 -0.177356 0.0 0.0\n ⋅ ⋅ ⋅ 0.0 22.3446 9.38452 -0.0442887 -0.203279 0.0\n ⋅ ⋅ ⋅ ⋅ 0.0 27.5348 11.1618 -0.0369428 -0.228469\n ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 32.7255 12.932 -0.0294519\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 37.916 14.6983\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 43.1061\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"A faster method now exists via the GramMatrix architecture and its associated displacement equation. Given the modified orthogonal polynomial moments implied by the normalized Jacobi series for u(x), we pad this vector to the necessary size and construct the GramMatrix with these moments, the multiplication operator, and the constant tildeP_0^(alphabeta)(x):","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"μ = PaddedVector(u.coefficients, 2n+1)\nx = Fun(x->x, NormalizedJacobi(β, α))\nXP2 = SymTridiagonal(Symmetric(Multiplication(x, space(x))[1:2n+1, 1:2n+1]))\np0 = Fun(NormalizedJacobi(β, α), [1])(0)\nG = GramMatrix(μ, XP2, p0)\nview(G, 1:7, 1:7)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"7×7 view(::GramMatrix{Float64, LinearAlgebra.Symmetric{Float64, BandedMatrices.BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}, LinearAlgebra.SymTridiagonal{Float64, Vector{Float64}}}, 1:7, 1:7) with eltype Float64:\n 6.23087 0.250052 -0.116126 0.00655593 -0.00105379 0.00017771 -3.63458e-5\n 0.250052 6.16778 0.20056 -0.0956742 0.00537811 -0.000867428 0.00014667\n -0.116126 0.20056 6.21001 0.195291 -0.092858 0.00516771 -0.000829459\n 0.00655593 -0.0956742 0.195291 6.21487 0.194013 -0.091981 0.00510563\n -0.00105379 0.00537811 -0.092858 0.194013 6.21641 0.193488 -0.0915835\n 0.00017771 -0.000867428 0.00516771 -0.091981 0.193488 6.21711 0.193216\n -3.63458e-5 0.00014667 -0.000829459 0.00510563 -0.0915835 0.193216 6.21749","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"And compute its cholesky factorization. The upper-triangular Cholesky factor represents the connection between original Jacobi and semi-classical Jacobi as bf P^(alphabeta)(x) = bf Q(x) R.","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"R = cholesky(G).U\nUpperTriangular(view(R, 1:7, 1:7))","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"7×7 LinearAlgebra.UpperTriangular{Float64, SubArray{Float64, 2, LinearAlgebra.UpperTriangular{Float64, LinearAlgebra.Adjoint{Float64, BandedMatrices.BandedMatrix{Float64, Matrix{Float64}, Base.OneTo{Int64}}}}, Tuple{UnitRange{Int64}, UnitRange{Int64}}, false}}:\n 2.49617 0.100174 -0.0465217 0.0026264 -0.000422164 7.1193e-5 -1.45606e-5\n ⋅ 2.48148 0.0827006 -0.0386613 0.00218434 -0.000352435 5.96937e-5\n ⋅ ⋅ 2.49018 0.0797576 -0.0373701 0.00208827 -0.000335346\n ⋅ ⋅ ⋅ 2.49139 0.079104 -0.036992 0.00206099\n ⋅ ⋅ ⋅ ⋅ 2.49174 0.0788577 -0.0368254\n ⋅ ⋅ ⋅ ⋅ ⋅ 2.49189 0.0787344\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 2.49197","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"Every else works almost as before, including evaluation on a Chebyshev grid:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"q = k -> lmul!(P1, ldiv!(R, [zeros(k); 1.0; zeros(n-k)]))\nqvals = k -> ichebyshevtransform(q(k))","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"#17 (generic function with 1 method)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"Computation of the modified Jacobi matrix:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"XQ1 = FastTransforms.modified_jacobi_matrix(R, XP)\nnorm(XQ-XQ1)/norm(XQ)","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"2.4194977316379476e-16","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"Plotting:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"x = chebyshevpoints(Float64, n+1, Val(1))\np = plot(x, qvals(0); linewidth=2.0, legend = false, xlim=(-1,1), xlabel=L\"x\",\n ylabel=L\"Q_n(x)\", title=\"Semi-classical Jacobi Polynomials and Their Roots\",\n extra_plot_kwargs = KW(:include_mathjax => \"cdn\"))\nfor k in 1:10\n λ = eigvals(SymTridiagonal(XQ1.dv[1:k], XQ1.ev[1:k-1]))\n plot!(x, qvals(k); linewidth=2.0, color=palette(:default)[k+1])\n scatter!(λ, zero(λ); markersize=2.5, color=palette(:default)[k+1])\nend\np\nsavefig(joinpath(GENFIGS, \"semiclassical1.html\"))","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"\"/home/runner/work/FastTransforms.jl/FastTransforms.jl/docs/src/generated/semiclassical1.html\"","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"And banded differentiation:","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"μ′ = PaddedVector(v.coefficients, 2n+1)\nx′ = Fun(x->x, NormalizedJacobi(β+1, α+1))\nXP′ = SymTridiagonal(Symmetric(Multiplication(x′, space(x′))[1:2n+1, 1:2n+1]))\np0′ = Fun(NormalizedJacobi(β+1, α+1), [1])(0)\nG′ = GramMatrix(μ′, XP′, p0′)\nR′ = cholesky(G′).U\nDP = UpperTriangular(diagm(1=>[sqrt(n*(n+α+β+1)) for n in 1:n])) # The classical differentiation matrix representing 𝒟 P^{(α,β)}(x) = P^{(α+1,β+1)}(x) D_P.\nDQ = UpperTriangular(threshold!(R′*(DP*(R\\I)), 100eps())) # The semi-classical differentiation matrix representing 𝒟 Q(x) = Q̂(x) D_Q.\nUpperTriangular(DQ[1:9, 1:9])","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"9×9 LinearAlgebra.UpperTriangular{Float64, Matrix{Float64}}:\n 0.0 7.02067 3.74167 -0.0809111 -0.113147 0.0 0.0 0.0 0.0\n ⋅ 0.0 12.0138 5.7562 -0.0612112 -0.149381 0.0 0.0 0.0\n ⋅ ⋅ 0.0 17.1606 7.59222 -0.0517326 -0.177356 0.0 0.0\n ⋅ ⋅ ⋅ 0.0 22.3446 9.38452 -0.0442887 -0.203279 0.0\n ⋅ ⋅ ⋅ ⋅ 0.0 27.5348 11.1618 -0.0369428 -0.228469\n ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 32.7255 12.932 -0.0294519\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 37.916 14.6983\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0 43.1061\n ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ ⋅ 0.0","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"","category":"page"},{"location":"generated/semiclassical/#","page":"Semi-classical Jacobi polynomials","title":"Semi-classical Jacobi polynomials","text":"This page was generated using Literate.jl.","category":"page"},{"location":"#FastTransforms.jl-Documentation-1","page":"Home","title":"FastTransforms.jl Documentation","text":"","category":"section"},{"location":"#Introduction-1","page":"Home","title":"Introduction","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.jl allows the user to conveniently work with orthogonal polynomials with degrees well into the millions.","category":"page"},{"location":"#","page":"Home","title":"Home","text":"This package provides a Julia wrapper for the C library of the same name. Additionally, all three types of nonuniform fast Fourier transforms available, as well as the Padua transform.","category":"page"},{"location":"#Fast-orthogonal-polynomial-transforms-1","page":"Home","title":"Fast orthogonal polynomial transforms","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"For this documentation, please see the documentation for FastTransforms. Most transforms have separate forward and inverse plans. In some instances, however, the inverse is in the sense of least-squares, and therefore only the forward transform is planned.","category":"page"},{"location":"#Fast-Cholesky-factorization-of-the-Gram-matrix-1","page":"Home","title":"Fast Cholesky factorization of the Gram matrix","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"GramMatrix","category":"page"},{"location":"#FastTransforms.GramMatrix","page":"Home","title":"FastTransforms.GramMatrix","text":"GramMatrix(W::AbstractMatrix, X::AbstractMatrix)\n\nConstruct a symmetric positive-definite Gram matrix with data stored in W. Given a family of orthogonal polynomials bf P(x) = p_0(x) p_1(x)ldots and a continuous inner product langle f grangle, the Gram matrix is defined by:\n\nW_ij = langle p_i-1 p_j-1rangle\n\nMoreover, given X, the transposed Jacobi matrix that satisfies x bf P(x) = bf P(x) X, the Gram matrix satisfies the skew-symmetric rank-2 displacement equation (X = X_1n 1n):\n\nX^top W - WX = GJG^top\n\nwhere J = beginpmatrix 0 1 -1 0endpmatrix and where:\n\nG_ 1 = e_nquadrm andquad G_ 2 = W_n-1 X_n-1 n - X^top W_ n\n\nFast (O(n^2)) Cholesky factorization of the Gram matrix returns the connection coefficients between bf P(x) and the polynomials bf Q(x) orthogonal in the modified inner product, bf P(x) = bf Q(x) R.\n\n\n\n\n\n","category":"type"},{"location":"#","page":"Home","title":"Home","text":"ChebyshevGramMatrix","category":"page"},{"location":"#FastTransforms.ChebyshevGramMatrix","page":"Home","title":"FastTransforms.ChebyshevGramMatrix","text":"ChebyshevGramMatrix(μ::AbstractVector)\n\nConstruct a Chebyshev–Gram matrix of size (length(μ)+1)÷2 with entries:\n\nW_ij = fracmu_i-j+1 +mu_i+j-12\n\nDue to the linearization of a product of two first-kind Chebyshev polynomials, the Chebyshev–Gram matrix can be constructed from modified Chebyshev moments:\n\nmu_n = langle T_n-1 1rangle\n\nSpecialized construction and Cholesky factorization is given for this type.\n\nSee also GramMatrix for the general case.\n\n\n\n\n\n","category":"type"},{"location":"#Nonuniform-fast-Fourier-transforms-1","page":"Home","title":"Nonuniform fast Fourier transforms","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"nufft1","category":"page"},{"location":"#FastTransforms.nufft1","page":"Home","title":"FastTransforms.nufft1","text":"Computes a nonuniform fast Fourier transform of type I:\n\nf_j = sum_k=0^N-1 c_k e^-2pirm i fracjN omega_kquadrm forquad 0 le j le N-1\n\n\n\n\n\nComputes a 2D nonuniform fast Fourier transform of type I-I:\n\nF_ij = sum_k=0^M-1sum_ell=0^N-1 C_kell e^-2pirm i (fraciM omega_k + fracjN pi_ell)quadrm forquad 0 le i le M-1quad 0 le j le N-1\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"nufft2","category":"page"},{"location":"#FastTransforms.nufft2","page":"Home","title":"FastTransforms.nufft2","text":"Computes a nonuniform fast Fourier transform of type II:\n\nf_j = sum_k=0^N-1 c_k e^-2pirm i x_j kquadrm forquad 0 le j le N-1\n\n\n\n\n\nComputes a 2D nonuniform fast Fourier transform of type II-II:\n\nF_ij = sum_k=0^M-1sum_ell=0^N-1 C_kell e^-2pirm i (x_i k + y_j ell)quadrm forquad 0 le i le M-1quad 0 le j le N-1\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"nufft3","category":"page"},{"location":"#FastTransforms.nufft3","page":"Home","title":"FastTransforms.nufft3","text":"Computes a nonuniform fast Fourier transform of type III:\n\nf_j = sum_k=0^N-1 c_k e^-2pirm i x_j omega_kquadrm forquad 0 le j le N-1\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"inufft1","category":"page"},{"location":"#FastTransforms.inufft1","page":"Home","title":"FastTransforms.inufft1","text":"Computes an inverse nonuniform fast Fourier transform of type I.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"inufft2","category":"page"},{"location":"#FastTransforms.inufft2","page":"Home","title":"FastTransforms.inufft2","text":"Computes an inverse nonuniform fast Fourier transform of type II.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"paduatransform","category":"page"},{"location":"#FastTransforms.paduatransform","page":"Home","title":"FastTransforms.paduatransform","text":"Padua Transform maps from interpolant values at the Padua points to the 2D Chebyshev coefficients.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"ipaduatransform","category":"page"},{"location":"#FastTransforms.ipaduatransform","page":"Home","title":"FastTransforms.ipaduatransform","text":"Inverse Padua Transform maps the 2D Chebyshev coefficients to the values of the interpolation polynomial at the Padua points.\n\n\n\n\n\n","category":"function"},{"location":"#Other-Exported-Methods-1","page":"Home","title":"Other Exported Methods","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"gaunt","category":"page"},{"location":"#FastTransforms.gaunt","page":"Home","title":"FastTransforms.gaunt","text":"Calculates the Gaunt coefficients, defined by:\n\na(mnmunuq) = frac2(n+nu-2q)+12 frac(n+nu-2q-m-mu)(n+nu-2q+m+mu) int_-1^+1 P_n^m(x) P_nu^mu(x) P_n+nu-2q^m+mu(x) rmdx\n\nor defined by:\n\nP_n^m(x) P_nu^mu(x) = sum_q=0^q_rm max a(mnmunuq) P_n+nu-2q^m+mu(x)\n\nThis is a Julia implementation of the stable recurrence described in:\n\nY.-l. Xu, Fast evaluation of Gaunt coefficients: recursive approach, J. Comp. Appl. Math., 85:53–65, 1997.\n\n\n\n\n\nCalculates the Gaunt coefficients in 64-bit floating-point arithmetic.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"paduapoints","category":"page"},{"location":"#FastTransforms.paduapoints","page":"Home","title":"FastTransforms.paduapoints","text":"Returns coordinates of the (n+1)(n+2)2 Padua points.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"sphevaluate","category":"page"},{"location":"#FastTransforms.sphevaluate","page":"Home","title":"FastTransforms.sphevaluate","text":"Pointwise evaluation of real orthonormal spherical harmonic:\n\nY_ell^m(thetavarphi) = (-1)^msqrt(ell+frac12)frac(ell-m)(ell+m) P_ell^m(costheta) sqrtfrac2-delta_m02pi leftbeginarrayccc cos mvarphi rm for m ge 0 sin(-mvarphi) rm for m 0endarrayright\n\n\n\n\n\n","category":"function"},{"location":"#Internal-Methods-1","page":"Home","title":"Internal Methods","text":"","category":"section"},{"location":"#Miscellaneous-Special-Functions-1","page":"Home","title":"Miscellaneous Special Functions","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.half","category":"page"},{"location":"#FastTransforms.half","page":"Home","title":"FastTransforms.half","text":"Compute a typed 0.5.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.two","category":"page"},{"location":"#FastTransforms.two","page":"Home","title":"FastTransforms.two","text":"Compute a typed 2.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.δ","category":"page"},{"location":"#FastTransforms.δ","page":"Home","title":"FastTransforms.δ","text":"The Kronecker delta function:\n\ndelta_kj = leftbeginarrayccc 1 rm for k = j 0 rm for k ne jendarrayright\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.Λ","category":"page"},{"location":"#FastTransforms.Λ","page":"Home","title":"FastTransforms.Λ","text":"The Lambda function Lambda(z) = fracGamma(z+frac12)Gamma(z+1) for the ratio of gamma functions.\n\n\n\n\n\nFor 64-bit floating-point arithmetic, the Lambda function uses the asymptotic series for tau in Appendix B of\n\nI. Bogaert and B. Michiels and J. Fostier, 𝒪(1) computation of Legendre polynomials and Gauss–Legendre nodes and weights for parallel computing, SIAM J. Sci. Comput., 34:C83–C101, 2012.\n\n\n\n\n\nThe Lambda function Lambda(zλ₁λ₂) = fracGamma(z+lambda_1)Γ(z+lambda_2) for the ratio of gamma functions.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.lambertw","category":"page"},{"location":"#FastTransforms.lambertw","page":"Home","title":"FastTransforms.lambertw","text":"The principal branch of the Lambert-W function, defined by x = W_0(x) e^W_0(x), computed using Halley's method for x in -e^-1infty).\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.pochhammer","category":"page"},{"location":"#FastTransforms.pochhammer","page":"Home","title":"FastTransforms.pochhammer","text":"Pochhammer symbol (x)_n = fracGamma(x+n)Gamma(x) for the rising factorial.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.stirlingseries","category":"page"},{"location":"#FastTransforms.stirlingseries","page":"Home","title":"FastTransforms.stirlingseries","text":"Stirling's asymptotic series for Gamma(z).\n\n\n\n\n\n","category":"function"},{"location":"#Modified-Chebyshev-Moment-Based-Quadrature-1","page":"Home","title":"Modified Chebyshev Moment-Based Quadrature","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.clenshawcurtisnodes","category":"page"},{"location":"#FastTransforms.clenshawcurtisnodes","page":"Home","title":"FastTransforms.clenshawcurtisnodes","text":"Compute nodes of the Clenshaw—Curtis quadrature rule.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.clenshawcurtisweights","category":"page"},{"location":"#FastTransforms.clenshawcurtisweights","page":"Home","title":"FastTransforms.clenshawcurtisweights","text":"Compute weights of the Clenshaw—Curtis quadrature rule with modified Chebyshev moments of the first kind mu.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.fejernodes1","category":"page"},{"location":"#FastTransforms.fejernodes1","page":"Home","title":"FastTransforms.fejernodes1","text":"Compute nodes of Fejer's first quadrature rule.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.fejerweights1","category":"page"},{"location":"#FastTransforms.fejerweights1","page":"Home","title":"FastTransforms.fejerweights1","text":"Compute weights of Fejer's first quadrature rule with modified Chebyshev moments of the first kind mu.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.fejernodes2","category":"page"},{"location":"#FastTransforms.fejernodes2","page":"Home","title":"FastTransforms.fejernodes2","text":"Compute nodes of Fejer's second quadrature rule.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.fejerweights2","category":"page"},{"location":"#FastTransforms.fejerweights2","page":"Home","title":"FastTransforms.fejerweights2","text":"Compute weights of Fejer's second quadrature rule with modified Chebyshev moments of the second kind mu.\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.chebyshevmoments1","category":"page"},{"location":"#FastTransforms.chebyshevmoments1","page":"Home","title":"FastTransforms.chebyshevmoments1","text":"Modified Chebyshev moments of the first kind:\n\n int_-1^+1 T_n(x) rmdx\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.chebyshevjacobimoments1","category":"page"},{"location":"#FastTransforms.chebyshevjacobimoments1","page":"Home","title":"FastTransforms.chebyshevjacobimoments1","text":"Modified Chebyshev moments of the first kind with respect to the Jacobi weight:\n\n int_-1^+1 T_n(x) (1-x)^alpha(1+x)^betarmdx\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.chebyshevlogmoments1","category":"page"},{"location":"#FastTransforms.chebyshevlogmoments1","page":"Home","title":"FastTransforms.chebyshevlogmoments1","text":"Modified Chebyshev moments of the first kind with respect to the logarithmic weight:\n\n int_-1^+1 T_n(x) logleft(frac1-x2right)rmdx\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.chebyshevmoments2","category":"page"},{"location":"#FastTransforms.chebyshevmoments2","page":"Home","title":"FastTransforms.chebyshevmoments2","text":"Modified Chebyshev moments of the second kind:\n\n int_-1^+1 U_n(x) rmdx\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.chebyshevjacobimoments2","category":"page"},{"location":"#FastTransforms.chebyshevjacobimoments2","page":"Home","title":"FastTransforms.chebyshevjacobimoments2","text":"Modified Chebyshev moments of the second kind with respect to the Jacobi weight:\n\n int_-1^+1 U_n(x) (1-x)^alpha(1+x)^betarmdx\n\n\n\n\n\n","category":"function"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.chebyshevlogmoments2","category":"page"},{"location":"#FastTransforms.chebyshevlogmoments2","page":"Home","title":"FastTransforms.chebyshevlogmoments2","text":"Modified Chebyshev moments of the second kind with respect to the logarithmic weight:\n\n int_-1^+1 U_n(x) logleft(frac1-x2right)rmdx\n\n\n\n\n\n","category":"function"},{"location":"#Elliptic-1","page":"Home","title":"Elliptic","text":"","category":"section"},{"location":"#","page":"Home","title":"Home","text":"FastTransforms.Elliptic","category":"page"},{"location":"#FastTransforms.Elliptic","page":"Home","title":"FastTransforms.Elliptic","text":"FastTransforms submodule for the computation of some elliptic integrals and functions.\n\nComplete elliptic integrals of the first and second kinds:\n\nK(k) = int_0^fracpi2 fracrm dthetasqrt1-k^2sin^2thetaquadrm and\n\nE(k) = int_0^fracpi2 sqrt1-k^2sin^2theta rmdtheta\n\nJacobian elliptic functions:\n\nx = int_0^operatornamesn(xk) fracrm dtsqrt(1-t^2)(1-k^2t^2)\n\nx = int_operatornamecn(xk)^1 fracrm dtsqrt(1-t^2)1-k^2(1-t^2)\n\nx = int_operatornamedn(xk)^1 fracrm dtsqrt(1-t^2)(t^2-1+k^2)\n\nand the remaining nine are defined by:\n\noperatornamepq(xk) = fracoperatornamepr(xk)operatornameqr(xk) = frac1operatornameqp(xk)\n\n\n\n\n\n","category":"module"}] +} diff --git a/v0.16.8/siteinfo.js b/v0.16.8/siteinfo.js new file mode 100644 index 00000000..9b4c7641 --- /dev/null +++ b/v0.16.8/siteinfo.js @@ -0,0 +1 @@ +var DOCUMENTER_CURRENT_VERSION = "v0.16.8";