From ba2367048309ea845f54300aa7aa67247573dbe5 Mon Sep 17 00:00:00 2001 From: timkpaine Date: Sun, 21 Jul 2024 21:47:47 +0000 Subject: [PATCH] deploy: d305a3b4efa7a21a8d545ff32f92bd5a0d3d31a3 --- .buildinfo | 4 + .doctrees/.github/CODE_OF_CONDUCT.doctree | Bin 0 -> 15413 bytes .../.github/ISSUE_TEMPLATE/bug_report.doctree | Bin 0 -> 8062 bytes .../ISSUE_TEMPLATE/feature_request.doctree | Bin 0 -> 4770 bytes .doctrees/README.doctree | Bin 0 -> 9379 bytes .doctrees/autoapi/index.doctree | Bin 0 -> 4140 bytes .doctrees/autoapi/test_all/index.doctree | Bin 0 -> 7879 bytes .doctrees/autoapi/yardang/build/index.doctree | Bin 0 -> 25372 bytes .doctrees/autoapi/yardang/cli/index.doctree | Bin 0 -> 12124 bytes .doctrees/autoapi/yardang/index.doctree | Bin 0 -> 7061 bytes .doctrees/autoapi/yardang/utils/index.doctree | Bin 0 -> 7255 bytes .doctrees/docs/src/configuration.doctree | Bin 0 -> 16511 bytes .doctrees/docs/src/home.doctree | Bin 0 -> 25913 bytes .doctrees/docs/src/installation.doctree | Bin 0 -> 4459 bytes .doctrees/docs/src/overview.doctree | Bin 0 -> 11127 bytes .doctrees/environment.pickle | Bin 0 -> 278927 bytes .doctrees/index.doctree | Bin 0 -> 26344 bytes .nojekyll | 0 CNAME | 1 + README.html | 341 +++++++ _modules/index.html | 299 ++++++ _modules/test_all.html | 312 ++++++ _modules/yardang.html | 298 ++++++ _modules/yardang/build.html | 436 +++++++++ _modules/yardang/cli.html | 355 +++++++ _modules/yardang/utils.html | 321 ++++++ _sources/.github/CODE_OF_CONDUCT.md.txt | 76 ++ .../.github/ISSUE_TEMPLATE/bug_report.md.txt | 38 + .../ISSUE_TEMPLATE/feature_request.md.txt | 20 + _sources/README.md.txt | 27 + _sources/autoapi/index.rst.txt | 12 + _sources/autoapi/test_all/index.rst.txt | 22 + _sources/autoapi/yardang/build/index.rst.txt | 57 ++ _sources/autoapi/yardang/cli/index.rst.txt | 25 + _sources/autoapi/yardang/index.rst.txt | 32 + _sources/autoapi/yardang/utils/index.rst.txt | 19 + _sources/docs/src/configuration.md.txt | 108 ++ _sources/docs/src/home.md.txt | 53 + _sources/docs/src/installation.md.txt | 17 + _sources/docs/src/overview.md.txt | 55 ++ _sources/index.md.txt | 70 ++ _sphinx_design_static/design-tabs.js | 101 ++ _sphinx_design_static/sphinx-design.min.css | 1 + _static/autodoc_pydantic.css | 11 + _static/basic.css | 925 ++++++++++++++++++ _static/check-solid.svg | 4 + _static/clipboard.min.js | 7 + _static/copy-button.svg | 5 + _static/copybutton.css | 94 ++ _static/copybutton.js | 248 +++++ _static/copybutton_funcs.js | 73 ++ _static/debug.css | 69 ++ _static/design-tabs.js | 101 ++ _static/doctools.js | 156 +++ _static/documentation_options.js | 13 + _static/file.png | Bin 0 -> 286 bytes _static/graphviz.css | 19 + _static/language_data.js | 199 ++++ _static/minus.png | Bin 0 -> 90 bytes _static/plus.png | Bin 0 -> 90 bytes _static/pygments.css | 249 +++++ _static/scripts/furo-extensions.js | 0 _static/scripts/furo.js | 3 + _static/scripts/furo.js.LICENSE.txt | 7 + _static/scripts/furo.js.map | 1 + _static/searchtools.js | 574 +++++++++++ _static/skeleton.css | 296 ++++++ _static/sphinx-design.min.css | 1 + _static/sphinx_highlight.js | 154 +++ _static/styles/custom.css | 13 + _static/styles/furo-extensions.css | 2 + _static/styles/furo-extensions.css.map | 1 + _static/styles/furo.css | 2 + _static/styles/furo.css.map | 1 + autoapi/index.html | 339 +++++++ autoapi/test_all/index.html | 365 +++++++ autoapi/yardang/build/index.html | 399 ++++++++ autoapi/yardang/cli/index.html | 382 ++++++++ autoapi/yardang/index.html | 375 +++++++ autoapi/yardang/utils/index.html | 364 +++++++ docs/src/configuration.html | 460 +++++++++ docs/src/home.html | 352 +++++++ docs/src/installation.html | 355 +++++++ docs/src/overview.html | 396 ++++++++ genindex.html | 435 ++++++++ index.html | 362 +++++++ objects.inv | Bin 0 -> 673 bytes py-modindex.html | 342 +++++++ search.html | 308 ++++++ searchindex.js | 1 + 90 files changed, 11563 insertions(+) create mode 100644 .buildinfo create mode 100644 .doctrees/.github/CODE_OF_CONDUCT.doctree create mode 100644 .doctrees/.github/ISSUE_TEMPLATE/bug_report.doctree create mode 100644 .doctrees/.github/ISSUE_TEMPLATE/feature_request.doctree create mode 100644 .doctrees/README.doctree create mode 100644 .doctrees/autoapi/index.doctree create mode 100644 .doctrees/autoapi/test_all/index.doctree create mode 100644 .doctrees/autoapi/yardang/build/index.doctree create mode 100644 .doctrees/autoapi/yardang/cli/index.doctree create mode 100644 .doctrees/autoapi/yardang/index.doctree create mode 100644 .doctrees/autoapi/yardang/utils/index.doctree create mode 100644 .doctrees/docs/src/configuration.doctree create mode 100644 .doctrees/docs/src/home.doctree create mode 100644 .doctrees/docs/src/installation.doctree create mode 100644 .doctrees/docs/src/overview.doctree create mode 100644 .doctrees/environment.pickle create mode 100644 .doctrees/index.doctree create mode 100644 .nojekyll create mode 100644 CNAME create mode 100644 README.html create mode 100644 _modules/index.html create mode 100644 _modules/test_all.html create mode 100644 _modules/yardang.html create mode 100644 _modules/yardang/build.html create mode 100644 _modules/yardang/cli.html create mode 100644 _modules/yardang/utils.html create mode 100644 _sources/.github/CODE_OF_CONDUCT.md.txt create mode 100644 _sources/.github/ISSUE_TEMPLATE/bug_report.md.txt create mode 100644 _sources/.github/ISSUE_TEMPLATE/feature_request.md.txt create mode 100644 _sources/README.md.txt create mode 100644 _sources/autoapi/index.rst.txt create mode 100644 _sources/autoapi/test_all/index.rst.txt create mode 100644 _sources/autoapi/yardang/build/index.rst.txt create mode 100644 _sources/autoapi/yardang/cli/index.rst.txt create mode 100644 _sources/autoapi/yardang/index.rst.txt create mode 100644 _sources/autoapi/yardang/utils/index.rst.txt create mode 100644 _sources/docs/src/configuration.md.txt create mode 100644 _sources/docs/src/home.md.txt create mode 100644 _sources/docs/src/installation.md.txt create mode 100644 _sources/docs/src/overview.md.txt create mode 100644 _sources/index.md.txt create mode 100644 _sphinx_design_static/design-tabs.js create mode 100644 _sphinx_design_static/sphinx-design.min.css create mode 100644 _static/autodoc_pydantic.css create mode 100644 _static/basic.css create mode 100644 _static/check-solid.svg create mode 100644 _static/clipboard.min.js create mode 100644 _static/copy-button.svg create mode 100644 _static/copybutton.css create mode 100644 _static/copybutton.js create mode 100644 _static/copybutton_funcs.js create mode 100644 _static/debug.css create mode 100644 _static/design-tabs.js create mode 100644 _static/doctools.js create mode 100644 _static/documentation_options.js create mode 100644 _static/file.png create mode 100644 _static/graphviz.css create mode 100644 _static/language_data.js create mode 100644 _static/minus.png create mode 100644 _static/plus.png create mode 100644 _static/pygments.css create mode 100644 _static/scripts/furo-extensions.js create mode 100644 _static/scripts/furo.js create mode 100644 _static/scripts/furo.js.LICENSE.txt create mode 100644 _static/scripts/furo.js.map create mode 100644 _static/searchtools.js create mode 100644 _static/skeleton.css create mode 100644 _static/sphinx-design.min.css create mode 100644 _static/sphinx_highlight.js create mode 100644 _static/styles/custom.css create mode 100644 _static/styles/furo-extensions.css create mode 100644 _static/styles/furo-extensions.css.map create mode 100644 _static/styles/furo.css create mode 100644 _static/styles/furo.css.map create mode 100644 autoapi/index.html create mode 100644 autoapi/test_all/index.html create mode 100644 autoapi/yardang/build/index.html create mode 100644 autoapi/yardang/cli/index.html create mode 100644 autoapi/yardang/index.html create mode 100644 autoapi/yardang/utils/index.html create mode 100644 docs/src/configuration.html create mode 100644 docs/src/home.html create mode 100644 docs/src/installation.html create mode 100644 docs/src/overview.html create mode 100644 genindex.html create mode 100644 index.html create mode 100644 objects.inv create mode 100644 py-modindex.html create mode 100644 search.html create mode 100644 searchindex.js diff --git a/.buildinfo b/.buildinfo new file mode 100644 index 0000000..b9b06d1 --- /dev/null +++ b/.buildinfo @@ -0,0 +1,4 @@ +# Sphinx build info version 1 +# This file hashes the configuration used when building these files. When it is not found, a full rebuild will be done. +config: 6fe4a4b755fe752ce674aa2d78aaa805 +tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/.github/CODE_OF_CONDUCT.doctree b/.doctrees/.github/CODE_OF_CONDUCT.doctree new file mode 100644 index 0000000000000000000000000000000000000000..66f042076c9445024c01470d19e005206dc5e2bb GIT binary patch literal 15413 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%0AgT539(&te^TpS%ZEFYkTq> zuK3eKI=P@z8ia$F=vafU0@#_84jAAGigOu6LA5eGAB5TGs;gU@^6YO`Q{!7b@y`#Mc*1xGOr6UsW4xDd4e4FtKH`Uehv_Dg`ZHAI zv>^SeyYh1BVdJNG*hq!t_gljc&~*3^AO5%f-Qh2h_8k74K3+wTGJKgn{)9gMm_GiK zKK_F~?o+RK)GUiMS~f}`B2cNu+w;G@r-s^7!|bUc_Eh&h)palTzeJ7Iychgke@#v5 zf2W+0uDFyl(pg+NBV}pTj6?E0bGh8yh>ERc+>R@~1Mppz5Z+epN)>FD5J;#}Y}~LH z2ld`og;!gJb?e2k5f`gjRi`Usi_@% literal 0 HcmV?d00001 diff --git a/.doctrees/.github/ISSUE_TEMPLATE/bug_report.doctree b/.doctrees/.github/ISSUE_TEMPLATE/bug_report.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6f804a1f5c745f1f43f974a2614dcd208dff9367 GIT binary patch literal 8062 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 DDI|fj literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/index.doctree b/.doctrees/autoapi/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..4328a31d83dc85c403f2516675ed510cacdd6eaf GIT binary patch literal 4140 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 PX=iQ9#aY_YXm0C&52Qm# literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/yardang/build/index.doctree b/.doctrees/autoapi/yardang/build/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..84141466f3c9167ef8d7204eed6a663bf9cfc5f2 GIT binary patch literal 25372 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 W*$!J|?CVr&vPCSd2rZuRE&dPqb3Nez literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/yardang/cli/index.doctree b/.doctrees/autoapi/yardang/cli/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..c818303611e689ef41e00932716430a630ca41fd GIT binary patch literal 12124 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 H-SYnd#0|08 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/yardang/index.doctree b/.doctrees/autoapi/yardang/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..7c49494408ffffa8964b79c6c1650442a76caa62 GIT binary patch literal 7061 zcmb_h>x(5v6`$9A&di;eeGJO%Bok!aS+a9y6BJ~!SqS-}Y@FyCMI@oqx4Z7GzSFn6 z?XKRL%Vt>(Y{*D~NLuh?2%ExpnH) zsZ*!U`JGee{-E~LA8pL2AGs0*-0_aOrfqw^&7wp$ZQqJV%oE9b$@L#550Y)!3eCgF zk3)+kat0h0cU(JUUh+mFJH##=H|nPA8xgaF<9qpXUgLG%cq7^7Em;$ea9L?eHpXUX zo8BNH7H}-Q#*S#~V&YMvwWtRs_7n+UlPx1xlF!R}s@uL?a2<~&`*F{dZBvNQ>BRzP zqBG1pc0~F%EZ2-85b?R@nIrwFX~#h^=$Y0*$oj++%Z4xqG?nlbzQLFH6+X{5P6zv+zkXP$2^k9=LulIhJ+q*ft{UST3g` zazfLKM?DrYJGnC>+bWAeBUe(>?i_|@5U?;Y z%ic!oU!A-!cnr%$$aYjXh?)6ng_?RU$s!%n_{s17EcbhnnPPdb<{11q+ z_xzXlZjmcS@n~d*~WO_usCEcF{)#zz_YoD<>%8JU3Zl?70a z>G}3}N>S)JANq$=bd{DUXii+xLeen@hz?#_C~xcq<2}DO+}ZrD3vIQXnbf!)SA7Vww>VwSwgOaIC@hxOT+8Du^Z^_R13N&KIH=}*}2&y}$FTV;G2Jn20* zhU?h#G50$A0Dpu+e>hLl$6!J*pDsx*5Mm^#f^f!PgZo!ikvf5=aJS|9-asSMRD${t ztAAcyJ>inAqmjE81twLm%^+kE3-2-IA|GIFmJQxlh+3#TQ9zcGTdAxx%Qst1Zj@Qh zNN%g&K#ge**w)LwCxAYAg*82qJKFHuOQ9HOxBw92*8Cb zBA+f{%htBzZRt?WiqGq(MC3#XT2d>mLTBUx9v{+dgNCa1>=DCjvYA0eR?QZK!p0ACi=AZSZMg_VcHl)yxLl^a6fCLn1Yi!o3Q@za z;Saog_<-bY49B^6bs?L$kQv!h8duaE-X~Ui6s=F5v(WV?xv-OUZIZ59(I#zio{m30 zL&p_uRnPNc#=ejqq<(V$OGE`F(ccn|1-O8+wPsLF_Jo6}W_He2+9sWXV z`vLwbD_&9>;>bo2dzOf&)SP`W-}=SU*1tbz>tK58-<7u>{t}}ssN^Z<`}oXFh964Gt`}x5%tnVVBSL{+)$B9rjqlUCle|%0ER~e^9Cm1-D}Xm<_R%msi~C{eM$aqM z%E@}wNZ*s$qZn^+Q75SY6JqMa7I7!1p(ojFJHepUd zL*TP=M-4-khWE#}7m583$tlETJ5)33wyxF|Y*U!k)24;jaA^*wZNMU`_8KnJP+>uN z?D;$T$$Kmto}Yc}WaJ%P9Usf3bTS*Sfg?R&lryb(en!jqND}QAF(Hsfl4Ck#m>LTQ zRat7Ydb@HJ*g-im-vfb|HbnBdt!yvMo$=H};w#){o8KzBODq?eccP{w&Fc_Th>gb0 z{D!= z8AZ3ZWHU7+x^-)L`>h`;SF=&Rf5&uVv>P(im32QBK`fGezJlU;z|gWX1%em@_zsJN zISMdX)EgSuMN5I zmBn(E&HyiqI85ZK8h6=6J2gh!z~Y46b7&*Uiy^c8&^FL>!Xp&hP!n-q))78^04FTs z*zi(d@lgU)>`?!}C`fV+7>#Nt9tB43d@!scIH+Jl&qP7LFIN;rxjtQgK?))k+rEKX z99*k-`S}qu$}5$ZSi-pHM2>dO6~lHS>RsR6EvrVqk zCv1X>pGp?o4N0?c<%?*Pmf*f^&vEaVf^~1q#A}|DM1CD^kQ_N|I| zq7>r4n29HdCzm~7Vb@`zul7Lb?{YD6u~`eRBSewvr!?gzd~#&u;h7≫UY!YBctQ zd1P>Bz+L>pe;4SDmB^(C{Uu?1KSo?fFw{jg)-wgSMr!IGB=8w@J#B>W7%Fgv zxBs!cY=P^*U}!S91}c7nSf%z_`XvOM)$MCQJC^gzyGLIR$fkx9#4lVC>CQoL2(-zl zqoBSRSc6hf=ZQuB12j~A5i~;zG(n^gNXX`_HY|PKD>%Q{2_m9 z_$qSW@D=*AMf6SliDirURhpzPEYyl){_t2aA1g-W&1Yyz$ywsJ(9)`>eUJ?6vp#;_ zq~*8rq?sj1eC-gS8cN=!H2gEtNtZAScn+)nEb5oH_-&;ie_Ls%QnV_!)C(q-%VqCU z$6ZDvM<+X&KvM`rGCpnBGKD-}QQ?iF9y+fRtd}apoVzu_*2;EOk}gchM?MGzC7{by zS?LVg=YTj1Up&B%(UL+_!i6W`&XHLgFQ@ePa2=15y9ifQg$R6Hdjtp78|FwiL0-(s Z%EuPd7CwA>K;JvHZ35#Iw{*eS{V&9aKxzO0 literal 0 HcmV?d00001 diff --git a/.doctrees/autoapi/yardang/utils/index.doctree b/.doctrees/autoapi/yardang/utils/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..752191e2a63bea6ad0a4ce42005431c064f3d625 GIT binary patch literal 7255 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 literal 0 HcmV?d00001 diff --git a/.doctrees/docs/src/home.doctree b/.doctrees/docs/src/home.doctree new file mode 100644 index 0000000000000000000000000000000000000000..550224a2c2c1f81c05e46d653e3f7617bdc27f71 GIT binary patch literal 25913 zcmeI5U5q5xRmXR|-r1em5AUqkV<(P7dF7AUjk~6*zuWQJvX>-|)?OROIL21gsp+oi zs^03ZPFMBJ4oaf%5h+&cB}yB_15Xekz8-)V5FjL^NFXF6BtU`(ka*+;i3fP)cWza6 zRrmCKtrtVA_IkRjZrywCx##}Rx#xb=>F=EWP`6L0|DuP2f#de?>Q=km_uF7~_N!nlrSwZd`T3a1cDdvC(luXSAue{NBc3H+1}dVKDT&5GsUr zk2*p-*x0p(ZL8n8`r-?2ucHOS);$&9*!29(jh^N9H)w9K;rSh3AM`sf(bgN`aAaTA zEHAuqHLXqCaoeGD^o*Ef~0w#y%j#M72^gbMPJx(%okT)*g#+}u8f^C zUmH8i(SvW>ccniTviu0L{O(xL94!qjpc{^z^TDPStyp0=bT>ypMM3?P+YW$rbf)E5 zK|mtcr~6hfzB=0;4YHd}t91uFsys_u{;+3-b*72 zIj5rK=0t0qQ=?5FvrIFs&d?e-d0l+#ffFa*fAalTMkuiMmCy=D!PnOBL7g@%rLBQt zcFXg3f{jg~sqgl@jZLfFvGriP^U~(f>bIO5qBqaj+erP!U=%pl?t7KjR%lcU`_=Nd zGvY~t?)n=Y=THl=5i=Vrxe{E~kQ~RyBdQpC&28EJz|I)M66t~C+FmeIo)IUSwP!!0#wr`?{_$!Bw_%Gf>1fa81$tM@p6Pw@9s{5^>lo*E6^aWwe2!Aiwg z_OVlqR$5lS?Y3o95j%47rLptV!N_^msXNziopsioYp7z``J5=Ab)^_Od-6K`u|Fbsc03_Y;J@uSF2GeJ-cArxLX-q#79g`qvXn`*qC?G)sF^IlG$YGGq;R zHCzv^W8*qlq1*3h?|((P^jhi>km~m{tG~0eqsLBvfgH-1+kHm8AjJ2$rrB2Ddb`iz zz=n?2bNiTSPxJg1pDn+?<#t9=jo;V&ZF}h0R$EtnCf5Iq=R(8s^0xm>!g<`WtI^~> zvq!%x?M>~`{)SV;^xKH(LSkuul!$3Hdg>@r$r(UZGOaLY0I$pwT*~|Xwt1hMp4R{0dy zhl4OBnSu~k6KfPQuds(XbK@*YCwEs_aY*|=PFkOnHYaIbws~pMl^C8)R!rPZA7`F9 zC3CX1H<>hs&d?uq9GS9z!Lz4UQdkZ7Jy{LGx7IM90d|x%0^PhiSufBHyLVM{Y`5dE zoM6VcYA$-?YS1qDOuJ~fmR%M?Ytv)-VcWHLUh(hVxN2yIW>)#1C5fSH6&$zSwy8#~ zQoQ)Wz{0M#Z(MzyTzai?)6n!m&u zi)NPfVueaym9#xi$sy0*d%dbxH2${hPK|sPX;MsBhL2*Uz~4JOf3H_Bn0nn02;x{|N5U8ukJdPNgj6~){hdSru?EYpZ=_@Z}S z)ZU(;* z5+>HVpN-p<%@3Y@dD9<-+Qb{vSg6n(e@AmeO;!_w)LUAOmg1~Aalau%a~`;J9M`G) z)tS=MBFQ&3^`1T*drw`dSM|>2IqYWLG|S#}H$~?sB9|3%Yqmm}SEUukV%x9$rr+M3 zE*~A(H_NJTRH;eVWcYYoHLm*%U+KURtxeW&W$Gkji>}s+m0z0qu?J>bhN-?<_|4YW zy5EsLkd1=Xee1~N`OA_y*WCwpSoaqt_geSce9bOutw*cKJ_v_)*mCT40j}_L zt!~+dp;Kl6pDceVt_2gtoLc?-oO))uG}gqmZY<&H-dvB)Bybo-t&M)>Ryh_S#t zum@IP%j-BbE_Y~6fw^`st9GsXh^lUmQ#&VVo=-b3Z3@8e{s%SOSJxHc_dVZg--GvB z#NorK+~aBDiHi5PUBF4T$RpX5M=WllW^9u@&rftrL-NmYM-QU3xAqbwU@PZMPWM_)gV6HWJ!N*X$NT-a1qR~&NYV6(#6apiFM4~%c6>5> zJM#|y8udP!cW{93{aHMQAFI&_kK}?jWlyrIBuBog>7jh?s2`85PeA@J75Qo3Wxe|) zQoFD6G2?O^Fno7!3#D}MUhDpaBJ5yaCi zb>A%O)7{tgs9~-*p0W@Ndb(8R&EG$7T+s4os<~6nO!VoAH}2-fySX0uVOhJs1pU;_ z?|zyi7Kt~0P{B-+pOFH`^~fKi&>oMxJBE?&hkVQ^KMAb2X-ejDu?VfIJghfNub|iAq;6DO1>L}rHp+D_8Y~Z&Yh2XfxMd81Qmvu5sb*DMHGKFQuD*OK85br@*WjjHtm{?r z)oCsaio35G>PeCzjWCMBbXE8?8zL5UW%5MiW>xft(a_@0gnlAvikTwgYLyF`N9V9w zZX&K?8Hp5yS5t|^q-&~WvejrciH$0?mn+i6#VQCfm`KE*aSc2)KnxYs%Ji90Et9`k zhr6mNmlTx*CMPO2tp=n>X6gYe@D%ey8)1lc)Jk>QA)i@0Xk}eG4bV`kE_q9GMR9;5 zgy>wMUsA|{0Z@x5Ndq}NFN$oXT(v|)Ou;%ISw{$;W}O(al1x~^O z%8Vu8qQOO(t`Q`dK&XsmQ>LjxO$vP&6^te2ig1YGtRPveBVdWKQYNvCsj5_qdIQT+ zkqxSHrE0OqhStWP0u}kESL)J3rJ`OI;-)DIDrief#ZXa{sj|*PT4lhCSrOh<<(O!= z#Y&YBdX-*Qyw>Rm?5N0xHeqSvwpC+j#3F!6Dphrvrr^R5$wCE_YgVNPFuho-qEW{D zf*Bbi5G~SyXqDSWLqKP;a3N|hmvkBxBNWhKDl-bRanGVHRnQ`Pit>-lWicr*2^(O6 z{L(srK>-*83ln1kRb{w=f*^se1=b)z&`47O0wo!0N`lyWNtZr^TT@}XE{iIH1ZkZB z1Sklru?11ADwf3*$cTWbxIiVWNguZisrI)L=uBkO0u&id$p{l*?t1%tuOHtX)xvgAcAm zZbBW1h`3~k6O8Z#t(7{I1(1g#I$*+w3@d5BPa{Q22vXjAoq@h?m9&zehvhCoQhX=( z+`adDgLRp@1*g*0Dx1M_nISHYVKRG9(}i)BchB+{Q@ZSw)1LLOA1(a2g&$XB_!WDy z@Z(VRg&&8lU-)rY@r56^@Z%PK9F7HZz=a!-AD3=nEgZJR!W)Yn3x|!#m#kHFC>( z+3ve!$?v{T?{3fC2#+_UpMw6+%-K7?FUL@B$BbvkP@a8_{ocMh)E)YhH!*E(m#{3_ z&>r}K8~VfKwKy7l-D8JAJ0(S4A}O3F`w(X2Sfn1BE#YtK^vVhpJW6a$i66P=_#=Khz=e z`N14Yvz4k>8d6bCciYExs6$wNbq=dPA%{Bt71rR+)UuW<1jb*({cg7dB5!4pT#v zjcp$D{v8{E?A27%w!dr`%1&#M3adQkkchfqx0LM{xrd?^4!d38{>nABz!J6n`Z>WaT* zql%W$L^)of&Ir^ssgXudiVd)Okq5G!&V_IYE3{j3*Q;D{hMY!~`H+o44zo~_LkA+Q zitK1}hJzh9=2tKw`;!$|kUeyD3`0uL2&qLj(?oP?lU@l}C>_McU4B(tiR+iA)D zZ_KJhh*ga9qI%Q2L9rwunWeV**eSX-Hdto|1 zI}`Ykw@mwvuZ%6KD8m8WkmA7Hl+p%28tFl4C97mUUTXu4P zcW+YAD->sP_1b%qypANvE4UpYx~wi@YVkE>Ch3%)TvO0I&MUfS)hoKvl9|^SE+f;+ z^Il_6FD#4YQ88_JFL>k$_)!AjZ9?>#emx!^mZP)KbBLi9X@@9<4QIpuRhjo)cP6e;5 zB;#JnqIykjB@@iiTJh`=<(D?|$oVrl{NOlpFw!t!M@7`Z@;I3brPWO(mBs*@wyF6J z5nB|-N|=gykhEfUV4EqX0u&}?QpMfBo=Ie5=UQ|{S&R5>@+RTAJH$ecLoJ^Uecm%4 z-#U?46p7c}=5{1dI2m1RjfN7axtT;sz8#%UQ&a$q+q`aOhZ6CSpyjJ5ejJ1xZSRM6 zAKSU~j^&Mr)tcI<(;E)T2UECPs}`-A<_LOP#Il}>1I5n zr9U(MV5V?%N!kz~D1yZk1YRO=U+@S4KO){R5|=n24-mUPdYF*&{;*99w*h#e8W*tK zj<9&Ldms{V+aT87a_^3vrRbtH3jJo56g?mV^o91QH)u|Ph+tKM3kHXM%M*eRsT8FK z(*0S|Ah1Vmze%KUa$U0TvWa6i^CcBZT48hBRl7Svi(o;4jB7L`;qpwXASl~;2}p-Z z#IYMdO_Hs-<$5%ZD9UScMJ2=|mjRr<5o&F^{2Za|C$~U!RkRG`^g962b9-($e*Mz3 z(Zzv1Xd;w2%(FD+yrjq|*c9c69!pIf$w5A3^f-D%aw-PM*-T^fOMrBHPC3Q$GL;u>&7~9>3-Gx4=MZ7%q#c2u7PT`BboMDzjp3l-TbC z+qq=-HtjYl%LBJ;vArskrON}`+ltNF2hl0Jzda@l zbaXa0C+IIwbcu5DVim@vw?-{OE%xP7s%Wj~}_WA}fsyE~DBb6cfjRmaJwR5x!Oh z_V2FoIDJ7oI%%Xeb2X{>+5IY>LvNp|N4V>GA;rHGFjq?5D^xd^)n|AxlJ3|_i$@YM zTz-~-pyOvGF}Yrr>u`5K?-D2bQ#`$p$G6IVp+zKC)nm|zQ^bs=`Qo0=o zyt0YPsKhHXiId#RQxuoeT2-OTQ}h{;hM^3BkId3ap5P8(WEG@jG&#o%(2J4FKzrt< zK#lYt(&q1u-@;( zTk4|e#*B#{3=tIM!DaFd`38T6zro-agFhjw>Ri>)6eZIyKj1eyp)+1A+=@+93kUzBxq_sv1Z`d z6_4d%dA=)YsCbsv$61H1vF;~!pY=>faTU|nmg&Dpr6O@m{29jww$%^l%;{g){lXUZ ztmOpSm1Vo87u4pm6|+`ad16*$o>F_F$HZ(9r34>q1@D|UD?F0U@@^OtDM7?{CnZVo zwI1obS&T_|F6hMZXwy|>>b5M~W{;1T*`7HXu`Hn@q0^L#(aTJnkLE-~B%Rj(VV)dG z5srAv&%-3L>>=y3M{Grp*=7;vCQv&S!K}VNfB%K`VR=w4$|&Icb9bKYov_EwQTB6q z$KFB!e}Uf<{NBdzDJ*Bd_7;PcJ;SksQf<%l5J)l=BxmiE{PN>W4?~g;OOuBaktIWC z$nb)b;c3qE(<5)wK6_vu-^^_rbN|>j7g_GcTv0*dw(b=OuiW+D&GA3CkKgR=pOBwU z>8;m_AU`n6N3S!6-Wa<-w4^n$+bXRO#&H&&w|%$=AL`hZc-W|%x_-0p61j=w4T&`C zF`%W%6m_^dCX!jxn%kFU@gzyIA9@xM{KRr>8Ud(?Kk zH@7gV86%z!a^}u zHB}aKOGLljoLaZSB7H$1TA*(zD=woqb)dR2vuEa>5+s#HzYlVeO>t=zjk%*TOak_J z$!t_SG{VxyVA%{pEnM3V>L%Z>C`Ge3>yj$P(BWu<^B(X-9ujiVz zOsiZgd&0I)Om9lj#EHs;#UdgY7ZgcyEH(>;0koWBxlt~)h_TvISs1u6!RiD*>clSs*_-bt17Xe3?!zLJP5PI4P6o<9~KlEQ%?zAa>asbSb@g! zKsmjfn7*KSCR7m93ySdFF&m7;^|E7j>5L<4iYP5BrjF@EbgZXPH+V@zil~7@P?CVs zL-<4LoU;Ek1D+yA0Zqd!0vB42R+EF@A4rbxM^`rkDnup%M$#yz0ugtnhRT}lBGN4> z9WTY2y@j0x5oZsVmzK<+klWZ$oqlw6W8tvbaXtWRk|9K~Z<1S83q`~uG|f90W6c|a zhM9s#Q4Gag4b+ru!Gy=fr2D{qK?z0%H+v&DPFjSNZ(`oBmw@Q5t1loYodSq4Pq?yw z*?HRxa+(JS3Pn|hK45)E!C*oIR~+U|rc^GEMkA2rVLn$ZOApbZN7meToZbL%28t#~ zkMc7N%@3YD|1IJ<5R-60yrVSYe^rS`u@VQ_b1DuwRTHlR7r=&V<0I* zyB9JH)*%vK)ElDgLx|JoI=7ep)#RT-r3!tx3MVUseb^T{SDi7w_ko< zX~tKrn7>Z(HS%7gTARC9JTG39*GB2=L#VsfRE7=h(lM!yn>BX_A+)dXe09X)d!PNl zzGt7Z8T*cXt4+`CsCkZDyBFaPm+aF^_T8msZ@K07cy`Y42K<(Nrp;En47}K_kfWGf zVxg*_xZAGcD*(`@6nuaM$|f0Saa~!S_1*%p=I&jQ*sHYqLwB#pN8=L8b;|pTvdSII z3%H9t@?6uwARfnnEPOye?!M;`3Hp}^#uxUlxL5G##SMk`zC)?KYv91$&(^>y>Po_J5CrmT;y`biMm<9!!-XSzx;#zVSY(A5_?NT zS<>aXJc1cr*Yll(hxz?n&eQbN^F>RqpBB8EdQn&|cPHH`clv&Q$!*BV)JuI{dnISy z+~moo$G38tgDJ=F@@?9?_U6O9z+)=5v1^*U3$kIAXu8Mbl*aCkJnnlT&+lX%TQ==9 zO}tK);#72sW1b@j)@aboW|}Y zcI?*Z@!n4+jvRTQfjwZJU^Yvm$j1lkM&Y{G%M#8~m$M)eDTaa|3faB46&LSca?>;x ztL^sI)>f0dQA`{X%<&R1%O9}yBnq(8gLn`pQ6FQiGz$C& zt!4q3CEWM8VAu+i2#;1gc)->@pEEmj*ll}*(}P%Mpf{l>ILkz4`+!XZ@a-5YMb;6i z9j2b`GdqZ~FlAd_>M}1}kCMP9oS5w=+;#>`q*1~hyi$ivcpM22Lj!h+w|XrzK8o<= zR`Xpz#40;vIJF&m-&b&#HBt&omU18sih5z!&m5d#FVv!SgL>?Ry*iRDC95RQ)4m6a z+J23La$0k*5a`9~S&K1*;5rF`d*P0|M3U-$1>)&mg!Dg!|7Y<39R4pu^xWs&s}MO% zb(gWMtz~CXUK&?2@@iAH+H6Yl2Lb2MCup_Nbazrt6&yFno5u>w&GB%TQvjbOUM`;* zODNT0-`Ml8U*1<<_dVUU!gAp}^TQ%-&NVt*o$vm5=i8q*6RmyGT9gyb174olL)-S9 zULA2-E2KGF`CJ`p>v0eD!~X(hAA=O5Y*jvGahDKOgxPsq!W_MPSaw5|m)4HJ1uRPE z3o%yJX@^VzKhW;1)Kt;&^-F3<`HC@eF6NanFO_S>E5cd9@-@Q=5bFxfF;E1xSJ{L|x}a_L}U9s|opDeuN$)J7^y|Mj?-?!}Lq5gu~Mnj^K> zw?0=*td2Fr`$yYiqhQ7eHspy;=KDOgd{0!lT0Pln&>IT@YETRC3e#QLQ2CNh9@uMK zc)hU7A%w~)R*)28xJ6Mpj1jS{K(`p@d!9u;A4Z2OMudl9#0!QIS{ojTU&)1&nhX8$D5|(%*7U|(W4K_J zjmw4a-Xmhc&ak%zsHmh~x8egG5N}pu{bmnNXbs5(Pehw<+d+)7#NIk`YIGyRp4~4h z27P=O2EA?=^jL_OTsx(?CdcD|;+k2rGu|4*HM4A7uC?!dBTFK7*X04P_|-!#ChN3N zrE13ssybOHdTmq%qFwf?SuHnQs1H^2|HWbGf6>r?UqnjUE@;~Rd^|cS+L|>#9dC`H ztyxylc7OLTrwT8h%ZU}jwSS)WDxHk0!+{EboJB5CWn#9eDeW4s)tH(9Xp*cka=poS z1kxtMCjC@#=#OJ_i0nHhcxN>2|4`Dg7N2~xs)p*sN!!#-&qm7i>aCm0Y|Hh!E;1wE zNBt4W6{9d^S5oy^@}T}-4|N(!h0f~J{G~e0qP$)pCQNoV9`aQX-8ayThpuIFwWwLg z`?ZmZFUOCL8)%u@)}AMsSUmu%N)CbA9Xis(W;!+nQB44 zrV+Z);o_9;x&9IkDGn&9${8P3`i$gP9`D$~&1GXd@K;4_)9uDgoS<}_Z1O_ah+ml;@u)nMqp%|b_ z2e>^b3k;|?L@YpsgenQPVB8i1`bJ${c!(+KHJqlF&sLKltw+8eZBg-iUs!~P$>M6!z*ma{V)r)QIM1 zTwTfV+ashqFrM#!i)JsaUC?4|=&H)0^+bIa#UE{249rS3`WLX9Nxa_sGYm4_f(jXm?wb;9l?DWz0s+cSY=xYQtM_v>Zoz@ zIK@ib3W^l~XITd~T-i#IC#x-R{f6r~^^@R3-v9^oMgrc(-rWso#!H*m_L(7gn#Bly zp+I4M7Is`^u@^&w5dK0pTP1*9ue3cKo-k}=i5P^QrWKFX*s`C7(5(K{S75`^DNyPsU+sjyB1Ij;kEI=ME@3*j| z-^PauwehXpKZE zV21LwBeH4ca0ibW1(p+XzMCb~$6=LS8?$Dl=-!YsuyhmwpdDoahPCJ~L5~7ey_{T5 zeaH4Q1Xt$TT28@i##x%*aZlcnjUGo=hK*){91o7FQlboihZDtysF;Qucx>v&Eb;L) zmquNS`ab9_Hl75A$sm`f*P|#6qm6HuH`?WVarSx~wLWl}-O<%N+qBOv;}f;P$d0&azaS$%%^#mHiLip~I8 z6D~;Pt5AK;1oEJ`gV6mb`jO-r^s_{XV>vvAq+lC#t$+?wbVH6~f+C&+Sw*wTcJ5Be zd8*4;)sQ^uLA>UiEQqaA1VLCeKtXO2+CBk1sYaA=6Z@;7Sn$k=ETj~eb&78zyyjMY zrIM0vYHfO|pM_vqjwh(Bi-Tw^r;Tbr&1P{J3Wt@RVfvh&W~o*dYGPWXU)ThRi_%3N z5;O-aKY_+Au&Q{3h%S(RL2|+#1kv{bFU@bCdJfm)JhsYi5IW2(jUYYZ7Ac4PlBuI$ zShR`&M3tm-d6s4>1TfR03s8!8D3jvx$}=xq13l-H_3j9G8mYiPYrsQUZ4%iHp0qrk zuB$y@0F*;-Lt;_>h8E!>B43-47a)^?RjOxs0INvmcH}8B2vd98a=o7G;~(;S+^67K z&WZqc!q)dP=(PZ$&Zy_&(LxStqi9H^y?`u*E`)hf=o_f4NQl)NS)A{v_BVBxtnI)K zq$lc9LsMlKPLruX@6*UUFF=Nf&Fn%OsdH^3hs*>W?m&eHK*8la#U^LFn6+VX#G}52 zPCYWT3hf2mYX@QV*9)_@BaiWLlRDt!Okqx-zYs+)ESkNn)J}Scr|5JGsv*luVP9dw z9qMUbwFAak7Al+qFH}8!{eR%K3GU^@i)L&5DmQK%+h^lF;O(<@CQlEYy=W5LlTQ7= zk&W8}bbkhTWWqHkN3}_$D0GB@fDhV~lKLN!)%)brOgw_xkIrM;1$W?4uTJ@pf6Xmed krxUt$5c=CARcboqc(jeCC`vZza?TQdhA8G?jw<-S0sb9vKmY&$ literal 0 HcmV?d00001 diff --git a/.doctrees/environment.pickle b/.doctrees/environment.pickle new file mode 100644 index 0000000000000000000000000000000000000000..b70af54deb4258f464f6f3fba09245df2b529e1a GIT binary patch literal 278927 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 N9lz4XxgK+|{~xln$r}Iw literal 0 HcmV?d00001 diff --git a/.doctrees/index.doctree b/.doctrees/index.doctree new file mode 100644 index 0000000000000000000000000000000000000000..fb2f108a0d139b87b73d1124f3b64e4f02b100a1 GIT binary patch literal 26344 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 Sbaw-W(9Q@C<4a@Kfc^)=`YJ~N literal 0 HcmV?d00001 diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/CNAME b/CNAME new file mode 100644 index 0000000..50f155b --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +yardang.python-templates.dev \ No newline at end of file diff --git a/README.html b/README.html new file mode 100644 index 0000000..fc469f4 --- /dev/null +++ b/README.html @@ -0,0 +1,341 @@ + + + + + + + + + yardang - yardang v0.1.0 + + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+ +
+ +
+ +
+
+

yardang

+
+

yardang

+

Build Status +codecov +License +PyPI

+

yardang is a Python library for generating Sphinx documentation easily, with minimal local configuration overhead.

+

yardang makes building Sphinx easy.

+

This library was generated using copier from the Base Python Project Template repository.

+
+

Installation

+

You can install from PyPI via pip:

+
pip install yardang
+
+
+

Or from conda-forge via conda:

+
conda install yardang -c conda-forge
+
+
+
+
+ +
+
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/_modules/index.html b/_modules/index.html new file mode 100644 index 0000000..94c0892 --- /dev/null +++ b/_modules/index.html @@ -0,0 +1,299 @@ + + + + + + + + Overview: module code - yardang v0.1.0 + + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+ +
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/_modules/test_all.html b/_modules/test_all.html new file mode 100644 index 0000000..d87cc3b --- /dev/null +++ b/_modules/test_all.html @@ -0,0 +1,312 @@ + + + + + + + + test_all - yardang v0.1.0 + + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for test_all

+from yardang.build import generate_docs_configuration
+from yardang.cli import build, debug
+
+
+
+[docs] +def test_build(): + with generate_docs_configuration() as _: + ...
+ + + +
+[docs] +def test_cli(): + build() + debug()
+ +
+
+
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/_modules/yardang.html b/_modules/yardang.html new file mode 100644 index 0000000..8f62e1e --- /dev/null +++ b/_modules/yardang.html @@ -0,0 +1,298 @@ + + + + + + + + yardang - yardang v0.1.0 + + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for yardang

+
+[docs] +__version__ = "0.1.0"
+ +
+
+
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/_modules/yardang/build.html b/_modules/yardang/build.html new file mode 100644 index 0000000..67d78bd --- /dev/null +++ b/_modules/yardang/build.html @@ -0,0 +1,436 @@ + + + + + + + + yardang.build - yardang v0.1.0 + + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for yardang.build

+import os.path
+from contextlib import contextmanager
+from jinja2 import Environment, FileSystemLoader
+from pathlib import Path
+from tempfile import TemporaryDirectory
+from typing import List, Optional
+from .utils import get_config
+
+__all__ = (
+    "generate_docs_configuration",
+    "CUSTOM_CSS",
+)
+
+# Wider screen for furo
+
+[docs] +CUSTOM_CSS = """ +/* Wide main page */ +.content { + flex: 1; +} +aside.sidebar-drawer { + width: unset; +} + +/* Left-align tables */ +article table.align-default { + margin-left: 0; +} +"""
+ + + +@contextmanager +
+[docs] +def generate_docs_configuration( + *, + project: str = "", + title: str = "", + module: str = "", + description: str = "", + author: str = "", + version: str = "", + theme: str = "furo", + docs_root: str = "", + root: str = "", + cname: str = "", + pages: Optional[List] = None, + use_autoapi: Optional[bool] = None, +): + if os.path.exists("conf.py"): + # yield folder path to sphinx build + yield os.path.curdir + else: + # load configuration + default_data = os.path.split(os.getcwd())[-1] + project = project or get_config(section="name", base="project") or default_data.replace("_", "-") + title = title or get_config(section="title") or default_data.replace("_", "-") + module = module or project.replace("-", "_") or default_data.replace("-", "_") + description = description or get_config(section="name", base="description") or default_data.replace("_", " ").replace("-", " ") + author = author or get_config(section="authors", base="project") + if isinstance(author, list) and len(author) > 0: + author = author[0] + else: + author = f"The {project} authors" + theme = theme or get_config(section="theme") + version = version or get_config(section="version", base="project") + docs_root = ( + docs_root + or get_config(section="docs-host") + or get_config(section="urls.Homepage", base="project") + or get_config(section="urls.homepage", base="project") + or get_config(section="urls.Documentation", base="project") + or get_config(section="urls.documentation", base="project") + or get_config(section="urls.Source", base="project") + or get_config(section="urls.source", base="project") + or "" + ) + root = root or get_config(section="root") + cname = cname or get_config(section="cname") + pages = pages or get_config(section="pages") or [] + use_autoapi = use_autoapi or get_config(section="use-autoapi") + source_dir = os.path.curdir + autodoc_pydantic_args = {} + for f in ( + "autodoc_pydantic_model_show_config_summary", + "autodoc_pydantic_model_show_validator_summary", + "autodoc_pydantic_model_show_validator_members", + "autodoc_pydantic_field_list_validators", + "autodoc_pydantic_field_show_constraints", + "autodoc_pydantic_model_member_order", + "autodoc_pydantic_model_show_json", + "autodoc_pydantic_settings_show_json", + "autodoc_pydantic_model_show_field_summary", + ): + default_value = {"autodoc_pydantic_model_member_order": '"bysource"', "autodoc_pydantic_model_show_json": True}.get(f, False) + config_value = get_config(section=f"{f}") + autodoc_pydantic_args[f] = default_value if config_value is None else config_value + # create a temporary directory to store the conf.py file in + with TemporaryDirectory() as td: + templateEnv = Environment(loader=FileSystemLoader(searchpath=str(Path(__file__).parent.resolve()))) + # load the templatized conf.py file + template = templateEnv.get_template("conf.py.j2").render( + project=project, + title=title, + module=module, + description=description, + author=author, + version=version, + theme=theme, + docs_root=docs_root, + root=root, + cname=cname, + pages=pages, + use_autoapi=use_autoapi, + source_dir=source_dir, + **autodoc_pydantic_args, + ) + # dump to file + template_file = Path(td) / "conf.py" + template_file.write_text(template) + + # append docs-specific ignores to gitignore + if Path(".gitignore").exists(): + has_html_build_folder = False + has_index_md = False + with open(".gitignore", "r+") as fp: + for line in fp: + if "docs/html" in line: + has_html_build_folder = True + if "index.md" in line: + has_index_md = True + if not has_html_build_folder or not has_index_md: + fp.write("\n") + if not has_html_build_folder: + fp.write("docs/html\n") + if not has_index_md: + fp.write("index.md\n") + # yield folder path to sphinx build + yield td
+ +
+
+
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/_modules/yardang/cli.html b/_modules/yardang/cli.html new file mode 100644 index 0000000..bd0dd65 --- /dev/null +++ b/_modules/yardang/cli.html @@ -0,0 +1,355 @@ + + + + + + + + yardang.cli - yardang v0.1.0 + + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for yardang.cli

+from sys import executable
+from pathlib import Path
+from subprocess import Popen, PIPE
+from typer import Typer
+
+from .build import generate_docs_configuration, CUSTOM_CSS
+
+
+
+[docs] +def build(quiet: bool = False, debug: bool = False): + with generate_docs_configuration() as file: + folder = Path("docs/html/_static/styles") + css = folder / "custom.css" + if not css.exists(): + folder.mkdir(parents=True, exist_ok=True) + css.write_text(CUSTOM_CSS) + + build_cmd = [ + executable, + "-m", + "sphinx", + ".", + "docs/html", + "-c", + file, + ] + + if debug: + print(" ".join(build_cmd)) + + process = Popen(build_cmd, stdout=PIPE) + while process.poll() is None: + text = process.stdout.readline().decode("utf-8") + if text and not quiet: + print(text) + text = process.stdout.readline().decode("utf-8") + if text and not quiet: + print(text)
+ + + +
+[docs] +def debug(): + build(quiet=False, debug=True)
+ + + +
+[docs] +def main(): + app = Typer() + app.command("build")(build) + app.command("debug")(debug) + app()
+ + + +if __name__ == "__main__": + main() +
+
+
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/_modules/yardang/utils.html b/_modules/yardang/utils.html new file mode 100644 index 0000000..4b0f8df --- /dev/null +++ b/_modules/yardang/utils.html @@ -0,0 +1,321 @@ + + + + + + + + yardang.utils - yardang v0.1.0 + + + + + + + + + + + + + + + + + + + + + Contents + + + + + + Menu + + + + + + + + Expand + + + + + + Light mode + + + + + + + + + + + + + + Dark mode + + + + + + + Auto light/dark, in light mode + + + + + + + + + + + + + + + Auto light/dark, in dark mode + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +Skip to content + + + +
+
+
+ +
+ +
+
+ +
+ +
+
+ +
+
+
+ + + + + Back to top + +
+
+ +
+ +
+
+

Source code for yardang.utils

+import os
+import toml
+from pathlib import Path
+
+
+__all__ = ("get_config",)
+
+
+def get_pyproject_toml():
+    cwd = os.getcwd()
+    local_path = Path(cwd) / "pyproject.toml"
+    if local_path.exists():
+        return toml.loads(local_path.read_text())
+    raise FileNotFoundError(str(local_path))
+
+
+
+[docs] +def get_config(section="", base="tool.yardang"): + config = get_pyproject_toml() + sections = base.split(".") + (section.split(".") if section else []) + for s in sections: + config = config.get(s, None) + if config is None: + return None + return config
+ +
+
+
+ +
+ +
+
+ + + + + + + + \ No newline at end of file diff --git a/_sources/.github/CODE_OF_CONDUCT.md.txt b/_sources/.github/CODE_OF_CONDUCT.md.txt new file mode 100644 index 0000000..1b32efd --- /dev/null +++ b/_sources/.github/CODE_OF_CONDUCT.md.txt @@ -0,0 +1,76 @@ +# Contributor Covenant Code of Conduct + +## Our Pledge + +In the interest of fostering an open and welcoming environment, we as +contributors and maintainers pledge to making participation in our project and +our community a harassment-free experience for everyone, regardless of age, body +size, disability, ethnicity, sex characteristics, gender identity and expression, +level of experience, education, socio-economic status, nationality, personal +appearance, race, religion, or sexual identity and orientation. + +## Our Standards + +Examples of behavior that contributes to creating a positive environment +include: + +* Using welcoming and inclusive language +* Being respectful of differing viewpoints and experiences +* Gracefully accepting constructive criticism +* Focusing on what is best for the community +* Showing empathy towards other community members + +Examples of unacceptable behavior by participants include: + +* The use of sexualized language or imagery and unwelcome sexual attention or + advances +* Trolling, insulting/derogatory comments, and personal or political attacks +* Public or private harassment +* Publishing others' private information, such as a physical or electronic + address, without explicit permission +* Other conduct which could reasonably be considered inappropriate in a + professional setting + +## Our Responsibilities + +Project maintainers are responsible for clarifying the standards of acceptable +behavior and are expected to take appropriate and fair corrective action in +response to any instances of unacceptable behavior. + +Project maintainers have the right and responsibility to remove, edit, or +reject comments, commits, code, wiki edits, issues, and other contributions +that are not aligned to this Code of Conduct, or to ban temporarily or +permanently any contributor for other behaviors that they deem inappropriate, +threatening, offensive, or harmful. + +## Scope + +This Code of Conduct applies both within project spaces and in public spaces +when an individual is representing the project or its community. Examples of +representing a project or community include using an official project e-mail +address, posting via an official social media account, or acting as an appointed +representative at an online or offline event. Representation of a project may be +further defined and clarified by project maintainers. + +## Enforcement + +Instances of abusive, harassing, or otherwise unacceptable behavior may be +reported by contacting the project team at t.paine154@gmail.com. All +complaints will be reviewed and investigated and will result in a response that +is deemed necessary and appropriate to the circumstances. The project team is +obligated to maintain confidentiality with regard to the reporter of an incident. +Further details of specific enforcement policies may be posted separately. + +Project maintainers who do not follow or enforce the Code of Conduct in good +faith may face temporary or permanent repercussions as determined by other +members of the project's leadership. + +## Attribution + +This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4, +available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html + +[homepage]: https://www.contributor-covenant.org + +For answers to common questions about this code of conduct, see +https://www.contributor-covenant.org/faq diff --git a/_sources/.github/ISSUE_TEMPLATE/bug_report.md.txt b/_sources/.github/ISSUE_TEMPLATE/bug_report.md.txt new file mode 100644 index 0000000..dd84ea7 --- /dev/null +++ b/_sources/.github/ISSUE_TEMPLATE/bug_report.md.txt @@ -0,0 +1,38 @@ +--- +name: Bug report +about: Create a report to help us improve +title: '' +labels: '' +assignees: '' + +--- + +**Describe the bug** +A clear and concise description of what the bug is. + +**To Reproduce** +Steps to reproduce the behavior: +1. Go to '...' +2. Click on '....' +3. Scroll down to '....' +4. See error + +**Expected behavior** +A clear and concise description of what you expected to happen. + +**Screenshots** +If applicable, add screenshots to help explain your problem. + +**Desktop (please complete the following information):** + - OS: [e.g. iOS] + - Browser [e.g. chrome, safari] + - Version [e.g. 22] + +**Smartphone (please complete the following information):** + - Device: [e.g. iPhone6] + - OS: [e.g. iOS8.1] + - Browser [e.g. stock browser, safari] + - Version [e.g. 22] + +**Additional context** +Add any other context about the problem here. diff --git a/_sources/.github/ISSUE_TEMPLATE/feature_request.md.txt b/_sources/.github/ISSUE_TEMPLATE/feature_request.md.txt new file mode 100644 index 0000000..bbcbbe7 --- /dev/null +++ b/_sources/.github/ISSUE_TEMPLATE/feature_request.md.txt @@ -0,0 +1,20 @@ +--- +name: Feature request +about: Suggest an idea for this project +title: '' +labels: '' +assignees: '' + +--- + +**Is your feature request related to a problem? Please describe.** +A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] + +**Describe the solution you'd like** +A clear and concise description of what you want to happen. + +**Describe alternatives you've considered** +A clear and concise description of any alternative solutions or features you've considered. + +**Additional context** +Add any other context or screenshots about the feature request here. diff --git a/_sources/README.md.txt b/_sources/README.md.txt new file mode 100644 index 0000000..9f539e1 --- /dev/null +++ b/_sources/README.md.txt @@ -0,0 +1,27 @@ +yardang + +# yardang + +[![Build Status](https://github.com/python-project-templates/yardang/actions/workflows/build.yml/badge.svg?branch=main&event=push)](https://github.com/python-project-templates/yardang/actions/workflows/build.yml) +[![codecov](https://codecov.io/gh/python-project-templates/yardang/branch/main/graph/badge.svg)](https://codecov.io/gh/python-project-templates/yardang) +[![License](https://img.shields.io/github/license/python-project-templates/yardang)](https://github.com/python-project-templates/yardang) +[![PyPI](https://img.shields.io/pypi/v/yardang.svg)](https://pypi.python.org/pypi/yardang) + +`yardang` is a Python library for generating [Sphinx documentation](https://www.sphinx-doc.org/en/master/) easily, with minimal local configuration overhead. + +[`yardang`](https://www.britannica.com/science/yardang) makes building [Sphinx](https://www.sphinx-doc.org/en/master/) easy. + +*This library was generated using [copier](https://copier.readthedocs.io/en/stable/) from the [Base Python Project Template repository](https://github.com/python-project-templates/base).* + +## Installation +You can install from PyPI via `pip`: + +```bash +pip install yardang +``` + +Or from `conda-forge` via `conda`: + +```bash +conda install yardang -c conda-forge +``` diff --git a/_sources/autoapi/index.rst.txt b/_sources/autoapi/index.rst.txt new file mode 100644 index 0000000..60e5fe6 --- /dev/null +++ b/_sources/autoapi/index.rst.txt @@ -0,0 +1,12 @@ +API Reference +============= + +This page contains auto-generated API reference documentation [#f1]_. + +.. toctree:: + :titlesonly: + + /autoapi/yardang/index + /autoapi/test_all/index + +.. [#f1] Created with `sphinx-autoapi `_ \ No newline at end of file diff --git a/_sources/autoapi/test_all/index.rst.txt b/_sources/autoapi/test_all/index.rst.txt new file mode 100644 index 0000000..58e9589 --- /dev/null +++ b/_sources/autoapi/test_all/index.rst.txt @@ -0,0 +1,22 @@ +test_all +======== + +.. py:module:: test_all + + +Functions +--------- + +.. autoapisummary:: + + test_all.test_build + test_all.test_cli + + +Module Contents +--------------- + +.. py:function:: test_build() + +.. py:function:: test_cli() + diff --git a/_sources/autoapi/yardang/build/index.rst.txt b/_sources/autoapi/yardang/build/index.rst.txt new file mode 100644 index 0000000..e3168e0 --- /dev/null +++ b/_sources/autoapi/yardang/build/index.rst.txt @@ -0,0 +1,57 @@ +yardang.build +============= + +.. py:module:: yardang.build + + +Attributes +---------- + +.. autoapisummary:: + + yardang.build.CUSTOM_CSS + + +Functions +--------- + +.. autoapisummary:: + + yardang.build.generate_docs_configuration + + +Module Contents +--------------- + +.. py:data:: CUSTOM_CSS + :value: Multiline-String + + .. raw:: html + +
Show Value + + .. code-block:: python + + """ + /* Wide main page */ + .content { + flex: 1; + } + aside.sidebar-drawer { + width: unset; + } + + /* Left-align tables */ + article table.align-default { + margin-left: 0; + } + """ + + .. raw:: html + +
+ + + +.. py:function:: generate_docs_configuration(*, project: str = '', title: str = '', module: str = '', description: str = '', author: str = '', version: str = '', theme: str = 'furo', docs_root: str = '', root: str = '', cname: str = '', pages: Optional[List] = None, use_autoapi: Optional[bool] = None) + diff --git a/_sources/autoapi/yardang/cli/index.rst.txt b/_sources/autoapi/yardang/cli/index.rst.txt new file mode 100644 index 0000000..2ee64b9 --- /dev/null +++ b/_sources/autoapi/yardang/cli/index.rst.txt @@ -0,0 +1,25 @@ +yardang.cli +=========== + +.. py:module:: yardang.cli + + +Functions +--------- + +.. autoapisummary:: + + yardang.cli.build + yardang.cli.debug + yardang.cli.main + + +Module Contents +--------------- + +.. py:function:: build(quiet: bool = False, debug: bool = False) + +.. py:function:: debug() + +.. py:function:: main() + diff --git a/_sources/autoapi/yardang/index.rst.txt b/_sources/autoapi/yardang/index.rst.txt new file mode 100644 index 0000000..983aa94 --- /dev/null +++ b/_sources/autoapi/yardang/index.rst.txt @@ -0,0 +1,32 @@ +yardang +======= + +.. py:module:: yardang + + +Submodules +---------- + +.. toctree:: + :maxdepth: 1 + + /autoapi/yardang/build/index + /autoapi/yardang/cli/index + /autoapi/yardang/utils/index + + +Attributes +---------- + +.. autoapisummary:: + + yardang.__version__ + + +Package Contents +---------------- + +.. py:data:: __version__ + :value: '0.1.0' + + diff --git a/_sources/autoapi/yardang/utils/index.rst.txt b/_sources/autoapi/yardang/utils/index.rst.txt new file mode 100644 index 0000000..9fc3f4f --- /dev/null +++ b/_sources/autoapi/yardang/utils/index.rst.txt @@ -0,0 +1,19 @@ +yardang.utils +============= + +.. py:module:: yardang.utils + + +Functions +--------- + +.. autoapisummary:: + + yardang.utils.get_config + + +Module Contents +--------------- + +.. py:function:: get_config(section='', base='tool.yardang') + diff --git a/_sources/docs/src/configuration.md.txt b/_sources/docs/src/configuration.md.txt new file mode 100644 index 0000000..fb78e04 --- /dev/null +++ b/_sources/docs/src/configuration.md.txt @@ -0,0 +1,108 @@ +# Configuration + +Configuration for `yardang` is driven from the `pyproject.toml`, either via standard sections like `project` or from the dedicated `tool.yardang` section. +Each option below corresponds to the [Sphinx configuration](https://www.sphinx-doc.org/en/master/usage/configuration.html). + + +## [`name`](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-project) +The project name is taken from the standard section, or from the `cwd`. + +```toml +[project] +name = "your project name" +``` + +## `title` +Same as `name` + +## `module` +The module title is taken from the `name`, replacing `-` with `_`, or from the `cwd` doing the same. + +## `description` + +```toml +[project] +description = "your project description" +``` + +## [`author`](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-author) + +```toml +[project] +authors = "your project authors" +``` + +## [`version`](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-version) +```toml +[project] +version = "0.1.0" +``` + +## `theme` +Defaults to `furo`. + +```toml +[tool.yardang] +theme = "furo" +``` + +## [`theme`](https://www.sphinx-doc.org/en/master/usage/configuration.html#confval-html_theme) +Defaults to `furo`. + +```toml +[tool.yardang] +theme = "furo" +``` + +## `root` +The root page to use, defaults to `README.md`. + +```toml +[tool.yardang] +root = "docs/src/index.md" +``` + +## `cname` +If set, will generate a `CNAME` file for GitHub Pages custom domains. + +```toml +[tool.yardang] +cname = "yardang.python-templates.dev" +``` + +## `pages` +Pages to include in the contents tree. + +```toml +[tool.yardang] +pages = [ + "docs/src/overview.md", + "docs/src/installation.md", + "docs/src/configuration.md", +] +``` + +## `use_autoapi` +Whether or not to use [Sphinx AutoAPI](https://sphinx-autoapi.readthedocs.io/en/latest/). +**NOTE:** it is recommended to manually autodoc your code. + +```toml +[tool.yardang] +use-autoapi = true +``` + +## [Autodoc Pydantic](https://autodoc-pydantic.readthedocs.io/en/stable/users/examples.html) arguments +[Configuration for Autodoc Pydantic](https://autodoc-pydantic.readthedocs.io/en/stable/users/configuration.html). + +```toml +[tool.yardang] +autodoc_pydantic_model_show_config_summary = false +autodoc_pydantic_model_show_validator_summary = false +autodoc_pydantic_model_show_validator_members = false +autodoc_pydantic_field_list_validators = false +autodoc_pydantic_field_show_constraints = false +autodoc_pydantic_model_member_order = "bysource" +autodoc_pydantic_model_show_json = true +autodoc_pydantic_settings_show_json = false +autodoc_pydantic_model_show_field_summary = false +``` diff --git a/_sources/docs/src/home.md.txt b/_sources/docs/src/home.md.txt new file mode 100644 index 0000000..a5532fb --- /dev/null +++ b/_sources/docs/src/home.md.txt @@ -0,0 +1,53 @@ + + +
+ yardang +

yardang

+
+ +[![Build Status](https://github.com/python-project-templates/yardang/actions/workflows/build.yml/badge.svg?branch=main&event=push)](https://github.com/python-project-templates/yardang/actions/workflows/build.yml) +[![codecov](https://codecov.io/gh/python-project-templates/yardang/branch/main/graph/badge.svg)](https://codecov.io/gh/python-project-templates/yardang) +[![License](https://img.shields.io/github/license/python-project-templates/yardang)](https://github.com/python-project-templates/yardang) +[![PyPI](https://img.shields.io/pypi/v/yardang.svg)](https://pypi.python.org/pypi/yardang) + +`yardang` is a Python library for generating [Sphinx documentation](https://www.sphinx-doc.org/en/master/) easily, with minimal local configuration overhead. + +[`yardang`](https://www.britannica.com/science/yardang) makes building [Sphinx](https://www.sphinx-doc.org/en/master/) easy. + + +::::{grid} 1 2 2 2 +:margin: 4 4 0 0 +:gutter: 1 + +:::{grid-item-card} {octicon}`table` Overview +:link: docs/src/overview.html +:link-type: url + +About `yardang` and how it works. +::: + +:::{grid-item-card} {octicon}`download` Installation +:link: docs/src/installation.html +:link-type: url + +Install `yardang` from PyPI, Conda Forge, or build from source. +::: + +:::{grid-item-card} {octicon}`gear` Configuration +:link: docs/src/configuration.html +:link-type: url + +Learn how to configure your repository. +::: + +:::{grid-item-card} {octicon}`mark-github` Repository +:link: https://github.com/python-project-templates/yardang +:link-type: url + +Star, Fork, or contribute on GitHub. +::: +:::: + +------------- + +*This library was generated using [copier](https://copier.readthedocs.io/en/stable/) from the [Base Python Project Template repository](https://github.com/python-project-templates/base).* diff --git a/_sources/docs/src/installation.md.txt b/_sources/docs/src/installation.md.txt new file mode 100644 index 0000000..998c25c --- /dev/null +++ b/_sources/docs/src/installation.md.txt @@ -0,0 +1,17 @@ +# Installation + +## PyPI + +You can install from PyPI via `pip`: + +```bash +pip install yardang +``` + + +## Conda +You can install from `conda-forge` via `conda` (or `mamba`, etc): + +```bash +conda install yardang -c conda-forge +``` diff --git a/_sources/docs/src/overview.md.txt b/_sources/docs/src/overview.md.txt new file mode 100644 index 0000000..ff59933 --- /dev/null +++ b/_sources/docs/src/overview.md.txt @@ -0,0 +1,55 @@ +# Overview + +`yardang` is a tool to configure the most common [Sphinx](https://www.sphinx-doc.org/en/master/) options directly from a `pyproject.toml`. +Sphinx relies on a `conf.py` file and Makefiles, but these usually overlap a substantial amount with information already stored in the repository (e.g. in the `pyproject.toml`). +Within an organization, these files tend to include a substantial amount of overlapping information. + +## Integrations + +`yardang` takes the most important parts, like theme, title, pages, etc, and extracts them directly from the `pyproject.toml`. +It creates a temporary file for the `conf.py`, and builds the project into `docs/html`. +Out of the box, it comes with support for several popular Sphinx frameworks: + +- [Sphinx Design](https://sphinx-design.readthedocs.io/en/latest/) +- [Myst Markdown](https://jupyterbook.org/en/stable/content/myst.html) +- [Sphinx AutoAPI](https://sphinx-autoapi.readthedocs.io/en/latest/) +- [Autodoc Pydantic](https://autodoc-pydantic.readthedocs.io/en/stable/users/examples.html) +- [Furo Theme](https://github.com/pradyunsg/furo) + +## Usage + +`yardang` builds Sphinx via a CLI, which will build docs into `docs/html`: + +```bash +yardang build +``` + +### GitHub Pages + +The goal of this project is to make it as easy as possible to use Sphinx. +The following yaml should be all it takes to integrate your project with GitHub Pages, **without changing anything in your existing repository**. + +```yaml +name: Docs +on: + push: + branches: + - main +permissions: + contents: write +jobs: + docs: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - uses: actions/setup-python@v4 + - run: pip install . + - run: pip install yardang + - run: yardang build + - name: Deploy + uses: peaceiris/actions-gh-pages@v3 + with: + publish_branch: gh-pages + github_token: ${{ secrets.GITHUB_TOKEN }} + publish_dir: docs/html +``` diff --git a/_sources/index.md.txt b/_sources/index.md.txt new file mode 100644 index 0000000..a3bb046 --- /dev/null +++ b/_sources/index.md.txt @@ -0,0 +1,70 @@ +```{toctree} +--- +caption: "" +maxdepth: 2 +hidden: true +--- + + +docs/src/overview.md + +docs/src/installation.md + +docs/src/configuration.md + + +``` + + + +
+ yardang +

yardang

+
+ +[![Build Status](https://github.com/python-project-templates/yardang/actions/workflows/build.yml/badge.svg?branch=main&event=push)](https://github.com/python-project-templates/yardang/actions/workflows/build.yml) +[![codecov](https://codecov.io/gh/python-project-templates/yardang/branch/main/graph/badge.svg)](https://codecov.io/gh/python-project-templates/yardang) +[![License](https://img.shields.io/github/license/python-project-templates/yardang)](https://github.com/python-project-templates/yardang) +[![PyPI](https://img.shields.io/pypi/v/yardang.svg)](https://pypi.python.org/pypi/yardang) + +`yardang` is a Python library for generating [Sphinx documentation](https://www.sphinx-doc.org/en/master/) easily, with minimal local configuration overhead. + +[`yardang`](https://www.britannica.com/science/yardang) makes building [Sphinx](https://www.sphinx-doc.org/en/master/) easy. + + +::::{grid} 1 2 2 2 +:margin: 4 4 0 0 +:gutter: 1 + +:::{grid-item-card} {octicon}`table` Overview +:link: docs/src/overview.html +:link-type: url + +About `yardang` and how it works. +::: + +:::{grid-item-card} {octicon}`download` Installation +:link: docs/src/installation.html +:link-type: url + +Install `yardang` from PyPI, Conda Forge, or build from source. +::: + +:::{grid-item-card} {octicon}`gear` Configuration +:link: docs/src/configuration.html +:link-type: url + +Learn how to configure your repository. +::: + +:::{grid-item-card} {octicon}`mark-github` Repository +:link: https://github.com/python-project-templates/yardang +:link-type: url + +Star, Fork, or contribute on GitHub. +::: +:::: + +------------- + +*This library was generated using [copier](https://copier.readthedocs.io/en/stable/) from the [Base Python Project Template repository](https://github.com/python-project-templates/base).* diff --git a/_sphinx_design_static/design-tabs.js b/_sphinx_design_static/design-tabs.js new file mode 100644 index 0000000..b25bd6a --- /dev/null +++ b/_sphinx_design_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_sphinx_design_static/sphinx-design.min.css b/_sphinx_design_static/sphinx-design.min.css new file mode 100644 index 0000000..a325746 --- /dev/null +++ b/_sphinx_design_static/sphinx-design.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/_static/autodoc_pydantic.css b/_static/autodoc_pydantic.css new file mode 100644 index 0000000..994a3e5 --- /dev/null +++ b/_static/autodoc_pydantic.css @@ -0,0 +1,11 @@ +.autodoc_pydantic_validator_arrow { + padding-left: 8px; + } + +.autodoc_pydantic_collapsable_json { + cursor: pointer; + } + +.autodoc_pydantic_collapsable_erd { + cursor: pointer; + } \ No newline at end of file diff --git a/_static/basic.css b/_static/basic.css new file mode 100644 index 0000000..30fee9d --- /dev/null +++ b/_static/basic.css @@ -0,0 +1,925 @@ +/* + * basic.css + * ~~~~~~~~~ + * + * Sphinx stylesheet -- basic theme. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +/* -- main layout ----------------------------------------------------------- */ + +div.clearer { + clear: both; +} + +div.section::after { + display: block; + content: ''; + clear: left; +} + +/* -- relbar ---------------------------------------------------------------- */ + +div.related { + width: 100%; + font-size: 90%; +} + +div.related h3 { + display: none; +} + +div.related ul { + margin: 0; + padding: 0 0 0 10px; + list-style: none; +} + +div.related li { + display: inline; +} + +div.related li.right { + float: right; + margin-right: 5px; +} + +/* -- sidebar --------------------------------------------------------------- */ + +div.sphinxsidebarwrapper { + padding: 10px 5px 0 10px; +} + +div.sphinxsidebar { + float: left; + width: 230px; + margin-left: -100%; + font-size: 90%; + word-wrap: break-word; + overflow-wrap : break-word; +} + +div.sphinxsidebar ul { + list-style: none; +} + +div.sphinxsidebar ul ul, +div.sphinxsidebar ul.want-points { + margin-left: 20px; + list-style: square; +} + +div.sphinxsidebar ul ul { + margin-top: 0; + margin-bottom: 0; +} + +div.sphinxsidebar form { + margin-top: 10px; +} + +div.sphinxsidebar input { + border: 1px solid #98dbcc; + font-family: sans-serif; + font-size: 1em; +} + +div.sphinxsidebar #searchbox form.search { + overflow: hidden; +} + +div.sphinxsidebar #searchbox input[type="text"] { + float: left; + width: 80%; + padding: 0.25em; + box-sizing: border-box; +} + +div.sphinxsidebar #searchbox input[type="submit"] { + float: left; + width: 20%; + border-left: none; + padding: 0.25em; + box-sizing: border-box; +} + + +img { + border: 0; + max-width: 100%; +} + +/* -- search page ----------------------------------------------------------- */ + +ul.search { + margin: 10px 0 0 20px; + padding: 0; +} + +ul.search li { + padding: 5px 0 5px 20px; + background-image: url(file.png); + background-repeat: no-repeat; + background-position: 0 7px; +} + +ul.search li a { + font-weight: bold; +} + +ul.search li p.context { + color: #888; + margin: 2px 0 0 30px; + text-align: left; +} + +ul.keywordmatches li.goodmatch a { + font-weight: bold; +} + +/* -- index page ------------------------------------------------------------ */ + +table.contentstable { + width: 90%; + margin-left: auto; + margin-right: auto; +} + +table.contentstable p.biglink { + line-height: 150%; +} + +a.biglink { + font-size: 1.3em; +} + +span.linkdescr { + font-style: italic; + padding-top: 5px; + font-size: 90%; +} + +/* -- general index --------------------------------------------------------- */ + +table.indextable { + width: 100%; +} + +table.indextable td { + text-align: left; + vertical-align: top; +} + +table.indextable ul { + margin-top: 0; + margin-bottom: 0; + list-style-type: none; +} + +table.indextable > tbody > tr > td > ul { + padding-left: 0em; +} + +table.indextable tr.pcap { + height: 10px; +} + +table.indextable tr.cap { + margin-top: 10px; + background-color: #f2f2f2; +} + +img.toggler { + margin-right: 3px; + margin-top: 3px; + cursor: pointer; +} + +div.modindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +div.genindex-jumpbox { + border-top: 1px solid #ddd; + border-bottom: 1px solid #ddd; + margin: 1em 0 1em 0; + padding: 0.4em; +} + +/* -- domain module index --------------------------------------------------- */ + +table.modindextable td { + padding: 2px; + border-collapse: collapse; +} + +/* -- general body styles --------------------------------------------------- */ + +div.body { + min-width: 360px; + max-width: 800px; +} + +div.body p, div.body dd, div.body li, div.body blockquote { + -moz-hyphens: auto; + -ms-hyphens: auto; + -webkit-hyphens: auto; + hyphens: auto; +} + +a.headerlink { + visibility: hidden; +} + +a:visited { + color: #551A8B; +} + +h1:hover > a.headerlink, +h2:hover > a.headerlink, +h3:hover > a.headerlink, +h4:hover > a.headerlink, +h5:hover > a.headerlink, +h6:hover > a.headerlink, +dt:hover > a.headerlink, +caption:hover > a.headerlink, +p.caption:hover > a.headerlink, +div.code-block-caption:hover > a.headerlink { + visibility: visible; +} + +div.body p.caption { + text-align: inherit; +} + +div.body td { + text-align: left; +} + +.first { + margin-top: 0 !important; +} + +p.rubric { + margin-top: 30px; + font-weight: bold; +} + +img.align-left, figure.align-left, .figure.align-left, object.align-left { + clear: left; + float: left; + margin-right: 1em; +} + +img.align-right, figure.align-right, .figure.align-right, object.align-right { + clear: right; + float: right; + margin-left: 1em; +} + +img.align-center, figure.align-center, .figure.align-center, object.align-center { + display: block; + margin-left: auto; + margin-right: auto; +} + +img.align-default, figure.align-default, .figure.align-default { + display: block; + margin-left: auto; + margin-right: auto; +} + +.align-left { + text-align: left; +} + +.align-center { + text-align: center; +} + +.align-default { + text-align: center; +} + +.align-right { + text-align: right; +} + +/* -- sidebars -------------------------------------------------------------- */ + +div.sidebar, +aside.sidebar { + margin: 0 0 0.5em 1em; + border: 1px solid #ddb; + padding: 7px; + background-color: #ffe; + width: 40%; + float: right; + clear: right; + overflow-x: auto; +} + +p.sidebar-title { + font-weight: bold; +} + +nav.contents, +aside.topic, +div.admonition, div.topic, blockquote { + clear: left; +} + +/* -- topics ---------------------------------------------------------------- */ + +nav.contents, +aside.topic, +div.topic { + border: 1px solid #ccc; + padding: 7px; + margin: 10px 0 10px 0; +} + +p.topic-title { + font-size: 1.1em; + font-weight: bold; + margin-top: 10px; +} + +/* -- admonitions ----------------------------------------------------------- */ + +div.admonition { + margin-top: 10px; + margin-bottom: 10px; + padding: 7px; +} + +div.admonition dt { + font-weight: bold; +} + +p.admonition-title { + margin: 0px 10px 5px 0px; + font-weight: bold; +} + +div.body p.centered { + text-align: center; + margin-top: 25px; +} + +/* -- content of sidebars/topics/admonitions -------------------------------- */ + +div.sidebar > :last-child, +aside.sidebar > :last-child, +nav.contents > :last-child, +aside.topic > :last-child, +div.topic > :last-child, +div.admonition > :last-child { + margin-bottom: 0; +} + +div.sidebar::after, +aside.sidebar::after, +nav.contents::after, +aside.topic::after, +div.topic::after, +div.admonition::after, +blockquote::after { + display: block; + content: ''; + clear: both; +} + +/* -- tables ---------------------------------------------------------------- */ + +table.docutils { + margin-top: 10px; + margin-bottom: 10px; + border: 0; + border-collapse: collapse; +} + +table.align-center { + margin-left: auto; + margin-right: auto; +} + +table.align-default { + margin-left: auto; + margin-right: auto; +} + +table caption span.caption-number { + font-style: italic; +} + +table caption span.caption-text { +} + +table.docutils td, table.docutils th { + padding: 1px 8px 1px 5px; + border-top: 0; + border-left: 0; + border-right: 0; + border-bottom: 1px solid #aaa; +} + +th { + text-align: left; + padding-right: 5px; +} + +table.citation { + border-left: solid 1px gray; + margin-left: 1px; +} + +table.citation td { + border-bottom: none; +} + +th > :first-child, +td > :first-child { + margin-top: 0px; +} + +th > :last-child, +td > :last-child { + margin-bottom: 0px; +} + +/* -- figures --------------------------------------------------------------- */ + +div.figure, figure { + margin: 0.5em; + padding: 0.5em; +} + +div.figure p.caption, figcaption { + padding: 0.3em; +} + +div.figure p.caption span.caption-number, +figcaption span.caption-number { + font-style: italic; +} + +div.figure p.caption span.caption-text, +figcaption span.caption-text { +} + +/* -- field list styles ----------------------------------------------------- */ + +table.field-list td, table.field-list th { + border: 0 !important; +} + +.field-list ul { + margin: 0; + padding-left: 1em; +} + +.field-list p { + margin: 0; +} + +.field-name { + -moz-hyphens: manual; + -ms-hyphens: manual; + -webkit-hyphens: manual; + hyphens: manual; +} + +/* -- hlist styles ---------------------------------------------------------- */ + +table.hlist { + margin: 1em 0; +} + +table.hlist td { + vertical-align: top; +} + +/* -- object description styles --------------------------------------------- */ + +.sig { + font-family: 'Consolas', 'Menlo', 'DejaVu Sans Mono', 'Bitstream Vera Sans Mono', monospace; +} + +.sig-name, code.descname { + background-color: transparent; + font-weight: bold; +} + +.sig-name { + font-size: 1.1em; +} + +code.descname { + font-size: 1.2em; +} + +.sig-prename, code.descclassname { + background-color: transparent; +} + +.optional { + font-size: 1.3em; +} + +.sig-paren { + font-size: larger; +} + +.sig-param.n { + font-style: italic; +} + +/* C++ specific styling */ + +.sig-inline.c-texpr, +.sig-inline.cpp-texpr { + font-family: unset; +} + +.sig.c .k, .sig.c .kt, +.sig.cpp .k, .sig.cpp .kt { + color: #0033B3; +} + +.sig.c .m, +.sig.cpp .m { + color: #1750EB; +} + +.sig.c .s, .sig.c .sc, +.sig.cpp .s, .sig.cpp .sc { + color: #067D17; +} + + +/* -- other body styles ----------------------------------------------------- */ + +ol.arabic { + list-style: decimal; +} + +ol.loweralpha { + list-style: lower-alpha; +} + +ol.upperalpha { + list-style: upper-alpha; +} + +ol.lowerroman { + list-style: lower-roman; +} + +ol.upperroman { + list-style: upper-roman; +} + +:not(li) > ol > li:first-child > :first-child, +:not(li) > ul > li:first-child > :first-child { + margin-top: 0px; +} + +:not(li) > ol > li:last-child > :last-child, +:not(li) > ul > li:last-child > :last-child { + margin-bottom: 0px; +} + +ol.simple ol p, +ol.simple ul p, +ul.simple ol p, +ul.simple ul p { + margin-top: 0; +} + +ol.simple > li:not(:first-child) > p, +ul.simple > li:not(:first-child) > p { + margin-top: 0; +} + +ol.simple p, +ul.simple p { + margin-bottom: 0; +} + +aside.footnote > span, +div.citation > span { + float: left; +} +aside.footnote > span:last-of-type, +div.citation > span:last-of-type { + padding-right: 0.5em; +} +aside.footnote > p { + margin-left: 2em; +} +div.citation > p { + margin-left: 4em; +} +aside.footnote > p:last-of-type, +div.citation > p:last-of-type { + margin-bottom: 0em; +} +aside.footnote > p:last-of-type:after, +div.citation > p:last-of-type:after { + content: ""; + clear: both; +} + +dl.field-list { + display: grid; + grid-template-columns: fit-content(30%) auto; +} + +dl.field-list > dt { + font-weight: bold; + word-break: break-word; + padding-left: 0.5em; + padding-right: 5px; +} + +dl.field-list > dd { + padding-left: 0.5em; + margin-top: 0em; + margin-left: 0em; + margin-bottom: 0em; +} + +dl { + margin-bottom: 15px; +} + +dd > :first-child { + margin-top: 0px; +} + +dd ul, dd table { + margin-bottom: 10px; +} + +dd { + margin-top: 3px; + margin-bottom: 10px; + margin-left: 30px; +} + +.sig dd { + margin-top: 0px; + margin-bottom: 0px; +} + +.sig dl { + margin-top: 0px; + margin-bottom: 0px; +} + +dl > dd:last-child, +dl > dd:last-child > :last-child { + margin-bottom: 0; +} + +dt:target, span.highlighted { + background-color: #fbe54e; +} + +rect.highlighted { + fill: #fbe54e; +} + +dl.glossary dt { + font-weight: bold; + font-size: 1.1em; +} + +.versionmodified { + font-style: italic; +} + +.system-message { + background-color: #fda; + padding: 5px; + border: 3px solid red; +} + +.footnote:target { + background-color: #ffa; +} + +.line-block { + display: block; + margin-top: 1em; + margin-bottom: 1em; +} + +.line-block .line-block { + margin-top: 0; + margin-bottom: 0; + margin-left: 1.5em; +} + +.guilabel, .menuselection { + font-family: sans-serif; +} + +.accelerator { + text-decoration: underline; +} + +.classifier { + font-style: oblique; +} + +.classifier:before { + font-style: normal; + margin: 0 0.5em; + content: ":"; + display: inline-block; +} + +abbr, acronym { + border-bottom: dotted 1px; + cursor: help; +} + +.translated { + background-color: rgba(207, 255, 207, 0.2) +} + +.untranslated { + background-color: rgba(255, 207, 207, 0.2) +} + +/* -- code displays --------------------------------------------------------- */ + +pre { + overflow: auto; + overflow-y: hidden; /* fixes display issues on Chrome browsers */ +} + +pre, div[class*="highlight-"] { + clear: both; +} + +span.pre { + -moz-hyphens: none; + -ms-hyphens: none; + -webkit-hyphens: none; + hyphens: none; + white-space: nowrap; +} + +div[class*="highlight-"] { + margin: 1em 0; +} + +td.linenos pre { + border: 0; + background-color: transparent; + color: #aaa; +} + +table.highlighttable { + display: block; +} + +table.highlighttable tbody { + display: block; +} + +table.highlighttable tr { + display: flex; +} + +table.highlighttable td { + margin: 0; + padding: 0; +} + +table.highlighttable td.linenos { + padding-right: 0.5em; +} + +table.highlighttable td.code { + flex: 1; + overflow: hidden; +} + +.highlight .hll { + display: block; +} + +div.highlight pre, +table.highlighttable pre { + margin: 0; +} + +div.code-block-caption + div { + margin-top: 0; +} + +div.code-block-caption { + margin-top: 1em; + padding: 2px 5px; + font-size: small; +} + +div.code-block-caption code { + background-color: transparent; +} + +table.highlighttable td.linenos, +span.linenos, +div.highlight span.gp { /* gp: Generic.Prompt */ + user-select: none; + -webkit-user-select: text; /* Safari fallback only */ + -webkit-user-select: none; /* Chrome/Safari */ + -moz-user-select: none; /* Firefox */ + -ms-user-select: none; /* IE10+ */ +} + +div.code-block-caption span.caption-number { + padding: 0.1em 0.3em; + font-style: italic; +} + +div.code-block-caption span.caption-text { +} + +div.literal-block-wrapper { + margin: 1em 0; +} + +code.xref, a code { + background-color: transparent; + font-weight: bold; +} + +h1 code, h2 code, h3 code, h4 code, h5 code, h6 code { + background-color: transparent; +} + +.viewcode-link { + float: right; +} + +.viewcode-back { + float: right; + font-family: sans-serif; +} + +div.viewcode-block:target { + margin: -1px -10px; + padding: 0 10px; +} + +/* -- math display ---------------------------------------------------------- */ + +img.math { + vertical-align: middle; +} + +div.body div.math p { + text-align: center; +} + +span.eqno { + float: right; +} + +span.eqno a.headerlink { + position: absolute; + z-index: 1; +} + +div.math:hover a.headerlink { + visibility: visible; +} + +/* -- printout stylesheet --------------------------------------------------- */ + +@media print { + div.document, + div.documentwrapper, + div.bodywrapper { + margin: 0 !important; + width: 100%; + } + + div.sphinxsidebar, + div.related, + div.footer, + #top-link { + display: none; + } +} \ No newline at end of file diff --git a/_static/check-solid.svg b/_static/check-solid.svg new file mode 100644 index 0000000..92fad4b --- /dev/null +++ b/_static/check-solid.svg @@ -0,0 +1,4 @@ + + + + diff --git a/_static/clipboard.min.js b/_static/clipboard.min.js new file mode 100644 index 0000000..54b3c46 --- /dev/null +++ b/_static/clipboard.min.js @@ -0,0 +1,7 @@ +/*! + * clipboard.js v2.0.8 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */ +!function(t,e){"object"==typeof exports&&"object"==typeof module?module.exports=e():"function"==typeof define&&define.amd?define([],e):"object"==typeof exports?exports.ClipboardJS=e():t.ClipboardJS=e()}(this,function(){return n={686:function(t,e,n){"use strict";n.d(e,{default:function(){return o}});var e=n(279),i=n.n(e),e=n(370),u=n.n(e),e=n(817),c=n.n(e);function a(t){try{return document.execCommand(t)}catch(t){return}}var f=function(t){t=c()(t);return a("cut"),t};var l=function(t){var e,n,o,r=1 + + + + diff --git a/_static/copybutton.css b/_static/copybutton.css new file mode 100644 index 0000000..f1916ec --- /dev/null +++ b/_static/copybutton.css @@ -0,0 +1,94 @@ +/* Copy buttons */ +button.copybtn { + position: absolute; + display: flex; + top: .3em; + right: .3em; + width: 1.7em; + height: 1.7em; + opacity: 0; + transition: opacity 0.3s, border .3s, background-color .3s; + user-select: none; + padding: 0; + border: none; + outline: none; + border-radius: 0.4em; + /* The colors that GitHub uses */ + border: #1b1f2426 1px solid; + background-color: #f6f8fa; + color: #57606a; +} + +button.copybtn.success { + border-color: #22863a; + color: #22863a; +} + +button.copybtn svg { + stroke: currentColor; + width: 1.5em; + height: 1.5em; + padding: 0.1em; +} + +div.highlight { + position: relative; +} + +/* Show the copybutton */ +.highlight:hover button.copybtn, button.copybtn.success { + opacity: 1; +} + +.highlight button.copybtn:hover { + background-color: rgb(235, 235, 235); +} + +.highlight button.copybtn:active { + background-color: rgb(187, 187, 187); +} + +/** + * A minimal CSS-only tooltip copied from: + * https://codepen.io/mildrenben/pen/rVBrpK + * + * To use, write HTML like the following: + * + *

Short

+ */ + .o-tooltip--left { + position: relative; + } + + .o-tooltip--left:after { + opacity: 0; + visibility: hidden; + position: absolute; + content: attr(data-tooltip); + padding: .2em; + font-size: .8em; + left: -.2em; + background: grey; + color: white; + white-space: nowrap; + z-index: 2; + border-radius: 2px; + transform: translateX(-102%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); +} + +.o-tooltip--left:hover:after { + display: block; + opacity: 1; + visibility: visible; + transform: translateX(-100%) translateY(0); + transition: opacity 0.2s cubic-bezier(0.64, 0.09, 0.08, 1), transform 0.2s cubic-bezier(0.64, 0.09, 0.08, 1); + transition-delay: .5s; +} + +/* By default the copy button shouldn't show up when printing a page */ +@media print { + button.copybtn { + display: none; + } +} diff --git a/_static/copybutton.js b/_static/copybutton.js new file mode 100644 index 0000000..2ea7ff3 --- /dev/null +++ b/_static/copybutton.js @@ -0,0 +1,248 @@ +// Localization support +const messages = { + 'en': { + 'copy': 'Copy', + 'copy_to_clipboard': 'Copy to clipboard', + 'copy_success': 'Copied!', + 'copy_failure': 'Failed to copy', + }, + 'es' : { + 'copy': 'Copiar', + 'copy_to_clipboard': 'Copiar al portapapeles', + 'copy_success': '¡Copiado!', + 'copy_failure': 'Error al copiar', + }, + 'de' : { + 'copy': 'Kopieren', + 'copy_to_clipboard': 'In die Zwischenablage kopieren', + 'copy_success': 'Kopiert!', + 'copy_failure': 'Fehler beim Kopieren', + }, + 'fr' : { + 'copy': 'Copier', + 'copy_to_clipboard': 'Copier dans le presse-papier', + 'copy_success': 'Copié !', + 'copy_failure': 'Échec de la copie', + }, + 'ru': { + 'copy': 'Скопировать', + 'copy_to_clipboard': 'Скопировать в буфер', + 'copy_success': 'Скопировано!', + 'copy_failure': 'Не удалось скопировать', + }, + 'zh-CN': { + 'copy': '复制', + 'copy_to_clipboard': '复制到剪贴板', + 'copy_success': '复制成功!', + 'copy_failure': '复制失败', + }, + 'it' : { + 'copy': 'Copiare', + 'copy_to_clipboard': 'Copiato negli appunti', + 'copy_success': 'Copiato!', + 'copy_failure': 'Errore durante la copia', + } +} + +let locale = 'en' +if( document.documentElement.lang !== undefined + && messages[document.documentElement.lang] !== undefined ) { + locale = document.documentElement.lang +} + +let doc_url_root = DOCUMENTATION_OPTIONS.URL_ROOT; +if (doc_url_root == '#') { + doc_url_root = ''; +} + +/** + * SVG files for our copy buttons + */ +let iconCheck = ` + ${messages[locale]['copy_success']} + + +` + +// If the user specified their own SVG use that, otherwise use the default +let iconCopy = ``; +if (!iconCopy) { + iconCopy = ` + ${messages[locale]['copy_to_clipboard']} + + + +` +} + +/** + * Set up copy/paste for code blocks + */ + +const runWhenDOMLoaded = cb => { + if (document.readyState != 'loading') { + cb() + } else if (document.addEventListener) { + document.addEventListener('DOMContentLoaded', cb) + } else { + document.attachEvent('onreadystatechange', function() { + if (document.readyState == 'complete') cb() + }) + } +} + +const codeCellId = index => `codecell${index}` + +// Clears selected text since ClipboardJS will select the text when copying +const clearSelection = () => { + if (window.getSelection) { + window.getSelection().removeAllRanges() + } else if (document.selection) { + document.selection.empty() + } +} + +// Changes tooltip text for a moment, then changes it back +// We want the timeout of our `success` class to be a bit shorter than the +// tooltip and icon change, so that we can hide the icon before changing back. +var timeoutIcon = 2000; +var timeoutSuccessClass = 1500; + +const temporarilyChangeTooltip = (el, oldText, newText) => { + el.setAttribute('data-tooltip', newText) + el.classList.add('success') + // Remove success a little bit sooner than we change the tooltip + // So that we can use CSS to hide the copybutton first + setTimeout(() => el.classList.remove('success'), timeoutSuccessClass) + setTimeout(() => el.setAttribute('data-tooltip', oldText), timeoutIcon) +} + +// Changes the copy button icon for two seconds, then changes it back +const temporarilyChangeIcon = (el) => { + el.innerHTML = iconCheck; + setTimeout(() => {el.innerHTML = iconCopy}, timeoutIcon) +} + +const addCopyButtonToCodeCells = () => { + // If ClipboardJS hasn't loaded, wait a bit and try again. This + // happens because we load ClipboardJS asynchronously. + if (window.ClipboardJS === undefined) { + setTimeout(addCopyButtonToCodeCells, 250) + return + } + + // Add copybuttons to all of our code cells + const COPYBUTTON_SELECTOR = 'div.highlight pre'; + const codeCells = document.querySelectorAll(COPYBUTTON_SELECTOR) + codeCells.forEach((codeCell, index) => { + const id = codeCellId(index) + codeCell.setAttribute('id', id) + + const clipboardButton = id => + `` + codeCell.insertAdjacentHTML('afterend', clipboardButton(id)) + }) + +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} + + +var copyTargetText = (trigger) => { + var target = document.querySelector(trigger.attributes['data-clipboard-target'].value); + + // get filtered text + let exclude = '.linenos'; + + let text = filterText(target, exclude); + return formatCopyText(text, '', false, true, true, true, '', '') +} + + // Initialize with a callback so we can modify the text before copy + const clipboard = new ClipboardJS('.copybtn', {text: copyTargetText}) + + // Update UI with error/success messages + clipboard.on('success', event => { + clearSelection() + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_success']) + temporarilyChangeIcon(event.trigger) + }) + + clipboard.on('error', event => { + temporarilyChangeTooltip(event.trigger, messages[locale]['copy'], messages[locale]['copy_failure']) + }) +} + +runWhenDOMLoaded(addCopyButtonToCodeCells) \ No newline at end of file diff --git a/_static/copybutton_funcs.js b/_static/copybutton_funcs.js new file mode 100644 index 0000000..dbe1aaa --- /dev/null +++ b/_static/copybutton_funcs.js @@ -0,0 +1,73 @@ +function escapeRegExp(string) { + return string.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); // $& means the whole matched string +} + +/** + * Removes excluded text from a Node. + * + * @param {Node} target Node to filter. + * @param {string} exclude CSS selector of nodes to exclude. + * @returns {DOMString} Text from `target` with text removed. + */ +export function filterText(target, exclude) { + const clone = target.cloneNode(true); // clone as to not modify the live DOM + if (exclude) { + // remove excluded nodes + clone.querySelectorAll(exclude).forEach(node => node.remove()); + } + return clone.innerText; +} + +// Callback when a copy button is clicked. Will be passed the node that was clicked +// should then grab the text and replace pieces of text that shouldn't be used in output +export function formatCopyText(textContent, copybuttonPromptText, isRegexp = false, onlyCopyPromptLines = true, removePrompts = true, copyEmptyLines = true, lineContinuationChar = "", hereDocDelim = "") { + var regexp; + var match; + + // Do we check for line continuation characters and "HERE-documents"? + var useLineCont = !!lineContinuationChar + var useHereDoc = !!hereDocDelim + + // create regexp to capture prompt and remaining line + if (isRegexp) { + regexp = new RegExp('^(' + copybuttonPromptText + ')(.*)') + } else { + regexp = new RegExp('^(' + escapeRegExp(copybuttonPromptText) + ')(.*)') + } + + const outputLines = []; + var promptFound = false; + var gotLineCont = false; + var gotHereDoc = false; + const lineGotPrompt = []; + for (const line of textContent.split('\n')) { + match = line.match(regexp) + if (match || gotLineCont || gotHereDoc) { + promptFound = regexp.test(line) + lineGotPrompt.push(promptFound) + if (removePrompts && promptFound) { + outputLines.push(match[2]) + } else { + outputLines.push(line) + } + gotLineCont = line.endsWith(lineContinuationChar) & useLineCont + if (line.includes(hereDocDelim) & useHereDoc) + gotHereDoc = !gotHereDoc + } else if (!onlyCopyPromptLines) { + outputLines.push(line) + } else if (copyEmptyLines && line.trim() === '') { + outputLines.push(line) + } + } + + // If no lines with the prompt were found then just use original lines + if (lineGotPrompt.some(v => v === true)) { + textContent = outputLines.join('\n'); + } + + // Remove a trailing newline to avoid auto-running when pasting + if (textContent.endsWith("\n")) { + textContent = textContent.slice(0, -1) + } + return textContent +} diff --git a/_static/debug.css b/_static/debug.css new file mode 100644 index 0000000..74d4aec --- /dev/null +++ b/_static/debug.css @@ -0,0 +1,69 @@ +/* + This CSS file should be overridden by the theme authors. It's + meant for debugging and developing the skeleton that this theme provides. +*/ +body { + font-family: -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif, + "Apple Color Emoji", "Segoe UI Emoji"; + background: lavender; +} +.sb-announcement { + background: rgb(131, 131, 131); +} +.sb-announcement__inner { + background: black; + color: white; +} +.sb-header { + background: lightskyblue; +} +.sb-header__inner { + background: royalblue; + color: white; +} +.sb-header-secondary { + background: lightcyan; +} +.sb-header-secondary__inner { + background: cornflowerblue; + color: white; +} +.sb-sidebar-primary { + background: lightgreen; +} +.sb-main { + background: blanchedalmond; +} +.sb-main__inner { + background: antiquewhite; +} +.sb-header-article { + background: lightsteelblue; +} +.sb-article-container { + background: snow; +} +.sb-article-main { + background: white; +} +.sb-footer-article { + background: lightpink; +} +.sb-sidebar-secondary { + background: lightgoldenrodyellow; +} +.sb-footer-content { + background: plum; +} +.sb-footer-content__inner { + background: palevioletred; +} +.sb-footer { + background: pink; +} +.sb-footer__inner { + background: salmon; +} +.sb-article { + background: white; +} diff --git a/_static/design-tabs.js b/_static/design-tabs.js new file mode 100644 index 0000000..b25bd6a --- /dev/null +++ b/_static/design-tabs.js @@ -0,0 +1,101 @@ +// @ts-check + +// Extra JS capability for selected tabs to be synced +// The selection is stored in local storage so that it persists across page loads. + +/** + * @type {Record} + */ +let sd_id_to_elements = {}; +const storageKeyPrefix = "sphinx-design-tab-id-"; + +/** + * Create a key for a tab element. + * @param {HTMLElement} el - The tab element. + * @returns {[string, string, string] | null} - The key. + * + */ +function create_key(el) { + let syncId = el.getAttribute("data-sync-id"); + let syncGroup = el.getAttribute("data-sync-group"); + if (!syncId || !syncGroup) return null; + return [syncGroup, syncId, syncGroup + "--" + syncId]; +} + +/** + * Initialize the tab selection. + * + */ +function ready() { + // Find all tabs with sync data + + /** @type {string[]} */ + let groups = []; + + document.querySelectorAll(".sd-tab-label").forEach((label) => { + if (label instanceof HTMLElement) { + let data = create_key(label); + if (data) { + let [group, id, key] = data; + + // add click event listener + // @ts-ignore + label.onclick = onSDLabelClick; + + // store map of key to elements + if (!sd_id_to_elements[key]) { + sd_id_to_elements[key] = []; + } + sd_id_to_elements[key].push(label); + + if (groups.indexOf(group) === -1) { + groups.push(group); + // Check if a specific tab has been selected via URL parameter + const tabParam = new URLSearchParams(window.location.search).get( + group + ); + if (tabParam) { + console.log( + "sphinx-design: Selecting tab id for group '" + + group + + "' from URL parameter: " + + tabParam + ); + window.sessionStorage.setItem(storageKeyPrefix + group, tabParam); + } + } + + // Check is a specific tab has been selected previously + let previousId = window.sessionStorage.getItem( + storageKeyPrefix + group + ); + if (previousId === id) { + // console.log( + // "sphinx-design: Selecting tab from session storage: " + id + // ); + // @ts-ignore + label.previousElementSibling.checked = true; + } + } + } + }); +} + +/** + * Activate other tabs with the same sync id. + * + * @this {HTMLElement} - The element that was clicked. + */ +function onSDLabelClick() { + let data = create_key(this); + if (!data) return; + let [group, id, key] = data; + for (const label of sd_id_to_elements[key]) { + if (label === this) continue; + // @ts-ignore + label.previousElementSibling.checked = true; + } + window.sessionStorage.setItem(storageKeyPrefix + group, id); +} + +document.addEventListener("DOMContentLoaded", ready, false); diff --git a/_static/doctools.js b/_static/doctools.js new file mode 100644 index 0000000..d06a71d --- /dev/null +++ b/_static/doctools.js @@ -0,0 +1,156 @@ +/* + * doctools.js + * ~~~~~~~~~~~ + * + * Base JavaScript utilities for all Sphinx HTML documentation. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +const BLACKLISTED_KEY_CONTROL_ELEMENTS = new Set([ + "TEXTAREA", + "INPUT", + "SELECT", + "BUTTON", +]); + +const _ready = (callback) => { + if (document.readyState !== "loading") { + callback(); + } else { + document.addEventListener("DOMContentLoaded", callback); + } +}; + +/** + * Small JavaScript module for the documentation. + */ +const Documentation = { + init: () => { + Documentation.initDomainIndexTable(); + Documentation.initOnKeyListeners(); + }, + + /** + * i18n support + */ + TRANSLATIONS: {}, + PLURAL_EXPR: (n) => (n === 1 ? 0 : 1), + LOCALE: "unknown", + + // gettext and ngettext don't access this so that the functions + // can safely bound to a different name (_ = Documentation.gettext) + gettext: (string) => { + const translated = Documentation.TRANSLATIONS[string]; + switch (typeof translated) { + case "undefined": + return string; // no translation + case "string": + return translated; // translation exists + default: + return translated[0]; // (singular, plural) translation tuple exists + } + }, + + ngettext: (singular, plural, n) => { + const translated = Documentation.TRANSLATIONS[singular]; + if (typeof translated !== "undefined") + return translated[Documentation.PLURAL_EXPR(n)]; + return n === 1 ? singular : plural; + }, + + addTranslations: (catalog) => { + Object.assign(Documentation.TRANSLATIONS, catalog.messages); + Documentation.PLURAL_EXPR = new Function( + "n", + `return (${catalog.plural_expr})` + ); + Documentation.LOCALE = catalog.locale; + }, + + /** + * helper function to focus on search bar + */ + focusSearchBar: () => { + document.querySelectorAll("input[name=q]")[0]?.focus(); + }, + + /** + * Initialise the domain index toggle buttons + */ + initDomainIndexTable: () => { + const toggler = (el) => { + const idNumber = el.id.substr(7); + const toggledRows = document.querySelectorAll(`tr.cg-${idNumber}`); + if (el.src.substr(-9) === "minus.png") { + el.src = `${el.src.substr(0, el.src.length - 9)}plus.png`; + toggledRows.forEach((el) => (el.style.display = "none")); + } else { + el.src = `${el.src.substr(0, el.src.length - 8)}minus.png`; + toggledRows.forEach((el) => (el.style.display = "")); + } + }; + + const togglerElements = document.querySelectorAll("img.toggler"); + togglerElements.forEach((el) => + el.addEventListener("click", (event) => toggler(event.currentTarget)) + ); + togglerElements.forEach((el) => (el.style.display = "")); + if (DOCUMENTATION_OPTIONS.COLLAPSE_INDEX) togglerElements.forEach(toggler); + }, + + initOnKeyListeners: () => { + // only install a listener if it is really needed + if ( + !DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS && + !DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS + ) + return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.altKey || event.ctrlKey || event.metaKey) return; + + if (!event.shiftKey) { + switch (event.key) { + case "ArrowLeft": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const prevLink = document.querySelector('link[rel="prev"]'); + if (prevLink && prevLink.href) { + window.location.href = prevLink.href; + event.preventDefault(); + } + break; + case "ArrowRight": + if (!DOCUMENTATION_OPTIONS.NAVIGATION_WITH_KEYS) break; + + const nextLink = document.querySelector('link[rel="next"]'); + if (nextLink && nextLink.href) { + window.location.href = nextLink.href; + event.preventDefault(); + } + break; + } + } + + // some keyboard layouts may need Shift to get / + switch (event.key) { + case "/": + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) break; + Documentation.focusSearchBar(); + event.preventDefault(); + } + }); + }, +}; + +// quick alias for translations +const _ = Documentation.gettext; + +_ready(Documentation.init); diff --git a/_static/documentation_options.js b/_static/documentation_options.js new file mode 100644 index 0000000..13d90ff --- /dev/null +++ b/_static/documentation_options.js @@ -0,0 +1,13 @@ +const DOCUMENTATION_OPTIONS = { + VERSION: '0.1.0', + LANGUAGE: 'en', + COLLAPSE_INDEX: false, + BUILDER: 'html', + FILE_SUFFIX: '.html', + LINK_SUFFIX: '.html', + HAS_SOURCE: true, + SOURCELINK_SUFFIX: '.txt', + NAVIGATION_WITH_KEYS: false, + SHOW_SEARCH_SUMMARY: true, + ENABLE_SEARCH_SHORTCUTS: true, +}; \ No newline at end of file diff --git a/_static/file.png b/_static/file.png new file mode 100644 index 0000000000000000000000000000000000000000..a858a410e4faa62ce324d814e4b816fff83a6fb3 GIT binary patch literal 286 zcmV+(0pb3MP)s`hMrGg#P~ix$^RISR_I47Y|r1 z_CyJOe}D1){SET-^Amu_i71Lt6eYfZjRyw@I6OQAIXXHDfiX^GbOlHe=Ae4>0m)d(f|Me07*qoM6N<$f}vM^LjV8( literal 0 HcmV?d00001 diff --git a/_static/graphviz.css b/_static/graphviz.css new file mode 100644 index 0000000..8d81c02 --- /dev/null +++ b/_static/graphviz.css @@ -0,0 +1,19 @@ +/* + * graphviz.css + * ~~~~~~~~~~~~ + * + * Sphinx stylesheet -- graphviz extension. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +img.graphviz { + border: 0; + max-width: 100%; +} + +object.graphviz { + max-width: 100%; +} diff --git a/_static/language_data.js b/_static/language_data.js new file mode 100644 index 0000000..250f566 --- /dev/null +++ b/_static/language_data.js @@ -0,0 +1,199 @@ +/* + * language_data.js + * ~~~~~~~~~~~~~~~~ + * + * This script contains the language-specific data used by searchtools.js, + * namely the list of stopwords, stemmer, scorer and splitter. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ + +var stopwords = ["a", "and", "are", "as", "at", "be", "but", "by", "for", "if", "in", "into", "is", "it", "near", "no", "not", "of", "on", "or", "such", "that", "the", "their", "then", "there", "these", "they", "this", "to", "was", "will", "with"]; + + +/* Non-minified version is copied as a separate JS file, is available */ + +/** + * Porter Stemmer + */ +var Stemmer = function() { + + var step2list = { + ational: 'ate', + tional: 'tion', + enci: 'ence', + anci: 'ance', + izer: 'ize', + bli: 'ble', + alli: 'al', + entli: 'ent', + eli: 'e', + ousli: 'ous', + ization: 'ize', + ation: 'ate', + ator: 'ate', + alism: 'al', + iveness: 'ive', + fulness: 'ful', + ousness: 'ous', + aliti: 'al', + iviti: 'ive', + biliti: 'ble', + logi: 'log' + }; + + var step3list = { + icate: 'ic', + ative: '', + alize: 'al', + iciti: 'ic', + ical: 'ic', + ful: '', + ness: '' + }; + + var c = "[^aeiou]"; // consonant + var v = "[aeiouy]"; // vowel + var C = c + "[^aeiouy]*"; // consonant sequence + var V = v + "[aeiou]*"; // vowel sequence + + var mgr0 = "^(" + C + ")?" + V + C; // [C]VC... is m>0 + var meq1 = "^(" + C + ")?" + V + C + "(" + V + ")?$"; // [C]VC[V] is m=1 + var mgr1 = "^(" + C + ")?" + V + C + V + C; // [C]VCVC... is m>1 + var s_v = "^(" + C + ")?" + v; // vowel in stem + + this.stemWord = function (w) { + var stem; + var suffix; + var firstch; + var origword = w; + + if (w.length < 3) + return w; + + var re; + var re2; + var re3; + var re4; + + firstch = w.substr(0,1); + if (firstch == "y") + w = firstch.toUpperCase() + w.substr(1); + + // Step 1a + re = /^(.+?)(ss|i)es$/; + re2 = /^(.+?)([^s])s$/; + + if (re.test(w)) + w = w.replace(re,"$1$2"); + else if (re2.test(w)) + w = w.replace(re2,"$1$2"); + + // Step 1b + re = /^(.+?)eed$/; + re2 = /^(.+?)(ed|ing)$/; + if (re.test(w)) { + var fp = re.exec(w); + re = new RegExp(mgr0); + if (re.test(fp[1])) { + re = /.$/; + w = w.replace(re,""); + } + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1]; + re2 = new RegExp(s_v); + if (re2.test(stem)) { + w = stem; + re2 = /(at|bl|iz)$/; + re3 = new RegExp("([^aeiouylsz])\\1$"); + re4 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re2.test(w)) + w = w + "e"; + else if (re3.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + else if (re4.test(w)) + w = w + "e"; + } + } + + // Step 1c + re = /^(.+?)y$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(s_v); + if (re.test(stem)) + w = stem + "i"; + } + + // Step 2 + re = /^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step2list[suffix]; + } + + // Step 3 + re = /^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + suffix = fp[2]; + re = new RegExp(mgr0); + if (re.test(stem)) + w = stem + step3list[suffix]; + } + + // Step 4 + re = /^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/; + re2 = /^(.+?)(s|t)(ion)$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + if (re.test(stem)) + w = stem; + } + else if (re2.test(w)) { + var fp = re2.exec(w); + stem = fp[1] + fp[2]; + re2 = new RegExp(mgr1); + if (re2.test(stem)) + w = stem; + } + + // Step 5 + re = /^(.+?)e$/; + if (re.test(w)) { + var fp = re.exec(w); + stem = fp[1]; + re = new RegExp(mgr1); + re2 = new RegExp(meq1); + re3 = new RegExp("^" + C + v + "[^aeiouwxy]$"); + if (re.test(stem) || (re2.test(stem) && !(re3.test(stem)))) + w = stem; + } + re = /ll$/; + re2 = new RegExp(mgr1); + if (re.test(w) && re2.test(w)) { + re = /.$/; + w = w.replace(re,""); + } + + // and turn initial Y back to y + if (firstch == "y") + w = firstch.toLowerCase() + w.substr(1); + return w; + } +} + diff --git a/_static/minus.png b/_static/minus.png new file mode 100644 index 0000000000000000000000000000000000000000..d96755fdaf8bb2214971e0db9c1fd3077d7c419d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu=nj kDsEF_5m^0CR;1wuP-*O&G^0G}KYk!hp00i_>zopr08q^qX#fBK literal 0 HcmV?d00001 diff --git a/_static/plus.png b/_static/plus.png new file mode 100644 index 0000000000000000000000000000000000000000..7107cec93a979b9a5f64843235a16651d563ce2d GIT binary patch literal 90 zcmeAS@N?(olHy`uVBq!ia0vp^+#t*WBp7;*Yy1LIik>cxAr*|t7R?Mi>2?kWtu>-2 m3q%Vub%g%s<8sJhVPMczOq}xhg9DJoz~JfX=d#Wzp$Pyb1r*Kz literal 0 HcmV?d00001 diff --git a/_static/pygments.css b/_static/pygments.css new file mode 100644 index 0000000..d0ae3b8 --- /dev/null +++ b/_static/pygments.css @@ -0,0 +1,249 @@ +.highlight pre { line-height: 125%; } +.highlight td.linenos .normal { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos { color: inherit; background-color: transparent; padding-left: 5px; padding-right: 5px; } +.highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +.highlight .hll { background-color: #ffffcc } +.highlight { background: #eeffcc; } +.highlight .c { color: #408090; font-style: italic } /* Comment */ +.highlight .err { border: 1px solid #FF0000 } /* Error */ +.highlight .k { color: #007020; font-weight: bold } /* Keyword */ +.highlight .o { color: #666666 } /* Operator */ +.highlight .ch { color: #408090; font-style: italic } /* Comment.Hashbang */ +.highlight .cm { color: #408090; font-style: italic } /* Comment.Multiline */ +.highlight .cp { color: #007020 } /* Comment.Preproc */ +.highlight .cpf { color: #408090; font-style: italic } /* Comment.PreprocFile */ +.highlight .c1 { color: #408090; font-style: italic } /* Comment.Single */ +.highlight .cs { color: #408090; background-color: #fff0f0 } /* Comment.Special */ +.highlight .gd { color: #A00000 } /* Generic.Deleted */ +.highlight .ge { font-style: italic } /* Generic.Emph */ +.highlight .ges { font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +.highlight .gr { color: #FF0000 } /* Generic.Error */ +.highlight .gh { color: #000080; font-weight: bold } /* Generic.Heading */ +.highlight .gi { color: #00A000 } /* Generic.Inserted */ +.highlight .go { color: #333333 } /* Generic.Output */ +.highlight .gp { color: #c65d09; font-weight: bold } /* Generic.Prompt */ +.highlight .gs { font-weight: bold } /* Generic.Strong */ +.highlight .gu { color: #800080; font-weight: bold } /* Generic.Subheading */ +.highlight .gt { color: #0044DD } /* Generic.Traceback */ +.highlight .kc { color: #007020; font-weight: bold } /* Keyword.Constant */ +.highlight .kd { color: #007020; font-weight: bold } /* Keyword.Declaration */ +.highlight .kn { color: #007020; font-weight: bold } /* Keyword.Namespace */ +.highlight .kp { color: #007020 } /* Keyword.Pseudo */ +.highlight .kr { color: #007020; font-weight: bold } /* Keyword.Reserved */ +.highlight .kt { color: #902000 } /* Keyword.Type */ +.highlight .m { color: #208050 } /* Literal.Number */ +.highlight .s { color: #4070a0 } /* Literal.String */ +.highlight .na { color: #4070a0 } /* Name.Attribute */ +.highlight .nb { color: #007020 } /* Name.Builtin */ +.highlight .nc { color: #0e84b5; font-weight: bold } /* Name.Class */ +.highlight .no { color: #60add5 } /* Name.Constant */ +.highlight .nd { color: #555555; font-weight: bold } /* Name.Decorator */ +.highlight .ni { color: #d55537; font-weight: bold } /* Name.Entity */ +.highlight .ne { color: #007020 } /* Name.Exception */ +.highlight .nf { color: #06287e } /* Name.Function */ +.highlight .nl { color: #002070; font-weight: bold } /* Name.Label */ +.highlight .nn { color: #0e84b5; font-weight: bold } /* Name.Namespace */ +.highlight .nt { color: #062873; font-weight: bold } /* Name.Tag */ +.highlight .nv { color: #bb60d5 } /* Name.Variable */ +.highlight .ow { color: #007020; font-weight: bold } /* Operator.Word */ +.highlight .w { color: #bbbbbb } /* Text.Whitespace */ +.highlight .mb { color: #208050 } /* Literal.Number.Bin */ +.highlight .mf { color: #208050 } /* Literal.Number.Float */ +.highlight .mh { color: #208050 } /* Literal.Number.Hex */ +.highlight .mi { color: #208050 } /* Literal.Number.Integer */ +.highlight .mo { color: #208050 } /* Literal.Number.Oct */ +.highlight .sa { color: #4070a0 } /* Literal.String.Affix */ +.highlight .sb { color: #4070a0 } /* Literal.String.Backtick */ +.highlight .sc { color: #4070a0 } /* Literal.String.Char */ +.highlight .dl { color: #4070a0 } /* Literal.String.Delimiter */ +.highlight .sd { color: #4070a0; font-style: italic } /* Literal.String.Doc */ +.highlight .s2 { color: #4070a0 } /* Literal.String.Double */ +.highlight .se { color: #4070a0; font-weight: bold } /* Literal.String.Escape */ +.highlight .sh { color: #4070a0 } /* Literal.String.Heredoc */ +.highlight .si { color: #70a0d0; font-style: italic } /* Literal.String.Interpol */ +.highlight .sx { color: #c65d09 } /* Literal.String.Other */ +.highlight .sr { color: #235388 } /* Literal.String.Regex */ +.highlight .s1 { color: #4070a0 } /* Literal.String.Single */ +.highlight .ss { color: #517918 } /* Literal.String.Symbol */ +.highlight .bp { color: #007020 } /* Name.Builtin.Pseudo */ +.highlight .fm { color: #06287e } /* Name.Function.Magic */ +.highlight .vc { color: #bb60d5 } /* Name.Variable.Class */ +.highlight .vg { color: #bb60d5 } /* Name.Variable.Global */ +.highlight .vi { color: #bb60d5 } /* Name.Variable.Instance */ +.highlight .vm { color: #bb60d5 } /* Name.Variable.Magic */ +.highlight .il { color: #208050 } /* Literal.Number.Integer.Long */ +@media not print { +body[data-theme="dark"] .highlight pre { line-height: 125%; } +body[data-theme="dark"] .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body[data-theme="dark"] .highlight .hll { background-color: #404040 } +body[data-theme="dark"] .highlight { background: #202020; color: #d0d0d0 } +body[data-theme="dark"] .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body[data-theme="dark"] .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body[data-theme="dark"] .highlight .esc { color: #d0d0d0 } /* Escape */ +body[data-theme="dark"] .highlight .g { color: #d0d0d0 } /* Generic */ +body[data-theme="dark"] .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body[data-theme="dark"] .highlight .l { color: #d0d0d0 } /* Literal */ +body[data-theme="dark"] .highlight .n { color: #d0d0d0 } /* Name */ +body[data-theme="dark"] .highlight .o { color: #d0d0d0 } /* Operator */ +body[data-theme="dark"] .highlight .x { color: #d0d0d0 } /* Other */ +body[data-theme="dark"] .highlight .p { color: #d0d0d0 } /* Punctuation */ +body[data-theme="dark"] .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body[data-theme="dark"] .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body[data-theme="dark"] .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body[data-theme="dark"] .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body[data-theme="dark"] .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body[data-theme="dark"] .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body[data-theme="dark"] .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body[data-theme="dark"] .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body[data-theme="dark"] .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body[data-theme="dark"] .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body[data-theme="dark"] .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body[data-theme="dark"] .highlight .gi { color: #589819 } /* Generic.Inserted */ +body[data-theme="dark"] .highlight .go { color: #cccccc } /* Generic.Output */ +body[data-theme="dark"] .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body[data-theme="dark"] .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body[data-theme="dark"] .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body[data-theme="dark"] .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body[data-theme="dark"] .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body[data-theme="dark"] .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body[data-theme="dark"] .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body[data-theme="dark"] .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body[data-theme="dark"] .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body[data-theme="dark"] .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body[data-theme="dark"] .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body[data-theme="dark"] .highlight .m { color: #51b2fd } /* Literal.Number */ +body[data-theme="dark"] .highlight .s { color: #ed9d13 } /* Literal.String */ +body[data-theme="dark"] .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body[data-theme="dark"] .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body[data-theme="dark"] .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body[data-theme="dark"] .highlight .no { color: #40ffff } /* Name.Constant */ +body[data-theme="dark"] .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body[data-theme="dark"] .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body[data-theme="dark"] .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body[data-theme="dark"] .highlight .nf { color: #71adff } /* Name.Function */ +body[data-theme="dark"] .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body[data-theme="dark"] .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body[data-theme="dark"] .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body[data-theme="dark"] .highlight .py { color: #d0d0d0 } /* Name.Property */ +body[data-theme="dark"] .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body[data-theme="dark"] .highlight .nv { color: #40ffff } /* Name.Variable */ +body[data-theme="dark"] .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body[data-theme="dark"] .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body[data-theme="dark"] .highlight .w { color: #666666 } /* Text.Whitespace */ +body[data-theme="dark"] .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body[data-theme="dark"] .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body[data-theme="dark"] .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body[data-theme="dark"] .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body[data-theme="dark"] .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body[data-theme="dark"] .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body[data-theme="dark"] .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body[data-theme="dark"] .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body[data-theme="dark"] .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body[data-theme="dark"] .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body[data-theme="dark"] .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body[data-theme="dark"] .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body[data-theme="dark"] .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body[data-theme="dark"] .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body[data-theme="dark"] .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body[data-theme="dark"] .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body[data-theme="dark"] .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body[data-theme="dark"] .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body[data-theme="dark"] .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body[data-theme="dark"] .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body[data-theme="dark"] .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body[data-theme="dark"] .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body[data-theme="dark"] .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body[data-theme="dark"] .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body[data-theme="dark"] .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +@media (prefers-color-scheme: dark) { +body:not([data-theme="light"]) .highlight pre { line-height: 125%; } +body:not([data-theme="light"]) .highlight td.linenos .normal { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos { color: #aaaaaa; background-color: transparent; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight td.linenos .special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight span.linenos.special { color: #000000; background-color: #ffffc0; padding-left: 5px; padding-right: 5px; } +body:not([data-theme="light"]) .highlight .hll { background-color: #404040 } +body:not([data-theme="light"]) .highlight { background: #202020; color: #d0d0d0 } +body:not([data-theme="light"]) .highlight .c { color: #ababab; font-style: italic } /* Comment */ +body:not([data-theme="light"]) .highlight .err { color: #a61717; background-color: #e3d2d2 } /* Error */ +body:not([data-theme="light"]) .highlight .esc { color: #d0d0d0 } /* Escape */ +body:not([data-theme="light"]) .highlight .g { color: #d0d0d0 } /* Generic */ +body:not([data-theme="light"]) .highlight .k { color: #6ebf26; font-weight: bold } /* Keyword */ +body:not([data-theme="light"]) .highlight .l { color: #d0d0d0 } /* Literal */ +body:not([data-theme="light"]) .highlight .n { color: #d0d0d0 } /* Name */ +body:not([data-theme="light"]) .highlight .o { color: #d0d0d0 } /* Operator */ +body:not([data-theme="light"]) .highlight .x { color: #d0d0d0 } /* Other */ +body:not([data-theme="light"]) .highlight .p { color: #d0d0d0 } /* Punctuation */ +body:not([data-theme="light"]) .highlight .ch { color: #ababab; font-style: italic } /* Comment.Hashbang */ +body:not([data-theme="light"]) .highlight .cm { color: #ababab; font-style: italic } /* Comment.Multiline */ +body:not([data-theme="light"]) .highlight .cp { color: #ff3a3a; font-weight: bold } /* Comment.Preproc */ +body:not([data-theme="light"]) .highlight .cpf { color: #ababab; font-style: italic } /* Comment.PreprocFile */ +body:not([data-theme="light"]) .highlight .c1 { color: #ababab; font-style: italic } /* Comment.Single */ +body:not([data-theme="light"]) .highlight .cs { color: #e50808; font-weight: bold; background-color: #520000 } /* Comment.Special */ +body:not([data-theme="light"]) .highlight .gd { color: #ff3a3a } /* Generic.Deleted */ +body:not([data-theme="light"]) .highlight .ge { color: #d0d0d0; font-style: italic } /* Generic.Emph */ +body:not([data-theme="light"]) .highlight .ges { color: #d0d0d0; font-weight: bold; font-style: italic } /* Generic.EmphStrong */ +body:not([data-theme="light"]) .highlight .gr { color: #ff3a3a } /* Generic.Error */ +body:not([data-theme="light"]) .highlight .gh { color: #ffffff; font-weight: bold } /* Generic.Heading */ +body:not([data-theme="light"]) .highlight .gi { color: #589819 } /* Generic.Inserted */ +body:not([data-theme="light"]) .highlight .go { color: #cccccc } /* Generic.Output */ +body:not([data-theme="light"]) .highlight .gp { color: #aaaaaa } /* Generic.Prompt */ +body:not([data-theme="light"]) .highlight .gs { color: #d0d0d0; font-weight: bold } /* Generic.Strong */ +body:not([data-theme="light"]) .highlight .gu { color: #ffffff; text-decoration: underline } /* Generic.Subheading */ +body:not([data-theme="light"]) .highlight .gt { color: #ff3a3a } /* Generic.Traceback */ +body:not([data-theme="light"]) .highlight .kc { color: #6ebf26; font-weight: bold } /* Keyword.Constant */ +body:not([data-theme="light"]) .highlight .kd { color: #6ebf26; font-weight: bold } /* Keyword.Declaration */ +body:not([data-theme="light"]) .highlight .kn { color: #6ebf26; font-weight: bold } /* Keyword.Namespace */ +body:not([data-theme="light"]) .highlight .kp { color: #6ebf26 } /* Keyword.Pseudo */ +body:not([data-theme="light"]) .highlight .kr { color: #6ebf26; font-weight: bold } /* Keyword.Reserved */ +body:not([data-theme="light"]) .highlight .kt { color: #6ebf26; font-weight: bold } /* Keyword.Type */ +body:not([data-theme="light"]) .highlight .ld { color: #d0d0d0 } /* Literal.Date */ +body:not([data-theme="light"]) .highlight .m { color: #51b2fd } /* Literal.Number */ +body:not([data-theme="light"]) .highlight .s { color: #ed9d13 } /* Literal.String */ +body:not([data-theme="light"]) .highlight .na { color: #bbbbbb } /* Name.Attribute */ +body:not([data-theme="light"]) .highlight .nb { color: #2fbccd } /* Name.Builtin */ +body:not([data-theme="light"]) .highlight .nc { color: #71adff; text-decoration: underline } /* Name.Class */ +body:not([data-theme="light"]) .highlight .no { color: #40ffff } /* Name.Constant */ +body:not([data-theme="light"]) .highlight .nd { color: #ffa500 } /* Name.Decorator */ +body:not([data-theme="light"]) .highlight .ni { color: #d0d0d0 } /* Name.Entity */ +body:not([data-theme="light"]) .highlight .ne { color: #bbbbbb } /* Name.Exception */ +body:not([data-theme="light"]) .highlight .nf { color: #71adff } /* Name.Function */ +body:not([data-theme="light"]) .highlight .nl { color: #d0d0d0 } /* Name.Label */ +body:not([data-theme="light"]) .highlight .nn { color: #71adff; text-decoration: underline } /* Name.Namespace */ +body:not([data-theme="light"]) .highlight .nx { color: #d0d0d0 } /* Name.Other */ +body:not([data-theme="light"]) .highlight .py { color: #d0d0d0 } /* Name.Property */ +body:not([data-theme="light"]) .highlight .nt { color: #6ebf26; font-weight: bold } /* Name.Tag */ +body:not([data-theme="light"]) .highlight .nv { color: #40ffff } /* Name.Variable */ +body:not([data-theme="light"]) .highlight .ow { color: #6ebf26; font-weight: bold } /* Operator.Word */ +body:not([data-theme="light"]) .highlight .pm { color: #d0d0d0 } /* Punctuation.Marker */ +body:not([data-theme="light"]) .highlight .w { color: #666666 } /* Text.Whitespace */ +body:not([data-theme="light"]) .highlight .mb { color: #51b2fd } /* Literal.Number.Bin */ +body:not([data-theme="light"]) .highlight .mf { color: #51b2fd } /* Literal.Number.Float */ +body:not([data-theme="light"]) .highlight .mh { color: #51b2fd } /* Literal.Number.Hex */ +body:not([data-theme="light"]) .highlight .mi { color: #51b2fd } /* Literal.Number.Integer */ +body:not([data-theme="light"]) .highlight .mo { color: #51b2fd } /* Literal.Number.Oct */ +body:not([data-theme="light"]) .highlight .sa { color: #ed9d13 } /* Literal.String.Affix */ +body:not([data-theme="light"]) .highlight .sb { color: #ed9d13 } /* Literal.String.Backtick */ +body:not([data-theme="light"]) .highlight .sc { color: #ed9d13 } /* Literal.String.Char */ +body:not([data-theme="light"]) .highlight .dl { color: #ed9d13 } /* Literal.String.Delimiter */ +body:not([data-theme="light"]) .highlight .sd { color: #ed9d13 } /* Literal.String.Doc */ +body:not([data-theme="light"]) .highlight .s2 { color: #ed9d13 } /* Literal.String.Double */ +body:not([data-theme="light"]) .highlight .se { color: #ed9d13 } /* Literal.String.Escape */ +body:not([data-theme="light"]) .highlight .sh { color: #ed9d13 } /* Literal.String.Heredoc */ +body:not([data-theme="light"]) .highlight .si { color: #ed9d13 } /* Literal.String.Interpol */ +body:not([data-theme="light"]) .highlight .sx { color: #ffa500 } /* Literal.String.Other */ +body:not([data-theme="light"]) .highlight .sr { color: #ed9d13 } /* Literal.String.Regex */ +body:not([data-theme="light"]) .highlight .s1 { color: #ed9d13 } /* Literal.String.Single */ +body:not([data-theme="light"]) .highlight .ss { color: #ed9d13 } /* Literal.String.Symbol */ +body:not([data-theme="light"]) .highlight .bp { color: #2fbccd } /* Name.Builtin.Pseudo */ +body:not([data-theme="light"]) .highlight .fm { color: #71adff } /* Name.Function.Magic */ +body:not([data-theme="light"]) .highlight .vc { color: #40ffff } /* Name.Variable.Class */ +body:not([data-theme="light"]) .highlight .vg { color: #40ffff } /* Name.Variable.Global */ +body:not([data-theme="light"]) .highlight .vi { color: #40ffff } /* Name.Variable.Instance */ +body:not([data-theme="light"]) .highlight .vm { color: #40ffff } /* Name.Variable.Magic */ +body:not([data-theme="light"]) .highlight .il { color: #51b2fd } /* Literal.Number.Integer.Long */ +} +} \ No newline at end of file diff --git a/_static/scripts/furo-extensions.js b/_static/scripts/furo-extensions.js new file mode 100644 index 0000000..e69de29 diff --git a/_static/scripts/furo.js b/_static/scripts/furo.js new file mode 100644 index 0000000..0abb2af --- /dev/null +++ b/_static/scripts/furo.js @@ -0,0 +1,3 @@ +/*! For license information please see furo.js.LICENSE.txt */ +(()=>{var t={856:function(t,e,n){var o,r;r=void 0!==n.g?n.g:"undefined"!=typeof window?window:this,o=function(){return function(t){"use strict";var e={navClass:"active",contentClass:"active",nested:!1,nestedClass:"active",offset:0,reflow:!1,events:!0},n=function(t,e,n){if(n.settings.events){var o=new CustomEvent(t,{bubbles:!0,cancelable:!0,detail:n});e.dispatchEvent(o)}},o=function(t){var e=0;if(t.offsetParent)for(;t;)e+=t.offsetTop,t=t.offsetParent;return e>=0?e:0},r=function(t){t&&t.sort((function(t,e){return o(t.content)=Math.max(document.body.scrollHeight,document.documentElement.scrollHeight,document.body.offsetHeight,document.documentElement.offsetHeight,document.body.clientHeight,document.documentElement.clientHeight)},l=function(t,e){var n=t[t.length-1];if(function(t,e){return!(!s()||!c(t.content,e,!0))}(n,e))return n;for(var o=t.length-1;o>=0;o--)if(c(t[o].content,e))return t[o]},a=function(t,e){if(e.nested&&t.parentNode){var n=t.parentNode.closest("li");n&&(n.classList.remove(e.nestedClass),a(n,e))}},i=function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.remove(e.navClass),t.content.classList.remove(e.contentClass),a(o,e),n("gumshoeDeactivate",o,{link:t.nav,content:t.content,settings:e}))}},u=function(t,e){if(e.nested){var n=t.parentNode.closest("li");n&&(n.classList.add(e.nestedClass),u(n,e))}};return function(o,c){var s,a,d,f,m,v={setup:function(){s=document.querySelectorAll(o),a=[],Array.prototype.forEach.call(s,(function(t){var e=document.getElementById(decodeURIComponent(t.hash.substr(1)));e&&a.push({nav:t,content:e})})),r(a)},detect:function(){var t=l(a,m);t?d&&t.content===d.content||(i(d,m),function(t,e){if(t){var o=t.nav.closest("li");o&&(o.classList.add(e.navClass),t.content.classList.add(e.contentClass),u(o,e),n("gumshoeActivate",o,{link:t.nav,content:t.content,settings:e}))}}(t,m),d=t):d&&(i(d,m),d=null)}},h=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame(v.detect)},g=function(e){f&&t.cancelAnimationFrame(f),f=t.requestAnimationFrame((function(){r(a),v.detect()}))};return v.destroy=function(){d&&i(d,m),t.removeEventListener("scroll",h,!1),m.reflow&&t.removeEventListener("resize",g,!1),a=null,s=null,d=null,f=null,m=null},m=function(){var t={};return Array.prototype.forEach.call(arguments,(function(e){for(var n in e){if(!e.hasOwnProperty(n))return;t[n]=e[n]}})),t}(e,c||{}),v.setup(),v.detect(),t.addEventListener("scroll",h,!1),m.reflow&&t.addEventListener("resize",g,!1),v}}(r)}.apply(e,[]),void 0===o||(t.exports=o)}},e={};function n(o){var r=e[o];if(void 0!==r)return r.exports;var c=e[o]={exports:{}};return t[o].call(c.exports,c,c.exports,n),c.exports}n.n=t=>{var e=t&&t.__esModule?()=>t.default:()=>t;return n.d(e,{a:e}),e},n.d=(t,e)=>{for(var o in e)n.o(e,o)&&!n.o(t,o)&&Object.defineProperty(t,o,{enumerable:!0,get:e[o]})},n.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(t){if("object"==typeof window)return window}}(),n.o=(t,e)=>Object.prototype.hasOwnProperty.call(t,e),(()=>{"use strict";var t=n(856),e=n.n(t),o=null,r=null,c=document.documentElement.scrollTop;const s=64;function l(){const t=localStorage.getItem("theme")||"auto";var e;"light"!==(e=window.matchMedia("(prefers-color-scheme: dark)").matches?"auto"===t?"light":"light"==t?"dark":"auto":"auto"===t?"dark":"dark"==t?"light":"auto")&&"dark"!==e&&"auto"!==e&&(console.error(`Got invalid theme mode: ${e}. Resetting to auto.`),e="auto"),document.body.dataset.theme=e,localStorage.setItem("theme",e),console.log(`Changed to ${e} mode.`)}function a(){!function(){const t=document.getElementsByClassName("theme-toggle");Array.from(t).forEach((t=>{t.addEventListener("click",l)}))}(),function(){let t=0,e=!1;window.addEventListener("scroll",(function(n){t=window.scrollY,e||(window.requestAnimationFrame((function(){var n;(function(t){const e=Math.floor(r.getBoundingClientRect().top);console.log(`headerTop: ${e}`),0==e&&t!=e?r.classList.add("scrolled"):r.classList.remove("scrolled")})(n=t),function(t){tc&&document.documentElement.classList.remove("show-back-to-top"),c=t}(n),function(t){null!==o&&(0==t?o.scrollTo(0,0):Math.ceil(t)>=Math.floor(document.documentElement.scrollHeight-window.innerHeight)?o.scrollTo(0,o.scrollHeight):document.querySelector(".scroll-current"))}(n),e=!1})),e=!0)})),window.scroll()}(),null!==o&&new(e())(".toc-tree a",{reflow:!0,recursive:!0,navClass:"scroll-current",offset:()=>{let t=parseFloat(getComputedStyle(document.documentElement).fontSize);return r.getBoundingClientRect().height+2.5*t+1}})}document.addEventListener("DOMContentLoaded",(function(){document.body.parentNode.classList.remove("no-js"),r=document.querySelector("header"),o=document.querySelector(".toc-scroll"),a()}))})()})(); +//# sourceMappingURL=furo.js.map \ No newline at end of file diff --git a/_static/scripts/furo.js.LICENSE.txt b/_static/scripts/furo.js.LICENSE.txt new file mode 100644 index 0000000..1632189 --- /dev/null +++ b/_static/scripts/furo.js.LICENSE.txt @@ -0,0 +1,7 @@ +/*! + * gumshoejs v5.1.2 (patched by @pradyunsg) + * A simple, framework-agnostic scrollspy script. + * (c) 2019 Chris Ferdinandi + * MIT License + * http://github.com/cferdinandi/gumshoe + */ diff --git a/_static/scripts/furo.js.map b/_static/scripts/furo.js.map new file mode 100644 index 0000000..80ea12b --- /dev/null +++ b/_static/scripts/furo.js.map @@ -0,0 +1 @@ +{"version":3,"file":"scripts/furo.js","mappings":"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","sources":["webpack:///./src/furo/assets/scripts/gumshoe-patched.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///./src/furo/assets/scripts/furo.js"],"sourcesContent":["/*!\n * gumshoejs v5.1.2 (patched by @pradyunsg)\n * A simple, framework-agnostic scrollspy script.\n * (c) 2019 Chris Ferdinandi\n * MIT License\n * http://github.com/cferdinandi/gumshoe\n */\n\n(function (root, factory) {\n if (typeof define === \"function\" && define.amd) {\n define([], function () {\n return factory(root);\n });\n } else if (typeof exports === \"object\") {\n module.exports = factory(root);\n } else {\n root.Gumshoe = factory(root);\n }\n})(\n typeof global !== \"undefined\"\n ? global\n : typeof window !== \"undefined\"\n ? window\n : this,\n function (window) {\n \"use strict\";\n\n //\n // Defaults\n //\n\n var defaults = {\n // Active classes\n navClass: \"active\",\n contentClass: \"active\",\n\n // Nested navigation\n nested: false,\n nestedClass: \"active\",\n\n // Offset & reflow\n offset: 0,\n reflow: false,\n\n // Event support\n events: true,\n };\n\n //\n // Methods\n //\n\n /**\n * Merge two or more objects together.\n * @param {Object} objects The objects to merge together\n * @returns {Object} Merged values of defaults and options\n */\n var extend = function () {\n var merged = {};\n Array.prototype.forEach.call(arguments, function (obj) {\n for (var key in obj) {\n if (!obj.hasOwnProperty(key)) return;\n merged[key] = obj[key];\n }\n });\n return merged;\n };\n\n /**\n * Emit a custom event\n * @param {String} type The event type\n * @param {Node} elem The element to attach the event to\n * @param {Object} detail Any details to pass along with the event\n */\n var emitEvent = function (type, elem, detail) {\n // Make sure events are enabled\n if (!detail.settings.events) return;\n\n // Create a new event\n var event = new CustomEvent(type, {\n bubbles: true,\n cancelable: true,\n detail: detail,\n });\n\n // Dispatch the event\n elem.dispatchEvent(event);\n };\n\n /**\n * Get an element's distance from the top of the Document.\n * @param {Node} elem The element\n * @return {Number} Distance from the top in pixels\n */\n var getOffsetTop = function (elem) {\n var location = 0;\n if (elem.offsetParent) {\n while (elem) {\n location += elem.offsetTop;\n elem = elem.offsetParent;\n }\n }\n return location >= 0 ? location : 0;\n };\n\n /**\n * Sort content from first to last in the DOM\n * @param {Array} contents The content areas\n */\n var sortContents = function (contents) {\n if (contents) {\n contents.sort(function (item1, item2) {\n var offset1 = getOffsetTop(item1.content);\n var offset2 = getOffsetTop(item2.content);\n if (offset1 < offset2) return -1;\n return 1;\n });\n }\n };\n\n /**\n * Get the offset to use for calculating position\n * @param {Object} settings The settings for this instantiation\n * @return {Float} The number of pixels to offset the calculations\n */\n var getOffset = function (settings) {\n // if the offset is a function run it\n if (typeof settings.offset === \"function\") {\n return parseFloat(settings.offset());\n }\n\n // Otherwise, return it as-is\n return parseFloat(settings.offset);\n };\n\n /**\n * Get the document element's height\n * @private\n * @returns {Number}\n */\n var getDocumentHeight = function () {\n return Math.max(\n document.body.scrollHeight,\n document.documentElement.scrollHeight,\n document.body.offsetHeight,\n document.documentElement.offsetHeight,\n document.body.clientHeight,\n document.documentElement.clientHeight,\n );\n };\n\n /**\n * Determine if an element is in view\n * @param {Node} elem The element\n * @param {Object} settings The settings for this instantiation\n * @param {Boolean} bottom If true, check if element is above bottom of viewport instead\n * @return {Boolean} Returns true if element is in the viewport\n */\n var isInView = function (elem, settings, bottom) {\n var bounds = elem.getBoundingClientRect();\n var offset = getOffset(settings);\n if (bottom) {\n return (\n parseInt(bounds.bottom, 10) <\n (window.innerHeight || document.documentElement.clientHeight)\n );\n }\n return parseInt(bounds.top, 10) <= offset;\n };\n\n /**\n * Check if at the bottom of the viewport\n * @return {Boolean} If true, page is at the bottom of the viewport\n */\n var isAtBottom = function () {\n if (\n Math.ceil(window.innerHeight + window.pageYOffset) >=\n getDocumentHeight()\n )\n return true;\n return false;\n };\n\n /**\n * Check if the last item should be used (even if not at the top of the page)\n * @param {Object} item The last item\n * @param {Object} settings The settings for this instantiation\n * @return {Boolean} If true, use the last item\n */\n var useLastItem = function (item, settings) {\n if (isAtBottom() && isInView(item.content, settings, true)) return true;\n return false;\n };\n\n /**\n * Get the active content\n * @param {Array} contents The content areas\n * @param {Object} settings The settings for this instantiation\n * @return {Object} The content area and matching navigation link\n */\n var getActive = function (contents, settings) {\n var last = contents[contents.length - 1];\n if (useLastItem(last, settings)) return last;\n for (var i = contents.length - 1; i >= 0; i--) {\n if (isInView(contents[i].content, settings)) return contents[i];\n }\n };\n\n /**\n * Deactivate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var deactivateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested || !nav.parentNode) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Remove the active class\n li.classList.remove(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n deactivateNested(li, settings);\n };\n\n /**\n * Deactivate a nav and content area\n * @param {Object} items The nav item and content to deactivate\n * @param {Object} settings The settings for this instantiation\n */\n var deactivate = function (items, settings) {\n // Make sure there are items to deactivate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Remove the active class from the nav and content\n li.classList.remove(settings.navClass);\n items.content.classList.remove(settings.contentClass);\n\n // Deactivate any parent navs in a nested navigation\n deactivateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeDeactivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Activate parent navs in a nested navigation\n * @param {Node} nav The starting navigation element\n * @param {Object} settings The settings for this instantiation\n */\n var activateNested = function (nav, settings) {\n // If nesting isn't activated, bail\n if (!settings.nested) return;\n\n // Get the parent navigation\n var li = nav.parentNode.closest(\"li\");\n if (!li) return;\n\n // Add the active class\n li.classList.add(settings.nestedClass);\n\n // Apply recursively to any parent navigation elements\n activateNested(li, settings);\n };\n\n /**\n * Activate a nav and content area\n * @param {Object} items The nav item and content to activate\n * @param {Object} settings The settings for this instantiation\n */\n var activate = function (items, settings) {\n // Make sure there are items to activate\n if (!items) return;\n\n // Get the parent list item\n var li = items.nav.closest(\"li\");\n if (!li) return;\n\n // Add the active class to the nav and content\n li.classList.add(settings.navClass);\n items.content.classList.add(settings.contentClass);\n\n // Activate any parent navs in a nested navigation\n activateNested(li, settings);\n\n // Emit a custom event\n emitEvent(\"gumshoeActivate\", li, {\n link: items.nav,\n content: items.content,\n settings: settings,\n });\n };\n\n /**\n * Create the Constructor object\n * @param {String} selector The selector to use for navigation items\n * @param {Object} options User options and settings\n */\n var Constructor = function (selector, options) {\n //\n // Variables\n //\n\n var publicAPIs = {};\n var navItems, contents, current, timeout, settings;\n\n //\n // Methods\n //\n\n /**\n * Set variables from DOM elements\n */\n publicAPIs.setup = function () {\n // Get all nav items\n navItems = document.querySelectorAll(selector);\n\n // Create contents array\n contents = [];\n\n // Loop through each item, get it's matching content, and push to the array\n Array.prototype.forEach.call(navItems, function (item) {\n // Get the content for the nav item\n var content = document.getElementById(\n decodeURIComponent(item.hash.substr(1)),\n );\n if (!content) return;\n\n // Push to the contents array\n contents.push({\n nav: item,\n content: content,\n });\n });\n\n // Sort contents by the order they appear in the DOM\n sortContents(contents);\n };\n\n /**\n * Detect which content is currently active\n */\n publicAPIs.detect = function () {\n // Get the active content\n var active = getActive(contents, settings);\n\n // if there's no active content, deactivate and bail\n if (!active) {\n if (current) {\n deactivate(current, settings);\n current = null;\n }\n return;\n }\n\n // If the active content is the one currently active, do nothing\n if (current && active.content === current.content) return;\n\n // Deactivate the current content and activate the new content\n deactivate(current, settings);\n activate(active, settings);\n\n // Update the currently active content\n current = active;\n };\n\n /**\n * Detect the active content on scroll\n * Debounced for performance\n */\n var scrollHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(publicAPIs.detect);\n };\n\n /**\n * Update content sorting on resize\n * Debounced for performance\n */\n var resizeHandler = function (event) {\n // If there's a timer, cancel it\n if (timeout) {\n window.cancelAnimationFrame(timeout);\n }\n\n // Setup debounce callback\n timeout = window.requestAnimationFrame(function () {\n sortContents(contents);\n publicAPIs.detect();\n });\n };\n\n /**\n * Destroy the current instantiation\n */\n publicAPIs.destroy = function () {\n // Undo DOM changes\n if (current) {\n deactivate(current, settings);\n }\n\n // Remove event listeners\n window.removeEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.removeEventListener(\"resize\", resizeHandler, false);\n }\n\n // Reset variables\n contents = null;\n navItems = null;\n current = null;\n timeout = null;\n settings = null;\n };\n\n /**\n * Initialize the current instantiation\n */\n var init = function () {\n // Merge user options into defaults\n settings = extend(defaults, options || {});\n\n // Setup variables based on the current DOM\n publicAPIs.setup();\n\n // Find the currently active content\n publicAPIs.detect();\n\n // Setup event listeners\n window.addEventListener(\"scroll\", scrollHandler, false);\n if (settings.reflow) {\n window.addEventListener(\"resize\", resizeHandler, false);\n }\n };\n\n //\n // Initialize and return the public APIs\n //\n\n init();\n return publicAPIs;\n };\n\n //\n // Return the Constructor\n //\n\n return Constructor;\n },\n);\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","import Gumshoe from \"./gumshoe-patched.js\";\n\n////////////////////////////////////////////////////////////////////////////////\n// Scroll Handling\n////////////////////////////////////////////////////////////////////////////////\nvar tocScroll = null;\nvar header = null;\nvar lastScrollTop = document.documentElement.scrollTop;\nconst GO_TO_TOP_OFFSET = 64;\n\nfunction scrollHandlerForHeader(positionY) {\n const headerTop = Math.floor(header.getBoundingClientRect().top);\n\n console.log(`headerTop: ${headerTop}`);\n if (headerTop == 0 && positionY != headerTop) {\n header.classList.add(\"scrolled\");\n } else {\n header.classList.remove(\"scrolled\");\n }\n}\n\nfunction scrollHandlerForBackToTop(positionY) {\n if (positionY < GO_TO_TOP_OFFSET) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n } else {\n if (positionY < lastScrollTop) {\n document.documentElement.classList.add(\"show-back-to-top\");\n } else if (positionY > lastScrollTop) {\n document.documentElement.classList.remove(\"show-back-to-top\");\n }\n }\n lastScrollTop = positionY;\n}\n\nfunction scrollHandlerForTOC(positionY) {\n if (tocScroll === null) {\n return;\n }\n\n // top of page.\n if (positionY == 0) {\n tocScroll.scrollTo(0, 0);\n } else if (\n // bottom of page.\n Math.ceil(positionY) >=\n Math.floor(document.documentElement.scrollHeight - window.innerHeight)\n ) {\n tocScroll.scrollTo(0, tocScroll.scrollHeight);\n } else {\n // somewhere in the middle.\n const current = document.querySelector(\".scroll-current\");\n if (current == null) {\n return;\n }\n\n // https://github.com/pypa/pip/issues/9159 This breaks scroll behaviours.\n // // scroll the currently \"active\" heading in toc, into view.\n // const rect = current.getBoundingClientRect();\n // if (0 > rect.top) {\n // current.scrollIntoView(true); // the argument is \"alignTop\"\n // } else if (rect.bottom > window.innerHeight) {\n // current.scrollIntoView(false);\n // }\n }\n}\n\nfunction scrollHandler(positionY) {\n scrollHandlerForHeader(positionY);\n scrollHandlerForBackToTop(positionY);\n scrollHandlerForTOC(positionY);\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Theme Toggle\n////////////////////////////////////////////////////////////////////////////////\nfunction setTheme(mode) {\n if (mode !== \"light\" && mode !== \"dark\" && mode !== \"auto\") {\n console.error(`Got invalid theme mode: ${mode}. Resetting to auto.`);\n mode = \"auto\";\n }\n\n document.body.dataset.theme = mode;\n localStorage.setItem(\"theme\", mode);\n console.log(`Changed to ${mode} mode.`);\n}\n\nfunction cycleThemeOnce() {\n const currentTheme = localStorage.getItem(\"theme\") || \"auto\";\n const prefersDark = window.matchMedia(\"(prefers-color-scheme: dark)\").matches;\n\n if (prefersDark) {\n // Auto (dark) -> Light -> Dark\n if (currentTheme === \"auto\") {\n setTheme(\"light\");\n } else if (currentTheme == \"light\") {\n setTheme(\"dark\");\n } else {\n setTheme(\"auto\");\n }\n } else {\n // Auto (light) -> Dark -> Light\n if (currentTheme === \"auto\") {\n setTheme(\"dark\");\n } else if (currentTheme == \"dark\") {\n setTheme(\"light\");\n } else {\n setTheme(\"auto\");\n }\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Setup\n////////////////////////////////////////////////////////////////////////////////\nfunction setupScrollHandler() {\n // Taken from https://developer.mozilla.org/en-US/docs/Web/API/Document/scroll_event\n let last_known_scroll_position = 0;\n let ticking = false;\n\n window.addEventListener(\"scroll\", function (e) {\n last_known_scroll_position = window.scrollY;\n\n if (!ticking) {\n window.requestAnimationFrame(function () {\n scrollHandler(last_known_scroll_position);\n ticking = false;\n });\n\n ticking = true;\n }\n });\n window.scroll();\n}\n\nfunction setupScrollSpy() {\n if (tocScroll === null) {\n return;\n }\n\n // Scrollspy -- highlight table on contents, based on scroll\n new Gumshoe(\".toc-tree a\", {\n reflow: true,\n recursive: true,\n navClass: \"scroll-current\",\n offset: () => {\n let rem = parseFloat(getComputedStyle(document.documentElement).fontSize);\n return header.getBoundingClientRect().height + 2.5 * rem + 1;\n },\n });\n}\n\nfunction setupTheme() {\n // Attach event handlers for toggling themes\n const buttons = document.getElementsByClassName(\"theme-toggle\");\n Array.from(buttons).forEach((btn) => {\n btn.addEventListener(\"click\", cycleThemeOnce);\n });\n}\n\nfunction setup() {\n setupTheme();\n setupScrollHandler();\n setupScrollSpy();\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// Main entrypoint\n////////////////////////////////////////////////////////////////////////////////\nfunction main() {\n document.body.parentNode.classList.remove(\"no-js\");\n\n header = document.querySelector(\"header\");\n tocScroll = document.querySelector(\".toc-scroll\");\n\n setup();\n}\n\ndocument.addEventListener(\"DOMContentLoaded\", main);\n"],"names":["root","g","window","this","defaults","navClass","contentClass","nested","nestedClass","offset","reflow","events","emitEvent","type","elem","detail","settings","event","CustomEvent","bubbles","cancelable","dispatchEvent","getOffsetTop","location","offsetParent","offsetTop","sortContents","contents","sort","item1","item2","content","isInView","bottom","bounds","getBoundingClientRect","parseFloat","getOffset","parseInt","innerHeight","document","documentElement","clientHeight","top","isAtBottom","Math","ceil","pageYOffset","max","body","scrollHeight","offsetHeight","getActive","last","length","item","useLastItem","i","deactivateNested","nav","parentNode","li","closest","classList","remove","deactivate","items","link","activateNested","add","selector","options","navItems","current","timeout","publicAPIs","querySelectorAll","Array","prototype","forEach","call","getElementById","decodeURIComponent","hash","substr","push","active","activate","scrollHandler","cancelAnimationFrame","requestAnimationFrame","detect","resizeHandler","destroy","removeEventListener","merged","arguments","obj","key","hasOwnProperty","extend","setup","addEventListener","factory","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","undefined","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","o","Object","defineProperty","enumerable","get","globalThis","Function","e","prop","tocScroll","header","lastScrollTop","scrollTop","GO_TO_TOP_OFFSET","cycleThemeOnce","currentTheme","localStorage","getItem","mode","matchMedia","matches","console","error","dataset","theme","setItem","log","buttons","getElementsByClassName","from","btn","setupTheme","last_known_scroll_position","ticking","scrollY","positionY","headerTop","floor","scrollHandlerForHeader","scrollHandlerForBackToTop","scrollTo","querySelector","scrollHandlerForTOC","scroll","setupScrollHandler","recursive","rem","getComputedStyle","fontSize","height"],"sourceRoot":""} \ No newline at end of file diff --git a/_static/searchtools.js b/_static/searchtools.js new file mode 100644 index 0000000..7918c3f --- /dev/null +++ b/_static/searchtools.js @@ -0,0 +1,574 @@ +/* + * searchtools.js + * ~~~~~~~~~~~~~~~~ + * + * Sphinx JavaScript utilities for the full-text search. + * + * :copyright: Copyright 2007-2023 by the Sphinx team, see AUTHORS. + * :license: BSD, see LICENSE for details. + * + */ +"use strict"; + +/** + * Simple result scoring code. + */ +if (typeof Scorer === "undefined") { + var Scorer = { + // Implement the following function to further tweak the score for each result + // The function takes a result array [docname, title, anchor, descr, score, filename] + // and returns the new score. + /* + score: result => { + const [docname, title, anchor, descr, score, filename] = result + return score + }, + */ + + // query matches the full name of an object + objNameMatch: 11, + // or matches in the last dotted part of the object name + objPartialMatch: 6, + // Additive scores depending on the priority of the object + objPrio: { + 0: 15, // used to be importantResults + 1: 5, // used to be objectResults + 2: -5, // used to be unimportantResults + }, + // Used when the priority is not in the mapping. + objPrioDefault: 0, + + // query found in title + title: 15, + partialTitle: 7, + // query found in terms + term: 5, + partialTerm: 2, + }; +} + +const _removeChildren = (element) => { + while (element && element.lastChild) element.removeChild(element.lastChild); +}; + +/** + * See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions#escaping + */ +const _escapeRegExp = (string) => + string.replace(/[.*+\-?^${}()|[\]\\]/g, "\\$&"); // $& means the whole matched string + +const _displayItem = (item, searchTerms, highlightTerms) => { + const docBuilder = DOCUMENTATION_OPTIONS.BUILDER; + const docFileSuffix = DOCUMENTATION_OPTIONS.FILE_SUFFIX; + const docLinkSuffix = DOCUMENTATION_OPTIONS.LINK_SUFFIX; + const showSearchSummary = DOCUMENTATION_OPTIONS.SHOW_SEARCH_SUMMARY; + const contentRoot = document.documentElement.dataset.content_root; + + const [docName, title, anchor, descr, score, _filename] = item; + + let listItem = document.createElement("li"); + let requestUrl; + let linkUrl; + if (docBuilder === "dirhtml") { + // dirhtml builder + let dirname = docName + "/"; + if (dirname.match(/\/index\/$/)) + dirname = dirname.substring(0, dirname.length - 6); + else if (dirname === "index/") dirname = ""; + requestUrl = contentRoot + dirname; + linkUrl = requestUrl; + } else { + // normal html builders + requestUrl = contentRoot + docName + docFileSuffix; + linkUrl = docName + docLinkSuffix; + } + let linkEl = listItem.appendChild(document.createElement("a")); + linkEl.href = linkUrl + anchor; + linkEl.dataset.score = score; + linkEl.innerHTML = title; + if (descr) { + listItem.appendChild(document.createElement("span")).innerHTML = + " (" + descr + ")"; + // highlight search terms in the description + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + } + else if (showSearchSummary) + fetch(requestUrl) + .then((responseData) => responseData.text()) + .then((data) => { + if (data) + listItem.appendChild( + Search.makeSearchSummary(data, searchTerms) + ); + // highlight search terms in the summary + if (SPHINX_HIGHLIGHT_ENABLED) // set in sphinx_highlight.js + highlightTerms.forEach((term) => _highlightText(listItem, term, "highlighted")); + }); + Search.output.appendChild(listItem); +}; +const _finishSearch = (resultCount) => { + Search.stopPulse(); + Search.title.innerText = _("Search Results"); + if (!resultCount) + Search.status.innerText = Documentation.gettext( + "Your search did not match any documents. Please make sure that all words are spelled correctly and that you've selected enough categories." + ); + else + Search.status.innerText = _( + `Search finished, found ${resultCount} page(s) matching the search query.` + ); +}; +const _displayNextItem = ( + results, + resultCount, + searchTerms, + highlightTerms, +) => { + // results left, load the summary and display it + // this is intended to be dynamic (don't sub resultsCount) + if (results.length) { + _displayItem(results.pop(), searchTerms, highlightTerms); + setTimeout( + () => _displayNextItem(results, resultCount, searchTerms, highlightTerms), + 5 + ); + } + // search finished, update title and status message + else _finishSearch(resultCount); +}; + +/** + * Default splitQuery function. Can be overridden in ``sphinx.search`` with a + * custom function per language. + * + * The regular expression works by splitting the string on consecutive characters + * that are not Unicode letters, numbers, underscores, or emoji characters. + * This is the same as ``\W+`` in Python, preserving the surrogate pair area. + */ +if (typeof splitQuery === "undefined") { + var splitQuery = (query) => query + .split(/[^\p{Letter}\p{Number}_\p{Emoji_Presentation}]+/gu) + .filter(term => term) // remove remaining empty strings +} + +/** + * Search Module + */ +const Search = { + _index: null, + _queued_query: null, + _pulse_status: -1, + + htmlToText: (htmlString) => { + const htmlElement = new DOMParser().parseFromString(htmlString, 'text/html'); + htmlElement.querySelectorAll(".headerlink").forEach((el) => { el.remove() }); + const docContent = htmlElement.querySelector('[role="main"]'); + if (docContent !== undefined) return docContent.textContent; + console.warn( + "Content block not found. Sphinx search tries to obtain it via '[role=main]'. Could you check your theme or template." + ); + return ""; + }, + + init: () => { + const query = new URLSearchParams(window.location.search).get("q"); + document + .querySelectorAll('input[name="q"]') + .forEach((el) => (el.value = query)); + if (query) Search.performSearch(query); + }, + + loadIndex: (url) => + (document.body.appendChild(document.createElement("script")).src = url), + + setIndex: (index) => { + Search._index = index; + if (Search._queued_query !== null) { + const query = Search._queued_query; + Search._queued_query = null; + Search.query(query); + } + }, + + hasIndex: () => Search._index !== null, + + deferQuery: (query) => (Search._queued_query = query), + + stopPulse: () => (Search._pulse_status = -1), + + startPulse: () => { + if (Search._pulse_status >= 0) return; + + const pulse = () => { + Search._pulse_status = (Search._pulse_status + 1) % 4; + Search.dots.innerText = ".".repeat(Search._pulse_status); + if (Search._pulse_status >= 0) window.setTimeout(pulse, 500); + }; + pulse(); + }, + + /** + * perform a search for something (or wait until index is loaded) + */ + performSearch: (query) => { + // create the required interface elements + const searchText = document.createElement("h2"); + searchText.textContent = _("Searching"); + const searchSummary = document.createElement("p"); + searchSummary.classList.add("search-summary"); + searchSummary.innerText = ""; + const searchList = document.createElement("ul"); + searchList.classList.add("search"); + + const out = document.getElementById("search-results"); + Search.title = out.appendChild(searchText); + Search.dots = Search.title.appendChild(document.createElement("span")); + Search.status = out.appendChild(searchSummary); + Search.output = out.appendChild(searchList); + + const searchProgress = document.getElementById("search-progress"); + // Some themes don't use the search progress node + if (searchProgress) { + searchProgress.innerText = _("Preparing search..."); + } + Search.startPulse(); + + // index already loaded, the browser was quick! + if (Search.hasIndex()) Search.query(query); + else Search.deferQuery(query); + }, + + /** + * execute search (requires search index to be loaded) + */ + query: (query) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + const allTitles = Search._index.alltitles; + const indexEntries = Search._index.indexentries; + + // stem the search terms and add them to the correct list + const stemmer = new Stemmer(); + const searchTerms = new Set(); + const excludedTerms = new Set(); + const highlightTerms = new Set(); + const objectTerms = new Set(splitQuery(query.toLowerCase().trim())); + splitQuery(query.trim()).forEach((queryTerm) => { + const queryTermLower = queryTerm.toLowerCase(); + + // maybe skip this "word" + // stopwords array is from language_data.js + if ( + stopwords.indexOf(queryTermLower) !== -1 || + queryTerm.match(/^\d+$/) + ) + return; + + // stem the word + let word = stemmer.stemWord(queryTermLower); + // select the correct list + if (word[0] === "-") excludedTerms.add(word.substr(1)); + else { + searchTerms.add(word); + highlightTerms.add(queryTermLower); + } + }); + + if (SPHINX_HIGHLIGHT_ENABLED) { // set in sphinx_highlight.js + localStorage.setItem("sphinx_highlight_terms", [...highlightTerms].join(" ")) + } + + // console.debug("SEARCH: searching for:"); + // console.info("required: ", [...searchTerms]); + // console.info("excluded: ", [...excludedTerms]); + + // array of [docname, title, anchor, descr, score, filename] + let results = []; + _removeChildren(document.getElementById("search-progress")); + + const queryLower = query.toLowerCase(); + for (const [title, foundTitles] of Object.entries(allTitles)) { + if (title.toLowerCase().includes(queryLower) && (queryLower.length >= title.length/2)) { + for (const [file, id] of foundTitles) { + let score = Math.round(100 * queryLower.length / title.length) + results.push([ + docNames[file], + titles[file] !== title ? `${titles[file]} > ${title}` : title, + id !== null ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // search for explicit entries in index directives + for (const [entry, foundEntries] of Object.entries(indexEntries)) { + if (entry.includes(queryLower) && (queryLower.length >= entry.length/2)) { + for (const [file, id] of foundEntries) { + let score = Math.round(100 * queryLower.length / entry.length) + results.push([ + docNames[file], + titles[file], + id ? "#" + id : "", + null, + score, + filenames[file], + ]); + } + } + } + + // lookup as object + objectTerms.forEach((term) => + results.push(...Search.performObjectSearch(term, objectTerms)) + ); + + // lookup as search terms in fulltext + results.push(...Search.performTermsSearch(searchTerms, excludedTerms)); + + // let the scorer override scores with a custom scoring function + if (Scorer.score) results.forEach((item) => (item[4] = Scorer.score(item))); + + // now sort the results by score (in opposite order of appearance, since the + // display function below uses pop() to retrieve items) and then + // alphabetically + results.sort((a, b) => { + const leftScore = a[4]; + const rightScore = b[4]; + if (leftScore === rightScore) { + // same score: sort alphabetically + const leftTitle = a[1].toLowerCase(); + const rightTitle = b[1].toLowerCase(); + if (leftTitle === rightTitle) return 0; + return leftTitle > rightTitle ? -1 : 1; // inverted is intentional + } + return leftScore > rightScore ? 1 : -1; + }); + + // remove duplicate search results + // note the reversing of results, so that in the case of duplicates, the highest-scoring entry is kept + let seen = new Set(); + results = results.reverse().reduce((acc, result) => { + let resultStr = result.slice(0, 4).concat([result[5]]).map(v => String(v)).join(','); + if (!seen.has(resultStr)) { + acc.push(result); + seen.add(resultStr); + } + return acc; + }, []); + + results = results.reverse(); + + // for debugging + //Search.lastresults = results.slice(); // a copy + // console.info("search results:", Search.lastresults); + + // print the results + _displayNextItem(results, results.length, searchTerms, highlightTerms); + }, + + /** + * search for object names + */ + performObjectSearch: (object, objectTerms) => { + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const objects = Search._index.objects; + const objNames = Search._index.objnames; + const titles = Search._index.titles; + + const results = []; + + const objectSearchCallback = (prefix, match) => { + const name = match[4] + const fullname = (prefix ? prefix + "." : "") + name; + const fullnameLower = fullname.toLowerCase(); + if (fullnameLower.indexOf(object) < 0) return; + + let score = 0; + const parts = fullnameLower.split("."); + + // check for different match types: exact matches of full name or + // "last name" (i.e. last dotted part) + if (fullnameLower === object || parts.slice(-1)[0] === object) + score += Scorer.objNameMatch; + else if (parts.slice(-1)[0].indexOf(object) > -1) + score += Scorer.objPartialMatch; // matches in last name + + const objName = objNames[match[1]][2]; + const title = titles[match[0]]; + + // If more than one term searched for, we require other words to be + // found in the name/title/description + const otherTerms = new Set(objectTerms); + otherTerms.delete(object); + if (otherTerms.size > 0) { + const haystack = `${prefix} ${name} ${objName} ${title}`.toLowerCase(); + if ( + [...otherTerms].some((otherTerm) => haystack.indexOf(otherTerm) < 0) + ) + return; + } + + let anchor = match[3]; + if (anchor === "") anchor = fullname; + else if (anchor === "-") anchor = objNames[match[1]][1] + "-" + fullname; + + const descr = objName + _(", in ") + title; + + // add custom score for some objects according to scorer + if (Scorer.objPrio.hasOwnProperty(match[2])) + score += Scorer.objPrio[match[2]]; + else score += Scorer.objPrioDefault; + + results.push([ + docNames[match[0]], + fullname, + "#" + anchor, + descr, + score, + filenames[match[0]], + ]); + }; + Object.keys(objects).forEach((prefix) => + objects[prefix].forEach((array) => + objectSearchCallback(prefix, array) + ) + ); + return results; + }, + + /** + * search for full-text terms in the index + */ + performTermsSearch: (searchTerms, excludedTerms) => { + // prepare search + const terms = Search._index.terms; + const titleTerms = Search._index.titleterms; + const filenames = Search._index.filenames; + const docNames = Search._index.docnames; + const titles = Search._index.titles; + + const scoreMap = new Map(); + const fileMap = new Map(); + + // perform the search on the required terms + searchTerms.forEach((word) => { + const files = []; + const arr = [ + { files: terms[word], score: Scorer.term }, + { files: titleTerms[word], score: Scorer.title }, + ]; + // add support for partial matches + if (word.length > 2) { + const escapedWord = _escapeRegExp(word); + Object.keys(terms).forEach((term) => { + if (term.match(escapedWord) && !terms[word]) + arr.push({ files: terms[term], score: Scorer.partialTerm }); + }); + Object.keys(titleTerms).forEach((term) => { + if (term.match(escapedWord) && !titleTerms[word]) + arr.push({ files: titleTerms[word], score: Scorer.partialTitle }); + }); + } + + // no match but word was a required one + if (arr.every((record) => record.files === undefined)) return; + + // found search word in contents + arr.forEach((record) => { + if (record.files === undefined) return; + + let recordFiles = record.files; + if (recordFiles.length === undefined) recordFiles = [recordFiles]; + files.push(...recordFiles); + + // set score for the word in each file + recordFiles.forEach((file) => { + if (!scoreMap.has(file)) scoreMap.set(file, {}); + scoreMap.get(file)[word] = record.score; + }); + }); + + // create the mapping + files.forEach((file) => { + if (fileMap.has(file) && fileMap.get(file).indexOf(word) === -1) + fileMap.get(file).push(word); + else fileMap.set(file, [word]); + }); + }); + + // now check if the files don't contain excluded terms + const results = []; + for (const [file, wordList] of fileMap) { + // check if all requirements are matched + + // as search terms with length < 3 are discarded + const filteredTermCount = [...searchTerms].filter( + (term) => term.length > 2 + ).length; + if ( + wordList.length !== searchTerms.size && + wordList.length !== filteredTermCount + ) + continue; + + // ensure that none of the excluded terms is in the search result + if ( + [...excludedTerms].some( + (term) => + terms[term] === file || + titleTerms[term] === file || + (terms[term] || []).includes(file) || + (titleTerms[term] || []).includes(file) + ) + ) + break; + + // select one (max) score for the file. + const score = Math.max(...wordList.map((w) => scoreMap.get(file)[w])); + // add result to the result list + results.push([ + docNames[file], + titles[file], + "", + null, + score, + filenames[file], + ]); + } + return results; + }, + + /** + * helper function to return a node containing the + * search summary for a given text. keywords is a list + * of stemmed words. + */ + makeSearchSummary: (htmlText, keywords) => { + const text = Search.htmlToText(htmlText); + if (text === "") return null; + + const textLower = text.toLowerCase(); + const actualStartPosition = [...keywords] + .map((k) => textLower.indexOf(k.toLowerCase())) + .filter((i) => i > -1) + .slice(-1)[0]; + const startWithContext = Math.max(actualStartPosition - 120, 0); + + const top = startWithContext === 0 ? "" : "..."; + const tail = startWithContext + 240 < text.length ? "..." : ""; + + let summary = document.createElement("p"); + summary.classList.add("context"); + summary.textContent = top + text.substr(startWithContext, 240).trim() + tail; + + return summary; + }, +}; + +_ready(Search.init); diff --git a/_static/skeleton.css b/_static/skeleton.css new file mode 100644 index 0000000..467c878 --- /dev/null +++ b/_static/skeleton.css @@ -0,0 +1,296 @@ +/* Some sane resets. */ +html { + height: 100%; +} + +body { + margin: 0; + min-height: 100%; +} + +/* All the flexbox magic! */ +body, +.sb-announcement, +.sb-content, +.sb-main, +.sb-container, +.sb-container__inner, +.sb-article-container, +.sb-footer-content, +.sb-header, +.sb-header-secondary, +.sb-footer { + display: flex; +} + +/* These order things vertically */ +body, +.sb-main, +.sb-article-container { + flex-direction: column; +} + +/* Put elements in the center */ +.sb-header, +.sb-header-secondary, +.sb-container, +.sb-content, +.sb-footer, +.sb-footer-content { + justify-content: center; +} +/* Put elements at the ends */ +.sb-article-container { + justify-content: space-between; +} + +/* These elements grow. */ +.sb-main, +.sb-content, +.sb-container, +article { + flex-grow: 1; +} + +/* Because padding making this wider is not fun */ +article { + box-sizing: border-box; +} + +/* The announcements element should never be wider than the page. */ +.sb-announcement { + max-width: 100%; +} + +.sb-sidebar-primary, +.sb-sidebar-secondary { + flex-shrink: 0; + width: 17rem; +} + +.sb-announcement__inner { + justify-content: center; + + box-sizing: border-box; + height: 3rem; + + overflow-x: auto; + white-space: nowrap; +} + +/* Sidebars, with checkbox-based toggle */ +.sb-sidebar-primary, +.sb-sidebar-secondary { + position: fixed; + height: 100%; + top: 0; +} + +.sb-sidebar-primary { + left: -17rem; + transition: left 250ms ease-in-out; +} +.sb-sidebar-secondary { + right: -17rem; + transition: right 250ms ease-in-out; +} + +.sb-sidebar-toggle { + display: none; +} +.sb-sidebar-overlay { + position: fixed; + top: 0; + width: 0; + height: 0; + + transition: width 0ms ease 250ms, height 0ms ease 250ms, opacity 250ms ease; + + opacity: 0; + background-color: rgba(0, 0, 0, 0.54); +} + +#sb-sidebar-toggle--primary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--primary"], +#sb-sidebar-toggle--secondary:checked + ~ .sb-sidebar-overlay[for="sb-sidebar-toggle--secondary"] { + width: 100%; + height: 100%; + opacity: 1; + transition: width 0ms ease, height 0ms ease, opacity 250ms ease; +} + +#sb-sidebar-toggle--primary:checked ~ .sb-container .sb-sidebar-primary { + left: 0; +} +#sb-sidebar-toggle--secondary:checked ~ .sb-container .sb-sidebar-secondary { + right: 0; +} + +/* Full-width mode */ +.drop-secondary-sidebar-for-full-width-content + .hide-when-secondary-sidebar-shown { + display: none !important; +} +.drop-secondary-sidebar-for-full-width-content .sb-sidebar-secondary { + display: none !important; +} + +/* Mobile views */ +.sb-page-width { + width: 100%; +} + +.sb-article-container, +.sb-footer-content__inner, +.drop-secondary-sidebar-for-full-width-content .sb-article, +.drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 100vw; +} + +.sb-article, +.match-content-width { + padding: 0 1rem; + box-sizing: border-box; +} + +@media (min-width: 32rem) { + .sb-article, + .match-content-width { + padding: 0 2rem; + } +} + +/* Tablet views */ +@media (min-width: 42rem) { + .sb-article-container { + width: auto; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 42rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 46rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 46rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 50rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 50rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Tablet views */ +@media (min-width: 59rem) { + .sb-sidebar-secondary { + position: static; + } + .hide-when-secondary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} +@media (min-width: 63rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } + .sb-article, + .match-content-width { + width: 46rem; + } +} +@media (min-width: 67rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-article, + .match-content-width { + width: 50rem; + } +} + +/* Desktop views */ +@media (min-width: 76rem) { + .sb-sidebar-primary { + position: static; + } + .hide-when-primary-sidebar-shown { + display: none !important; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 59rem; + } + .sb-article, + .match-content-width { + width: 42rem; + } +} + +/* Full desktop views */ +@media (min-width: 80rem) { + .sb-article, + .match-content-width { + width: 46rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 63rem; + } +} + +@media (min-width: 84rem) { + .sb-article, + .match-content-width { + width: 50rem; + } + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } +} + +@media (min-width: 88rem) { + .sb-footer-content__inner, + .drop-secondary-sidebar-for-full-width-content .sb-article, + .drop-secondary-sidebar-for-full-width-content .match-content-width { + width: 67rem; + } + .sb-page-width { + width: 88rem; + } +} diff --git a/_static/sphinx-design.min.css b/_static/sphinx-design.min.css new file mode 100644 index 0000000..a325746 --- /dev/null +++ b/_static/sphinx-design.min.css @@ -0,0 +1 @@ +.sd-bg-primary{background-color:var(--sd-color-primary) !important}.sd-bg-text-primary{color:var(--sd-color-primary-text) !important}button.sd-bg-primary:focus,button.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}a.sd-bg-primary:focus,a.sd-bg-primary:hover{background-color:var(--sd-color-primary-highlight) !important}.sd-bg-secondary{background-color:var(--sd-color-secondary) !important}.sd-bg-text-secondary{color:var(--sd-color-secondary-text) !important}button.sd-bg-secondary:focus,button.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}a.sd-bg-secondary:focus,a.sd-bg-secondary:hover{background-color:var(--sd-color-secondary-highlight) !important}.sd-bg-success{background-color:var(--sd-color-success) !important}.sd-bg-text-success{color:var(--sd-color-success-text) !important}button.sd-bg-success:focus,button.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}a.sd-bg-success:focus,a.sd-bg-success:hover{background-color:var(--sd-color-success-highlight) !important}.sd-bg-info{background-color:var(--sd-color-info) !important}.sd-bg-text-info{color:var(--sd-color-info-text) !important}button.sd-bg-info:focus,button.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}a.sd-bg-info:focus,a.sd-bg-info:hover{background-color:var(--sd-color-info-highlight) !important}.sd-bg-warning{background-color:var(--sd-color-warning) !important}.sd-bg-text-warning{color:var(--sd-color-warning-text) !important}button.sd-bg-warning:focus,button.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}a.sd-bg-warning:focus,a.sd-bg-warning:hover{background-color:var(--sd-color-warning-highlight) !important}.sd-bg-danger{background-color:var(--sd-color-danger) !important}.sd-bg-text-danger{color:var(--sd-color-danger-text) !important}button.sd-bg-danger:focus,button.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}a.sd-bg-danger:focus,a.sd-bg-danger:hover{background-color:var(--sd-color-danger-highlight) !important}.sd-bg-light{background-color:var(--sd-color-light) !important}.sd-bg-text-light{color:var(--sd-color-light-text) !important}button.sd-bg-light:focus,button.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}a.sd-bg-light:focus,a.sd-bg-light:hover{background-color:var(--sd-color-light-highlight) !important}.sd-bg-muted{background-color:var(--sd-color-muted) !important}.sd-bg-text-muted{color:var(--sd-color-muted-text) !important}button.sd-bg-muted:focus,button.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}a.sd-bg-muted:focus,a.sd-bg-muted:hover{background-color:var(--sd-color-muted-highlight) !important}.sd-bg-dark{background-color:var(--sd-color-dark) !important}.sd-bg-text-dark{color:var(--sd-color-dark-text) !important}button.sd-bg-dark:focus,button.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}a.sd-bg-dark:focus,a.sd-bg-dark:hover{background-color:var(--sd-color-dark-highlight) !important}.sd-bg-black{background-color:var(--sd-color-black) !important}.sd-bg-text-black{color:var(--sd-color-black-text) !important}button.sd-bg-black:focus,button.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}a.sd-bg-black:focus,a.sd-bg-black:hover{background-color:var(--sd-color-black-highlight) !important}.sd-bg-white{background-color:var(--sd-color-white) !important}.sd-bg-text-white{color:var(--sd-color-white-text) !important}button.sd-bg-white:focus,button.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}a.sd-bg-white:focus,a.sd-bg-white:hover{background-color:var(--sd-color-white-highlight) !important}.sd-text-primary,.sd-text-primary>p{color:var(--sd-color-primary) !important}a.sd-text-primary:focus,a.sd-text-primary:hover{color:var(--sd-color-primary-highlight) !important}.sd-text-secondary,.sd-text-secondary>p{color:var(--sd-color-secondary) !important}a.sd-text-secondary:focus,a.sd-text-secondary:hover{color:var(--sd-color-secondary-highlight) !important}.sd-text-success,.sd-text-success>p{color:var(--sd-color-success) !important}a.sd-text-success:focus,a.sd-text-success:hover{color:var(--sd-color-success-highlight) !important}.sd-text-info,.sd-text-info>p{color:var(--sd-color-info) !important}a.sd-text-info:focus,a.sd-text-info:hover{color:var(--sd-color-info-highlight) !important}.sd-text-warning,.sd-text-warning>p{color:var(--sd-color-warning) !important}a.sd-text-warning:focus,a.sd-text-warning:hover{color:var(--sd-color-warning-highlight) !important}.sd-text-danger,.sd-text-danger>p{color:var(--sd-color-danger) !important}a.sd-text-danger:focus,a.sd-text-danger:hover{color:var(--sd-color-danger-highlight) !important}.sd-text-light,.sd-text-light>p{color:var(--sd-color-light) !important}a.sd-text-light:focus,a.sd-text-light:hover{color:var(--sd-color-light-highlight) !important}.sd-text-muted,.sd-text-muted>p{color:var(--sd-color-muted) !important}a.sd-text-muted:focus,a.sd-text-muted:hover{color:var(--sd-color-muted-highlight) !important}.sd-text-dark,.sd-text-dark>p{color:var(--sd-color-dark) !important}a.sd-text-dark:focus,a.sd-text-dark:hover{color:var(--sd-color-dark-highlight) !important}.sd-text-black,.sd-text-black>p{color:var(--sd-color-black) !important}a.sd-text-black:focus,a.sd-text-black:hover{color:var(--sd-color-black-highlight) !important}.sd-text-white,.sd-text-white>p{color:var(--sd-color-white) !important}a.sd-text-white:focus,a.sd-text-white:hover{color:var(--sd-color-white-highlight) !important}.sd-outline-primary{border-color:var(--sd-color-primary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-primary:focus,a.sd-outline-primary:hover{border-color:var(--sd-color-primary-highlight) !important}.sd-outline-secondary{border-color:var(--sd-color-secondary) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-secondary:focus,a.sd-outline-secondary:hover{border-color:var(--sd-color-secondary-highlight) !important}.sd-outline-success{border-color:var(--sd-color-success) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-success:focus,a.sd-outline-success:hover{border-color:var(--sd-color-success-highlight) !important}.sd-outline-info{border-color:var(--sd-color-info) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-info:focus,a.sd-outline-info:hover{border-color:var(--sd-color-info-highlight) !important}.sd-outline-warning{border-color:var(--sd-color-warning) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-warning:focus,a.sd-outline-warning:hover{border-color:var(--sd-color-warning-highlight) !important}.sd-outline-danger{border-color:var(--sd-color-danger) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-danger:focus,a.sd-outline-danger:hover{border-color:var(--sd-color-danger-highlight) !important}.sd-outline-light{border-color:var(--sd-color-light) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-light:focus,a.sd-outline-light:hover{border-color:var(--sd-color-light-highlight) !important}.sd-outline-muted{border-color:var(--sd-color-muted) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-muted:focus,a.sd-outline-muted:hover{border-color:var(--sd-color-muted-highlight) !important}.sd-outline-dark{border-color:var(--sd-color-dark) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-dark:focus,a.sd-outline-dark:hover{border-color:var(--sd-color-dark-highlight) !important}.sd-outline-black{border-color:var(--sd-color-black) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-black:focus,a.sd-outline-black:hover{border-color:var(--sd-color-black-highlight) !important}.sd-outline-white{border-color:var(--sd-color-white) !important;border-style:solid !important;border-width:1px !important}a.sd-outline-white:focus,a.sd-outline-white:hover{border-color:var(--sd-color-white-highlight) !important}.sd-bg-transparent{background-color:transparent !important}.sd-outline-transparent{border-color:transparent !important}.sd-text-transparent{color:transparent !important}.sd-p-0{padding:0 !important}.sd-pt-0,.sd-py-0{padding-top:0 !important}.sd-pr-0,.sd-px-0{padding-right:0 !important}.sd-pb-0,.sd-py-0{padding-bottom:0 !important}.sd-pl-0,.sd-px-0{padding-left:0 !important}.sd-p-1{padding:.25rem !important}.sd-pt-1,.sd-py-1{padding-top:.25rem !important}.sd-pr-1,.sd-px-1{padding-right:.25rem !important}.sd-pb-1,.sd-py-1{padding-bottom:.25rem !important}.sd-pl-1,.sd-px-1{padding-left:.25rem !important}.sd-p-2{padding:.5rem !important}.sd-pt-2,.sd-py-2{padding-top:.5rem !important}.sd-pr-2,.sd-px-2{padding-right:.5rem !important}.sd-pb-2,.sd-py-2{padding-bottom:.5rem !important}.sd-pl-2,.sd-px-2{padding-left:.5rem !important}.sd-p-3{padding:1rem !important}.sd-pt-3,.sd-py-3{padding-top:1rem !important}.sd-pr-3,.sd-px-3{padding-right:1rem !important}.sd-pb-3,.sd-py-3{padding-bottom:1rem !important}.sd-pl-3,.sd-px-3{padding-left:1rem !important}.sd-p-4{padding:1.5rem !important}.sd-pt-4,.sd-py-4{padding-top:1.5rem !important}.sd-pr-4,.sd-px-4{padding-right:1.5rem !important}.sd-pb-4,.sd-py-4{padding-bottom:1.5rem !important}.sd-pl-4,.sd-px-4{padding-left:1.5rem !important}.sd-p-5{padding:3rem !important}.sd-pt-5,.sd-py-5{padding-top:3rem !important}.sd-pr-5,.sd-px-5{padding-right:3rem !important}.sd-pb-5,.sd-py-5{padding-bottom:3rem !important}.sd-pl-5,.sd-px-5{padding-left:3rem !important}.sd-m-auto{margin:auto !important}.sd-mt-auto,.sd-my-auto{margin-top:auto !important}.sd-mr-auto,.sd-mx-auto{margin-right:auto !important}.sd-mb-auto,.sd-my-auto{margin-bottom:auto !important}.sd-ml-auto,.sd-mx-auto{margin-left:auto !important}.sd-m-0{margin:0 !important}.sd-mt-0,.sd-my-0{margin-top:0 !important}.sd-mr-0,.sd-mx-0{margin-right:0 !important}.sd-mb-0,.sd-my-0{margin-bottom:0 !important}.sd-ml-0,.sd-mx-0{margin-left:0 !important}.sd-m-1{margin:.25rem !important}.sd-mt-1,.sd-my-1{margin-top:.25rem !important}.sd-mr-1,.sd-mx-1{margin-right:.25rem !important}.sd-mb-1,.sd-my-1{margin-bottom:.25rem !important}.sd-ml-1,.sd-mx-1{margin-left:.25rem !important}.sd-m-2{margin:.5rem !important}.sd-mt-2,.sd-my-2{margin-top:.5rem !important}.sd-mr-2,.sd-mx-2{margin-right:.5rem !important}.sd-mb-2,.sd-my-2{margin-bottom:.5rem !important}.sd-ml-2,.sd-mx-2{margin-left:.5rem !important}.sd-m-3{margin:1rem !important}.sd-mt-3,.sd-my-3{margin-top:1rem !important}.sd-mr-3,.sd-mx-3{margin-right:1rem !important}.sd-mb-3,.sd-my-3{margin-bottom:1rem !important}.sd-ml-3,.sd-mx-3{margin-left:1rem !important}.sd-m-4{margin:1.5rem !important}.sd-mt-4,.sd-my-4{margin-top:1.5rem !important}.sd-mr-4,.sd-mx-4{margin-right:1.5rem !important}.sd-mb-4,.sd-my-4{margin-bottom:1.5rem !important}.sd-ml-4,.sd-mx-4{margin-left:1.5rem !important}.sd-m-5{margin:3rem !important}.sd-mt-5,.sd-my-5{margin-top:3rem !important}.sd-mr-5,.sd-mx-5{margin-right:3rem !important}.sd-mb-5,.sd-my-5{margin-bottom:3rem !important}.sd-ml-5,.sd-mx-5{margin-left:3rem !important}.sd-w-25{width:25% !important}.sd-w-50{width:50% !important}.sd-w-75{width:75% !important}.sd-w-100{width:100% !important}.sd-w-auto{width:auto !important}.sd-h-25{height:25% !important}.sd-h-50{height:50% !important}.sd-h-75{height:75% !important}.sd-h-100{height:100% !important}.sd-h-auto{height:auto !important}.sd-d-none{display:none !important}.sd-d-inline{display:inline !important}.sd-d-inline-block{display:inline-block !important}.sd-d-block{display:block !important}.sd-d-grid{display:grid !important}.sd-d-flex-row{display:-ms-flexbox !important;display:flex !important;flex-direction:row !important}.sd-d-flex-column{display:-ms-flexbox !important;display:flex !important;flex-direction:column !important}.sd-d-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}@media(min-width: 576px){.sd-d-sm-none{display:none !important}.sd-d-sm-inline{display:inline !important}.sd-d-sm-inline-block{display:inline-block !important}.sd-d-sm-block{display:block !important}.sd-d-sm-grid{display:grid !important}.sd-d-sm-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-sm-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 768px){.sd-d-md-none{display:none !important}.sd-d-md-inline{display:inline !important}.sd-d-md-inline-block{display:inline-block !important}.sd-d-md-block{display:block !important}.sd-d-md-grid{display:grid !important}.sd-d-md-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-md-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 992px){.sd-d-lg-none{display:none !important}.sd-d-lg-inline{display:inline !important}.sd-d-lg-inline-block{display:inline-block !important}.sd-d-lg-block{display:block !important}.sd-d-lg-grid{display:grid !important}.sd-d-lg-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-lg-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}@media(min-width: 1200px){.sd-d-xl-none{display:none !important}.sd-d-xl-inline{display:inline !important}.sd-d-xl-inline-block{display:inline-block !important}.sd-d-xl-block{display:block !important}.sd-d-xl-grid{display:grid !important}.sd-d-xl-flex{display:-ms-flexbox !important;display:flex !important}.sd-d-xl-inline-flex{display:-ms-inline-flexbox !important;display:inline-flex !important}}.sd-align-major-start{justify-content:flex-start !important}.sd-align-major-end{justify-content:flex-end !important}.sd-align-major-center{justify-content:center !important}.sd-align-major-justify{justify-content:space-between !important}.sd-align-major-spaced{justify-content:space-evenly !important}.sd-align-minor-start{align-items:flex-start !important}.sd-align-minor-end{align-items:flex-end !important}.sd-align-minor-center{align-items:center !important}.sd-align-minor-stretch{align-items:stretch !important}.sd-text-justify{text-align:justify !important}.sd-text-left{text-align:left !important}.sd-text-right{text-align:right !important}.sd-text-center{text-align:center !important}.sd-font-weight-light{font-weight:300 !important}.sd-font-weight-lighter{font-weight:lighter !important}.sd-font-weight-normal{font-weight:400 !important}.sd-font-weight-bold{font-weight:700 !important}.sd-font-weight-bolder{font-weight:bolder !important}.sd-font-italic{font-style:italic !important}.sd-text-decoration-none{text-decoration:none !important}.sd-text-lowercase{text-transform:lowercase !important}.sd-text-uppercase{text-transform:uppercase !important}.sd-text-capitalize{text-transform:capitalize !important}.sd-text-wrap{white-space:normal !important}.sd-text-nowrap{white-space:nowrap !important}.sd-text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sd-fs-1,.sd-fs-1>p{font-size:calc(1.375rem + 1.5vw) !important;line-height:unset !important}.sd-fs-2,.sd-fs-2>p{font-size:calc(1.325rem + 0.9vw) !important;line-height:unset !important}.sd-fs-3,.sd-fs-3>p{font-size:calc(1.3rem + 0.6vw) !important;line-height:unset !important}.sd-fs-4,.sd-fs-4>p{font-size:calc(1.275rem + 0.3vw) !important;line-height:unset !important}.sd-fs-5,.sd-fs-5>p{font-size:1.25rem !important;line-height:unset !important}.sd-fs-6,.sd-fs-6>p{font-size:1rem !important;line-height:unset !important}.sd-border-0{border:0 solid !important}.sd-border-top-0{border-top:0 solid !important}.sd-border-bottom-0{border-bottom:0 solid !important}.sd-border-right-0{border-right:0 solid !important}.sd-border-left-0{border-left:0 solid !important}.sd-border-1{border:1px solid !important}.sd-border-top-1{border-top:1px solid !important}.sd-border-bottom-1{border-bottom:1px solid !important}.sd-border-right-1{border-right:1px solid !important}.sd-border-left-1{border-left:1px solid !important}.sd-border-2{border:2px solid !important}.sd-border-top-2{border-top:2px solid !important}.sd-border-bottom-2{border-bottom:2px solid !important}.sd-border-right-2{border-right:2px solid !important}.sd-border-left-2{border-left:2px solid !important}.sd-border-3{border:3px solid !important}.sd-border-top-3{border-top:3px solid !important}.sd-border-bottom-3{border-bottom:3px solid !important}.sd-border-right-3{border-right:3px solid !important}.sd-border-left-3{border-left:3px solid !important}.sd-border-4{border:4px solid !important}.sd-border-top-4{border-top:4px solid !important}.sd-border-bottom-4{border-bottom:4px solid !important}.sd-border-right-4{border-right:4px solid !important}.sd-border-left-4{border-left:4px solid !important}.sd-border-5{border:5px solid !important}.sd-border-top-5{border-top:5px solid !important}.sd-border-bottom-5{border-bottom:5px solid !important}.sd-border-right-5{border-right:5px solid !important}.sd-border-left-5{border-left:5px solid !important}.sd-rounded-0{border-radius:0 !important}.sd-rounded-1{border-radius:.2rem !important}.sd-rounded-2{border-radius:.3rem !important}.sd-rounded-3{border-radius:.5rem !important}.sd-rounded-pill{border-radius:50rem !important}.sd-rounded-circle{border-radius:50% !important}.shadow-none{box-shadow:none !important}.sd-shadow-sm{box-shadow:0 .125rem .25rem var(--sd-color-shadow) !important}.sd-shadow-md{box-shadow:0 .5rem 1rem var(--sd-color-shadow) !important}.sd-shadow-lg{box-shadow:0 1rem 3rem var(--sd-color-shadow) !important}@keyframes sd-slide-from-left{0%{transform:translateX(-100%)}100%{transform:translateX(0)}}@keyframes sd-slide-from-right{0%{transform:translateX(200%)}100%{transform:translateX(0)}}@keyframes sd-grow100{0%{transform:scale(0);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50{0%{transform:scale(0.5);opacity:.5}100%{transform:scale(1);opacity:1}}@keyframes sd-grow50-rot20{0%{transform:scale(0.5) rotateZ(-20deg);opacity:.5}75%{transform:scale(1) rotateZ(5deg);opacity:1}95%{transform:scale(1) rotateZ(-1deg);opacity:1}100%{transform:scale(1) rotateZ(0);opacity:1}}.sd-animate-slide-from-left{animation:1s ease-out 0s 1 normal none running sd-slide-from-left}.sd-animate-slide-from-right{animation:1s ease-out 0s 1 normal none running sd-slide-from-right}.sd-animate-grow100{animation:1s ease-out 0s 1 normal none running sd-grow100}.sd-animate-grow50{animation:1s ease-out 0s 1 normal none running sd-grow50}.sd-animate-grow50-rot20{animation:1s ease-out 0s 1 normal none running sd-grow50-rot20}.sd-badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.25rem}.sd-badge:empty{display:none}a.sd-badge{text-decoration:none}.sd-btn .sd-badge{position:relative;top:-1px}.sd-btn{background-color:transparent;border:1px solid transparent;border-radius:.25rem;cursor:pointer;display:inline-block;font-weight:400;font-size:1rem;line-height:1.5;padding:.375rem .75rem;text-align:center;text-decoration:none;transition:color .15s ease-in-out,background-color .15s ease-in-out,border-color .15s ease-in-out,box-shadow .15s ease-in-out;vertical-align:middle;user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none}.sd-btn:hover{text-decoration:none}@media(prefers-reduced-motion: reduce){.sd-btn{transition:none}}.sd-btn-primary,.sd-btn-outline-primary:hover,.sd-btn-outline-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-primary:hover,.sd-btn-primary:focus{color:var(--sd-color-primary-text) !important;background-color:var(--sd-color-primary-highlight) !important;border-color:var(--sd-color-primary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-primary{color:var(--sd-color-primary) !important;border-color:var(--sd-color-primary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary,.sd-btn-outline-secondary:hover,.sd-btn-outline-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-secondary:hover,.sd-btn-secondary:focus{color:var(--sd-color-secondary-text) !important;background-color:var(--sd-color-secondary-highlight) !important;border-color:var(--sd-color-secondary-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-secondary{color:var(--sd-color-secondary) !important;border-color:var(--sd-color-secondary) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success,.sd-btn-outline-success:hover,.sd-btn-outline-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-success:hover,.sd-btn-success:focus{color:var(--sd-color-success-text) !important;background-color:var(--sd-color-success-highlight) !important;border-color:var(--sd-color-success-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-success{color:var(--sd-color-success) !important;border-color:var(--sd-color-success) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info,.sd-btn-outline-info:hover,.sd-btn-outline-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-info:hover,.sd-btn-info:focus{color:var(--sd-color-info-text) !important;background-color:var(--sd-color-info-highlight) !important;border-color:var(--sd-color-info-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-info{color:var(--sd-color-info) !important;border-color:var(--sd-color-info) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning,.sd-btn-outline-warning:hover,.sd-btn-outline-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-warning:hover,.sd-btn-warning:focus{color:var(--sd-color-warning-text) !important;background-color:var(--sd-color-warning-highlight) !important;border-color:var(--sd-color-warning-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-warning{color:var(--sd-color-warning) !important;border-color:var(--sd-color-warning) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger,.sd-btn-outline-danger:hover,.sd-btn-outline-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-danger:hover,.sd-btn-danger:focus{color:var(--sd-color-danger-text) !important;background-color:var(--sd-color-danger-highlight) !important;border-color:var(--sd-color-danger-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-danger{color:var(--sd-color-danger) !important;border-color:var(--sd-color-danger) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light,.sd-btn-outline-light:hover,.sd-btn-outline-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-light:hover,.sd-btn-light:focus{color:var(--sd-color-light-text) !important;background-color:var(--sd-color-light-highlight) !important;border-color:var(--sd-color-light-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-light{color:var(--sd-color-light) !important;border-color:var(--sd-color-light) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted,.sd-btn-outline-muted:hover,.sd-btn-outline-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-muted:hover,.sd-btn-muted:focus{color:var(--sd-color-muted-text) !important;background-color:var(--sd-color-muted-highlight) !important;border-color:var(--sd-color-muted-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-muted{color:var(--sd-color-muted) !important;border-color:var(--sd-color-muted) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark,.sd-btn-outline-dark:hover,.sd-btn-outline-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-dark:hover,.sd-btn-dark:focus{color:var(--sd-color-dark-text) !important;background-color:var(--sd-color-dark-highlight) !important;border-color:var(--sd-color-dark-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-dark{color:var(--sd-color-dark) !important;border-color:var(--sd-color-dark) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black,.sd-btn-outline-black:hover,.sd-btn-outline-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-black:hover,.sd-btn-black:focus{color:var(--sd-color-black-text) !important;background-color:var(--sd-color-black-highlight) !important;border-color:var(--sd-color-black-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-black{color:var(--sd-color-black) !important;border-color:var(--sd-color-black) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white,.sd-btn-outline-white:hover,.sd-btn-outline-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-btn-white:hover,.sd-btn-white:focus{color:var(--sd-color-white-text) !important;background-color:var(--sd-color-white-highlight) !important;border-color:var(--sd-color-white-highlight) !important;border-width:1px !important;border-style:solid !important}.sd-btn-outline-white{color:var(--sd-color-white) !important;border-color:var(--sd-color-white) !important;border-width:1px !important;border-style:solid !important}.sd-stretched-link::after{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;content:""}.sd-hide-link-text{font-size:0}.sd-octicon,.sd-material-icon{display:inline-block;fill:currentColor;vertical-align:middle}.sd-avatar-xs{border-radius:50%;object-fit:cover;object-position:center;width:1rem;height:1rem}.sd-avatar-sm{border-radius:50%;object-fit:cover;object-position:center;width:3rem;height:3rem}.sd-avatar-md{border-radius:50%;object-fit:cover;object-position:center;width:5rem;height:5rem}.sd-avatar-lg{border-radius:50%;object-fit:cover;object-position:center;width:7rem;height:7rem}.sd-avatar-xl{border-radius:50%;object-fit:cover;object-position:center;width:10rem;height:10rem}.sd-avatar-inherit{border-radius:50%;object-fit:cover;object-position:center;width:inherit;height:inherit}.sd-avatar-initial{border-radius:50%;object-fit:cover;object-position:center;width:initial;height:initial}.sd-card{background-clip:border-box;background-color:var(--sd-color-card-background);border:1px solid var(--sd-color-card-border);border-radius:.25rem;color:var(--sd-color-card-text);display:-ms-flexbox;display:flex;-ms-flex-direction:column;flex-direction:column;min-width:0;position:relative;word-wrap:break-word}.sd-card>hr{margin-left:0;margin-right:0}.sd-card-hover:hover{border-color:var(--sd-color-card-border-hover);transform:scale(1.01)}.sd-card-body{-ms-flex:1 1 auto;flex:1 1 auto;padding:1rem 1rem}.sd-card-title{margin-bottom:.5rem}.sd-card-subtitle{margin-top:-0.25rem;margin-bottom:0}.sd-card-text:last-child{margin-bottom:0}.sd-card-link:hover{text-decoration:none}.sd-card-link+.card-link{margin-left:1rem}.sd-card-header{padding:.5rem 1rem;margin-bottom:0;background-color:var(--sd-color-card-header);border-bottom:1px solid var(--sd-color-card-border)}.sd-card-header:first-child{border-radius:calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0}.sd-card-footer{padding:.5rem 1rem;background-color:var(--sd-color-card-footer);border-top:1px solid var(--sd-color-card-border)}.sd-card-footer:last-child{border-radius:0 0 calc(0.25rem - 1px) calc(0.25rem - 1px)}.sd-card-header-tabs{margin-right:-0.5rem;margin-bottom:-0.5rem;margin-left:-0.5rem;border-bottom:0}.sd-card-header-pills{margin-right:-0.5rem;margin-left:-0.5rem}.sd-card-img-overlay{position:absolute;top:0;right:0;bottom:0;left:0;padding:1rem;border-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom,.sd-card-img-top{width:100%}.sd-card-img,.sd-card-img-top{border-top-left-radius:calc(0.25rem - 1px);border-top-right-radius:calc(0.25rem - 1px)}.sd-card-img,.sd-card-img-bottom{border-bottom-left-radius:calc(0.25rem - 1px);border-bottom-right-radius:calc(0.25rem - 1px)}.sd-cards-carousel{width:100%;display:flex;flex-wrap:nowrap;-ms-flex-direction:row;flex-direction:row;overflow-x:hidden;scroll-snap-type:x mandatory}.sd-cards-carousel.sd-show-scrollbar{overflow-x:auto}.sd-cards-carousel:hover,.sd-cards-carousel:focus{overflow-x:auto}.sd-cards-carousel>.sd-card{flex-shrink:0;scroll-snap-align:start}.sd-cards-carousel>.sd-card:not(:last-child){margin-right:3px}.sd-card-cols-1>.sd-card{width:90%}.sd-card-cols-2>.sd-card{width:45%}.sd-card-cols-3>.sd-card{width:30%}.sd-card-cols-4>.sd-card{width:22.5%}.sd-card-cols-5>.sd-card{width:18%}.sd-card-cols-6>.sd-card{width:15%}.sd-card-cols-7>.sd-card{width:12.8571428571%}.sd-card-cols-8>.sd-card{width:11.25%}.sd-card-cols-9>.sd-card{width:10%}.sd-card-cols-10>.sd-card{width:9%}.sd-card-cols-11>.sd-card{width:8.1818181818%}.sd-card-cols-12>.sd-card{width:7.5%}.sd-container,.sd-container-fluid,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container-xl{margin-left:auto;margin-right:auto;padding-left:var(--sd-gutter-x, 0.75rem);padding-right:var(--sd-gutter-x, 0.75rem);width:100%}@media(min-width: 576px){.sd-container-sm,.sd-container{max-width:540px}}@media(min-width: 768px){.sd-container-md,.sd-container-sm,.sd-container{max-width:720px}}@media(min-width: 992px){.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:960px}}@media(min-width: 1200px){.sd-container-xl,.sd-container-lg,.sd-container-md,.sd-container-sm,.sd-container{max-width:1140px}}.sd-row{--sd-gutter-x: 1.5rem;--sd-gutter-y: 0;display:-ms-flexbox;display:flex;-ms-flex-wrap:wrap;flex-wrap:wrap;margin-top:calc(var(--sd-gutter-y) * -1);margin-right:calc(var(--sd-gutter-x) * -0.5);margin-left:calc(var(--sd-gutter-x) * -0.5)}.sd-row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--sd-gutter-x) * 0.5);padding-left:calc(var(--sd-gutter-x) * 0.5);margin-top:var(--sd-gutter-y)}.sd-col{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-auto>*{flex:0 0 auto;width:auto}.sd-row-cols-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}@media(min-width: 576px){.sd-col-sm{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-sm-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-sm-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-sm-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-sm-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-sm-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-sm-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-sm-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-sm-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-sm-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-sm-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-sm-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-sm-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-sm-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 768px){.sd-col-md{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-md-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-md-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-md-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-md-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-md-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-md-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-md-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-md-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-md-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-md-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-md-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-md-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-md-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 992px){.sd-col-lg{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-lg-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-lg-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-lg-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-lg-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-lg-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-lg-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-lg-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-lg-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-lg-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-lg-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-lg-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-lg-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-lg-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}@media(min-width: 1200px){.sd-col-xl{flex:1 0 0%;-ms-flex:1 0 0%}.sd-row-cols-xl-auto{flex:1 0 auto;-ms-flex:1 0 auto;width:100%}.sd-row-cols-xl-1>*{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-row-cols-xl-2>*{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-row-cols-xl-3>*{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-row-cols-xl-4>*{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-row-cols-xl-5>*{flex:0 0 auto;-ms-flex:0 0 auto;width:20%}.sd-row-cols-xl-6>*{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-row-cols-xl-7>*{flex:0 0 auto;-ms-flex:0 0 auto;width:14.2857142857%}.sd-row-cols-xl-8>*{flex:0 0 auto;-ms-flex:0 0 auto;width:12.5%}.sd-row-cols-xl-9>*{flex:0 0 auto;-ms-flex:0 0 auto;width:11.1111111111%}.sd-row-cols-xl-10>*{flex:0 0 auto;-ms-flex:0 0 auto;width:10%}.sd-row-cols-xl-11>*{flex:0 0 auto;-ms-flex:0 0 auto;width:9.0909090909%}.sd-row-cols-xl-12>*{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}}.sd-col-auto{flex:0 0 auto;-ms-flex:0 0 auto;width:auto}.sd-col-1{flex:0 0 auto;-ms-flex:0 0 auto;width:8.3333333333%}.sd-col-2{flex:0 0 auto;-ms-flex:0 0 auto;width:16.6666666667%}.sd-col-3{flex:0 0 auto;-ms-flex:0 0 auto;width:25%}.sd-col-4{flex:0 0 auto;-ms-flex:0 0 auto;width:33.3333333333%}.sd-col-5{flex:0 0 auto;-ms-flex:0 0 auto;width:41.6666666667%}.sd-col-6{flex:0 0 auto;-ms-flex:0 0 auto;width:50%}.sd-col-7{flex:0 0 auto;-ms-flex:0 0 auto;width:58.3333333333%}.sd-col-8{flex:0 0 auto;-ms-flex:0 0 auto;width:66.6666666667%}.sd-col-9{flex:0 0 auto;-ms-flex:0 0 auto;width:75%}.sd-col-10{flex:0 0 auto;-ms-flex:0 0 auto;width:83.3333333333%}.sd-col-11{flex:0 0 auto;-ms-flex:0 0 auto;width:91.6666666667%}.sd-col-12{flex:0 0 auto;-ms-flex:0 0 auto;width:100%}.sd-g-0,.sd-gy-0{--sd-gutter-y: 0}.sd-g-0,.sd-gx-0{--sd-gutter-x: 0}.sd-g-1,.sd-gy-1{--sd-gutter-y: 0.25rem}.sd-g-1,.sd-gx-1{--sd-gutter-x: 0.25rem}.sd-g-2,.sd-gy-2{--sd-gutter-y: 0.5rem}.sd-g-2,.sd-gx-2{--sd-gutter-x: 0.5rem}.sd-g-3,.sd-gy-3{--sd-gutter-y: 1rem}.sd-g-3,.sd-gx-3{--sd-gutter-x: 1rem}.sd-g-4,.sd-gy-4{--sd-gutter-y: 1.5rem}.sd-g-4,.sd-gx-4{--sd-gutter-x: 1.5rem}.sd-g-5,.sd-gy-5{--sd-gutter-y: 3rem}.sd-g-5,.sd-gx-5{--sd-gutter-x: 3rem}@media(min-width: 576px){.sd-col-sm-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-sm-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-sm-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-sm-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-sm-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-sm-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-sm-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-sm-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-sm-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-sm-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-sm-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-sm-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-sm-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-sm-0,.sd-gy-sm-0{--sd-gutter-y: 0}.sd-g-sm-0,.sd-gx-sm-0{--sd-gutter-x: 0}.sd-g-sm-1,.sd-gy-sm-1{--sd-gutter-y: 0.25rem}.sd-g-sm-1,.sd-gx-sm-1{--sd-gutter-x: 0.25rem}.sd-g-sm-2,.sd-gy-sm-2{--sd-gutter-y: 0.5rem}.sd-g-sm-2,.sd-gx-sm-2{--sd-gutter-x: 0.5rem}.sd-g-sm-3,.sd-gy-sm-3{--sd-gutter-y: 1rem}.sd-g-sm-3,.sd-gx-sm-3{--sd-gutter-x: 1rem}.sd-g-sm-4,.sd-gy-sm-4{--sd-gutter-y: 1.5rem}.sd-g-sm-4,.sd-gx-sm-4{--sd-gutter-x: 1.5rem}.sd-g-sm-5,.sd-gy-sm-5{--sd-gutter-y: 3rem}.sd-g-sm-5,.sd-gx-sm-5{--sd-gutter-x: 3rem}}@media(min-width: 768px){.sd-col-md-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-md-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-md-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-md-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-md-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-md-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-md-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-md-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-md-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-md-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-md-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-md-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-md-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-md-0,.sd-gy-md-0{--sd-gutter-y: 0}.sd-g-md-0,.sd-gx-md-0{--sd-gutter-x: 0}.sd-g-md-1,.sd-gy-md-1{--sd-gutter-y: 0.25rem}.sd-g-md-1,.sd-gx-md-1{--sd-gutter-x: 0.25rem}.sd-g-md-2,.sd-gy-md-2{--sd-gutter-y: 0.5rem}.sd-g-md-2,.sd-gx-md-2{--sd-gutter-x: 0.5rem}.sd-g-md-3,.sd-gy-md-3{--sd-gutter-y: 1rem}.sd-g-md-3,.sd-gx-md-3{--sd-gutter-x: 1rem}.sd-g-md-4,.sd-gy-md-4{--sd-gutter-y: 1.5rem}.sd-g-md-4,.sd-gx-md-4{--sd-gutter-x: 1.5rem}.sd-g-md-5,.sd-gy-md-5{--sd-gutter-y: 3rem}.sd-g-md-5,.sd-gx-md-5{--sd-gutter-x: 3rem}}@media(min-width: 992px){.sd-col-lg-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-lg-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-lg-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-lg-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-lg-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-lg-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-lg-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-lg-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-lg-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-lg-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-lg-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-lg-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-lg-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-lg-0,.sd-gy-lg-0{--sd-gutter-y: 0}.sd-g-lg-0,.sd-gx-lg-0{--sd-gutter-x: 0}.sd-g-lg-1,.sd-gy-lg-1{--sd-gutter-y: 0.25rem}.sd-g-lg-1,.sd-gx-lg-1{--sd-gutter-x: 0.25rem}.sd-g-lg-2,.sd-gy-lg-2{--sd-gutter-y: 0.5rem}.sd-g-lg-2,.sd-gx-lg-2{--sd-gutter-x: 0.5rem}.sd-g-lg-3,.sd-gy-lg-3{--sd-gutter-y: 1rem}.sd-g-lg-3,.sd-gx-lg-3{--sd-gutter-x: 1rem}.sd-g-lg-4,.sd-gy-lg-4{--sd-gutter-y: 1.5rem}.sd-g-lg-4,.sd-gx-lg-4{--sd-gutter-x: 1.5rem}.sd-g-lg-5,.sd-gy-lg-5{--sd-gutter-y: 3rem}.sd-g-lg-5,.sd-gx-lg-5{--sd-gutter-x: 3rem}}@media(min-width: 1200px){.sd-col-xl-auto{-ms-flex:0 0 auto;flex:0 0 auto;width:auto}.sd-col-xl-1{-ms-flex:0 0 auto;flex:0 0 auto;width:8.3333333333%}.sd-col-xl-2{-ms-flex:0 0 auto;flex:0 0 auto;width:16.6666666667%}.sd-col-xl-3{-ms-flex:0 0 auto;flex:0 0 auto;width:25%}.sd-col-xl-4{-ms-flex:0 0 auto;flex:0 0 auto;width:33.3333333333%}.sd-col-xl-5{-ms-flex:0 0 auto;flex:0 0 auto;width:41.6666666667%}.sd-col-xl-6{-ms-flex:0 0 auto;flex:0 0 auto;width:50%}.sd-col-xl-7{-ms-flex:0 0 auto;flex:0 0 auto;width:58.3333333333%}.sd-col-xl-8{-ms-flex:0 0 auto;flex:0 0 auto;width:66.6666666667%}.sd-col-xl-9{-ms-flex:0 0 auto;flex:0 0 auto;width:75%}.sd-col-xl-10{-ms-flex:0 0 auto;flex:0 0 auto;width:83.3333333333%}.sd-col-xl-11{-ms-flex:0 0 auto;flex:0 0 auto;width:91.6666666667%}.sd-col-xl-12{-ms-flex:0 0 auto;flex:0 0 auto;width:100%}.sd-g-xl-0,.sd-gy-xl-0{--sd-gutter-y: 0}.sd-g-xl-0,.sd-gx-xl-0{--sd-gutter-x: 0}.sd-g-xl-1,.sd-gy-xl-1{--sd-gutter-y: 0.25rem}.sd-g-xl-1,.sd-gx-xl-1{--sd-gutter-x: 0.25rem}.sd-g-xl-2,.sd-gy-xl-2{--sd-gutter-y: 0.5rem}.sd-g-xl-2,.sd-gx-xl-2{--sd-gutter-x: 0.5rem}.sd-g-xl-3,.sd-gy-xl-3{--sd-gutter-y: 1rem}.sd-g-xl-3,.sd-gx-xl-3{--sd-gutter-x: 1rem}.sd-g-xl-4,.sd-gy-xl-4{--sd-gutter-y: 1.5rem}.sd-g-xl-4,.sd-gx-xl-4{--sd-gutter-x: 1.5rem}.sd-g-xl-5,.sd-gy-xl-5{--sd-gutter-y: 3rem}.sd-g-xl-5,.sd-gx-xl-5{--sd-gutter-x: 3rem}}.sd-flex-row-reverse{flex-direction:row-reverse !important}details.sd-dropdown{position:relative;font-size:var(--sd-fontsize-dropdown)}details.sd-dropdown:hover{cursor:pointer}details.sd-dropdown .sd-summary-content{cursor:default}details.sd-dropdown summary.sd-summary-title{padding:.5em 1em;font-size:var(--sd-fontsize-dropdown-title);font-weight:var(--sd-fontweight-dropdown-title);user-select:none;-moz-user-select:none;-ms-user-select:none;-webkit-user-select:none;list-style:none;display:inline-flex;justify-content:space-between}details.sd-dropdown summary.sd-summary-title::-webkit-details-marker{display:none}details.sd-dropdown summary.sd-summary-title:focus{outline:none}details.sd-dropdown summary.sd-summary-title .sd-summary-icon{margin-right:.6em;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-icon svg{opacity:.8}details.sd-dropdown summary.sd-summary-title .sd-summary-text{flex-grow:1;line-height:1.5;padding-right:.5rem}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker{pointer-events:none;display:inline-flex;align-items:center}details.sd-dropdown summary.sd-summary-title .sd-summary-state-marker svg{opacity:.6}details.sd-dropdown summary.sd-summary-title:hover .sd-summary-state-marker svg{opacity:1;transform:scale(1.1)}details.sd-dropdown[open] summary .sd-octicon.no-title{visibility:hidden}details.sd-dropdown .sd-summary-chevron-right{transition:.25s}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-right{transform:rotate(90deg)}details.sd-dropdown[open]>.sd-summary-title .sd-summary-chevron-down{transform:rotate(180deg)}details.sd-dropdown:not([open]).sd-card{border:none}details.sd-dropdown:not([open])>.sd-card-header{border:1px solid var(--sd-color-card-border);border-radius:.25rem}details.sd-dropdown.sd-fade-in[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out;animation:sd-fade-in .5s ease-in-out}details.sd-dropdown.sd-fade-in-slide-down[open] summary~*{-moz-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;-webkit-animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out;animation:sd-fade-in .5s ease-in-out,sd-slide-down .5s ease-in-out}.sd-col>.sd-dropdown{width:100%}.sd-summary-content>.sd-tab-set:first-child{margin-top:0}@keyframes sd-fade-in{0%{opacity:0}100%{opacity:1}}@keyframes sd-slide-down{0%{transform:translate(0, -10px)}100%{transform:translate(0, 0)}}.sd-tab-set{border-radius:.125rem;display:flex;flex-wrap:wrap;margin:1em 0;position:relative}.sd-tab-set>input{opacity:0;position:absolute}.sd-tab-set>input:checked+label{border-color:var(--sd-color-tabs-underline-active);color:var(--sd-color-tabs-label-active)}.sd-tab-set>input:checked+label+.sd-tab-content{display:block}.sd-tab-set>input:not(:checked)+label:hover{color:var(--sd-color-tabs-label-hover);border-color:var(--sd-color-tabs-underline-hover)}.sd-tab-set>input:focus+label{outline-style:auto}.sd-tab-set>input:not(.focus-visible)+label{outline:none;-webkit-tap-highlight-color:transparent}.sd-tab-set>label{border-bottom:.125rem solid transparent;margin-bottom:0;color:var(--sd-color-tabs-label-inactive);border-color:var(--sd-color-tabs-underline-inactive);cursor:pointer;font-size:var(--sd-fontsize-tabs-label);font-weight:700;padding:1em 1.25em .5em;transition:color 250ms;width:auto;z-index:1}html .sd-tab-set>label:hover{color:var(--sd-color-tabs-label-active)}.sd-col>.sd-tab-set{width:100%}.sd-tab-content{box-shadow:0 -0.0625rem var(--sd-color-tabs-overline),0 .0625rem var(--sd-color-tabs-underline);display:none;order:99;padding-bottom:.75rem;padding-top:.75rem;width:100%}.sd-tab-content>:first-child{margin-top:0 !important}.sd-tab-content>:last-child{margin-bottom:0 !important}.sd-tab-content>.sd-tab-set{margin:0}.sd-sphinx-override,.sd-sphinx-override *{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.sd-sphinx-override p{margin-top:0}:root{--sd-color-primary: #0071bc;--sd-color-secondary: #6c757d;--sd-color-success: #28a745;--sd-color-info: #17a2b8;--sd-color-warning: #f0b37e;--sd-color-danger: #dc3545;--sd-color-light: #f8f9fa;--sd-color-muted: #6c757d;--sd-color-dark: #212529;--sd-color-black: black;--sd-color-white: white;--sd-color-primary-highlight: #0060a0;--sd-color-secondary-highlight: #5c636a;--sd-color-success-highlight: #228e3b;--sd-color-info-highlight: #148a9c;--sd-color-warning-highlight: #cc986b;--sd-color-danger-highlight: #bb2d3b;--sd-color-light-highlight: #d3d4d5;--sd-color-muted-highlight: #5c636a;--sd-color-dark-highlight: #1c1f23;--sd-color-black-highlight: black;--sd-color-white-highlight: #d9d9d9;--sd-color-primary-bg: rgba(0, 113, 188, 0.2);--sd-color-secondary-bg: rgba(108, 117, 125, 0.2);--sd-color-success-bg: rgba(40, 167, 69, 0.2);--sd-color-info-bg: rgba(23, 162, 184, 0.2);--sd-color-warning-bg: rgba(240, 179, 126, 0.2);--sd-color-danger-bg: rgba(220, 53, 69, 0.2);--sd-color-light-bg: rgba(248, 249, 250, 0.2);--sd-color-muted-bg: rgba(108, 117, 125, 0.2);--sd-color-dark-bg: rgba(33, 37, 41, 0.2);--sd-color-black-bg: rgba(0, 0, 0, 0.2);--sd-color-white-bg: rgba(255, 255, 255, 0.2);--sd-color-primary-text: #fff;--sd-color-secondary-text: #fff;--sd-color-success-text: #fff;--sd-color-info-text: #fff;--sd-color-warning-text: #212529;--sd-color-danger-text: #fff;--sd-color-light-text: #212529;--sd-color-muted-text: #fff;--sd-color-dark-text: #fff;--sd-color-black-text: #fff;--sd-color-white-text: #212529;--sd-color-shadow: rgba(0, 0, 0, 0.15);--sd-color-card-border: rgba(0, 0, 0, 0.125);--sd-color-card-border-hover: hsla(231, 99%, 66%, 1);--sd-color-card-background: transparent;--sd-color-card-text: inherit;--sd-color-card-header: transparent;--sd-color-card-footer: transparent;--sd-color-tabs-label-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-hover: hsla(231, 99%, 66%, 1);--sd-color-tabs-label-inactive: hsl(0, 0%, 66%);--sd-color-tabs-underline-active: hsla(231, 99%, 66%, 1);--sd-color-tabs-underline-hover: rgba(178, 206, 245, 0.62);--sd-color-tabs-underline-inactive: transparent;--sd-color-tabs-overline: rgb(222, 222, 222);--sd-color-tabs-underline: rgb(222, 222, 222);--sd-fontsize-tabs-label: 1rem;--sd-fontsize-dropdown: inherit;--sd-fontsize-dropdown-title: 1rem;--sd-fontweight-dropdown-title: 700} diff --git a/_static/sphinx_highlight.js b/_static/sphinx_highlight.js new file mode 100644 index 0000000..8a96c69 --- /dev/null +++ b/_static/sphinx_highlight.js @@ -0,0 +1,154 @@ +/* Highlighting utilities for Sphinx HTML documentation. */ +"use strict"; + +const SPHINX_HIGHLIGHT_ENABLED = true + +/** + * highlight a given string on a node by wrapping it in + * span elements with the given class name. + */ +const _highlight = (node, addItems, text, className) => { + if (node.nodeType === Node.TEXT_NODE) { + const val = node.nodeValue; + const parent = node.parentNode; + const pos = val.toLowerCase().indexOf(text); + if ( + pos >= 0 && + !parent.classList.contains(className) && + !parent.classList.contains("nohighlight") + ) { + let span; + + const closestNode = parent.closest("body, svg, foreignObject"); + const isInSVG = closestNode && closestNode.matches("svg"); + if (isInSVG) { + span = document.createElementNS("http://www.w3.org/2000/svg", "tspan"); + } else { + span = document.createElement("span"); + span.classList.add(className); + } + + span.appendChild(document.createTextNode(val.substr(pos, text.length))); + const rest = document.createTextNode(val.substr(pos + text.length)); + parent.insertBefore( + span, + parent.insertBefore( + rest, + node.nextSibling + ) + ); + node.nodeValue = val.substr(0, pos); + /* There may be more occurrences of search term in this node. So call this + * function recursively on the remaining fragment. + */ + _highlight(rest, addItems, text, className); + + if (isInSVG) { + const rect = document.createElementNS( + "http://www.w3.org/2000/svg", + "rect" + ); + const bbox = parent.getBBox(); + rect.x.baseVal.value = bbox.x; + rect.y.baseVal.value = bbox.y; + rect.width.baseVal.value = bbox.width; + rect.height.baseVal.value = bbox.height; + rect.setAttribute("class", className); + addItems.push({ parent: parent, target: rect }); + } + } + } else if (node.matches && !node.matches("button, select, textarea")) { + node.childNodes.forEach((el) => _highlight(el, addItems, text, className)); + } +}; +const _highlightText = (thisNode, text, className) => { + let addItems = []; + _highlight(thisNode, addItems, text, className); + addItems.forEach((obj) => + obj.parent.insertAdjacentElement("beforebegin", obj.target) + ); +}; + +/** + * Small JavaScript module for the documentation. + */ +const SphinxHighlight = { + + /** + * highlight the search words provided in localstorage in the text + */ + highlightSearchWords: () => { + if (!SPHINX_HIGHLIGHT_ENABLED) return; // bail if no highlight + + // get and clear terms from localstorage + const url = new URL(window.location); + const highlight = + localStorage.getItem("sphinx_highlight_terms") + || url.searchParams.get("highlight") + || ""; + localStorage.removeItem("sphinx_highlight_terms") + url.searchParams.delete("highlight"); + window.history.replaceState({}, "", url); + + // get individual terms from highlight string + const terms = highlight.toLowerCase().split(/\s+/).filter(x => x); + if (terms.length === 0) return; // nothing to do + + // There should never be more than one element matching "div.body" + const divBody = document.querySelectorAll("div.body"); + const body = divBody.length ? divBody[0] : document.querySelector("body"); + window.setTimeout(() => { + terms.forEach((term) => _highlightText(body, term, "highlighted")); + }, 10); + + const searchBox = document.getElementById("searchbox"); + if (searchBox === null) return; + searchBox.appendChild( + document + .createRange() + .createContextualFragment( + '" + ) + ); + }, + + /** + * helper function to hide the search marks again + */ + hideSearchWords: () => { + document + .querySelectorAll("#searchbox .highlight-link") + .forEach((el) => el.remove()); + document + .querySelectorAll("span.highlighted") + .forEach((el) => el.classList.remove("highlighted")); + localStorage.removeItem("sphinx_highlight_terms") + }, + + initEscapeListener: () => { + // only install a listener if it is really needed + if (!DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS) return; + + document.addEventListener("keydown", (event) => { + // bail for input elements + if (BLACKLISTED_KEY_CONTROL_ELEMENTS.has(document.activeElement.tagName)) return; + // bail with special keys + if (event.shiftKey || event.altKey || event.ctrlKey || event.metaKey) return; + if (DOCUMENTATION_OPTIONS.ENABLE_SEARCH_SHORTCUTS && (event.key === "Escape")) { + SphinxHighlight.hideSearchWords(); + event.preventDefault(); + } + }); + }, +}; + +_ready(() => { + /* Do not call highlightSearchWords() when we are on the search page. + * It will highlight words from the *previous* search query. + */ + if (typeof Search === "undefined") SphinxHighlight.highlightSearchWords(); + SphinxHighlight.initEscapeListener(); +}); diff --git a/_static/styles/custom.css b/_static/styles/custom.css new file mode 100644 index 0000000..0338afb --- /dev/null +++ b/_static/styles/custom.css @@ -0,0 +1,13 @@ + +/* Wide main page */ +.content { + flex: 1; +} +aside.sidebar-drawer { + width: unset; +} + +/* Left-align tables */ +article table.align-default { + margin-left: 0; +} diff --git a/_static/styles/furo-extensions.css b/_static/styles/furo-extensions.css new file mode 100644 index 0000000..8229587 --- /dev/null +++ b/_static/styles/furo-extensions.css @@ -0,0 +1,2 @@ +#furo-sidebar-ad-placement{padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)}#furo-sidebar-ad-placement .ethical-sidebar{background:var(--color-background-secondary);border:none;box-shadow:none}#furo-sidebar-ad-placement .ethical-sidebar:hover{background:var(--color-background-hover)}#furo-sidebar-ad-placement .ethical-sidebar a{color:var(--color-foreground-primary)}#furo-sidebar-ad-placement .ethical-callout a{color:var(--color-foreground-secondary)!important}#furo-readthedocs-versions{background:transparent;display:block;position:static;width:100%}#furo-readthedocs-versions .rst-versions{background:#1a1c1e}#furo-readthedocs-versions .rst-current-version{background:var(--color-sidebar-item-background);cursor:unset}#furo-readthedocs-versions .rst-current-version:hover{background:var(--color-sidebar-item-background)}#furo-readthedocs-versions .rst-current-version .fa-book{color:var(--color-foreground-primary)}#furo-readthedocs-versions>.rst-other-versions{padding:0}#furo-readthedocs-versions>.rst-other-versions small{opacity:1}#furo-readthedocs-versions .injected .rst-versions{position:unset}#furo-readthedocs-versions:focus-within,#furo-readthedocs-versions:hover{box-shadow:0 0 0 1px var(--color-sidebar-background-border)}#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:hover .rst-current-version{background:#1a1c1e;font-size:inherit;height:auto;line-height:inherit;padding:12px;text-align:right}#furo-readthedocs-versions:focus-within .rst-current-version .fa-book,#furo-readthedocs-versions:hover .rst-current-version .fa-book{color:#fff;float:left}#furo-readthedocs-versions:focus-within .fa-caret-down,#furo-readthedocs-versions:hover .fa-caret-down{display:none}#furo-readthedocs-versions:focus-within .injected,#furo-readthedocs-versions:focus-within .rst-current-version,#furo-readthedocs-versions:focus-within .rst-other-versions,#furo-readthedocs-versions:hover .injected,#furo-readthedocs-versions:hover .rst-current-version,#furo-readthedocs-versions:hover .rst-other-versions{display:block}#furo-readthedocs-versions:focus-within>.rst-current-version,#furo-readthedocs-versions:hover>.rst-current-version{display:none}.highlight:hover button.copybtn{color:var(--color-code-foreground)}.highlight button.copybtn{align-items:center;background-color:var(--color-code-background);border:none;color:var(--color-background-item);cursor:pointer;height:1.25em;right:.5rem;top:.625rem;transition:color .3s,opacity .3s;width:1.25em}.highlight button.copybtn:hover{background-color:var(--color-code-background);color:var(--color-brand-content)}.highlight button.copybtn:after{background-color:transparent;color:var(--color-code-foreground);display:none}.highlight button.copybtn.success{color:#22863a;transition:color 0ms}.highlight button.copybtn.success:after{display:block}.highlight button.copybtn svg{padding:0}body{--sd-color-primary:var(--color-brand-primary);--sd-color-primary-highlight:var(--color-brand-content);--sd-color-primary-text:var(--color-background-primary);--sd-color-shadow:rgba(0,0,0,.05);--sd-color-card-border:var(--color-card-border);--sd-color-card-border-hover:var(--color-brand-content);--sd-color-card-background:var(--color-card-background);--sd-color-card-text:var(--color-foreground-primary);--sd-color-card-header:var(--color-card-marginals-background);--sd-color-card-footer:var(--color-card-marginals-background);--sd-color-tabs-label-active:var(--color-brand-content);--sd-color-tabs-label-hover:var(--color-foreground-muted);--sd-color-tabs-label-inactive:var(--color-foreground-muted);--sd-color-tabs-underline-active:var(--color-brand-content);--sd-color-tabs-underline-hover:var(--color-foreground-border);--sd-color-tabs-underline-inactive:var(--color-background-border);--sd-color-tabs-overline:var(--color-background-border);--sd-color-tabs-underline:var(--color-background-border)}.sd-tab-content{box-shadow:0 -2px var(--sd-color-tabs-overline),0 1px var(--sd-color-tabs-underline)}.sd-card{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)}.sd-shadow-sm{box-shadow:0 .1rem .25rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-md{box-shadow:0 .3rem .75rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-shadow-lg{box-shadow:0 .6rem 1.5rem var(--sd-color-shadow),0 0 .0625rem rgba(0,0,0,.1)!important}.sd-card-hover:hover{transform:none}.sd-cards-carousel{gap:.25rem;padding:.25rem}body{--tabs--label-text:var(--color-foreground-muted);--tabs--label-text--hover:var(--color-foreground-muted);--tabs--label-text--active:var(--color-brand-content);--tabs--label-text--active--hover:var(--color-brand-content);--tabs--label-background:transparent;--tabs--label-background--hover:transparent;--tabs--label-background--active:transparent;--tabs--label-background--active--hover:transparent;--tabs--padding-x:0.25em;--tabs--margin-x:1em;--tabs--border:var(--color-background-border);--tabs--label-border:transparent;--tabs--label-border--hover:var(--color-foreground-muted);--tabs--label-border--active:var(--color-brand-content);--tabs--label-border--active--hover:var(--color-brand-content)}[role=main] .container{max-width:none;padding-left:0;padding-right:0}.shadow.docutils{border:none;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)!important}.sphinx-bs .card{background-color:var(--color-background-secondary);color:var(--color-foreground)} +/*# sourceMappingURL=furo-extensions.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo-extensions.css.map b/_static/styles/furo-extensions.css.map new file mode 100644 index 0000000..c26eac7 --- /dev/null +++ b/_static/styles/furo-extensions.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo-extensions.css","mappings":"AAGA,2BACE,oFACA,4CAKE,6CAHA,YACA,eAEA,CACA,kDACE,yCAEF,8CACE,sCAEJ,8CACE,kDAEJ,2BAGE,uBACA,cAHA,gBACA,UAEA,CAGA,yCACE,mBAEF,gDAEE,gDADA,YACA,CACA,sDACE,gDACF,yDACE,sCAEJ,+CACE,UACA,qDACE,UAGF,mDACE,eAEJ,yEAEE,4DAEA,mHASE,mBAPA,kBAEA,YADA,oBAGA,aADA,gBAIA,CAEA,qIAEE,WADA,UACA,CAEJ,uGACE,aAEF,iUAGE,cAEF,mHACE,aC1EJ,gCACE,mCAEF,0BAEE,mBAUA,8CACA,YAFA,mCAKA,eAZA,cAIA,YADA,YAYA,iCAdA,YAcA,CAEA,gCAEE,8CADA,gCACA,CAEF,gCAGE,6BADA,mCADA,YAEA,CAEF,kCAEE,cADA,oBACA,CACA,wCACE,cAEJ,8BACE,UCzCN,KAEE,6CAA8C,CAC9C,uDAAwD,CACxD,uDAAwD,CAGxD,iCAAsC,CAGtC,+CAAgD,CAChD,uDAAwD,CACxD,uDAAwD,CACxD,oDAAqD,CACrD,6DAA8D,CAC9D,6DAA8D,CAG9D,uDAAwD,CACxD,yDAA0D,CAC1D,4DAA6D,CAC7D,2DAA4D,CAC5D,8DAA+D,CAC/D,iEAAkE,CAClE,uDAAwD,CACxD,wDAAyD,CAG3D,gBACE,qFAGF,SACE,6EAEF,cACE,uFAEF,cACE,uFAEF,cACE,uFAGF,qBACE,eAEF,mBACE,WACA,eChDF,KACE,gDAAiD,CACjD,uDAAwD,CACxD,qDAAsD,CACtD,4DAA6D,CAC7D,oCAAqC,CACrC,2CAA4C,CAC5C,4CAA6C,CAC7C,mDAAoD,CACpD,wBAAyB,CACzB,oBAAqB,CACrB,6CAA8C,CAC9C,gCAAiC,CACjC,yDAA0D,CAC1D,uDAAwD,CACxD,8DAA+D,CCbjE,uBACE,eACA,eACA,gBAGF,iBACE,YACA,+EAGF,iBACE,mDACA","sources":["webpack:///./src/furo/assets/styles/extensions/_readthedocs.sass","webpack:///./src/furo/assets/styles/extensions/_copybutton.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-design.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-inline-tabs.sass","webpack:///./src/furo/assets/styles/extensions/_sphinx-panels.sass"],"sourcesContent":["// This file contains the styles used for tweaking how ReadTheDoc's embedded\n// contents would show up inside the theme.\n\n#furo-sidebar-ad-placement\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n .ethical-sidebar\n // Remove the border and box-shadow.\n border: none\n box-shadow: none\n // Manage the background colors.\n background: var(--color-background-secondary)\n &:hover\n background: var(--color-background-hover)\n // Ensure the text is legible.\n a\n color: var(--color-foreground-primary)\n\n .ethical-callout a\n color: var(--color-foreground-secondary) !important\n\n#furo-readthedocs-versions\n position: static\n width: 100%\n background: transparent\n display: block\n\n // Make the background color fit with the theme's aesthetic.\n .rst-versions\n background: rgb(26, 28, 30)\n\n .rst-current-version\n cursor: unset\n background: var(--color-sidebar-item-background)\n &:hover\n background: var(--color-sidebar-item-background)\n .fa-book\n color: var(--color-foreground-primary)\n\n > .rst-other-versions\n padding: 0\n small\n opacity: 1\n\n .injected\n .rst-versions\n position: unset\n\n &:hover,\n &:focus-within\n box-shadow: 0 0 0 1px var(--color-sidebar-background-border)\n\n .rst-current-version\n // Undo the tweaks done in RTD's CSS\n font-size: inherit\n line-height: inherit\n height: auto\n text-align: right\n padding: 12px\n\n // Match the rest of the body\n background: #1a1c1e\n\n .fa-book\n float: left\n color: white\n\n .fa-caret-down\n display: none\n\n .rst-current-version,\n .rst-other-versions,\n .injected\n display: block\n\n > .rst-current-version\n display: none\n",".highlight\n &:hover button.copybtn\n color: var(--color-code-foreground)\n\n button.copybtn\n // Align things correctly\n align-items: center\n\n height: 1.25em\n width: 1.25em\n\n top: 0.625rem // $code-spacing-vertical\n right: 0.5rem\n\n // Make it look better\n color: var(--color-background-item)\n background-color: var(--color-code-background)\n border: none\n\n // Change to cursor to make it obvious that you can click on it\n cursor: pointer\n\n // Transition smoothly, for aesthetics\n transition: color 300ms, opacity 300ms\n\n &:hover\n color: var(--color-brand-content)\n background-color: var(--color-code-background)\n\n &::after\n display: none\n color: var(--color-code-foreground)\n background-color: transparent\n\n &.success\n transition: color 0ms\n color: #22863a\n &::after\n display: block\n\n svg\n padding: 0\n","body\n // Colors\n --sd-color-primary: var(--color-brand-primary)\n --sd-color-primary-highlight: var(--color-brand-content)\n --sd-color-primary-text: var(--color-background-primary)\n\n // Shadows\n --sd-color-shadow: rgba(0, 0, 0, 0.05)\n\n // Cards\n --sd-color-card-border: var(--color-card-border)\n --sd-color-card-border-hover: var(--color-brand-content)\n --sd-color-card-background: var(--color-card-background)\n --sd-color-card-text: var(--color-foreground-primary)\n --sd-color-card-header: var(--color-card-marginals-background)\n --sd-color-card-footer: var(--color-card-marginals-background)\n\n // Tabs\n --sd-color-tabs-label-active: var(--color-brand-content)\n --sd-color-tabs-label-hover: var(--color-foreground-muted)\n --sd-color-tabs-label-inactive: var(--color-foreground-muted)\n --sd-color-tabs-underline-active: var(--color-brand-content)\n --sd-color-tabs-underline-hover: var(--color-foreground-border)\n --sd-color-tabs-underline-inactive: var(--color-background-border)\n --sd-color-tabs-overline: var(--color-background-border)\n --sd-color-tabs-underline: var(--color-background-border)\n\n// Tabs\n.sd-tab-content\n box-shadow: 0 -2px var(--sd-color-tabs-overline), 0 1px var(--sd-color-tabs-underline)\n\n// Shadows\n.sd-card // Have a shadow by default\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n.sd-shadow-sm\n box-shadow: 0 0.1rem 0.25rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-md\n box-shadow: 0 0.3rem 0.75rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n.sd-shadow-lg\n box-shadow: 0 0.6rem 1.5rem var(--sd-color-shadow), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Cards\n.sd-card-hover:hover // Don't change scale on hover\n transform: none\n\n.sd-cards-carousel // Have a bit of gap in the carousel by default\n gap: 0.25rem\n padding: 0.25rem\n","// This file contains styles to tweak sphinx-inline-tabs to work well with Furo.\n\nbody\n --tabs--label-text: var(--color-foreground-muted)\n --tabs--label-text--hover: var(--color-foreground-muted)\n --tabs--label-text--active: var(--color-brand-content)\n --tabs--label-text--active--hover: var(--color-brand-content)\n --tabs--label-background: transparent\n --tabs--label-background--hover: transparent\n --tabs--label-background--active: transparent\n --tabs--label-background--active--hover: transparent\n --tabs--padding-x: 0.25em\n --tabs--margin-x: 1em\n --tabs--border: var(--color-background-border)\n --tabs--label-border: transparent\n --tabs--label-border--hover: var(--color-foreground-muted)\n --tabs--label-border--active: var(--color-brand-content)\n --tabs--label-border--active--hover: var(--color-brand-content)\n","// This file contains styles to tweak sphinx-panels to work well with Furo.\n\n// sphinx-panels includes Bootstrap 4, which uses .container which can conflict\n// with docutils' `.. container::` directive.\n[role=\"main\"] .container\n max-width: initial\n padding-left: initial\n padding-right: initial\n\n// Make the panels look nicer!\n.shadow.docutils\n border: none\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1) !important\n\n// Make panel colors respond to dark mode\n.sphinx-bs .card\n background-color: var(--color-background-secondary)\n color: var(--color-foreground)\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/_static/styles/furo.css b/_static/styles/furo.css new file mode 100644 index 0000000..21836d6 --- /dev/null +++ b/_static/styles/furo.css @@ -0,0 +1,2 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}@media print{.content-icon-container,.headerlink,.mobile-header,.related-pages{display:none!important}.highlight{border:.1pt solid var(--color-foreground-border)}a,blockquote,dl,ol,pre,table,ul{page-break-inside:avoid}caption,figure,h1,h2,h3,h4,h5,h6,img{page-break-after:avoid;page-break-inside:avoid}dl,ol,ul{page-break-before:avoid}}.visually-hidden{height:1px!important;margin:-1px!important;overflow:hidden!important;padding:0!important;position:absolute!important;width:1px!important;clip:rect(0,0,0,0)!important;background:var(--color-background-primary);border:0!important;color:var(--color-foreground-primary);white-space:nowrap!important}:-moz-focusring{outline:auto}body{--font-stack:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji;--font-stack--monospace:"SFMono-Regular",Menlo,Consolas,Monaco,Liberation Mono,Lucida Console,monospace;--font-stack--headings:var(--font-stack);--font-size--normal:100%;--font-size--small:87.5%;--font-size--small--2:81.25%;--font-size--small--3:75%;--font-size--small--4:62.5%;--sidebar-caption-font-size:var(--font-size--small--2);--sidebar-item-font-size:var(--font-size--small);--sidebar-search-input-font-size:var(--font-size--small);--toc-font-size:var(--font-size--small--3);--toc-font-size--mobile:var(--font-size--normal);--toc-title-font-size:var(--font-size--small--4);--admonition-font-size:0.8125rem;--admonition-title-font-size:0.8125rem;--code-font-size:var(--font-size--small--2);--api-font-size:var(--font-size--small);--header-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*4);--header-padding:0.5rem;--sidebar-tree-space-above:1.5rem;--sidebar-caption-space-above:1rem;--sidebar-item-line-height:1rem;--sidebar-item-spacing-vertical:0.5rem;--sidebar-item-spacing-horizontal:1rem;--sidebar-item-height:calc(var(--sidebar-item-line-height) + var(--sidebar-item-spacing-vertical)*2);--sidebar-expander-width:var(--sidebar-item-height);--sidebar-search-space-above:0.5rem;--sidebar-search-input-spacing-vertical:0.5rem;--sidebar-search-input-spacing-horizontal:0.5rem;--sidebar-search-input-height:1rem;--sidebar-search-icon-size:var(--sidebar-search-input-height);--toc-title-padding:0.25rem 0;--toc-spacing-vertical:1.5rem;--toc-spacing-horizontal:1.5rem;--toc-item-spacing-vertical:0.4rem;--toc-item-spacing-horizontal:1rem;--icon-search:url('data:image/svg+xml;charset=utf-8,');--icon-pencil:url('data:image/svg+xml;charset=utf-8,');--icon-abstract:url('data:image/svg+xml;charset=utf-8,');--icon-info:url('data:image/svg+xml;charset=utf-8,');--icon-flame:url('data:image/svg+xml;charset=utf-8,');--icon-question:url('data:image/svg+xml;charset=utf-8,');--icon-warning:url('data:image/svg+xml;charset=utf-8,');--icon-failure:url('data:image/svg+xml;charset=utf-8,');--icon-spark:url('data:image/svg+xml;charset=utf-8,');--color-admonition-title--caution:#ff9100;--color-admonition-title-background--caution:rgba(255,145,0,.2);--color-admonition-title--warning:#ff9100;--color-admonition-title-background--warning:rgba(255,145,0,.2);--color-admonition-title--danger:#ff5252;--color-admonition-title-background--danger:rgba(255,82,82,.2);--color-admonition-title--attention:#ff5252;--color-admonition-title-background--attention:rgba(255,82,82,.2);--color-admonition-title--error:#ff5252;--color-admonition-title-background--error:rgba(255,82,82,.2);--color-admonition-title--hint:#00c852;--color-admonition-title-background--hint:rgba(0,200,82,.2);--color-admonition-title--tip:#00c852;--color-admonition-title-background--tip:rgba(0,200,82,.2);--color-admonition-title--important:#00bfa5;--color-admonition-title-background--important:rgba(0,191,165,.2);--color-admonition-title--note:#00b0ff;--color-admonition-title-background--note:rgba(0,176,255,.2);--color-admonition-title--seealso:#448aff;--color-admonition-title-background--seealso:rgba(68,138,255,.2);--color-admonition-title--admonition-todo:grey;--color-admonition-title-background--admonition-todo:hsla(0,0%,50%,.2);--color-admonition-title:#651fff;--color-admonition-title-background:rgba(101,31,255,.2);--icon-admonition-default:var(--icon-abstract);--color-topic-title:#14b8a6;--color-topic-title-background:rgba(20,184,166,.2);--icon-topic-default:var(--icon-pencil);--color-problematic:#b30000;--color-foreground-primary:#000;--color-foreground-secondary:#5a5c63;--color-foreground-muted:#6b6f76;--color-foreground-border:#878787;--color-background-primary:#fff;--color-background-secondary:#f8f9fb;--color-background-hover:#efeff4;--color-background-hover--transparent:#efeff400;--color-background-border:#eeebee;--color-background-item:#ccc;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#0a4bff;--color-brand-content:#2757dd;--color-brand-visited:#872ee0;--color-api-background:var(--color-background-hover--transparent);--color-api-background-hover:var(--color-background-hover);--color-api-overall:var(--color-foreground-secondary);--color-api-name:var(--color-problematic);--color-api-pre-name:var(--color-problematic);--color-api-paren:var(--color-foreground-secondary);--color-api-keyword:var(--color-foreground-primary);--color-api-added:#21632c;--color-api-added-border:#38a84d;--color-api-changed:#046172;--color-api-changed-border:#06a1bc;--color-api-deprecated:#605706;--color-api-deprecated-border:#f0d90f;--color-api-removed:#b30000;--color-api-removed-border:#ff5c5c;--color-highlight-on-target:#ffc;--color-inline-code-background:var(--color-background-secondary);--color-highlighted-background:#def;--color-highlighted-text:var(--color-foreground-primary);--color-guilabel-background:#ddeeff80;--color-guilabel-border:#bedaf580;--color-guilabel-text:var(--color-foreground-primary);--color-admonition-background:transparent;--color-table-header-background:var(--color-background-secondary);--color-table-border:var(--color-background-border);--color-card-border:var(--color-background-secondary);--color-card-background:transparent;--color-card-marginals-background:var(--color-background-secondary);--color-header-background:var(--color-background-primary);--color-header-border:var(--color-background-border);--color-header-text:var(--color-foreground-primary);--color-sidebar-background:var(--color-background-secondary);--color-sidebar-background-border:var(--color-background-border);--color-sidebar-brand-text:var(--color-foreground-primary);--color-sidebar-caption-text:var(--color-foreground-muted);--color-sidebar-link-text:var(--color-foreground-secondary);--color-sidebar-link-text--top-level:var(--color-brand-primary);--color-sidebar-item-background:var(--color-sidebar-background);--color-sidebar-item-background--current:var( --color-sidebar-item-background );--color-sidebar-item-background--hover:linear-gradient(90deg,var(--color-background-hover--transparent) 0%,var(--color-background-hover) var(--sidebar-item-spacing-horizontal),var(--color-background-hover) 100%);--color-sidebar-item-expander-background:transparent;--color-sidebar-item-expander-background--hover:var( --color-background-hover );--color-sidebar-search-text:var(--color-foreground-primary);--color-sidebar-search-background:var(--color-background-secondary);--color-sidebar-search-background--focus:var(--color-background-primary);--color-sidebar-search-border:var(--color-background-border);--color-sidebar-search-icon:var(--color-foreground-muted);--color-toc-background:var(--color-background-primary);--color-toc-title-text:var(--color-foreground-muted);--color-toc-item-text:var(--color-foreground-secondary);--color-toc-item-text--hover:var(--color-foreground-primary);--color-toc-item-text--active:var(--color-brand-primary);--color-content-foreground:var(--color-foreground-primary);--color-content-background:transparent;--color-link:var(--color-brand-content);--color-link-underline:var(--color-background-border);--color-link--hover:var(--color-brand-content);--color-link-underline--hover:var(--color-foreground-border);--color-link--visited:var(--color-brand-visited);--color-link-underline--visited:var(--color-background-border);--color-link--visited--hover:var(--color-brand-visited);--color-link-underline--visited--hover:var(--color-foreground-border)}.only-light{display:block!important}html body .only-dark{display:none!important}@media not print{body[data-theme=dark]{--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body[data-theme=dark] .only-light{display:none!important}body[data-theme=dark] .only-dark{display:block!important}@media(prefers-color-scheme:dark){body:not([data-theme=light]){--color-problematic:#ee5151;--color-foreground-primary:#cfd0d0;--color-foreground-secondary:#9ca0a5;--color-foreground-muted:#81868d;--color-foreground-border:#666;--color-background-primary:#131416;--color-background-secondary:#1a1c1e;--color-background-hover:#1e2124;--color-background-hover--transparent:#1e212400;--color-background-border:#303335;--color-background-item:#444;--color-announcement-background:#000000dd;--color-announcement-text:#eeebee;--color-brand-primary:#3d94ff;--color-brand-content:#5ca5ff;--color-brand-visited:#b27aeb;--color-highlighted-background:#083563;--color-guilabel-background:#08356380;--color-guilabel-border:#13395f80;--color-api-keyword:var(--color-foreground-secondary);--color-highlight-on-target:#330;--color-api-added:#3db854;--color-api-added-border:#267334;--color-api-changed:#09b0ce;--color-api-changed-border:#056d80;--color-api-deprecated:#b1a10b;--color-api-deprecated-border:#6e6407;--color-api-removed:#ff7575;--color-api-removed-border:#b03b3b;--color-admonition-background:#18181a;--color-card-border:var(--color-background-secondary);--color-card-background:#18181a;--color-card-marginals-background:var(--color-background-hover)}html body:not([data-theme=light]) .only-light{display:none!important}body:not([data-theme=light]) .only-dark{display:block!important}}}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:block}@media(prefers-color-scheme:dark){body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-dark{display:block}body[data-theme=auto] .theme-toggle svg.theme-icon-when-auto-light{display:none}}body[data-theme=dark] .theme-toggle svg.theme-icon-when-dark,body[data-theme=light] .theme-toggle svg.theme-icon-when-light{display:block}body{font-family:var(--font-stack)}code,kbd,pre,samp{font-family:var(--font-stack--monospace)}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}article{line-height:1.5}h1,h2,h3,h4,h5,h6{border-radius:.5rem;font-family:var(--font-stack--headings);font-weight:700;line-height:1.25;margin:.5rem -.5rem;padding-left:.5rem;padding-right:.5rem}h1+p,h2+p,h3+p,h4+p,h5+p,h6+p{margin-top:0}h1{font-size:2.5em;margin-bottom:1rem}h1,h2{margin-top:1.75rem}h2{font-size:2em}h3{font-size:1.5em}h4{font-size:1.25em}h5{font-size:1.125em}h6{font-size:1em}small{font-size:80%;opacity:75%}p{margin-bottom:.75rem;margin-top:.5rem}hr.docutils{background-color:var(--color-background-border);border:0;height:1px;margin:2rem 0;padding:0}.centered{text-align:center}a{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}a:visited{color:var(--color-link--visited);text-decoration-color:var(--color-link-underline--visited)}a:visited:hover{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}a:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link{color:inherit}a.muted-link:hover{color:var(--color-link--hover);text-decoration-color:var(--color-link-underline--hover)}a.muted-link:hover:visited{color:var(--color-link--visited--hover);text-decoration-color:var(--color-link-underline--visited--hover)}html{overflow-x:hidden;overflow-y:scroll;scroll-behavior:smooth}.sidebar-scroll,.toc-scroll,article[role=main] *{scrollbar-color:var(--color-foreground-border) transparent;scrollbar-width:thin}.sidebar-scroll::-webkit-scrollbar,.toc-scroll::-webkit-scrollbar,article[role=main] ::-webkit-scrollbar{height:.25rem;width:.25rem}.sidebar-scroll::-webkit-scrollbar-thumb,.toc-scroll::-webkit-scrollbar-thumb,article[role=main] ::-webkit-scrollbar-thumb{background-color:var(--color-foreground-border);border-radius:.125rem}body,html{height:100%}.skip-to-content,body,html{background:var(--color-background-primary);color:var(--color-foreground-primary)}.skip-to-content{border-radius:1rem;left:.25rem;padding:1rem;position:fixed;top:.25rem;transform:translateY(-200%);transition:transform .3s ease-in-out;z-index:40}.skip-to-content:focus-within{transform:translateY(0)}article{background:var(--color-content-background);color:var(--color-content-foreground);overflow-wrap:break-word}.page{display:flex;min-height:100%}.mobile-header{background-color:var(--color-header-background);border-bottom:1px solid var(--color-header-border);color:var(--color-header-text);display:none;height:var(--header-height);width:100%;z-index:10}.mobile-header.scrolled{border-bottom:none;box-shadow:0 0 .2rem rgba(0,0,0,.1),0 .2rem .4rem rgba(0,0,0,.2)}.mobile-header .header-center a{color:var(--color-header-text);text-decoration:none}.main{display:flex;flex:1}.sidebar-drawer{background:var(--color-sidebar-background);border-right:1px solid var(--color-sidebar-background-border);box-sizing:border-box;display:flex;justify-content:flex-end;min-width:15em;width:calc(50% - 26em)}.sidebar-container,.toc-drawer{box-sizing:border-box;width:15em}.toc-drawer{background:var(--color-toc-background);padding-right:1rem}.sidebar-sticky,.toc-sticky{display:flex;flex-direction:column;height:min(100%,100vh);height:100vh;position:sticky;top:0}.sidebar-scroll,.toc-scroll{flex-grow:1;flex-shrink:1;overflow:auto;scroll-behavior:smooth}.content{display:flex;flex-direction:column;justify-content:space-between;padding:0 3em;width:46em}.icon{display:inline-block;height:1rem;width:1rem}.icon svg{height:100%;width:100%}.announcement{align-items:center;background-color:var(--color-announcement-background);color:var(--color-announcement-text);display:flex;height:var(--header-height);overflow-x:auto}.announcement+.page{min-height:calc(100% - var(--header-height))}.announcement-content{box-sizing:border-box;min-width:100%;padding:.5rem;text-align:center;white-space:nowrap}.announcement-content a{color:var(--color-announcement-text);text-decoration-color:var(--color-announcement-text)}.announcement-content a:hover{color:var(--color-announcement-text);text-decoration-color:var(--color-link--hover)}.no-js .theme-toggle-container{display:none}.theme-toggle-container{display:flex}.theme-toggle{background:transparent;border:none;cursor:pointer;display:flex;padding:0}.theme-toggle svg{color:var(--color-foreground-primary);display:none;height:1.25rem;width:1.25rem}.theme-toggle-header{align-items:center;display:flex;justify-content:center}.nav-overlay-icon,.toc-overlay-icon{cursor:pointer;display:none}.nav-overlay-icon .icon,.toc-overlay-icon .icon{color:var(--color-foreground-secondary);height:1.5rem;width:1.5rem}.nav-overlay-icon,.toc-header-icon{align-items:center;justify-content:center}.toc-content-icon{height:1.5rem;width:1.5rem}.content-icon-container{display:flex;float:right;gap:.5rem;margin-bottom:1rem;margin-left:1rem;margin-top:1.5rem}.content-icon-container .edit-this-page svg,.content-icon-container .view-this-page svg{color:inherit;height:1.25rem;width:1.25rem}.sidebar-toggle{display:none;position:absolute}.sidebar-toggle[name=__toc]{left:20px}.sidebar-toggle:checked{left:40px}.overlay{background-color:rgba(0,0,0,.54);height:0;opacity:0;position:fixed;top:0;transition:width 0ms,height 0ms,opacity .25s ease-out;width:0}.sidebar-overlay{z-index:20}.toc-overlay{z-index:40}.sidebar-drawer{transition:left .25s ease-in-out;z-index:30}.toc-drawer{transition:right .25s ease-in-out;z-index:50}#__navigation:checked~.sidebar-overlay{height:100%;opacity:1;width:100%}#__navigation:checked~.page .sidebar-drawer{left:0;top:0}#__toc:checked~.toc-overlay{height:100%;opacity:1;width:100%}#__toc:checked~.page .toc-drawer{right:0;top:0}.back-to-top{background:var(--color-background-primary);border-radius:1rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 1px 0 hsla(220,9%,46%,.502);display:none;font-size:.8125rem;left:0;margin-left:50%;padding:.5rem .75rem .5rem .5rem;position:fixed;text-decoration:none;top:1rem;transform:translateX(-50%);z-index:10}.back-to-top svg{height:1rem;width:1rem;fill:currentColor;display:inline-block}.back-to-top span{margin-left:.25rem}.show-back-to-top .back-to-top{align-items:center;display:flex}@media(min-width:97em){html{font-size:110%}}@media(max-width:82em){.toc-content-icon{display:flex}.toc-drawer{border-left:1px solid var(--color-background-muted);height:100vh;position:fixed;right:-15em;top:0}.toc-tree{border-left:none;font-size:var(--toc-font-size--mobile)}.sidebar-drawer{width:calc(50% - 18.5em)}}@media(max-width:67em){.nav-overlay-icon{display:flex}.sidebar-drawer{height:100vh;left:-15em;position:fixed;top:0;width:15em}.theme-toggle-header,.toc-header-icon{display:flex}.theme-toggle-content,.toc-content-icon{display:none}.mobile-header{align-items:center;display:flex;justify-content:space-between;position:sticky;top:0}.mobile-header .header-left,.mobile-header .header-right{display:flex;height:var(--header-height);padding:0 var(--header-padding)}.mobile-header .header-left label,.mobile-header .header-right label{height:100%;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:100%}.nav-overlay-icon .icon,.theme-toggle svg{height:1.5rem;width:1.5rem}:target{scroll-margin-top:calc(var(--header-height) + 2.5rem)}.back-to-top{top:calc(var(--header-height) + .5rem)}.page{flex-direction:column;justify-content:center}.content{margin-left:auto;margin-right:auto}}@media(max-width:52em){.content{overflow-x:auto;width:100%}}@media(max-width:46em){.content{padding:0 1em}article aside.sidebar{float:none;margin:1rem 0;width:100%}}.admonition,.topic{background:var(--color-admonition-background);border-radius:.2rem;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1);font-size:var(--admonition-font-size);margin:1rem auto;overflow:hidden;padding:0 .5rem .5rem;page-break-inside:avoid}.admonition>:nth-child(2),.topic>:nth-child(2){margin-top:0}.admonition>:last-child,.topic>:last-child{margin-bottom:0}.admonition p.admonition-title,p.topic-title{font-size:var(--admonition-title-font-size);font-weight:500;line-height:1.3;margin:0 -.5rem .5rem;padding:.4rem .5rem .4rem 2rem;position:relative}.admonition p.admonition-title:before,p.topic-title:before{content:"";height:1rem;left:.5rem;position:absolute;width:1rem}p.admonition-title{background-color:var(--color-admonition-title-background)}p.admonition-title:before{background-color:var(--color-admonition-title);-webkit-mask-image:var(--icon-admonition-default);mask-image:var(--icon-admonition-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}p.topic-title{background-color:var(--color-topic-title-background)}p.topic-title:before{background-color:var(--color-topic-title);-webkit-mask-image:var(--icon-topic-default);mask-image:var(--icon-topic-default);-webkit-mask-repeat:no-repeat;mask-repeat:no-repeat}.admonition{border-left:.2rem solid var(--color-admonition-title)}.admonition.caution{border-left-color:var(--color-admonition-title--caution)}.admonition.caution>.admonition-title{background-color:var(--color-admonition-title-background--caution)}.admonition.caution>.admonition-title:before{background-color:var(--color-admonition-title--caution);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.warning{border-left-color:var(--color-admonition-title--warning)}.admonition.warning>.admonition-title{background-color:var(--color-admonition-title-background--warning)}.admonition.warning>.admonition-title:before{background-color:var(--color-admonition-title--warning);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.danger{border-left-color:var(--color-admonition-title--danger)}.admonition.danger>.admonition-title{background-color:var(--color-admonition-title-background--danger)}.admonition.danger>.admonition-title:before{background-color:var(--color-admonition-title--danger);-webkit-mask-image:var(--icon-spark);mask-image:var(--icon-spark)}.admonition.attention{border-left-color:var(--color-admonition-title--attention)}.admonition.attention>.admonition-title{background-color:var(--color-admonition-title-background--attention)}.admonition.attention>.admonition-title:before{background-color:var(--color-admonition-title--attention);-webkit-mask-image:var(--icon-warning);mask-image:var(--icon-warning)}.admonition.error{border-left-color:var(--color-admonition-title--error)}.admonition.error>.admonition-title{background-color:var(--color-admonition-title-background--error)}.admonition.error>.admonition-title:before{background-color:var(--color-admonition-title--error);-webkit-mask-image:var(--icon-failure);mask-image:var(--icon-failure)}.admonition.hint{border-left-color:var(--color-admonition-title--hint)}.admonition.hint>.admonition-title{background-color:var(--color-admonition-title-background--hint)}.admonition.hint>.admonition-title:before{background-color:var(--color-admonition-title--hint);-webkit-mask-image:var(--icon-question);mask-image:var(--icon-question)}.admonition.tip{border-left-color:var(--color-admonition-title--tip)}.admonition.tip>.admonition-title{background-color:var(--color-admonition-title-background--tip)}.admonition.tip>.admonition-title:before{background-color:var(--color-admonition-title--tip);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.important{border-left-color:var(--color-admonition-title--important)}.admonition.important>.admonition-title{background-color:var(--color-admonition-title-background--important)}.admonition.important>.admonition-title:before{background-color:var(--color-admonition-title--important);-webkit-mask-image:var(--icon-flame);mask-image:var(--icon-flame)}.admonition.note{border-left-color:var(--color-admonition-title--note)}.admonition.note>.admonition-title{background-color:var(--color-admonition-title-background--note)}.admonition.note>.admonition-title:before{background-color:var(--color-admonition-title--note);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition.seealso{border-left-color:var(--color-admonition-title--seealso)}.admonition.seealso>.admonition-title{background-color:var(--color-admonition-title-background--seealso)}.admonition.seealso>.admonition-title:before{background-color:var(--color-admonition-title--seealso);-webkit-mask-image:var(--icon-info);mask-image:var(--icon-info)}.admonition.admonition-todo{border-left-color:var(--color-admonition-title--admonition-todo)}.admonition.admonition-todo>.admonition-title{background-color:var(--color-admonition-title-background--admonition-todo)}.admonition.admonition-todo>.admonition-title:before{background-color:var(--color-admonition-title--admonition-todo);-webkit-mask-image:var(--icon-pencil);mask-image:var(--icon-pencil)}.admonition-todo>.admonition-title{text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd{margin-left:2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:first-child{margin-top:.125rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list,dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) dd>:last-child{margin-bottom:.75rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list>dt{font-size:var(--font-size--small);text-transform:uppercase}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd:empty{margin-bottom:.5rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul{margin-left:-1.2rem}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p:nth-child(2){margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple) .field-list dd>ul>li>p+p:last-child:empty{margin-bottom:0;margin-top:0}dl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)>dt{color:var(--color-api-overall)}.sig:not(.sig-inline){background:var(--color-api-background);border-radius:.25rem;font-family:var(--font-stack--monospace);font-size:var(--api-font-size);font-weight:700;margin-left:-.25rem;margin-right:-.25rem;padding:.25rem .5rem .25rem 3em;text-indent:-2.5em;transition:background .1s ease-out}.sig:not(.sig-inline):hover{background:var(--color-api-background-hover)}.sig:not(.sig-inline) a.reference .viewcode-link{font-weight:400;width:4.25rem}em.property{font-style:normal}em.property:first-child{color:var(--color-api-keyword)}.sig-name{color:var(--color-api-name)}.sig-prename{color:var(--color-api-pre-name);font-weight:400}.sig-paren{color:var(--color-api-paren)}.sig-param{font-style:normal}div.deprecated,div.versionadded,div.versionchanged,div.versionremoved{border-left:.1875rem solid;border-radius:.125rem;padding-left:.75rem}div.deprecated p,div.versionadded p,div.versionchanged p,div.versionremoved p{margin-bottom:.125rem;margin-top:.125rem}div.versionadded{border-color:var(--color-api-added-border)}div.versionadded .versionmodified{color:var(--color-api-added)}div.versionchanged{border-color:var(--color-api-changed-border)}div.versionchanged .versionmodified{color:var(--color-api-changed)}div.deprecated{border-color:var(--color-api-deprecated-border)}div.deprecated .versionmodified{color:var(--color-api-deprecated)}div.versionremoved{border-color:var(--color-api-removed-border)}div.versionremoved .versionmodified{color:var(--color-api-removed)}.viewcode-back,.viewcode-link{float:right;text-align:right}.line-block{margin-bottom:.75rem;margin-top:.5rem}.line-block .line-block{margin-bottom:0;margin-top:0;padding-left:1rem}.code-block-caption,article p.caption,table>caption{font-size:var(--font-size--small);text-align:center}.toctree-wrapper.compound .caption,.toctree-wrapper.compound :not(.caption)>.caption-text{font-size:var(--font-size--small);margin-bottom:0;text-align:initial;text-transform:uppercase}.toctree-wrapper.compound>ul{margin-bottom:0;margin-top:0}.sig-inline,code.literal{background:var(--color-inline-code-background);border-radius:.2em;font-size:var(--font-size--small--2);padding:.1em .2em}pre.literal-block .sig-inline,pre.literal-block code.literal{font-size:inherit;padding:0}p .sig-inline,p code.literal{border:1px solid var(--color-background-border)}.sig-inline{font-family:var(--font-stack--monospace)}div[class*=" highlight-"],div[class^=highlight-]{display:flex;margin:1em 0}div[class*=" highlight-"] .table-wrapper,div[class^=highlight-] .table-wrapper,pre{margin:0;padding:0}pre{overflow:auto}article[role=main] .highlight pre{line-height:1.5}.highlight pre,pre.literal-block{font-size:var(--code-font-size);padding:.625rem .875rem}pre.literal-block{background-color:var(--color-code-background);border-radius:.2rem;color:var(--color-code-foreground);margin-bottom:1rem;margin-top:1rem}.highlight{border-radius:.2rem;width:100%}.highlight .gp,.highlight span.linenos{pointer-events:none;-webkit-user-select:none;-moz-user-select:none;user-select:none}.highlight .hll{display:block;margin-left:-.875rem;margin-right:-.875rem;padding-left:.875rem;padding-right:.875rem}.code-block-caption{background-color:var(--color-code-background);border-bottom:1px solid;border-radius:.25rem;border-bottom-left-radius:0;border-bottom-right-radius:0;border-color:var(--color-background-border);color:var(--color-code-foreground);display:flex;font-weight:300;padding:.625rem .875rem}.code-block-caption+div[class]{margin-top:0}.code-block-caption+div[class] pre{border-top-left-radius:0;border-top-right-radius:0}.highlighttable{display:block;width:100%}.highlighttable tbody{display:block}.highlighttable tr{display:flex}.highlighttable td.linenos{background-color:var(--color-code-background);border-bottom-left-radius:.2rem;border-top-left-radius:.2rem;color:var(--color-code-foreground);padding:.625rem 0 .625rem .875rem}.highlighttable .linenodiv{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;font-size:var(--code-font-size);padding-right:.875rem}.highlighttable td.code{display:block;flex:1;overflow:hidden;padding:0}.highlighttable td.code .highlight{border-bottom-left-radius:0;border-top-left-radius:0}.highlight span.linenos{box-shadow:-.0625rem 0 var(--color-foreground-border) inset;display:inline-block;margin-right:.875rem;padding-left:0;padding-right:.875rem}.footnote-reference{font-size:var(--font-size--small--4);vertical-align:super}dl.footnote.brackets{color:var(--color-foreground-secondary);display:grid;font-size:var(--font-size--small);grid-template-columns:max-content auto}dl.footnote.brackets dt{margin:0}dl.footnote.brackets dt>.fn-backref{margin-left:.25rem}dl.footnote.brackets dt:after{content:":"}dl.footnote.brackets dt .brackets:before{content:"["}dl.footnote.brackets dt .brackets:after{content:"]"}dl.footnote.brackets dd{margin:0;padding:0 1rem}aside.footnote{color:var(--color-foreground-secondary);font-size:var(--font-size--small)}aside.footnote>span,div.citation>span{float:left;font-weight:500;padding-right:.25rem}aside.footnote>:not(span),div.citation>p{margin-left:2rem}img{box-sizing:border-box;height:auto;max-width:100%}article .figure,article figure{border-radius:.2rem;margin:0}article .figure :last-child,article figure :last-child{margin-bottom:0}article .align-left{clear:left;float:left;margin:0 1rem 1rem}article .align-right{clear:right;float:right;margin:0 1rem 1rem}article .align-center,article .align-default{display:block;margin-left:auto;margin-right:auto;text-align:center}article table.align-default{display:table;text-align:initial}.domainindex-jumpbox,.genindex-jumpbox{border-bottom:1px solid var(--color-background-border);border-top:1px solid var(--color-background-border);padding:.25rem}.domainindex-section h2,.genindex-section h2{margin-bottom:.5rem;margin-top:.75rem}.domainindex-section ul,.genindex-section ul{margin-bottom:0;margin-top:0}ol,ul{margin-bottom:1rem;margin-top:1rem;padding-left:1.2rem}ol li>p:first-child,ul li>p:first-child{margin-bottom:.25rem;margin-top:.25rem}ol li>p:last-child,ul li>p:last-child{margin-top:.25rem}ol li>ol,ol li>ul,ul li>ol,ul li>ul{margin-bottom:.5rem;margin-top:.5rem}ol.arabic{list-style:decimal}ol.loweralpha{list-style:lower-alpha}ol.upperalpha{list-style:upper-alpha}ol.lowerroman{list-style:lower-roman}ol.upperroman{list-style:upper-roman}.simple li>ol,.simple li>ul,.toctree-wrapper li>ol,.toctree-wrapper li>ul{margin-bottom:0;margin-top:0}.field-list dt,.option-list dt,dl.footnote dt,dl.glossary dt,dl.simple dt,dl:not([class]) dt{font-weight:500;margin-top:.25rem}.field-list dt+dt,.option-list dt+dt,dl.footnote dt+dt,dl.glossary dt+dt,dl.simple dt+dt,dl:not([class]) dt+dt{margin-top:0}.field-list dt .classifier:before,.option-list dt .classifier:before,dl.footnote dt .classifier:before,dl.glossary dt .classifier:before,dl.simple dt .classifier:before,dl:not([class]) dt .classifier:before{content:":";margin-left:.2rem;margin-right:.2rem}.field-list dd ul,.field-list dd>p:first-child,.option-list dd ul,.option-list dd>p:first-child,dl.footnote dd ul,dl.footnote dd>p:first-child,dl.glossary dd ul,dl.glossary dd>p:first-child,dl.simple dd ul,dl.simple dd>p:first-child,dl:not([class]) dd ul,dl:not([class]) dd>p:first-child{margin-top:.125rem}.field-list dd ul,.option-list dd ul,dl.footnote dd ul,dl.glossary dd ul,dl.simple dd ul,dl:not([class]) dd ul{margin-bottom:.125rem}.math-wrapper{overflow-x:auto;width:100%}div.math{position:relative;text-align:center}div.math .headerlink,div.math:focus .headerlink{display:none}div.math:hover .headerlink{display:inline-block}div.math span.eqno{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);z-index:1}abbr[title]{cursor:help}.problematic{color:var(--color-problematic)}kbd:not(.compound){background-color:var(--color-background-secondary);border:1px solid var(--color-foreground-border);border-radius:.2rem;box-shadow:0 .0625rem 0 rgba(0,0,0,.2),inset 0 0 0 .125rem var(--color-background-primary);color:var(--color-foreground-primary);display:inline-block;font-size:var(--font-size--small--3);margin:0 .2rem;padding:0 .2rem;vertical-align:text-bottom}blockquote{background:var(--color-background-secondary);border-left:4px solid var(--color-background-border);margin-left:0;margin-right:0;padding:.5rem 1rem}blockquote .attribution{font-weight:600;text-align:right}blockquote.highlights,blockquote.pull-quote{font-size:1.25em}blockquote.epigraph,blockquote.pull-quote{border-left-width:0;border-radius:.5rem}blockquote.highlights{background:transparent;border-left-width:0}p .reference img{vertical-align:middle}p.rubric{font-size:1.125em;font-weight:700;line-height:1.25}dd p.rubric{font-size:var(--font-size--small);font-weight:inherit;line-height:inherit;text-transform:uppercase}article .sidebar{background-color:var(--color-background-secondary);border:1px solid var(--color-background-border);border-radius:.2rem;clear:right;float:right;margin-left:1rem;margin-right:0;width:30%}article .sidebar>*{padding-left:1rem;padding-right:1rem}article .sidebar>ol,article .sidebar>ul{padding-left:2.2rem}article .sidebar .sidebar-title{border-bottom:1px solid var(--color-background-border);font-weight:500;margin:0;padding:.5rem 1rem}.table-wrapper{margin-bottom:.5rem;margin-top:1rem;overflow-x:auto;padding:.2rem .2rem .75rem;width:100%}table.docutils{border-collapse:collapse;border-radius:.2rem;border-spacing:0;box-shadow:0 .2rem .5rem rgba(0,0,0,.05),0 0 .0625rem rgba(0,0,0,.1)}table.docutils th{background:var(--color-table-header-background)}table.docutils td,table.docutils th{border-bottom:1px solid var(--color-table-border);border-left:1px solid var(--color-table-border);border-right:1px solid var(--color-table-border);padding:0 .25rem}table.docutils td p,table.docutils th p{margin:.25rem}table.docutils td:first-child,table.docutils th:first-child{border-left:none}table.docutils td:last-child,table.docutils th:last-child{border-right:none}table.docutils td.text-left,table.docutils th.text-left{text-align:left}table.docutils td.text-right,table.docutils th.text-right{text-align:right}table.docutils td.text-center,table.docutils th.text-center{text-align:center}:target{scroll-margin-top:2.5rem}@media(max-width:67em){:target{scroll-margin-top:calc(2.5rem + var(--header-height))}section>span:target{scroll-margin-top:calc(2.8rem + var(--header-height))}}.headerlink{font-weight:100;-webkit-user-select:none;-moz-user-select:none;user-select:none}.code-block-caption>.headerlink,dl dt>.headerlink,figcaption p>.headerlink,h1>.headerlink,h2>.headerlink,h3>.headerlink,h4>.headerlink,h5>.headerlink,h6>.headerlink,p.caption>.headerlink,table>caption>.headerlink{margin-left:.5rem;visibility:hidden}.code-block-caption:hover>.headerlink,dl dt:hover>.headerlink,figcaption p:hover>.headerlink,h1:hover>.headerlink,h2:hover>.headerlink,h3:hover>.headerlink,h4:hover>.headerlink,h5:hover>.headerlink,h6:hover>.headerlink,p.caption:hover>.headerlink,table>caption:hover>.headerlink{visibility:visible}.code-block-caption>.toc-backref,dl dt>.toc-backref,figcaption p>.toc-backref,h1>.toc-backref,h2>.toc-backref,h3>.toc-backref,h4>.toc-backref,h5>.toc-backref,h6>.toc-backref,p.caption>.toc-backref,table>caption>.toc-backref{color:inherit;text-decoration-line:none}figure:hover>figcaption>p>.headerlink,table:hover>caption>.headerlink{visibility:visible}:target>h1:first-of-type,:target>h2:first-of-type,:target>h3:first-of-type,:target>h4:first-of-type,:target>h5:first-of-type,:target>h6:first-of-type,span:target~h1:first-of-type,span:target~h2:first-of-type,span:target~h3:first-of-type,span:target~h4:first-of-type,span:target~h5:first-of-type,span:target~h6:first-of-type{background-color:var(--color-highlight-on-target)}:target>h1:first-of-type code.literal,:target>h2:first-of-type code.literal,:target>h3:first-of-type code.literal,:target>h4:first-of-type code.literal,:target>h5:first-of-type code.literal,:target>h6:first-of-type code.literal,span:target~h1:first-of-type code.literal,span:target~h2:first-of-type code.literal,span:target~h3:first-of-type code.literal,span:target~h4:first-of-type code.literal,span:target~h5:first-of-type code.literal,span:target~h6:first-of-type code.literal{background-color:transparent}.literal-block-wrapper:target .code-block-caption,.this-will-duplicate-information-and-it-is-still-useful-here li :target,figure:target,table:target>caption{background-color:var(--color-highlight-on-target)}dt:target{background-color:var(--color-highlight-on-target)!important}.footnote-reference:target,.footnote>dt:target+dd{background-color:var(--color-highlight-on-target)}.guilabel{background-color:var(--color-guilabel-background);border:1px solid var(--color-guilabel-border);border-radius:.5em;color:var(--color-guilabel-text);font-size:.9em;padding:0 .3em}footer{display:flex;flex-direction:column;font-size:var(--font-size--small);margin-top:2rem}.bottom-of-page{align-items:center;border-top:1px solid var(--color-background-border);color:var(--color-foreground-secondary);display:flex;justify-content:space-between;line-height:1.5;margin-top:1rem;padding-bottom:1rem;padding-top:1rem}@media(max-width:46em){.bottom-of-page{flex-direction:column-reverse;gap:.25rem;text-align:center}}.bottom-of-page .left-details{font-size:var(--font-size--small)}.bottom-of-page .right-details{display:flex;flex-direction:column;gap:.25rem;text-align:right}.bottom-of-page .icons{display:flex;font-size:1rem;gap:.25rem;justify-content:flex-end}.bottom-of-page .icons a{text-decoration:none}.bottom-of-page .icons img,.bottom-of-page .icons svg{font-size:1.125rem;height:1em;width:1em}.related-pages a{align-items:center;display:flex;text-decoration:none}.related-pages a:hover .page-info .title{color:var(--color-link);text-decoration:underline;text-decoration-color:var(--color-link-underline)}.related-pages a svg.furo-related-icon,.related-pages a svg.furo-related-icon>use{color:var(--color-foreground-border);flex-shrink:0;height:.75rem;margin:0 .5rem;width:.75rem}.related-pages a.next-page{clear:right;float:right;max-width:50%;text-align:right}.related-pages a.prev-page{clear:left;float:left;max-width:50%}.related-pages a.prev-page svg{transform:rotate(180deg)}.page-info{display:flex;flex-direction:column;overflow-wrap:anywhere}.next-page .page-info{align-items:flex-end}.page-info .context{align-items:center;color:var(--color-foreground-muted);display:flex;font-size:var(--font-size--small);padding-bottom:.1rem;text-decoration:none}ul.search{list-style:none;padding-left:0}ul.search li{border-bottom:1px solid var(--color-background-border);padding:1rem 0}[role=main] .highlighted{background-color:var(--color-highlighted-background);color:var(--color-highlighted-text)}.sidebar-brand{display:flex;flex-direction:column;flex-shrink:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none}.sidebar-brand-text{color:var(--color-sidebar-brand-text);font-size:1.5rem;overflow-wrap:break-word}.sidebar-brand-text,.sidebar-logo-container{margin:var(--sidebar-item-spacing-vertical) 0}.sidebar-logo{display:block;margin:0 auto;max-width:100%}.sidebar-search-container{align-items:center;background:var(--color-sidebar-search-background);display:flex;margin-top:var(--sidebar-search-space-above);position:relative}.sidebar-search-container:focus-within,.sidebar-search-container:hover{background:var(--color-sidebar-search-background--focus)}.sidebar-search-container:before{background-color:var(--color-sidebar-search-icon);content:"";height:var(--sidebar-search-icon-size);left:var(--sidebar-item-spacing-horizontal);-webkit-mask-image:var(--icon-search);mask-image:var(--icon-search);position:absolute;width:var(--sidebar-search-icon-size)}.sidebar-search{background:transparent;border:none;border-bottom:1px solid var(--color-sidebar-search-border);border-top:1px solid var(--color-sidebar-search-border);box-sizing:border-box;color:var(--color-sidebar-search-foreground);padding:var(--sidebar-search-input-spacing-vertical) var(--sidebar-search-input-spacing-horizontal) var(--sidebar-search-input-spacing-vertical) calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size));width:100%;z-index:10}.sidebar-search:focus{outline:none}.sidebar-search::-moz-placeholder{font-size:var(--sidebar-search-input-font-size)}.sidebar-search::placeholder{font-size:var(--sidebar-search-input-font-size)}#searchbox .highlight-link{margin:0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0;text-align:center}#searchbox .highlight-link a{color:var(--color-sidebar-search-icon);font-size:var(--font-size--small--2)}.sidebar-tree{font-size:var(--sidebar-item-font-size);margin-bottom:var(--sidebar-item-spacing-vertical);margin-top:var(--sidebar-tree-space-above)}.sidebar-tree ul{display:flex;flex-direction:column;list-style:none;margin-bottom:0;margin-top:0;padding:0}.sidebar-tree li{margin:0;position:relative}.sidebar-tree li>ul{margin-left:var(--sidebar-item-spacing-horizontal)}.sidebar-tree .icon,.sidebar-tree .reference{color:var(--color-sidebar-link-text)}.sidebar-tree .reference{box-sizing:border-box;display:inline-block;height:100%;line-height:var(--sidebar-item-line-height);overflow-wrap:anywhere;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-decoration:none;width:100%}.sidebar-tree .reference:hover{background:var(--color-sidebar-item-background--hover);color:var(--color-sidebar-link-text)}.sidebar-tree .reference.external:after{color:var(--color-sidebar-link-text);content:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' fill='none' stroke='%23607D8B' stroke-linecap='round' stroke-linejoin='round' stroke-width='1.5' viewBox='0 0 24 24'%3E%3Cpath stroke='none' d='M0 0h24v24H0z'/%3E%3Cpath d='M11 7H6a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h9a2 2 0 0 0 2-2v-5M10 14 20 4M15 4h5v5'/%3E%3C/svg%3E");margin:0 .25rem;vertical-align:middle}.sidebar-tree .current-page>.reference{font-weight:700}.sidebar-tree label{align-items:center;cursor:pointer;display:flex;height:var(--sidebar-item-height);justify-content:center;position:absolute;right:0;top:0;-webkit-user-select:none;-moz-user-select:none;user-select:none;width:var(--sidebar-expander-width)}.sidebar-tree .caption,.sidebar-tree :not(.caption)>.caption-text{color:var(--color-sidebar-caption-text);font-size:var(--sidebar-caption-font-size);font-weight:700;margin:var(--sidebar-caption-space-above) 0 0 0;padding:var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal);text-transform:uppercase}.sidebar-tree li.has-children>.reference{padding-right:var(--sidebar-expander-width)}.sidebar-tree .toctree-l1>.reference,.sidebar-tree .toctree-l1>label .icon{color:var(--color-sidebar-link-text--top-level)}.sidebar-tree label{background:var(--color-sidebar-item-expander-background)}.sidebar-tree label:hover{background:var(--color-sidebar-item-expander-background--hover)}.sidebar-tree .current>.reference{background:var(--color-sidebar-item-background--current)}.sidebar-tree .current>.reference:hover{background:var(--color-sidebar-item-background--hover)}.toctree-checkbox{display:none;position:absolute}.toctree-checkbox~ul{display:none}.toctree-checkbox~label .icon svg{transform:rotate(90deg)}.toctree-checkbox:checked~ul{display:block}.toctree-checkbox:checked~label .icon svg{transform:rotate(-90deg)}.toc-title-container{padding:var(--toc-title-padding);padding-top:var(--toc-spacing-vertical)}.toc-title{color:var(--color-toc-title-text);font-size:var(--toc-title-font-size);padding-left:var(--toc-spacing-horizontal);text-transform:uppercase}.no-toc{display:none}.toc-tree-container{padding-bottom:var(--toc-spacing-vertical)}.toc-tree{border-left:1px solid var(--color-background-border);font-size:var(--toc-font-size);line-height:1.3;padding-left:calc(var(--toc-spacing-horizontal) - var(--toc-item-spacing-horizontal))}.toc-tree>ul>li:first-child{padding-top:0}.toc-tree>ul>li:first-child>ul{padding-left:0}.toc-tree>ul>li:first-child>a{display:none}.toc-tree ul{list-style-type:none;margin-bottom:0;margin-top:0;padding-left:var(--toc-item-spacing-horizontal)}.toc-tree li{padding-top:var(--toc-item-spacing-vertical)}.toc-tree li.scroll-current>.reference{color:var(--color-toc-item-text--active);font-weight:700}.toc-tree a.reference{color:var(--color-toc-item-text);overflow-wrap:anywhere;text-decoration:none}.toc-scroll{max-height:100vh;overflow-y:scroll}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here){background:rgba(255,0,0,.25);color:var(--color-problematic)}.contents:not(.this-will-duplicate-information-and-it-is-still-useful-here):before{content:"ERROR: Adding a table of contents in Furo-based documentation is unnecessary, and does not work well with existing styling. Add a 'this-will-duplicate-information-and-it-is-still-useful-here' class, if you want an escape hatch."}.text-align\:left>p{text-align:left}.text-align\:center>p{text-align:center}.text-align\:right>p{text-align:right} +/*# sourceMappingURL=furo.css.map*/ \ No newline at end of file diff --git a/_static/styles/furo.css.map b/_static/styles/furo.css.map new file mode 100644 index 0000000..0ee3acb --- /dev/null +++ b/_static/styles/furo.css.map @@ -0,0 +1 @@ +{"version":3,"file":"styles/furo.css","mappings":"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","sources":["webpack:///./node_modules/normalize.css/normalize.css","webpack:///./src/furo/assets/styles/base/_print.sass","webpack:///./src/furo/assets/styles/base/_screen-readers.sass","webpack:///./src/furo/assets/styles/base/_theme.sass","webpack:///./src/furo/assets/styles/variables/_fonts.scss","webpack:///./src/furo/assets/styles/variables/_spacing.scss","webpack:///./src/furo/assets/styles/variables/_icons.scss","webpack:///./src/furo/assets/styles/variables/_admonitions.scss","webpack:///./src/furo/assets/styles/variables/_colors.scss","webpack:///./src/furo/assets/styles/base/_typography.sass","webpack:///./src/furo/assets/styles/_scaffold.sass","webpack:///./src/furo/assets/styles/variables/_layout.scss","webpack:///./src/furo/assets/styles/content/_admonitions.sass","webpack:///./src/furo/assets/styles/content/_api.sass","webpack:///./src/furo/assets/styles/content/_blocks.sass","webpack:///./src/furo/assets/styles/content/_captions.sass","webpack:///./src/furo/assets/styles/content/_code.sass","webpack:///./src/furo/assets/styles/content/_footnotes.sass","webpack:///./src/furo/assets/styles/content/_images.sass","webpack:///./src/furo/assets/styles/content/_indexes.sass","webpack:///./src/furo/assets/styles/content/_lists.sass","webpack:///./src/furo/assets/styles/content/_math.sass","webpack:///./src/furo/assets/styles/content/_misc.sass","webpack:///./src/furo/assets/styles/content/_rubrics.sass","webpack:///./src/furo/assets/styles/content/_sidebar.sass","webpack:///./src/furo/assets/styles/content/_tables.sass","webpack:///./src/furo/assets/styles/content/_target.sass","webpack:///./src/furo/assets/styles/content/_gui-labels.sass","webpack:///./src/furo/assets/styles/components/_footer.sass","webpack:///./src/furo/assets/styles/components/_sidebar.sass","webpack:///./src/furo/assets/styles/components/_table_of_contents.sass","webpack:///./src/furo/assets/styles/_shame.sass"],"sourcesContent":["/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */\n\n/* Document\n ========================================================================== */\n\n/**\n * 1. Correct the line height in all browsers.\n * 2. Prevent adjustments of font size after orientation changes in iOS.\n */\n\nhtml {\n line-height: 1.15; /* 1 */\n -webkit-text-size-adjust: 100%; /* 2 */\n}\n\n/* Sections\n ========================================================================== */\n\n/**\n * Remove the margin in all browsers.\n */\n\nbody {\n margin: 0;\n}\n\n/**\n * Render the `main` element consistently in IE.\n */\n\nmain {\n display: block;\n}\n\n/**\n * Correct the font size and margin on `h1` elements within `section` and\n * `article` contexts in Chrome, Firefox, and Safari.\n */\n\nh1 {\n font-size: 2em;\n margin: 0.67em 0;\n}\n\n/* Grouping content\n ========================================================================== */\n\n/**\n * 1. Add the correct box sizing in Firefox.\n * 2. Show the overflow in Edge and IE.\n */\n\nhr {\n box-sizing: content-box; /* 1 */\n height: 0; /* 1 */\n overflow: visible; /* 2 */\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\npre {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/* Text-level semantics\n ========================================================================== */\n\n/**\n * Remove the gray background on active links in IE 10.\n */\n\na {\n background-color: transparent;\n}\n\n/**\n * 1. Remove the bottom border in Chrome 57-\n * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari.\n */\n\nabbr[title] {\n border-bottom: none; /* 1 */\n text-decoration: underline; /* 2 */\n text-decoration: underline dotted; /* 2 */\n}\n\n/**\n * Add the correct font weight in Chrome, Edge, and Safari.\n */\n\nb,\nstrong {\n font-weight: bolder;\n}\n\n/**\n * 1. Correct the inheritance and scaling of font size in all browsers.\n * 2. Correct the odd `em` font sizing in all browsers.\n */\n\ncode,\nkbd,\nsamp {\n font-family: monospace, monospace; /* 1 */\n font-size: 1em; /* 2 */\n}\n\n/**\n * Add the correct font size in all browsers.\n */\n\nsmall {\n font-size: 80%;\n}\n\n/**\n * Prevent `sub` and `sup` elements from affecting the line height in\n * all browsers.\n */\n\nsub,\nsup {\n font-size: 75%;\n line-height: 0;\n position: relative;\n vertical-align: baseline;\n}\n\nsub {\n bottom: -0.25em;\n}\n\nsup {\n top: -0.5em;\n}\n\n/* Embedded content\n ========================================================================== */\n\n/**\n * Remove the border on images inside links in IE 10.\n */\n\nimg {\n border-style: none;\n}\n\n/* Forms\n ========================================================================== */\n\n/**\n * 1. Change the font styles in all browsers.\n * 2. Remove the margin in Firefox and Safari.\n */\n\nbutton,\ninput,\noptgroup,\nselect,\ntextarea {\n font-family: inherit; /* 1 */\n font-size: 100%; /* 1 */\n line-height: 1.15; /* 1 */\n margin: 0; /* 2 */\n}\n\n/**\n * Show the overflow in IE.\n * 1. Show the overflow in Edge.\n */\n\nbutton,\ninput { /* 1 */\n overflow: visible;\n}\n\n/**\n * Remove the inheritance of text transform in Edge, Firefox, and IE.\n * 1. Remove the inheritance of text transform in Firefox.\n */\n\nbutton,\nselect { /* 1 */\n text-transform: none;\n}\n\n/**\n * Correct the inability to style clickable types in iOS and Safari.\n */\n\nbutton,\n[type=\"button\"],\n[type=\"reset\"],\n[type=\"submit\"] {\n -webkit-appearance: button;\n}\n\n/**\n * Remove the inner border and padding in Firefox.\n */\n\nbutton::-moz-focus-inner,\n[type=\"button\"]::-moz-focus-inner,\n[type=\"reset\"]::-moz-focus-inner,\n[type=\"submit\"]::-moz-focus-inner {\n border-style: none;\n padding: 0;\n}\n\n/**\n * Restore the focus styles unset by the previous rule.\n */\n\nbutton:-moz-focusring,\n[type=\"button\"]:-moz-focusring,\n[type=\"reset\"]:-moz-focusring,\n[type=\"submit\"]:-moz-focusring {\n outline: 1px dotted ButtonText;\n}\n\n/**\n * Correct the padding in Firefox.\n */\n\nfieldset {\n padding: 0.35em 0.75em 0.625em;\n}\n\n/**\n * 1. Correct the text wrapping in Edge and IE.\n * 2. Correct the color inheritance from `fieldset` elements in IE.\n * 3. Remove the padding so developers are not caught out when they zero out\n * `fieldset` elements in all browsers.\n */\n\nlegend {\n box-sizing: border-box; /* 1 */\n color: inherit; /* 2 */\n display: table; /* 1 */\n max-width: 100%; /* 1 */\n padding: 0; /* 3 */\n white-space: normal; /* 1 */\n}\n\n/**\n * Add the correct vertical alignment in Chrome, Firefox, and Opera.\n */\n\nprogress {\n vertical-align: baseline;\n}\n\n/**\n * Remove the default vertical scrollbar in IE 10+.\n */\n\ntextarea {\n overflow: auto;\n}\n\n/**\n * 1. Add the correct box sizing in IE 10.\n * 2. Remove the padding in IE 10.\n */\n\n[type=\"checkbox\"],\n[type=\"radio\"] {\n box-sizing: border-box; /* 1 */\n padding: 0; /* 2 */\n}\n\n/**\n * Correct the cursor style of increment and decrement buttons in Chrome.\n */\n\n[type=\"number\"]::-webkit-inner-spin-button,\n[type=\"number\"]::-webkit-outer-spin-button {\n height: auto;\n}\n\n/**\n * 1. Correct the odd appearance in Chrome and Safari.\n * 2. Correct the outline style in Safari.\n */\n\n[type=\"search\"] {\n -webkit-appearance: textfield; /* 1 */\n outline-offset: -2px; /* 2 */\n}\n\n/**\n * Remove the inner padding in Chrome and Safari on macOS.\n */\n\n[type=\"search\"]::-webkit-search-decoration {\n -webkit-appearance: none;\n}\n\n/**\n * 1. Correct the inability to style clickable types in iOS and Safari.\n * 2. Change font properties to `inherit` in Safari.\n */\n\n::-webkit-file-upload-button {\n -webkit-appearance: button; /* 1 */\n font: inherit; /* 2 */\n}\n\n/* Interactive\n ========================================================================== */\n\n/*\n * Add the correct display in Edge, IE 10+, and Firefox.\n */\n\ndetails {\n display: block;\n}\n\n/*\n * Add the correct display in all browsers.\n */\n\nsummary {\n display: list-item;\n}\n\n/* Misc\n ========================================================================== */\n\n/**\n * Add the correct display in IE 10+.\n */\n\ntemplate {\n display: none;\n}\n\n/**\n * Add the correct display in IE 10.\n */\n\n[hidden] {\n display: none;\n}\n","// This file contains styles for managing print media.\n\n////////////////////////////////////////////////////////////////////////////////\n// Hide elements not relevant to print media.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Hide icon container.\n .content-icon-container\n display: none !important\n\n // Hide showing header links if hovering over when printing.\n .headerlink\n display: none !important\n\n // Hide mobile header.\n .mobile-header\n display: none !important\n\n // Hide navigation links.\n .related-pages\n display: none !important\n\n////////////////////////////////////////////////////////////////////////////////\n// Tweaks related to decolorization.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n // Apply a border around code which no longer have a color background.\n .highlight\n border: 0.1pt solid var(--color-foreground-border)\n\n////////////////////////////////////////////////////////////////////////////////\n// Avoid page break in some relevant cases.\n////////////////////////////////////////////////////////////////////////////////\n@media print\n ul, ol, dl, a, table, pre, blockquote\n page-break-inside: avoid\n\n h1, h2, h3, h4, h5, h6, img, figure, caption\n page-break-inside: avoid\n page-break-after: avoid\n\n ul, ol, dl\n page-break-before: avoid\n",".visually-hidden\n position: absolute !important\n width: 1px !important\n height: 1px !important\n padding: 0 !important\n margin: -1px !important\n overflow: hidden !important\n clip: rect(0,0,0,0) !important\n white-space: nowrap !important\n border: 0 !important\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n:-moz-focusring\n outline: auto\n","// This file serves as the \"skeleton\" of the theming logic.\n//\n// This contains the bulk of the logic for handling dark mode, color scheme\n// toggling and the handling of color-scheme-specific hiding of elements.\n\nbody\n @include fonts\n @include spacing\n @include icons\n @include admonitions\n @include default-admonition(#651fff, \"abstract\")\n @include default-topic(#14B8A6, \"pencil\")\n\n @include colors\n\n.only-light\n display: block !important\nhtml body .only-dark\n display: none !important\n\n// Ignore dark-mode hints if print media.\n@media not print\n // Enable dark-mode, if requested.\n body[data-theme=\"dark\"]\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n // Enable dark mode, unless explicitly told to avoid.\n @media (prefers-color-scheme: dark)\n body:not([data-theme=\"light\"])\n @include colors-dark\n\n html & .only-light\n display: none !important\n .only-dark\n display: block !important\n\n//\n// Theme toggle presentation\n//\nbody[data-theme=\"auto\"]\n .theme-toggle svg.theme-icon-when-auto-light\n display: block\n\n @media (prefers-color-scheme: dark)\n .theme-toggle svg.theme-icon-when-auto-dark\n display: block\n .theme-toggle svg.theme-icon-when-auto-light\n display: none\n\nbody[data-theme=\"dark\"]\n .theme-toggle svg.theme-icon-when-dark\n display: block\n\nbody[data-theme=\"light\"]\n .theme-toggle svg.theme-icon-when-light\n display: block\n","// Fonts used by this theme.\n//\n// There are basically two things here -- using the system font stack and\n// defining sizes for various elements in %ages. We could have also used `em`\n// but %age is easier to reason about for me.\n\n@mixin fonts {\n // These are adapted from https://systemfontstack.com/\n --font-stack: -apple-system, BlinkMacSystemFont, Segoe UI, Helvetica, Arial,\n sans-serif, Apple Color Emoji, Segoe UI Emoji;\n --font-stack--monospace: \"SFMono-Regular\", Menlo, Consolas, Monaco,\n Liberation Mono, Lucida Console, monospace;\n --font-stack--headings: var(--font-stack);\n\n --font-size--normal: 100%;\n --font-size--small: 87.5%;\n --font-size--small--2: 81.25%;\n --font-size--small--3: 75%;\n --font-size--small--4: 62.5%;\n\n // Sidebar\n --sidebar-caption-font-size: var(--font-size--small--2);\n --sidebar-item-font-size: var(--font-size--small);\n --sidebar-search-input-font-size: var(--font-size--small);\n\n // Table of Contents\n --toc-font-size: var(--font-size--small--3);\n --toc-font-size--mobile: var(--font-size--normal);\n --toc-title-font-size: var(--font-size--small--4);\n\n // Admonitions\n //\n // These aren't defined in terms of %ages, since nesting these is permitted.\n --admonition-font-size: 0.8125rem;\n --admonition-title-font-size: 0.8125rem;\n\n // Code\n --code-font-size: var(--font-size--small--2);\n\n // API\n --api-font-size: var(--font-size--small);\n}\n","// Spacing for various elements on the page\n//\n// If the user wants to tweak things in a certain way, they are permitted to.\n// They also have to deal with the consequences though!\n\n@mixin spacing {\n // Header!\n --header-height: calc(\n var(--sidebar-item-line-height) + 4 * #{var(--sidebar-item-spacing-vertical)}\n );\n --header-padding: 0.5rem;\n\n // Sidebar\n --sidebar-tree-space-above: 1.5rem;\n --sidebar-caption-space-above: 1rem;\n\n --sidebar-item-line-height: 1rem;\n --sidebar-item-spacing-vertical: 0.5rem;\n --sidebar-item-spacing-horizontal: 1rem;\n --sidebar-item-height: calc(\n var(--sidebar-item-line-height) + 2 *#{var(--sidebar-item-spacing-vertical)}\n );\n\n --sidebar-expander-width: var(--sidebar-item-height); // be square\n\n --sidebar-search-space-above: 0.5rem;\n --sidebar-search-input-spacing-vertical: 0.5rem;\n --sidebar-search-input-spacing-horizontal: 0.5rem;\n --sidebar-search-input-height: 1rem;\n --sidebar-search-icon-size: var(--sidebar-search-input-height);\n\n // Table of Contents\n --toc-title-padding: 0.25rem 0;\n --toc-spacing-vertical: 1.5rem;\n --toc-spacing-horizontal: 1.5rem;\n --toc-item-spacing-vertical: 0.4rem;\n --toc-item-spacing-horizontal: 1rem;\n}\n","// Expose theme icons as CSS variables.\n\n$icons: (\n // Adapted from tabler-icons\n // url: https://tablericons.com/\n \"search\":\n url('data:image/svg+xml;charset=utf-8,'),\n // Factored out from mkdocs-material on 24-Aug-2020.\n // url: https://squidfunk.github.io/mkdocs-material/reference/admonitions/\n \"pencil\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"abstract\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"info\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"flame\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"question\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"warning\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"failure\":\n url('data:image/svg+xml;charset=utf-8,'),\n \"spark\":\n url('data:image/svg+xml;charset=utf-8,')\n);\n\n@mixin icons {\n @each $name, $glyph in $icons {\n --icon-#{$name}: #{$glyph};\n }\n}\n","// Admonitions\n\n// Structure of these is:\n// admonition-class: color \"icon-name\";\n//\n// The colors are translated into CSS variables below. The icons are\n// used directly in the main declarations to set the `mask-image` in\n// the title.\n\n// prettier-ignore\n$admonitions: (\n // Each of these has an reST directives for it.\n \"caution\": #ff9100 \"spark\",\n \"warning\": #ff9100 \"warning\",\n \"danger\": #ff5252 \"spark\",\n \"attention\": #ff5252 \"warning\",\n \"error\": #ff5252 \"failure\",\n \"hint\": #00c852 \"question\",\n \"tip\": #00c852 \"info\",\n \"important\": #00bfa5 \"flame\",\n \"note\": #00b0ff \"pencil\",\n \"seealso\": #448aff \"info\",\n \"admonition-todo\": #808080 \"pencil\"\n);\n\n@mixin default-admonition($color, $icon-name) {\n --color-admonition-title: #{$color};\n --color-admonition-title-background: #{rgba($color, 0.2)};\n\n --icon-admonition-default: var(--icon-#{$icon-name});\n}\n\n@mixin default-topic($color, $icon-name) {\n --color-topic-title: #{$color};\n --color-topic-title-background: #{rgba($color, 0.2)};\n\n --icon-topic-default: var(--icon-#{$icon-name});\n}\n\n@mixin admonitions {\n @each $name, $values in $admonitions {\n --color-admonition-title--#{$name}: #{nth($values, 1)};\n --color-admonition-title-background--#{$name}: #{rgba(\n nth($values, 1),\n 0.2\n )};\n }\n}\n","// Colors used throughout this theme.\n//\n// The aim is to give the user more control. Thus, instead of hard-coding colors\n// in various parts of the stylesheet, the approach taken is to define all\n// colors as CSS variables and reusing them in all the places.\n//\n// `colors-dark` depends on `colors` being included at a lower specificity.\n\n@mixin colors {\n --color-problematic: #b30000;\n\n // Base Colors\n --color-foreground-primary: black; // for main text and headings\n --color-foreground-secondary: #5a5c63; // for secondary text\n --color-foreground-muted: #6b6f76; // for muted text\n --color-foreground-border: #878787; // for content borders\n\n --color-background-primary: white; // for content\n --color-background-secondary: #f8f9fb; // for navigation + ToC\n --color-background-hover: #efeff4ff; // for navigation-item hover\n --color-background-hover--transparent: #efeff400;\n --color-background-border: #eeebee; // for UI borders\n --color-background-item: #ccc; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #0a4bff;\n --color-brand-content: #2757dd;\n --color-brand-visited: #872ee0;\n\n // API documentation\n --color-api-background: var(--color-background-hover--transparent);\n --color-api-background-hover: var(--color-background-hover);\n --color-api-overall: var(--color-foreground-secondary);\n --color-api-name: var(--color-problematic);\n --color-api-pre-name: var(--color-problematic);\n --color-api-paren: var(--color-foreground-secondary);\n --color-api-keyword: var(--color-foreground-primary);\n\n --color-api-added: #21632c;\n --color-api-added-border: #38a84d;\n --color-api-changed: #046172;\n --color-api-changed-border: #06a1bc;\n --color-api-deprecated: #605706;\n --color-api-deprecated-border: #f0d90f;\n --color-api-removed: #b30000;\n --color-api-removed-border: #ff5c5c;\n\n --color-highlight-on-target: #ffffcc;\n\n // Inline code background\n --color-inline-code-background: var(--color-background-secondary);\n\n // Highlighted text (search)\n --color-highlighted-background: #ddeeff;\n --color-highlighted-text: var(--color-foreground-primary);\n\n // GUI Labels\n --color-guilabel-background: #ddeeff80;\n --color-guilabel-border: #bedaf580;\n --color-guilabel-text: var(--color-foreground-primary);\n\n // Admonitions!\n --color-admonition-background: transparent;\n\n //////////////////////////////////////////////////////////////////////////////\n // Everything below this should be one of:\n // - var(...)\n // - *-gradient(...)\n // - special literal values (eg: transparent, none)\n //////////////////////////////////////////////////////////////////////////////\n\n // Tables\n --color-table-header-background: var(--color-background-secondary);\n --color-table-border: var(--color-background-border);\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: transparent;\n --color-card-marginals-background: var(--color-background-secondary);\n\n // Header\n --color-header-background: var(--color-background-primary);\n --color-header-border: var(--color-background-border);\n --color-header-text: var(--color-foreground-primary);\n\n // Sidebar (left)\n --color-sidebar-background: var(--color-background-secondary);\n --color-sidebar-background-border: var(--color-background-border);\n\n --color-sidebar-brand-text: var(--color-foreground-primary);\n --color-sidebar-caption-text: var(--color-foreground-muted);\n --color-sidebar-link-text: var(--color-foreground-secondary);\n --color-sidebar-link-text--top-level: var(--color-brand-primary);\n\n --color-sidebar-item-background: var(--color-sidebar-background);\n --color-sidebar-item-background--current: var(\n --color-sidebar-item-background\n );\n --color-sidebar-item-background--hover: linear-gradient(\n 90deg,\n var(--color-background-hover--transparent) 0%,\n var(--color-background-hover) var(--sidebar-item-spacing-horizontal),\n var(--color-background-hover) 100%\n );\n\n --color-sidebar-item-expander-background: transparent;\n --color-sidebar-item-expander-background--hover: var(\n --color-background-hover\n );\n\n --color-sidebar-search-text: var(--color-foreground-primary);\n --color-sidebar-search-background: var(--color-background-secondary);\n --color-sidebar-search-background--focus: var(--color-background-primary);\n --color-sidebar-search-border: var(--color-background-border);\n --color-sidebar-search-icon: var(--color-foreground-muted);\n\n // Table of Contents (right)\n --color-toc-background: var(--color-background-primary);\n --color-toc-title-text: var(--color-foreground-muted);\n --color-toc-item-text: var(--color-foreground-secondary);\n --color-toc-item-text--hover: var(--color-foreground-primary);\n --color-toc-item-text--active: var(--color-brand-primary);\n\n // Actual page contents\n --color-content-foreground: var(--color-foreground-primary);\n --color-content-background: transparent;\n\n // Links\n --color-link: var(--color-brand-content);\n --color-link-underline: var(--color-background-border);\n --color-link--hover: var(--color-brand-content);\n --color-link-underline--hover: var(--color-foreground-border);\n\n --color-link--visited: var(--color-brand-visited);\n --color-link-underline--visited: var(--color-background-border);\n --color-link--visited--hover: var(--color-brand-visited);\n --color-link-underline--visited--hover: var(--color-foreground-border);\n}\n\n@mixin colors-dark {\n --color-problematic: #ee5151;\n\n // Base Colors\n --color-foreground-primary: #cfd0d0; // for main text and headings\n --color-foreground-secondary: #9ca0a5; // for secondary text\n --color-foreground-muted: #81868d; // for muted text\n --color-foreground-border: #666666; // for content borders\n\n --color-background-primary: #131416; // for content\n --color-background-secondary: #1a1c1e; // for navigation + ToC\n --color-background-hover: #1e2124ff; // for navigation-item hover\n --color-background-hover--transparent: #1e212400;\n --color-background-border: #303335; // for UI borders\n --color-background-item: #444; // for \"background\" items (eg: copybutton)\n\n // Announcements\n --color-announcement-background: #000000dd;\n --color-announcement-text: #eeebee;\n\n // Brand colors\n --color-brand-primary: #3d94ff;\n --color-brand-content: #5ca5ff;\n --color-brand-visited: #b27aeb;\n\n // Highlighted text (search)\n --color-highlighted-background: #083563;\n\n // GUI Labels\n --color-guilabel-background: #08356380;\n --color-guilabel-border: #13395f80;\n\n // API documentation\n --color-api-keyword: var(--color-foreground-secondary);\n --color-highlight-on-target: #333300;\n\n --color-api-added: #3db854;\n --color-api-added-border: #267334;\n --color-api-changed: #09b0ce;\n --color-api-changed-border: #056d80;\n --color-api-deprecated: #b1a10b;\n --color-api-deprecated-border: #6e6407;\n --color-api-removed: #ff7575;\n --color-api-removed-border: #b03b3b;\n\n // Admonitions\n --color-admonition-background: #18181a;\n\n // Cards\n --color-card-border: var(--color-background-secondary);\n --color-card-background: #18181a;\n --color-card-marginals-background: var(--color-background-hover);\n}\n","// This file contains the styling for making the content throughout the page,\n// including fonts, paragraphs, headings and spacing among these elements.\n\nbody\n font-family: var(--font-stack)\npre,\ncode,\nkbd,\nsamp\n font-family: var(--font-stack--monospace)\n\n// Make fonts look slightly nicer.\nbody\n -webkit-font-smoothing: antialiased\n -moz-osx-font-smoothing: grayscale\n\n// Line height from Bootstrap 4.1\narticle\n line-height: 1.5\n\n//\n// Headings\n//\nh1,\nh2,\nh3,\nh4,\nh5,\nh6\n line-height: 1.25\n font-family: var(--font-stack--headings)\n font-weight: bold\n\n border-radius: 0.5rem\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n margin-left: -0.5rem\n margin-right: -0.5rem\n padding-left: 0.5rem\n padding-right: 0.5rem\n\n + p\n margin-top: 0\n\nh1\n font-size: 2.5em\n margin-top: 1.75rem\n margin-bottom: 1rem\nh2\n font-size: 2em\n margin-top: 1.75rem\nh3\n font-size: 1.5em\nh4\n font-size: 1.25em\nh5\n font-size: 1.125em\nh6\n font-size: 1em\n\nsmall\n opacity: 75%\n font-size: 80%\n\n// Paragraph\np\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n\n// Horizontal rules\nhr.docutils\n height: 1px\n padding: 0\n margin: 2rem 0\n background-color: var(--color-background-border)\n border: 0\n\n.centered\n text-align: center\n\n// Links\na\n text-decoration: underline\n\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n &:visited\n color: var(--color-link--visited)\n text-decoration-color: var(--color-link-underline--visited)\n &:hover\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &.muted-link\n color: inherit\n &:hover\n color: var(--color-link--hover)\n text-decoration-color: var(--color-link-underline--hover)\n &:visited\n color: var(--color-link--visited--hover)\n text-decoration-color: var(--color-link-underline--visited--hover)\n","// This file contains the styles for the overall layouting of the documentation\n// skeleton, including the responsive changes as well as sidebar toggles.\n//\n// This is implemented as a mobile-last design, which isn't ideal, but it is\n// reasonably good-enough and I got pretty tired by the time I'd finished this\n// to move the rules around to fix this. Shouldn't take more than 3-4 hours,\n// if you know what you're doing tho.\n\n// HACK: Not all browsers account for the scrollbar width in media queries.\n// This results in horizontal scrollbars in the breakpoint where we go\n// from displaying everything to hiding the ToC. We accomodate for this by\n// adding a bit of padding to the TOC drawer, disabling the horizontal\n// scrollbar and allowing the scrollbars to cover the padding.\n// https://www.456bereastreet.com/archive/201301/media_query_width_and_vertical_scrollbars/\n\n// HACK: Always having the scrollbar visible, prevents certain browsers from\n// causing the content to stutter horizontally between taller-than-viewport and\n// not-taller-than-viewport pages.\n\nhtml\n overflow-x: hidden\n overflow-y: scroll\n scroll-behavior: smooth\n\n.sidebar-scroll, .toc-scroll, article[role=main] *\n // Override Firefox scrollbar style\n scrollbar-width: thin\n scrollbar-color: var(--color-foreground-border) transparent\n\n // Override Chrome scrollbar styles\n &::-webkit-scrollbar\n width: 0.25rem\n height: 0.25rem\n &::-webkit-scrollbar-thumb\n background-color: var(--color-foreground-border)\n border-radius: 0.125rem\n\n//\n// Overalls\n//\nhtml,\nbody\n height: 100%\n color: var(--color-foreground-primary)\n background: var(--color-background-primary)\n\n.skip-to-content\n position: fixed\n padding: 1rem\n border-radius: 1rem\n left: 0.25rem\n top: 0.25rem\n z-index: 40\n background: var(--color-background-primary)\n color: var(--color-foreground-primary)\n\n transform: translateY(-200%)\n transition: transform 300ms ease-in-out\n\n &:focus-within\n transform: translateY(0%)\n\narticle\n color: var(--color-content-foreground)\n background: var(--color-content-background)\n overflow-wrap: break-word\n\n.page\n display: flex\n // fill the viewport for pages with little content.\n min-height: 100%\n\n.mobile-header\n width: 100%\n height: var(--header-height)\n background-color: var(--color-header-background)\n color: var(--color-header-text)\n border-bottom: 1px solid var(--color-header-border)\n\n // Looks like sub-script/super-script have this, and we need this to\n // be \"on top\" of those.\n z-index: 10\n\n // We don't show the header on large screens.\n display: none\n\n // Add shadow when scrolled\n &.scrolled\n border-bottom: none\n box-shadow: 0 0 0.2rem rgba(0, 0, 0, 0.1), 0 0.2rem 0.4rem rgba(0, 0, 0, 0.2)\n\n .header-center\n a\n color: var(--color-header-text)\n text-decoration: none\n\n.main\n display: flex\n flex: 1\n\n// Sidebar (left) also covers the entire left portion of screen.\n.sidebar-drawer\n box-sizing: border-box\n\n border-right: 1px solid var(--color-sidebar-background-border)\n background: var(--color-sidebar-background)\n\n display: flex\n justify-content: flex-end\n // These next two lines took me two days to figure out.\n width: calc((100% - #{$full-width}) / 2 + #{$sidebar-width})\n min-width: $sidebar-width\n\n// Scroll-along sidebars\n.sidebar-container,\n.toc-drawer\n box-sizing: border-box\n width: $sidebar-width\n\n.toc-drawer\n background: var(--color-toc-background)\n // See HACK described on top of this document\n padding-right: 1rem\n\n.sidebar-sticky,\n.toc-sticky\n position: sticky\n top: 0\n height: min(100%, 100vh)\n height: 100vh\n\n display: flex\n flex-direction: column\n\n.sidebar-scroll,\n.toc-scroll\n flex-grow: 1\n flex-shrink: 1\n\n overflow: auto\n scroll-behavior: smooth\n\n// Central items.\n.content\n padding: 0 $content-padding\n width: $content-width\n\n display: flex\n flex-direction: column\n justify-content: space-between\n\n.icon\n display: inline-block\n height: 1rem\n width: 1rem\n svg\n width: 100%\n height: 100%\n\n//\n// Accommodate announcement banner\n//\n.announcement\n background-color: var(--color-announcement-background)\n color: var(--color-announcement-text)\n\n height: var(--header-height)\n display: flex\n align-items: center\n overflow-x: auto\n & + .page\n min-height: calc(100% - var(--header-height))\n\n.announcement-content\n box-sizing: border-box\n padding: 0.5rem\n min-width: 100%\n white-space: nowrap\n text-align: center\n\n a\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-announcement-text)\n\n &:hover\n color: var(--color-announcement-text)\n text-decoration-color: var(--color-link--hover)\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for theme\n////////////////////////////////////////////////////////////////////////////////\n.no-js .theme-toggle-container // don't show theme toggle if there's no JS\n display: none\n\n.theme-toggle-container\n display: flex\n\n.theme-toggle\n display: flex\n cursor: pointer\n border: none\n padding: 0\n background: transparent\n\n.theme-toggle svg\n height: 1.25rem\n width: 1.25rem\n color: var(--color-foreground-primary)\n display: none\n\n.theme-toggle-header\n display: flex\n align-items: center\n justify-content: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Toggles for elements\n////////////////////////////////////////////////////////////////////////////////\n.toc-overlay-icon, .nav-overlay-icon\n display: none\n cursor: pointer\n\n .icon\n color: var(--color-foreground-secondary)\n height: 1.5rem\n width: 1.5rem\n\n.toc-header-icon, .nav-overlay-icon\n // for when we set display: flex\n justify-content: center\n align-items: center\n\n.toc-content-icon\n height: 1.5rem\n width: 1.5rem\n\n.content-icon-container\n float: right\n display: flex\n margin-top: 1.5rem\n margin-left: 1rem\n margin-bottom: 1rem\n gap: 0.5rem\n\n .edit-this-page, .view-this-page\n svg\n color: inherit\n height: 1.25rem\n width: 1.25rem\n\n.sidebar-toggle\n position: absolute\n display: none\n// \n.sidebar-toggle[name=\"__toc\"]\n left: 20px\n.sidebar-toggle:checked\n left: 40px\n// \n\n.overlay\n position: fixed\n top: 0\n width: 0\n height: 0\n\n transition: width 0ms, height 0ms, opacity 250ms ease-out\n\n opacity: 0\n background-color: rgba(0, 0, 0, 0.54)\n.sidebar-overlay\n z-index: 20\n.toc-overlay\n z-index: 40\n\n// Keep things on top and smooth.\n.sidebar-drawer\n z-index: 30\n transition: left 250ms ease-in-out\n.toc-drawer\n z-index: 50\n transition: right 250ms ease-in-out\n\n// Show the Sidebar\n#__navigation:checked\n & ~ .sidebar-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .sidebar-drawer\n top: 0\n left: 0\n // Show the toc sidebar\n#__toc:checked\n & ~ .toc-overlay\n width: 100%\n height: 100%\n opacity: 1\n & ~ .page\n .toc-drawer\n top: 0\n right: 0\n\n////////////////////////////////////////////////////////////////////////////////\n// Back to top\n////////////////////////////////////////////////////////////////////////////////\n.back-to-top\n text-decoration: none\n\n display: none\n position: fixed\n left: 0\n top: 1rem\n padding: 0.5rem\n padding-right: 0.75rem\n border-radius: 1rem\n font-size: 0.8125rem\n\n background: var(--color-background-primary)\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), #6b728080 0px 0px 1px 0px\n\n z-index: 10\n\n margin-left: 50%\n transform: translateX(-50%)\n svg\n height: 1rem\n width: 1rem\n fill: currentColor\n display: inline-block\n\n span\n margin-left: 0.25rem\n\n .show-back-to-top &\n display: flex\n align-items: center\n\n////////////////////////////////////////////////////////////////////////////////\n// Responsive layouting\n////////////////////////////////////////////////////////////////////////////////\n// Make things a bit bigger on bigger screens.\n@media (min-width: $full-width + $sidebar-width)\n html\n font-size: 110%\n\n@media (max-width: $full-width)\n // Collapse \"toc\" into the icon.\n .toc-content-icon\n display: flex\n .toc-drawer\n position: fixed\n height: 100vh\n top: 0\n right: -$sidebar-width\n border-left: 1px solid var(--color-background-muted)\n .toc-tree\n border-left: none\n font-size: var(--toc-font-size--mobile)\n\n // Accomodate for a changed content width.\n .sidebar-drawer\n width: calc((100% - #{$full-width - $sidebar-width}) / 2 + #{$sidebar-width})\n\n@media (max-width: $full-width - $sidebar-width)\n // Collapse \"navigation\".\n .nav-overlay-icon\n display: flex\n .sidebar-drawer\n position: fixed\n height: 100vh\n width: $sidebar-width\n\n top: 0\n left: -$sidebar-width\n\n // Swap which icon is visible.\n .toc-header-icon, .theme-toggle-header\n display: flex\n .toc-content-icon, .theme-toggle-content\n display: none\n\n // Show the header.\n .mobile-header\n position: sticky\n top: 0\n display: flex\n justify-content: space-between\n align-items: center\n\n .header-left,\n .header-right\n display: flex\n height: var(--header-height)\n padding: 0 var(--header-padding)\n label\n height: 100%\n width: 100%\n user-select: none\n\n .nav-overlay-icon .icon,\n .theme-toggle svg\n height: 1.5rem\n width: 1.5rem\n\n // Add a scroll margin for the content\n :target\n scroll-margin-top: calc(var(--header-height) + 2.5rem)\n\n // Show back-to-top below the header\n .back-to-top\n top: calc(var(--header-height) + 0.5rem)\n\n // Center the page, and accommodate for the header.\n .page\n flex-direction: column\n justify-content: center\n .content\n margin-left: auto\n margin-right: auto\n\n@media (max-width: $content-width + 2* $content-padding)\n // Content should respect window limits.\n .content\n width: 100%\n overflow-x: auto\n\n@media (max-width: $content-width)\n .content\n padding: 0 $content-padding--small\n // Don't float sidebars to the right.\n article aside.sidebar\n float: none\n width: 100%\n margin: 1rem 0\n","// Overall Layout Variables\n//\n// Because CSS variables can't be used in media queries. The fact that this\n// makes the layout non-user-configurable is a good thing.\n$content-padding: 3em;\n$content-padding--small: 1em;\n$content-width: 46em;\n$sidebar-width: 15em;\n$full-width: $content-width + 2 * ($content-padding + $sidebar-width);\n","//\n// The design here is strongly inspired by mkdocs-material.\n.admonition, .topic\n margin: 1rem auto\n padding: 0 0.5rem 0.5rem 0.5rem\n\n background: var(--color-admonition-background)\n\n border-radius: 0.2rem\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n font-size: var(--admonition-font-size)\n\n overflow: hidden\n page-break-inside: avoid\n\n // First element should have no margin, since the title has it.\n > :nth-child(2)\n margin-top: 0\n\n // Last item should have no margin, since we'll control that w/ padding\n > :last-child\n margin-bottom: 0\n\n.admonition p.admonition-title,\np.topic-title\n position: relative\n margin: 0 -0.5rem 0.5rem\n padding-left: 2rem\n padding-right: .5rem\n padding-top: .4rem\n padding-bottom: .4rem\n\n font-weight: 500\n font-size: var(--admonition-title-font-size)\n line-height: 1.3\n\n // Our fancy icon\n &::before\n content: \"\"\n position: absolute\n left: 0.5rem\n width: 1rem\n height: 1rem\n\n// Default styles\np.admonition-title\n background-color: var(--color-admonition-title-background)\n &::before\n background-color: var(--color-admonition-title)\n mask-image: var(--icon-admonition-default)\n mask-repeat: no-repeat\n\np.topic-title\n background-color: var(--color-topic-title-background)\n &::before\n background-color: var(--color-topic-title)\n mask-image: var(--icon-topic-default)\n mask-repeat: no-repeat\n\n//\n// Variants\n//\n.admonition\n border-left: 0.2rem solid var(--color-admonition-title)\n\n @each $type, $value in $admonitions\n &.#{$type}\n border-left-color: var(--color-admonition-title--#{$type})\n > .admonition-title\n background-color: var(--color-admonition-title-background--#{$type})\n &::before\n background-color: var(--color-admonition-title--#{$type})\n mask-image: var(--icon-#{nth($value, 2)})\n\n.admonition-todo > .admonition-title\n text-transform: uppercase\n","// This file stylizes the API documentation (stuff generated by autodoc). It's\n// deeply nested due to how autodoc structures the HTML without enough classes\n// to select the relevant items.\n\n// API docs!\ndl[class]:not(.option-list):not(.field-list):not(.footnote):not(.glossary):not(.simple)\n // Tweak the spacing of all the things!\n dd\n margin-left: 2rem\n > :first-child\n margin-top: 0.125rem\n > :last-child\n margin-bottom: 0.75rem\n\n // This is used for the arguments\n .field-list\n margin-bottom: 0.75rem\n\n // \"Headings\" (like \"Parameters\" and \"Return\")\n > dt\n text-transform: uppercase\n font-size: var(--font-size--small)\n\n dd:empty\n margin-bottom: 0.5rem\n dd > ul\n margin-left: -1.2rem\n > li\n > p:nth-child(2)\n margin-top: 0\n // When the last-empty-paragraph follows a paragraph, it doesn't need\n // to augument the existing spacing.\n > p + p:last-child:empty\n margin-top: 0\n margin-bottom: 0\n\n // Colorize the elements\n > dt\n color: var(--color-api-overall)\n\n.sig:not(.sig-inline)\n font-weight: bold\n\n font-size: var(--api-font-size)\n font-family: var(--font-stack--monospace)\n\n margin-left: -0.25rem\n margin-right: -0.25rem\n padding-top: 0.25rem\n padding-bottom: 0.25rem\n padding-right: 0.5rem\n\n // These are intentionally em, to properly match the font size.\n padding-left: 3em\n text-indent: -2.5em\n\n border-radius: 0.25rem\n\n background: var(--color-api-background)\n transition: background 100ms ease-out\n\n &:hover\n background: var(--color-api-background-hover)\n\n // adjust the size of the [source] link on the right.\n a.reference\n .viewcode-link\n font-weight: normal\n width: 4.25rem\n\nem.property\n font-style: normal\n &:first-child\n color: var(--color-api-keyword)\n.sig-name\n color: var(--color-api-name)\n.sig-prename\n font-weight: normal\n color: var(--color-api-pre-name)\n.sig-paren\n color: var(--color-api-paren)\n.sig-param\n font-style: normal\n\ndiv.versionadded,\ndiv.versionchanged,\ndiv.deprecated,\ndiv.versionremoved\n border-left: 0.1875rem solid\n border-radius: 0.125rem\n\n padding-left: 0.75rem\n\n p\n margin-top: 0.125rem\n margin-bottom: 0.125rem\n\ndiv.versionadded\n border-color: var(--color-api-added-border)\n .versionmodified\n color: var(--color-api-added)\n\ndiv.versionchanged\n border-color: var(--color-api-changed-border)\n .versionmodified\n color: var(--color-api-changed)\n\ndiv.deprecated\n border-color: var(--color-api-deprecated-border)\n .versionmodified\n color: var(--color-api-deprecated)\n\ndiv.versionremoved\n border-color: var(--color-api-removed-border)\n .versionmodified\n color: var(--color-api-removed)\n\n// Align the [docs] and [source] to the right.\n.viewcode-link, .viewcode-back\n float: right\n text-align: right\n",".line-block\n margin-top: 0.5rem\n margin-bottom: 0.75rem\n .line-block\n margin-top: 0rem\n margin-bottom: 0rem\n padding-left: 1rem\n","// Captions\narticle p.caption,\ntable > caption,\n.code-block-caption\n font-size: var(--font-size--small)\n text-align: center\n\n// Caption above a TOCTree\n.toctree-wrapper.compound\n .caption, :not(.caption) > .caption-text\n font-size: var(--font-size--small)\n text-transform: uppercase\n\n text-align: initial\n margin-bottom: 0\n\n > ul\n margin-top: 0\n margin-bottom: 0\n","// Inline code\ncode.literal, .sig-inline\n background: var(--color-inline-code-background)\n border-radius: 0.2em\n // Make the font smaller, and use padding to recover.\n font-size: var(--font-size--small--2)\n padding: 0.1em 0.2em\n\n pre.literal-block &\n font-size: inherit\n padding: 0\n\n p &\n border: 1px solid var(--color-background-border)\n\n.sig-inline\n font-family: var(--font-stack--monospace)\n\n// Code and Literal Blocks\n$code-spacing-vertical: 0.625rem\n$code-spacing-horizontal: 0.875rem\n\n// Wraps every literal block + line numbers.\ndiv[class*=\" highlight-\"],\ndiv[class^=\"highlight-\"]\n margin: 1em 0\n display: flex\n\n .table-wrapper\n margin: 0\n padding: 0\n\npre\n margin: 0\n padding: 0\n overflow: auto\n\n // Needed to have more specificity than pygments' \"pre\" selector. :(\n article[role=\"main\"] .highlight &\n line-height: 1.5\n\n &.literal-block,\n .highlight &\n font-size: var(--code-font-size)\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n // Make it look like all the other blocks.\n &.literal-block\n margin-top: 1rem\n margin-bottom: 1rem\n\n border-radius: 0.2rem\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n\n// All code is always contained in this.\n.highlight\n width: 100%\n border-radius: 0.2rem\n\n // Make line numbers and prompts un-selectable.\n .gp, span.linenos\n user-select: none\n pointer-events: none\n\n // Expand the line-highlighting.\n .hll\n display: block\n margin-left: -$code-spacing-horizontal\n margin-right: -$code-spacing-horizontal\n padding-left: $code-spacing-horizontal\n padding-right: $code-spacing-horizontal\n\n/* Make code block captions be nicely integrated */\n.code-block-caption\n display: flex\n padding: $code-spacing-vertical $code-spacing-horizontal\n\n border-radius: 0.25rem\n border-bottom-left-radius: 0\n border-bottom-right-radius: 0\n font-weight: 300\n border-bottom: 1px solid\n\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n border-color: var(--color-background-border)\n\n + div[class]\n margin-top: 0\n pre\n border-top-left-radius: 0\n border-top-right-radius: 0\n\n// When `html_codeblock_linenos_style` is table.\n.highlighttable\n width: 100%\n display: block\n tbody\n display: block\n\n tr\n display: flex\n\n // Line numbers\n td.linenos\n background-color: var(--color-code-background)\n color: var(--color-code-foreground)\n padding: $code-spacing-vertical $code-spacing-horizontal\n padding-right: 0\n border-top-left-radius: 0.2rem\n border-bottom-left-radius: 0.2rem\n\n .linenodiv\n padding-right: $code-spacing-horizontal\n font-size: var(--code-font-size)\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n\n // Actual code\n td.code\n padding: 0\n display: block\n flex: 1\n overflow: hidden\n\n .highlight\n border-top-left-radius: 0\n border-bottom-left-radius: 0\n\n// When `html_codeblock_linenos_style` is inline.\n.highlight\n span.linenos\n display: inline-block\n padding-left: 0\n padding-right: $code-spacing-horizontal\n margin-right: $code-spacing-horizontal\n box-shadow: -0.0625rem 0 var(--color-foreground-border) inset\n","// Inline Footnote Reference\n.footnote-reference\n font-size: var(--font-size--small--4)\n vertical-align: super\n\n// Definition list, listing the content of each note.\n// docutils <= 0.17\ndl.footnote.brackets\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\n display: grid\n grid-template-columns: max-content auto\n dt\n margin: 0\n > .fn-backref\n margin-left: 0.25rem\n\n &:after\n content: \":\"\n\n .brackets\n &:before\n content: \"[\"\n &:after\n content: \"]\"\n\n dd\n margin: 0\n padding: 0 1rem\n\n// docutils >= 0.18\naside.footnote\n font-size: var(--font-size--small)\n color: var(--color-foreground-secondary)\n\naside.footnote > span,\ndiv.citation > span\n float: left\n font-weight: 500\n padding-right: 0.25rem\n\naside.footnote > *:not(span),\ndiv.citation > p\n margin-left: 2rem\n","//\n// Figures\n//\nimg\n box-sizing: border-box\n max-width: 100%\n height: auto\n\narticle\n figure, .figure\n border-radius: 0.2rem\n\n margin: 0\n :last-child\n margin-bottom: 0\n\n .align-left\n float: left\n clear: left\n margin: 0 1rem 1rem\n\n .align-right\n float: right\n clear: right\n margin: 0 1rem 1rem\n\n .align-default,\n .align-center\n display: block\n text-align: center\n margin-left: auto\n margin-right: auto\n\n // WELL, table needs to be stylised like a table.\n table.align-default\n display: table\n text-align: initial\n",".genindex-jumpbox, .domainindex-jumpbox\n border-top: 1px solid var(--color-background-border)\n border-bottom: 1px solid var(--color-background-border)\n padding: 0.25rem\n\n.genindex-section, .domainindex-section\n h2\n margin-top: 0.75rem\n margin-bottom: 0.5rem\n ul\n margin-top: 0\n margin-bottom: 0\n","ul,\nol\n padding-left: 1.2rem\n\n // Space lists out like paragraphs\n margin-top: 1rem\n margin-bottom: 1rem\n // reduce margins within li.\n li\n > p:first-child\n margin-top: 0.25rem\n margin-bottom: 0.25rem\n\n > p:last-child\n margin-top: 0.25rem\n\n > ul,\n > ol\n margin-top: 0.5rem\n margin-bottom: 0.5rem\n\nol\n &.arabic\n list-style: decimal\n &.loweralpha\n list-style: lower-alpha\n &.upperalpha\n list-style: upper-alpha\n &.lowerroman\n list-style: lower-roman\n &.upperroman\n list-style: upper-roman\n\n// Don't space lists out when they're \"simple\" or in a `.. toctree::`\n.simple,\n.toctree-wrapper\n li\n > ul,\n > ol\n margin-top: 0\n margin-bottom: 0\n\n// Definition Lists\n.field-list,\n.option-list,\ndl:not([class]),\ndl.simple,\ndl.footnote,\ndl.glossary\n dt\n font-weight: 500\n margin-top: 0.25rem\n + dt\n margin-top: 0\n\n .classifier::before\n content: \":\"\n margin-left: 0.2rem\n margin-right: 0.2rem\n\n dd\n > p:first-child,\n ul\n margin-top: 0.125rem\n\n ul\n margin-bottom: 0.125rem\n",".math-wrapper\n width: 100%\n overflow-x: auto\n\ndiv.math\n position: relative\n text-align: center\n\n .headerlink,\n &:focus .headerlink\n display: none\n\n &:hover .headerlink\n display: inline-block\n\n span.eqno\n position: absolute\n right: 0.5rem\n top: 50%\n transform: translate(0, -50%)\n z-index: 1\n","// Abbreviations\nabbr[title]\n cursor: help\n\n// \"Problematic\" content, as identified by Sphinx\n.problematic\n color: var(--color-problematic)\n\n// Keyboard / Mouse \"instructions\"\nkbd:not(.compound)\n margin: 0 0.2rem\n padding: 0 0.2rem\n border-radius: 0.2rem\n border: 1px solid var(--color-foreground-border)\n color: var(--color-foreground-primary)\n vertical-align: text-bottom\n\n font-size: var(--font-size--small--3)\n display: inline-block\n\n box-shadow: 0 0.0625rem 0 rgba(0, 0, 0, 0.2), inset 0 0 0 0.125rem var(--color-background-primary)\n\n background-color: var(--color-background-secondary)\n\n// Blockquote\nblockquote\n border-left: 4px solid var(--color-background-border)\n background: var(--color-background-secondary)\n\n margin-left: 0\n margin-right: 0\n padding: 0.5rem 1rem\n\n .attribution\n font-weight: 600\n text-align: right\n\n &.pull-quote,\n &.highlights\n font-size: 1.25em\n\n &.epigraph,\n &.pull-quote\n border-left-width: 0\n border-radius: 0.5rem\n\n &.highlights\n border-left-width: 0\n background: transparent\n\n// Center align embedded-in-text images\np .reference img\n vertical-align: middle\n","p.rubric\n line-height: 1.25\n font-weight: bold\n font-size: 1.125em\n\n // For Numpy-style documentation that's got rubrics within it.\n // https://github.com/pradyunsg/furo/discussions/505\n dd &\n line-height: inherit\n font-weight: inherit\n\n font-size: var(--font-size--small)\n text-transform: uppercase\n","article .sidebar\n float: right\n clear: right\n width: 30%\n\n margin-left: 1rem\n margin-right: 0\n\n border-radius: 0.2rem\n background-color: var(--color-background-secondary)\n border: var(--color-background-border) 1px solid\n\n > *\n padding-left: 1rem\n padding-right: 1rem\n\n > ul, > ol // lists need additional padding, because bullets.\n padding-left: 2.2rem\n\n .sidebar-title\n margin: 0\n padding: 0.5rem 1rem\n border-bottom: var(--color-background-border) 1px solid\n\n font-weight: 500\n\n// TODO: subtitle\n// TODO: dedicated variables?\n",".table-wrapper\n width: 100%\n overflow-x: auto\n margin-top: 1rem\n margin-bottom: 0.5rem\n padding: 0.2rem 0.2rem 0.75rem\n\ntable.docutils\n border-radius: 0.2rem\n border-spacing: 0\n border-collapse: collapse\n\n box-shadow: 0 0.2rem 0.5rem rgba(0, 0, 0, 0.05), 0 0 0.0625rem rgba(0, 0, 0, 0.1)\n\n th\n background: var(--color-table-header-background)\n\n td,\n th\n // Space things out properly\n padding: 0 0.25rem\n\n // Get the borders looking just-right.\n border-left: 1px solid var(--color-table-border)\n border-right: 1px solid var(--color-table-border)\n border-bottom: 1px solid var(--color-table-border)\n\n p\n margin: 0.25rem\n\n &:first-child\n border-left: none\n &:last-child\n border-right: none\n\n // MyST-parser tables set these classes for control of column alignment\n &.text-left\n text-align: left\n &.text-right\n text-align: right\n &.text-center\n text-align: center\n",":target\n scroll-margin-top: 2.5rem\n\n@media (max-width: $full-width - $sidebar-width)\n :target\n scroll-margin-top: calc(2.5rem + var(--header-height))\n\n // When a heading is selected\n section > span:target\n scroll-margin-top: calc(2.8rem + var(--header-height))\n\n// Permalinks\n.headerlink\n font-weight: 100\n user-select: none\n\nh1,\nh2,\nh3,\nh4,\nh5,\nh6,\ndl dt,\np.caption,\nfigcaption p,\ntable > caption,\n.code-block-caption\n > .headerlink\n margin-left: 0.5rem\n visibility: hidden\n &:hover > .headerlink\n visibility: visible\n\n // Don't change to link-like, if someone adds the contents directive.\n > .toc-backref\n color: inherit\n text-decoration-line: none\n\n// Figure and table captions are special.\nfigure:hover > figcaption > p > .headerlink,\ntable:hover > caption > .headerlink\n visibility: visible\n\n:target >, // Regular section[id] style anchors\nspan:target ~ // Non-regular span[id] style \"extra\" anchors\n h1,\n h2,\n h3,\n h4,\n h5,\n h6\n &:nth-of-type(1)\n background-color: var(--color-highlight-on-target)\n // .headerlink\n // visibility: visible\n code.literal\n background-color: transparent\n\ntable:target > caption,\nfigure:target\n background-color: var(--color-highlight-on-target)\n\n// Inline page contents\n.this-will-duplicate-information-and-it-is-still-useful-here li :target\n background-color: var(--color-highlight-on-target)\n\n// Code block permalinks\n.literal-block-wrapper:target .code-block-caption\n background-color: var(--color-highlight-on-target)\n\n// When a definition list item is selected\n//\n// There isn't really an alternative to !important here, due to the\n// high-specificity of API documentation's selector.\ndt:target\n background-color: var(--color-highlight-on-target) !important\n\n// When a footnote reference is selected\n.footnote > dt:target + dd,\n.footnote-reference:target\n background-color: var(--color-highlight-on-target)\n",".guilabel\n background-color: var(--color-guilabel-background)\n border: 1px solid var(--color-guilabel-border)\n color: var(--color-guilabel-text)\n\n padding: 0 0.3em\n border-radius: 0.5em\n font-size: 0.9em\n","// This file contains the styles used for stylizing the footer that's shown\n// below the content.\n\nfooter\n font-size: var(--font-size--small)\n display: flex\n flex-direction: column\n\n margin-top: 2rem\n\n// Bottom of page information\n.bottom-of-page\n display: flex\n align-items: center\n justify-content: space-between\n\n margin-top: 1rem\n padding-top: 1rem\n padding-bottom: 1rem\n\n color: var(--color-foreground-secondary)\n border-top: 1px solid var(--color-background-border)\n\n line-height: 1.5\n\n @media (max-width: $content-width)\n text-align: center\n flex-direction: column-reverse\n gap: 0.25rem\n\n .left-details\n font-size: var(--font-size--small)\n\n .right-details\n display: flex\n flex-direction: column\n gap: 0.25rem\n text-align: right\n\n .icons\n display: flex\n justify-content: flex-end\n gap: 0.25rem\n font-size: 1rem\n\n a\n text-decoration: none\n\n svg,\n img\n font-size: 1.125rem\n height: 1em\n width: 1em\n\n// Next/Prev page information\n.related-pages\n a\n display: flex\n align-items: center\n\n text-decoration: none\n &:hover .page-info .title\n text-decoration: underline\n color: var(--color-link)\n text-decoration-color: var(--color-link-underline)\n\n svg.furo-related-icon,\n svg.furo-related-icon > use\n flex-shrink: 0\n\n color: var(--color-foreground-border)\n\n width: 0.75rem\n height: 0.75rem\n margin: 0 0.5rem\n\n &.next-page\n max-width: 50%\n\n float: right\n clear: right\n text-align: right\n\n &.prev-page\n max-width: 50%\n\n float: left\n clear: left\n\n svg\n transform: rotate(180deg)\n\n.page-info\n display: flex\n flex-direction: column\n overflow-wrap: anywhere\n\n .next-page &\n align-items: flex-end\n\n .context\n display: flex\n align-items: center\n\n padding-bottom: 0.1rem\n\n color: var(--color-foreground-muted)\n font-size: var(--font-size--small)\n text-decoration: none\n","// This file contains the styles for the contents of the left sidebar, which\n// contains the navigation tree, logo, search etc.\n\n////////////////////////////////////////////////////////////////////////////////\n// Brand on top of the scrollable tree.\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-brand\n display: flex\n flex-direction: column\n flex-shrink: 0\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n text-decoration: none\n\n.sidebar-brand-text\n color: var(--color-sidebar-brand-text)\n overflow-wrap: break-word\n margin: var(--sidebar-item-spacing-vertical) 0\n font-size: 1.5rem\n\n.sidebar-logo-container\n margin: var(--sidebar-item-spacing-vertical) 0\n\n.sidebar-logo\n margin: 0 auto\n display: block\n max-width: 100%\n\n////////////////////////////////////////////////////////////////////////////////\n// Search\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-search-container\n display: flex\n align-items: center\n margin-top: var(--sidebar-search-space-above)\n\n position: relative\n\n background: var(--color-sidebar-search-background)\n &:hover,\n &:focus-within\n background: var(--color-sidebar-search-background--focus)\n\n &::before\n content: \"\"\n position: absolute\n left: var(--sidebar-item-spacing-horizontal)\n width: var(--sidebar-search-icon-size)\n height: var(--sidebar-search-icon-size)\n\n background-color: var(--color-sidebar-search-icon)\n mask-image: var(--icon-search)\n\n.sidebar-search\n box-sizing: border-box\n\n border: none\n border-top: 1px solid var(--color-sidebar-search-border)\n border-bottom: 1px solid var(--color-sidebar-search-border)\n\n padding-top: var(--sidebar-search-input-spacing-vertical)\n padding-bottom: var(--sidebar-search-input-spacing-vertical)\n padding-right: var(--sidebar-search-input-spacing-horizontal)\n padding-left: calc(var(--sidebar-item-spacing-horizontal) + var(--sidebar-search-input-spacing-horizontal) + var(--sidebar-search-icon-size))\n\n width: 100%\n\n color: var(--color-sidebar-search-foreground)\n background: transparent\n z-index: 10\n\n &:focus\n outline: none\n\n &::placeholder\n font-size: var(--sidebar-search-input-font-size)\n\n//\n// Hide Search Matches link\n//\n#searchbox .highlight-link\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal) 0\n margin: 0\n text-align: center\n\n a\n color: var(--color-sidebar-search-icon)\n font-size: var(--font-size--small--2)\n\n////////////////////////////////////////////////////////////////////////////////\n// Structure/Skeleton of the navigation tree (left)\n////////////////////////////////////////////////////////////////////////////////\n.sidebar-tree\n font-size: var(--sidebar-item-font-size)\n margin-top: var(--sidebar-tree-space-above)\n margin-bottom: var(--sidebar-item-spacing-vertical)\n\n ul\n padding: 0\n margin-top: 0\n margin-bottom: 0\n\n display: flex\n flex-direction: column\n\n list-style: none\n\n li\n position: relative\n margin: 0\n\n > ul\n margin-left: var(--sidebar-item-spacing-horizontal)\n\n .icon\n color: var(--color-sidebar-link-text)\n\n .reference\n box-sizing: border-box\n color: var(--color-sidebar-link-text)\n\n // Fill the parent.\n display: inline-block\n line-height: var(--sidebar-item-line-height)\n text-decoration: none\n\n // Don't allow long words to cause wrapping.\n overflow-wrap: anywhere\n\n height: 100%\n width: 100%\n\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n &:hover\n color: var(--color-sidebar-link-text)\n background: var(--color-sidebar-item-background--hover)\n\n // Add a nice little \"external-link\" arrow here.\n &.external::after\n content: url('data:image/svg+xml,')\n margin: 0 0.25rem\n vertical-align: middle\n color: var(--color-sidebar-link-text)\n\n // Make the current page reference bold.\n .current-page > .reference\n font-weight: bold\n\n label\n position: absolute\n top: 0\n right: 0\n height: var(--sidebar-item-height)\n width: var(--sidebar-expander-width)\n\n cursor: pointer\n user-select: none\n\n display: flex\n justify-content: center\n align-items: center\n\n .caption, :not(.caption) > .caption-text\n font-size: var(--sidebar-caption-font-size)\n color: var(--color-sidebar-caption-text)\n\n font-weight: bold\n text-transform: uppercase\n\n margin: var(--sidebar-caption-space-above) 0 0 0\n padding: var(--sidebar-item-spacing-vertical) var(--sidebar-item-spacing-horizontal)\n\n // If it has children, add a bit more padding to wrap the content to avoid\n // overlapping with the