From 3279cde0ca7c2225f90bf57f80f8b83a5365dd3a Mon Sep 17 00:00:00 2001 From: niksirbi Date: Tue, 14 Nov 2023 16:00:57 +0000 Subject: [PATCH] deploy: 1177dbd3013144b8d9054ddb5f56917267b9b6b0 --- .buildinfo | 2 +- .doctrees/_static/code-blocks-note.doctree | Bin 0 -> 4738 bytes .doctrees/_static/swc-wiki-warning.doctree | Bin 0 -> 3436 bytes .../data_analysis/HPC-module-SLEAP.doctree | Bin 0 -> 102304 bytes .doctrees/data_analysis/index.doctree | Bin 3820 -> 3860 bytes .doctrees/environment.pickle | Bin 284434 -> 502222 bytes .doctrees/open_science/Data-sharing.doctree | Bin 36673 -> 36748 bytes .doctrees/open_science/Licensing.doctree | Bin 25752 -> 26213 bytes .doctrees/programming/SLURM-arguments.doctree | Bin 0 -> 46511 bytes .doctrees/programming/SSH-SWC-cluster.doctree | Bin 63047 -> 63550 bytes .doctrees/programming/index.doctree | Bin 4452 -> 4487 bytes .../data_analysis/HPC-module-SLEAP.md.txt | 597 +++++++++ _sources/data_analysis/index.md.txt | 1 + _sources/open_science/Data-sharing.md.txt | 44 +- _sources/open_science/Licensing.md.txt | 3 +- _sources/programming/SLURM-arguments.md.txt | 147 +++ _sources/programming/SSH-SWC-cluster.md.txt | 17 +- _sources/programming/index.md.txt | 1 + _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/documentation_options.js | 2 +- _static/scripts/bootstrap.js | 2 +- _static/scripts/bootstrap.js.LICENSE.txt | 4 +- _static/scripts/bootstrap.js.map | 2 +- _static/scripts/pydata-sphinx-theme.js | 2 +- _static/scripts/pydata-sphinx-theme.js.map | 2 +- _static/styles/bootstrap.css | 8 +- _static/styles/bootstrap.css.map | 1 + _static/styles/pydata-sphinx-theme.css | 3 +- _static/styles/pydata-sphinx-theme.css.map | 1 + _static/webpack-macros.html | 18 +- data_analysis/HPC-module-SLEAP.html | 1148 +++++++++++++++++ data_analysis/index.html | 52 +- genindex.html | 30 +- index.html | 30 +- objects.inv | Bin 1929 -> 2749 bytes open_science/Data-sharing.html | 34 +- open_science/Licensing.html | 34 +- open_science/index.html | 30 +- output.json | 70 + output.txt | 6 + programming/Cookiecutter-cruft.html | 31 +- programming/Mount-ceph-ubuntu.html | 31 +- programming/SLURM-arguments.html | 723 +++++++++++ programming/SSH-SWC-cluster.html | 39 +- programming/SSH-vscode.html | 31 +- programming/Troubleshooting.html | 31 +- programming/index.html | 44 +- search.html | 30 +- searchindex.js | 2 +- 54 files changed, 3443 insertions(+), 241 deletions(-) create mode 100644 .doctrees/_static/code-blocks-note.doctree create mode 100644 .doctrees/_static/swc-wiki-warning.doctree create mode 100644 .doctrees/data_analysis/HPC-module-SLEAP.doctree create mode 100644 .doctrees/programming/SLURM-arguments.doctree create mode 100644 _sources/data_analysis/HPC-module-SLEAP.md.txt create mode 100644 _sources/programming/SLURM-arguments.md.txt 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/styles/bootstrap.css.map create mode 100644 _static/styles/pydata-sphinx-theme.css.map create mode 100644 data_analysis/HPC-module-SLEAP.html create mode 100644 output.json create mode 100644 output.txt create mode 100644 programming/SLURM-arguments.html diff --git a/.buildinfo b/.buildinfo index f889448..61dfd87 100644 --- a/.buildinfo +++ b/.buildinfo @@ -1,4 +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: 1b1501f97a74dce1b0ae5f6f0c31f428 +config: 878c152044dfb5049531fd6e897ecbff tags: 645f666f9bcd5a90fca523b33c5a78b7 diff --git a/.doctrees/_static/code-blocks-note.doctree b/.doctrees/_static/code-blocks-note.doctree new file mode 100644 index 0000000000000000000000000000000000000000..6cada0abfc00c786fc11cd1c19d8c782c26c6293 GIT binary patch literal 4738 zcmb_g-EJed6}Hza+mbDL?fpsGthd@^(|XaB6(A|l?!~r6Q6Px}qevD-+ccPPW+;&s zXE-4_wsjGpy$BEkyvr2mBlIcy7`^X9^u8a5n$bvWIYE#B%5n}5dH%lhL;tPykBft~ z@;|$$Gse@)V-m-yjHxc{b}XYjp{XgpDW3kl__8>%ZAC7$%vD4Sy9SPkaSEm`z*=mRZGBc8v9{e*d8l~Q*t4&HkQ%BoMGa5K{RnFGLm{Jy zF5DrUx&4w}I(2T~{HpM(Ze|3EnS$-xc2HZwHtgoifKz*0K)K>H4~gv%V-yc_1H+x6 z8$8y|sI5p4twF@Pm6F7-w&OgTe}p8OC^~XHx!p2k?6wNF$KGJO?9l#x$Yer?Do^2w z;e}L_;rsI9rJVgAs_CIuX&7ij43CD+@`1N}kV-?3lel1yPS)}eK4`-*GFBvGP1lV+ zVN?kCEJ;Wj>;47DS4jJs$&0kl)2283f=_7QFs?gC7u+x`Y5(&lpZ7H%JKmT_Py-Qg zbY0$?DVb#E>GLuWN9=+9#rKj|%%TI=4B11r!46N^BLn~!u6J(OZ0Na?t8KRg2YiTV z`eprz#|{KMX&n7+Q#xTkLCo1>K?A~=STdB`d1}!T4!2b9K z|IGDWIQ8vNt@L$q{Y&kSAHg5+JtA?mh|Q;!mu}#w0s7CI0LnN!W0NZ;Y%7}rfCWnz z(bjzhZGU=+Vn#1B8W|e*Wp1+E=)N5FLkVp8YKF==N8+`G)BzD^J0zXH0)+DxAPEQW7Q}YTbB)a-+re%)9{3CP{D;Ay;wjYbhBBTuPPlaM z%*x_A?A&kx#uT!$HPkZ;duHz$MN%!$pk*4M!i`a#{mjxb(xCaBtl3V*1G6zTIC<-~ z7v;)LL_t0O>{b*%2ia{+jqCfE{r2l&Zlo~9(KLo5|42lR0jQn^H+>crr?%ytd1~8Z z_*xMo6{zi)V4gB0$?&n`#RiZy!DnaonJa;>u8~pT<|wxd@h#}7riDEiNom{!)Yv>( zw_S}aPV*$VL_PSksQ0|T8@IH|TMB!)w6k=@S#N!9 z&G!7ga~-PF4;MF<4%<7<1|Uu|xJZ;ULAUDv@OX^Ye+y3ldsop&syK)#5-x@q4zQfs zO=Q#vX2K&p24d-mUlwfB_DF7IFelkt93bn)d6ES+5aHO8P`34y2zTLLNhu-j!apZv zn&z<#FuQ>34r;yBG-#eIQ4*QpoNMkOx`z^?Nhl}`nQ6IIB?yvj7shC$M44^4v^!%9 zMqK!(zyr5}5KKsAM$**X79-?4cq<`P{u2=0cUcDHq+A6A z;L)BMMN8K^%KZADR@Wn4i39C~s$)*gsFZ<1Fk~hX5Y{#%L>|S46(`&F5U5OoIzej# z0zWri**kiQ_upkukA*0*LOSs8>VzQGzQ~c;8m_uqe*4b=4?Z$;?qS66)UAkujDoPCI6u1CR={kcX7Ps=y**$KAmiEsU#N-|cp;J>aCe9e6; zMCbNk!E*oTzSc`;A3)r-s(y-%+=XLQ9mn4uP=(;yFY$hH#M!#-)^12}JM1xbyG?wT z{N0GVM>-;gJ3Pe|vWm|~wn_1Ph&S>f38ko0rewXhM69{n3pchaspX-Ah5ONylyOb) z{_irhaB!{h%0T+A4B literal 0 HcmV?d00001 diff --git a/.doctrees/_static/swc-wiki-warning.doctree b/.doctrees/_static/swc-wiki-warning.doctree new file mode 100644 index 0000000000000000000000000000000000000000..bcd90eae720733d307e011bc80ceb067e8afc5fb GIT binary patch literal 3436 zcmdT`%WfP+6pihS?HSwS*dYXoJZ1q=BI20{0g4b=Atb<(7X-lqMXj3dnyJ!MS2gvB z?L`DEkcd>f6yLx<@c0Ax2tI;6=XOtz9~dOqF;b7JZrw-Kz2`o@?tIU-F4e!d?J6Pl z(U28|HU)Pnt`{Z`CD%T^NcX-;&(hu4wd~NDU~``0C2-_Is={)eo}}0(b}yA1&gIt* znblHH7viE5e|T(4K2TE6+~81pSRCNb4O&x!%1G@8-hj+|Up)T&{Q>seYNo(HlTYpn z?<@E2XhgeV$kmYL!!R2a(p8Ebj~;(Cg3ucuX>Xb4{@(rGp^&*4z=qN4c);?UJ157A z4<^=>Czs#@G6s=DV`sx8)}AEMjope_Hnpr0|JzsG#WOB{%8w|F@&3Q@fBH5xVPAz8 z2nS*}cC$8ANvy=xIT#M&WyF-HgD@7?<5I7c6gR}KxG7e|tpjnJ4&hPDCmh-Up%zxa z#m-+M-9+H}MJMxXLHV82%316&@2wmM5BL&XS7hM`nrpdY&Vh(^N3*h7trwv>*^F5} z!_{h@RV;#)DGvV~+ER#Xo=r(<60eEd`^(~1{9q)2`H>A;b2}n*jXpGopPKnU-04P* z8%LS*%*%Y_4)Z<2_uf2%hGmh+m5q1r|E+gVxt`b^1>^1ihW`^Ep9vrrLpWAEKyti^ z?=5`q;CuKa1@WG^(mYu_g7wWXX8*|C1Jg*YfZJ+d!9Fiv2uT!g01h?Pg19&>Pns_Z}q+)o*7}&QK>%f^?DM z>Ss&^fTsm+Ts6U0!KZ`R@zN_KK^6Uv?&;{=vi4|v(cE%sQO{sn{R_v*ll@} zXN1AJHUg%&r#((_cVdj!#`9B$`%7`l@!acBW=9ia%LGc_0s2*zo03YlgUVMM3Rk?Q zWK?gnHWOfRE-+7xgScsVWvtH>f6C#+<=7KUEw;!}ek9>LKs30PsS`T|ABQQ-_2*y( zhvlpUrHdfsoF0|Fi+!o#sSJs43Tg_m8~kMN;hvLN-#B}iachmu1k;7$7JjFz=03&k z#^0y3bZRXr-aL15PKEd?_8X-q7idLqoIN-v8L!X-05>P#AB6{{xTTn$1~%nzcY*yf zI$*qNd2Vcx6}$piU`7Hd2XQqwdV)8?9kKvi`9vNiu^Rg| zYE5W+ASv9gDK)++_9vvu@lcrTs3bgH;YXEmJUcB}LnQavQ|V-b&+QC-lc5>nA@f_V zwb_A8+r(oW@}W*ODBYT~WfQ5I8u~J=V8n4-rz6*-tw6jtFe)HU%@+9Fp%epb^b{ym zvXnl3eChW;IwUA$l*!rL zxi@ox=_AMZ)1({xTsslcvrxeVja+rznU{g*z>mqLo&W`HUD%~c;llVFpDYQ!%CIIG zseR89P*aY1feb#z6$IxVMy}=Hnq|CXQe~J9soK`p-XYCYgB@3srm8)UD_lRNF(9rt z)dcAaFiKrWq=(Nuvr~@hghsrBO95OSGb3~q)Ox9BZ=*vNxe40u(aO;jcKtl7)RLqY zg%}gW@|zFZk%5*?|3ZuT#a+;c{%VDt?qffRTjCMkuyb;kQtEoF5I;AgFf1-D3}Usg z_uGZ`F3@z5#SnMTJhd55E_Tb07hdnzK%Sqpf{{iUnu4BT3L@fs-KDiZt`Nv)Nj$*m z)@dl${9C!CaRkAEj)p=ttL1Bgc$(7iA+&&gIW}sM9X0Dq=ZFjL?ir2U)@m)ZdqzKc zkM-2-uASF4KSAS1MXk|8ePbgxN;M!wM_+rNPzCx6y!qSo32Fo8T2vX#gAUoy7+e(A rGvtj0xd!xx)VT@;CD4?x+$*T|&&wpuG_hA6J2XobFiSj3VLbd3Qaeb} literal 0 HcmV?d00001 diff --git a/.doctrees/data_analysis/HPC-module-SLEAP.doctree b/.doctrees/data_analysis/HPC-module-SLEAP.doctree new file mode 100644 index 0000000000000000000000000000000000000000..195a3024e303898cecfea83a3c098e0b1716c896 GIT binary patch literal 102304 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 E2lJ36@&Et; literal 0 HcmV?d00001 diff --git a/.doctrees/data_analysis/index.doctree b/.doctrees/data_analysis/index.doctree index 9a6380c7bd6873e65749fc8b725067d0cd72ab49..5fe5fb61b9f561bbb02bd85de21d92cc1906ca78 100644 GIT binary patch delta 237 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 literal 284434 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 diff --git a/.doctrees/open_science/Data-sharing.doctree b/.doctrees/open_science/Data-sharing.doctree index 53da9c7fbe8a971c1aaf1da10120cd1421b197a2..d4f4883f1b238cbaa768dfd0834b3d7feade7311 100644 GIT binary patch delta 5552 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 literal 25752 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 diff --git a/.doctrees/programming/SLURM-arguments.doctree b/.doctrees/programming/SLURM-arguments.doctree new file mode 100644 index 0000000000000000000000000000000000000000..036738b09a3f94234062c57c8ac09a978a7c14b9 GIT binary patch literal 46511 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 YrZ#v`E%7E4W+sfUs=eIpbSks|2g?(xJOBUy literal 0 HcmV?d00001 diff --git a/.doctrees/programming/SSH-SWC-cluster.doctree b/.doctrees/programming/SSH-SWC-cluster.doctree index 1aec041fcb1c9125341e7ed5eb012d4b88958570..39831b40c33f6d5f6e8877fe04d40944d66942f0 100644 GIT binary patch literal 63550 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 l>1G~*Bu2?~-i#Sbd$` both times when prompted): +```{code-block} console +$ ssh @ssh.swc.ucl.ac.uk +$ ssh hpc-gw1 +``` +To learn more about accessing the HPC via SSH, see the [relevant how-to guide](ssh-cluster-target). + +### Access to the SLEAP module +Once you are on the HPC gateway node, SLEAP should be listed among the available modules when you run `module avail`: + +```{code-block} console +$ module avail +... +SLEAP/2023-03-13 +SLEAP/2023-08-01 +... +``` +- `SLEAP/2023-03-13` corresponds to `sleap v.1.2.9` +- `SLEAP/2023-08-01` corresponds to `sleap v.1.3.1` + +We recommend always using the latest version, which is the one loaded by default +when you run `module load SLEAP`. If you want to load a specific version, +you can do so by typing the full module name, +including the date e.g. `module load SLEAP/2023-03-13`. + +If a module has been successfully loaded, it will be listed when you run `module list`, +along with other modules it may depend on: + +```{code-block} console +$ module list +Currently Loaded Modulefiles: + 1) cuda/11.8 2) SLEAP/2023-08-01 +``` + +If you have troubles with loading the SLEAP module, +see this guide's [Troubleshooting section](#problems-with-the-sleap-module). + + +### Install SLEAP on your local PC/laptop +While you can delegate the GPU-intensive work to the HPC cluster, +you will need to use the SLEAP GUI for some steps, such as labelling frames. +Thus, you also need to install SLEAP on your local PC/laptop. + +We recommend following the official [SLEAP installation guide](https://sleap.ai/installation.html). If you already have `conda` installed, you may skip the `mamba` installation steps and opt for installing the `libmamba-solver` for `conda`: + +```{code-block} console +$ conda install -n base conda-libmamba-solver +$ conda config --set solver libmamba +``` +This will get you the much faster dependency resolution that `mamba` provides, without having to install `mamba` itself. +From `conda` version 23.10 onwards (released in November 2023), `libmamba-solver` [is anyway the default](https://conda.org/blog/2023-11-06-conda-23-10-0-release/). + +After that, you can follow the [rest of the SLEAP installation guide](https://sleap.ai/installation.html#conda-package), substituting `conda` for `mamba` in the relevant commands. + +::::{tab-set} + +:::{tab-item} Windows and Linux +```{code-block} console +$ conda create -y -n sleap -c conda-forge -c nvidia -c sleap -c anaconda sleap=1.3.1 +``` +::: + +:::{tab-item} MacOS X and Apple Silicon +```{code-block} console +$ conda create -y -n sleap -c conda-forge -c anaconda -c sleap sleap=1.3.1 +``` +::: + +:::: + +You may exchange `sleap=1.3.1` for other versions. To be on the safe side, ensure that your local installation version matches (or is at least close to) the one installed in the cluster module. + +### Mount the SWC filesystem on your local PC/laptop +The rest of this guide assumes that you have mounted the SWC filesystem on your local PC/laptop. +If you have not done so, please follow the relevant instructions on the +[SWC internal wiki](https://wiki.ucl.ac.uk/display/SSC/SWC+Storage+Platform+Overview). + +We will also assume that the data you are working with are stored in a `ceph` or `winstor` +directory to which you have access to. In the rest of this guide, we will use the path +`/ceph/scratch/neuroinformatics-dropoff/SLEAP_HPC_test_data` which contains a SLEAP project +for test purposes. You should replace this with the path to your own data. + +:::{dropdown} Data storage location matters +:color: warning +:icon: alert-fill + +The cluster has fast access to data stored on the `ceph` and `winstor` filesystems. +If your data is stored elsewhere, make sure to transfer it to `ceph` or `winstor` +before running the job. You can use tools such as [`rsync`](https://linux.die.net/man/1/rsync) +to copy data from your local machine to `ceph` via an ssh connection. For example: + +```{code-block} console +$ rsync -avz @ssh.swc.ucl.ac.uk:/ceph/scratch/neuroinformatics-dropoff/SLEAP_HPC_test_data +``` +::: + +## Model training +This will consist of two parts - [preparing a training job](#prepare-the-training-job) +(on your local SLEAP installation) and [running a training job](#run-the-training-job) +(on the HPC cluster's SLEAP module). Some evaluation metrics for the trained models +can be [viewed via the SLEAP GUI](#evaluate-the-trained-models) on your local SLEAP installation. + +### Prepare the training job +Follow the SLEAP instructions for [Creating a Project](https://sleap.ai/tutorials/new-project.html) +and [Initial Labelling](https://sleap.ai/tutorials/initial-labeling.html). +Ensure that the project file (e.g. `labels.v001.slp`) is saved in the mounted SWC filesystem +(as opposed to your local filesystem). + +Next, follow the instructions in [Remote Training](https://sleap.ai/guides/remote.html#remote-training), +i.e. *Predict* -> *Run Training…* -> *Export Training Job Package…*. +- For selecting the right configuration parameters, see [Configuring Models](https://sleap.ai/guides/choosing-models.html#) and [Troubleshooting Workflows](https://sleap.ai/guides/troubleshooting-workflows.html) +- Set the *Predict On* parameter to *nothing*. Remote training and inference (prediction) are easiest to run separately on the HPC Cluster. Also unselect *Visualize Predictions During Training* in training settings, if it's enabled by default. +- If you are working with camera view from above or below (as opposed to a side view), set the *Rotation Min Angle* and *Rotation Max Angle* to -180 and 180 respectively in the *Augmentation* section. +- Make sure to save the exported training job package (e.g. `labels.v001.slp.training_job.zip`) in the mounted SWC filesystem, for example, in the same directory as the project file. +- Unzip the training job package. This will create a folder with the same name (minus the `.zip` extension). This folder contains everything needed to run the training job on the HPC cluster. + +### Run the training job +Login to the HPC cluster as described above. +```{code-block} console +$ ssh @ssh.swc.ucl.ac.uk +$ ssh hpc-gw1 +``` +Navigate to the training job folder (replace with your own path) and list its contents: +```{code-block} console +:emphasize-lines: 12 +$ cd /ceph/scratch/neuroinformatics-dropoff/SLEAP_HPC_test_data +$ cd labels.v001.slp.training_job +$ ls -1 +centered_instance.json +centroid.json +inference-script.sh +jobs.yaml +labels.v001.pkg.slp +labels.v001.slp.predictions.slp +train_slurm.sh +swc-hpc-pose-estimation +train-script.sh +``` +There should be a `train-script.sh` file created by SLEAP, which already contains the +commands to run the training. You can see the contents of the file by running `cat train-script.sh`: +```{code-block} bash +:caption: labels.v001.slp.training_job/train-script.sh +:name: train-script-sh +:linenos: +#!/bin/bash +sleap-train centroid.json labels.v001.pkg.slp +sleap-train centered_instance.json labels.v001.pkg.slp +``` +The precise commands will depend on the model configuration you chose in SLEAP. +Here we see two separate training calls, one for the 'centroid' and another for +the 'centered_instance' model. That's because in this example we have chosen +the ['Top-Down'](https://sleap.ai/tutorials/initial-training.html#training-options) +configuration, which consists of two neural networks - the first for isolating +the animal instances (by finding their centroids) and the second for predicting +all the body parts per instance. + +![Top-Down model configuration](https://sleap.ai/_images/topdown_approach.jpg) + +:::{dropdown} More on 'Top-Down' vs 'Bottom-Up' models +:color: info +:icon: info + +Although the 'Top-Down' configuration was designed with multiple animals in mind, +it can also be used for single-animal videos. It makes sense to use it for videos +where the animal occupies a relatively small portion of the frame - see +[Troubleshooting Workflows](https://sleap.ai/guides/troubleshooting-workflows.html) for more info. +::: + +Next you need to create a SLURM batch script, which will schedule the training job +on the HPC cluster. Create a new file called `train_slurm.sh` +(you can do this in the terminal with `nano`/`vim` or in a text editor of +your choice on your local PC/laptop). Here we create the script in the same folder +as the training job, but you can save it anywhere you want, or even keep track of it with `git`. + +```{code-block} console +$ nano train_slurm.sh +``` + +An example is provided below, followed by explanations. +```{code-block} bash +:caption: train_slurm.sh +:name: train-slurm-sh +:linenos: +#!/bin/bash + +#SBATCH -J slp_train # job name +#SBATCH -p gpu # partition (queue) +#SBATCH -N 1 # number of nodes +#SBATCH --mem 16G # memory pool for all cores +#SBATCH -n 4 # number of cores +#SBATCH -t 0-06:00 # time (D-HH:MM) +#SBATCH --gres gpu:1 # request 1 GPU (of any kind) +#SBATCH -o slurm.%N.%j.out # STDOUT +#SBATCH -e slurm.%N.%j.err # STDERR +#SBATCH --mail-type=ALL +#SBATCH --mail-user=user@domain.com + +# Load the SLEAP module +module load SLEAP + +# Define directories for SLEAP project and exported training job +SLP_DIR=/ceph/scratch/neuroinformatics-dropoff/SLEAP_HPC_test_data +SLP_JOB_NAME=labels.v001.slp.training_job +SLP_JOB_DIR=$SLP_DIR/$SLP_JOB_NAME + +# Go to the job directory +cd $SLP_JOB_DIR + +# Run the training script generated by SLEAP +./train-script.sh +``` + +In `nano`, you can save the file by pressing `Ctrl+O` and exit by pressing `Ctrl+X`. + +:::{dropdown} Explanation of the batch script +:color: info +:icon: info +- The `#SBATCH` lines are SLURM directives. They specify the resources needed +for the job, such as the number of nodes, CPUs, memory, etc. +A primer on the most useful SLURM arguments is provided in this [how-to guide](slurm-arguments-target). +For more information see the [SLURM documentation](https://slurm.schedmd.com/sbatch.html). + +- The `#` lines are comments. They are not executed by SLURM, but they are useful +for explaining the script to your future self and others. + +- The `module load SLEAP` line loads the latest SLEAP module and any other modules +it may depend on. + +- The `cd` line changes the working directory to the training job folder. +This is necessary because the `train-script.sh` file contains relative paths +to the model configuration and the project file. + +- The `./train-script.sh` line runs the training job (executes the contained commands). +::: + +:::{warning} +Before submitting the job, ensure that you have permissions to execute +both the batch script and the training script generated by SLEAP. +You can make these files executable by running in the terminal: + +```{code-block} console +$ chmod +x train-script.sh +$ chmod +x train_slurm.sh +``` + +If the scripts are not in your working directory, you will need to specify their full paths: + +```{code-block} console +$ chmod +x /path/to/train-script.sh +$ chmod +x /path/to/train_slurm.sh +``` +::: + +Now you can submit the batch script via running the following command +(in the same directory as the script): +```{code-block} console +$ sbatch train_slurm.sh +Submitted batch job 3445652 +``` + +You may monitor the progress of the job in various ways: + +::::{tab-set} + +:::{tab-item} squeue + +View the status of the queued/running jobs with [`squeue`](https://slurm.schedmd.com/squeue.html): + +```{code-block} console +$ squeue --me +JOBID PARTITION NAME USER ST TIME NODES NODELIST(REASON) +3445652 gpu slp_train sirmpila R 23:11 1 gpu-sr670-20 +``` +::: + +:::{tab-item} sacct + +View status of running/completed jobs with [`sacct`](https://slurm.schedmd.com/sacct.html): + +```{code-block} console +$ sacct +JobID JobName Partition Account AllocCPUS State ExitCode +------------ ---------- ---------- ---------- ---------- ---------- -------- +3445652 slp_train gpu swc-ac 2 COMPLETED 0:0 +3445652.bat+ batch swc-ac 2 COMPLETED 0:0 +``` +Run `sacct` with some more helpful arguments. +For example, you can view jobs from the last 24 hours, displaying the time +elapsed and the peak memory usage in KB (MaxRSS): + +```{code-block} console +$ sacct \ + --starttime $(date -d '24 hours ago' +%Y-%m-%dT%H:%M:%S) \ + --endtime $(date +%Y-%m-%dT%H:%M:%S) \ + --format=JobID,JobName,Partition,State,Start,Elapsed,MaxRSS + +JobID JobName Partition State Start Elapsed MaxRSS +------------ ---------- ---------- ---------- ------------------- ---------- ---------- +4043595 slp_infer gpu FAILED 2023-10-10T18:14:31 00:00:35 +4043595.bat+ batch FAILED 2023-10-10T18:14:31 00:00:35 271104K +4043603 slp_infer gpu FAILED 2023-10-10T18:27:32 00:01:37 +4043603.bat+ batch FAILED 2023-10-10T18:27:32 00:01:37 423476K +4043611 slp_infer gpu PENDING Unknown 00:00:00 +``` +::: + +:::{tab-item} view the logs + +View the contents of standard output and error +(the node name and job ID will differ in each case): +```{code-block} console +$ cat slurm.gpu-sr670-20.3445652.out +$ cat slurm.gpu-sr670-20.3445652.err +``` +::: + +:::: + +### Evaluate the trained models +Upon successful completion of the training job, a `models` folder will have +been created in the training job directory. It contains one subfolder per +training run (by default prefixed with the date and time of the run). + +```{code-block} console +$ cd /ceph/scratch/neuroinformatics-dropoff/SLEAP_HPC_test_data +$ cd labels.v001.slp.training_job +$ cd models +$ ls -1 +230509_141357.centered_instance +230509_141357.centroid +``` + +Each subfolder holds the trained model files (e.g. `best_model.h5`), +their configurations (`training_config.json`) and some evaluation metrics. + +```{code-block} console +$ cd 230509_141357.centered_instance +$ ls -1 +best_model.h5 +initial_config.json +labels_gt.train.slp +labels_gt.val.slp +labels_pr.train.slp +labels_pr.val.slp +metrics.train.npz +metrics.val.npz +training_config.json +training_log.csv +``` +The SLEAP GUI on your local machine can be used to quickly evaluate the trained models. + +- Select *Predict* -> *Evaluation Metrics for Trained Models...* +- Click on *Add Trained Models(s)* and select the subfolder(s) containing the model(s) you want to evaluate (e.g. `230509_141357.centered_instance`). +- You can view the basic metrics on the shown table or you can also view a more detailed report (including plots) by clicking *View Metrics*. + +## Model inference +By inference, we mean using a trained model to predict the labels on new frames/videos. +SLEAP provides the `sleap-track` command line utility for running inference +on a single video or a folder of videos. + +Below is an example SLURM batch script that contains a `sleap-track` call. +```{code-block} bash +:caption: infer_slurm.sh +:name: infer-slurm-sh +:linenos: +#!/bin/bash + +#SBATCH -J slp_infer # job name +#SBATCH -p gpu # partition +#SBATCH -N 1 # number of nodes +#SBATCH --mem 16G # memory pool for all cores +#SBATCH -n 4 # number of cores +#SBATCH -t 0-02:00 # time (D-HH:MM) +#SBATCH --gres gpu:1 # request 1 GPU (of any kind) +#SBATCH -o slurm.%N.%j.out # write STDOUT +#SBATCH -e slurm.%N.%j.err # write STDERR +#SBATCH --mail-type=ALL +#SBATCH --mail-user=user@domain.com + +# Load the SLEAP module +module load SLEAP + +# Define directories for SLEAP project and exported training job +SLP_DIR=/ceph/scratch/neuroinformatics-dropoff/SLEAP_HPC_test_data +VIDEO_DIR=$SLP_DIR/videos +SLP_JOB_NAME=labels.v001.slp.training_job +SLP_JOB_DIR=$SLP_DIR/$SLP_JOB_NAME + +# Go to the job directory +cd $SLP_JOB_DIR +# Make a directory to store the predictions +mkdir -p predictions + +# Run the inference command +sleap-track $VIDEO_DIR/videos/M708149_EPM_20200317_165049331-converted.mp4 \ + -m $SLP_JOB_DIR/models/231010_164307.centroid/training_config.json \ + -m $SLP_JOB_DIR/models/231010_164307.centered_instance/training_config.json \ + --gpu auto \ + --tracking.tracker simple \ + --tracking.post_connect_single_breaks 1 \ + -o predictions/labels.v001.slp.predictions.slp \ + --verbosity json \ + --no-empty-frames +``` +The script is very similar to the training script, with the following differences: +- The time limit `-t` is set lower, since inference is normally faster than training. This will however depend on the size of the video and the number of models used. +- The `./train-script.sh` line is replaced by the `sleap-track` command. +- The `\` character is used to split the long `sleap-track` command into multiple lines for readability. It is not necessary if the command is written on a single line. + +::: {dropdown} Explanation of the sleap-track arguments +:color: info +:icon: info + + Some important command line arguments are explained below. + You can view a full list of the available arguments by running `sleap-track --help`. +- The first argument is the path to the video file to be processed. +- The `-m` option is used to specify the path to the model configuration file(s) to be used for inference. In this example we use the two models that were trained above. +- The `--gpu` option is used to specify the GPU to be used for inference. The `auto` value will automatically select the GPU with the highest percentage of available memory (of the GPUs that are available on the machine/node) +- The options starting with `--tracking` specify parameters used for tracking the detected instances (animals) across frames. See SLEAP's guide on [tracking methods](https://sleap.ai/guides/proofreading.html#tracking-method-details) for more info. +- The `-o` option is used to specify the path to the output file containing the predictions. +- The above script will predict all the frames in the video. You may select specific frames via the `--frames` option. For example: `--frames 1-50` or `--frames 1,3,5,7,9`. +::: + +You can submit and monitor the inference job in the same way as the training job. +```{code-block} console +$ sbatch infer_slurm.sh +$ squeue --me +``` +Upon completion, a `labels.v001.slp.predictions.slp` file will have been created in the job directory. + +You can use the SLEAP GUI on your local machine to load and view the predictions: +*File* -> *Open Project...* -> select the `labels.v001.slp.predictions.slp` file. + +## The training-inference cycle +Now that you have some predictions, you can keep improving your models by repeating +the training-inference cycle. The basic steps are: +- Manually correct some of the predictions: see [Prediction-assisted labeling](https://sleap.ai/tutorials/assisted-labeling.html) +- Merge corrected labels into the initial training set: see [Merging guide](https://sleap.ai/guides/merging.html) +- Save the merged training set as `labels.v002.slp` +- Export a new training job `labels.v002.slp.training_job` (you may reuse the training configurations from `v001`) +- Repeat the training-inference cycle until satisfied + +## Troubleshooting + +### Problems with the SLEAP module + +In this section, we will describe how to test that the SLEAP module is loaded +correctly for you and that it can use the available GPUs. + +Login to the HPC cluster as described [above](#access-to-the-hpc-cluster). + +Start an interactive job on a GPU node. This step is necessary, because we need +to test the module's access to the GPU. +```{code-block} console +$ srun -p fast --gres=gpu:1 --pty bash -i +``` +:::{dropdown} Explain the above command +:color: info +:icon: info + +* `-p fast` requests a node from the 'fast' partition. This refers to the queue of nodes with a 3-hour time limit. They are meant for short jobs, such as testing. +* `--gres=gpu:1` requests 1 GPU of any kind +* `--pty` is short for 'pseudo-terminal'. +* The `-i` stands for 'interactive' + +Taken together, the above command will start an interactive bash terminal session +on a node of the 'fast' partition, equipped with 1 GPU. +::: + +First, let's verify that you are indeed on a node equipped with a functional +GPU, by typing `nvidia-smi`: +```{code-block} console +$ nvidia-smi +Wed Sep 27 10:34:35 2023 ++-----------------------------------------------------------------------------+ +| NVIDIA-SMI 525.125.06 Driver Version: 525.125.06 CUDA Version: 12.0 | +|-------------------------------+----------------------+----------------------+ +| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC | +| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. | +| | | MIG M. | +|===============================+======================+======================| +| 0 NVIDIA GeForce ... Off | 00000000:41:00.0 Off | N/A | +| 0% 42C P8 22W / 240W | 1MiB / 8192MiB | 0% Default | +| | | N/A | ++-------------------------------+----------------------+----------------------+ + ++-----------------------------------------------------------------------------+ +| Processes: | +| GPU GI CI PID Type Process name GPU Memory | +| ID ID Usage | +|=============================================================================| +| No running processes found | ++-----------------------------------------------------------------------------+ +``` +Your output should look similar to the above. You will be able to see the GPU +name, temperature, memory usage, etc. If you see an error message instead, +(even though you are on a GPU node) please contact the SWC Scientific Computing team. + +Next, load the SLEAP module. +```{code-block} console +$ module load SLEAP +Loading SLEAP/2023-08-01 + Loading requirement: cuda/11.8 +``` + +To verify that the module was loaded successfully: +```{code-block} console +$ module list +Currently Loaded Modulefiles: + 1) SLEAP/2023-08-01 +``` +You can essentially think of the module as a centrally installed conda environment. +When it is loaded, you should be using a particular Python executable. +You can verify this by running: + +```{code-block} console +$ which python +/ceph/apps/ubuntu-20/packages/SLEAP/2023-08-01/bin/python +``` + +Finally we will verify that the `sleap` python package can be imported and can +'see' the GPU. We will mostly just follow the +[relevant SLEAP instructions](https://sleap.ai/installation.html#testing-that-things-are-working). +First, start a Python interpreter: +```{code-block} console +$ python +``` +Next, run the following Python commands: + +::: {warning} +The `import sleap` command may take some time to run (more than a minute). +This is normal. Subsequent imports should be faster. +::: + +```{code-block} pycon +>>> import sleap + +>>> sleap.versions() +SLEAP: 1.3.1 +TensorFlow: 2.8.4 +Numpy: 1.21.6 +Python: 3.7.12 +OS: Linux-5.4.0-109-generic-x86_64-with-debian-bullseye-sid + +>>> sleap.system_summary() +GPUs: 1/1 available + Device: /physical_device:GPU:0 + Available: True + Initialized: False + Memory growth: None + +>>> import tensorflow as tf + +>>> print(tf.config.list_physical_devices('GPU')) +[PhysicalDevice(name='/physical_device:GPU:0', device_type='GPU')] + +>>> tf.constant("Hello world!") + +``` + +If all is as expected, you can exit the Python interpreter, and then exit the GPU node +```{code-block} pycon +>>> exit() +``` +```{code-block} console +$ exit() +``` +If you encounter troubles with using the SLEAP module, contact the +Niko Sirmpilatze of the SWC [Neuroinformatics Unit](https://neuroinformatics.dev/). + +To completely exit the HPC cluster, you will need to logout of the SSH session twice: +```bash +$ logout +$ logout +``` +See [Set up SSH for the SWC HPC cluster](../programming/SSH-SWC-cluster.md) +for more information. diff --git a/_sources/data_analysis/index.md.txt b/_sources/data_analysis/index.md.txt index 0e020c6..ce094e5 100644 --- a/_sources/data_analysis/index.md.txt +++ b/_sources/data_analysis/index.md.txt @@ -5,4 +5,5 @@ Guides related to the analysis of neuroscientific data, spanning a wide range of ```{toctree} :maxdepth: 1 +HPC-module-SLEAP ``` diff --git a/_sources/open_science/Data-sharing.md.txt b/_sources/open_science/Data-sharing.md.txt index b91faa5..e80039d 100644 --- a/_sources/open_science/Data-sharing.md.txt +++ b/_sources/open_science/Data-sharing.md.txt @@ -23,7 +23,7 @@ Currently, SWC does not have any specific code and data sharing requirements, bu ## Code -Original code can be hosted in a public GitHub/GitLab repository, hosted on an organisational account (i.e. not an individual account). This could be the [SWC organisation](https://github.com/SainsburyWellcomeCentre), or that of a particular team, lab or collaboration. To enable reuse, code should include an [appropriate license](https://howto.neuroinformatics.dev/guides/Licensing.html). +Original code can be hosted in a public GitHub/GitLab repository, hosted on an organisational account (i.e. not an individual account). This could be the [SWC organisation](https://github.com/SainsburyWellcomeCentre), or that of a particular team, lab or collaboration. To enable reuse, code should include an [appropriate license](licensing-target). To ensure a permanent archive of the code associated with a publication a [DOI](https://www.doi.org/) should be created (e.g. using [Zenodo](https://docs.github.com/en/repositories/archiving-a-github-repository/referencing-and-citing-content)). @@ -46,7 +46,7 @@ In some cases, there may be a modality or field-specific repository that would b In all cases, using a repository that can create a [DOI](https://www.doi.org/) will help increase citations. ### Structure -There is no single best way to structure your data, but it must be in a form that allows users to easily reuse it for their own purposes. This may be by adopting specific file formats (such as [NeuroData Without Borders](https://www.nwb.org/)). Alternatively the data could be organised within a standardised project folder structure. Many labs have their own system, but those starting from scratch may wish to use the [SWC-Blueprint data structure](https://swc-blueprint.neuroinformatics.dev/). +There is no single best way to structure your data, but it must be in a form that allows users to easily reuse it for their own purposes. This may be by adopting specific file formats (such as [NeuroData Without Borders](https://www.nwb.org/)). Alternatively the data could be organised within a standardised project folder structure. Many labs have their own system, but those starting from scratch may wish to use the [NeuroBlueprint data structure](https://neuroblueprint.neuroinformatics.dev/). **However the data is structured, all relevant metadata must be included with the raw data.** @@ -55,23 +55,23 @@ If you have any technical questions about sharing data or code, please contact a (repo-table)= ## Reference of potential repositories for neuroscience data -| Repository |URL |Domain | -|------------------------------------|---------------------------------------------------|-----------------------------------------------------------------------------------------------------| -| Globus | |Anything | -| figshare |https://rdr.ucl.ac.uk/The_Sainsbury_Wellcome_Centre|Anything | -| Zenodo |https://zenodo.org/ |Anything | -| Dryad |https://datadryad.org |Anything | -| GIN (German Neuroinformatics Node) |https://gin.g-node.org/ |Neuroscience | -| EBRAINS |https://ebrains.eu/service/share-data |Neuroscience | -| Open Source Brain |https://www.v2.opensourcebrain.org/ |Any neuroscience data (data must be hosted elsewhere) | -| Brain Image Library |http://www.brainimagelibrary.org/ |Large brain image datasets | -| Image data resource |https://idr.openmicroscopy.org/ |Reference image datasets | -| BioImage Archive |https://www.ebi.ac.uk/bioimage-archive/ |Biological images | -| DANDI |https://dandiarchive.org/ |Electrophysiology, optophysiology, behavioural time-series and images from immunostaining experiments| -| NeMO |https://nemoarchive.org/ |Omic data from the BRAIN Initiative (& others) | -| Openneuro |https://openneuro.org/ |BIDS-compliant MRI, PET, EEG etc | -| CRCNS |https://crcns.org/ |Computational neuroscience | -| BrainGlobe |https://gin.g-node.org/BrainGlobe/atlases |Brain Atlases | -| NeuroMorpho |https://neuromorpho.org/ |Neuronal morphologies | -| Cell Image Library |http://ccdb.ucsd.edu/home |Cell images | -| ModelDB |https://senselab.med.yale.edu/ModelDB/ |Computational neuroscience models | +| Repository | URL | Domain | +| ---------------------------------- | --------------------------------------------------- | ----------------------------------------------------------------------------------------------------- | +| Globus | | Anything | +| figshare | https://rdr.ucl.ac.uk/The_Sainsbury_Wellcome_Centre | Anything | +| Zenodo | https://zenodo.org/ | Anything | +| Dryad | https://datadryad.org | Anything | +| GIN (German Neuroinformatics Node) | https://gin.g-node.org/ | Neuroscience | +| EBRAINS | https://ebrains.eu/service/share-data | Neuroscience | +| Open Source Brain | https://www.v2.opensourcebrain.org/ | Any neuroscience data (data must be hosted elsewhere) | +| Brain Image Library | http://www.brainimagelibrary.org/ | Large brain image datasets | +| Image data resource | https://idr.openmicroscopy.org/ | Reference image datasets | +| BioImage Archive | https://www.ebi.ac.uk/bioimage-archive/ | Biological images | +| DANDI | https://dandiarchive.org/ | Electrophysiology, optophysiology, behavioural time-series and images from immunostaining experiments | +| NeMO | https://nemoarchive.org/ | Omic data from the BRAIN Initiative (& others) | +| Openneuro | https://openneuro.org/ | BIDS-compliant MRI, PET, EEG etc | +| CRCNS | https://crcns.org/ | Computational neuroscience | +| BrainGlobe | https://gin.g-node.org/BrainGlobe/atlases | Brain Atlases | +| NeuroMorpho | https://neuromorpho.org/ | Neuronal morphologies | +| Cell Image Library | http://ccdb.ucsd.edu/home | Cell images | +| ModelDB | https://senselab.med.yale.edu/ModelDB/ | Computational neuroscience models | diff --git a/_sources/open_science/Licensing.md.txt b/_sources/open_science/Licensing.md.txt index b6143a2..101e983 100644 --- a/_sources/open_science/Licensing.md.txt +++ b/_sources/open_science/Licensing.md.txt @@ -1,3 +1,4 @@ +(licensing-target)= # Software licensing ## Disclaimer @@ -50,4 +51,4 @@ If it is installed separately, and you simply call the library (e.g. using a Pyt Firstly, you should ensure that the license for your code is compatible with the included code (e.g. by using a [license compatibility checking tool](https://joinup.ec.europa.eu/collection/eupl/solution/joinup-licensing-assistant/jla-compatibility-checker)). You should also adhere to any terms of the third party license and it is good practice to always include a copy of this license with the third party code. ## Acknowledgements -This document was adapted from the excellent [Imperial OSS license document](https://www.imperial.ac.uk/enterprise/staff/industry-partnerships-and-commercialisation/commercialisation/intellectual-property-guidance/open-source-software-licences/). +This document was adapted from the excellent [Imperial OSS license document](https://www.imperial.ac.uk/research-and-innovation/support-for-staff/scholarly-communication/research-data-management/sharing-data/research-software/). diff --git a/_sources/programming/SLURM-arguments.md.txt b/_sources/programming/SLURM-arguments.md.txt new file mode 100644 index 0000000..88148d6 --- /dev/null +++ b/_sources/programming/SLURM-arguments.md.txt @@ -0,0 +1,147 @@ +(slurm-arguments-target)= +# SLURM arguments primer + +```{include} ../_static/swc-wiki-warning.md +``` + +## Abbreviations +| Acronym | Meaning | +| ------- | -------------------------------------------- | +| SWC | Sainsbury Wellcome Centre | +| HPC | High Performance Computing | +| SLURM | Simple Linux Utility for Resource Management | +| MPI | Message Passing Interface | + + +## Overview +SLURM is a job scheduler and resource manager used on the SWC HPC cluster. +It is responsible for allocating resources (e.g. CPU cores, GPUs, memory) to jobs submitted by users. +When submitting a job to SLURM, you can specify various arguments to request the resources you need. +These are called SLURM directives, and they are passed to SLURM via the `sbatch` or `srun` commands. + +These are often specified at the top of a SLURM job script, +e.g. the lines that start with `#SBATCH` in the following example: + +```{code-block} bash +#!/bin/bash + +#SBATCH -J my_job # job name +#SBATCH -p gpu # partition (queue) +#SBATCH -N 1 # number of nodes +#SBATCH --mem 16G # memory pool for all cores +#SBATCH -n 4 # number of cores +#SBATCH -t 0-06:00 # time (D-HH:MM) +#SBATCH --gres gpu:1 # request 1 GPU (of any kind) +#SBATCH -o slurm.%N.%j.out # STDOUT +#SBATCH -e slurm.%N.%j.err # STDERR +#SBATCH --mail-type=ALL +#SBATCH --mail-user=user@domain.com +#SBATCH --array=1-12%4 # job array index values + +# load modules +... + +# execute commands +... +``` +This guide provides only a brief overview of the most important SLURM arguments, +to demysify the above directives and help you get started with SLURM. +For a more detailed description see the [SLURM documentation](https://slurm.schedmd.com/sbatch.html). + +## Commonly used arguments + +### Partition (Queue) +- *Name:* `--partition` +- *Alias:* `-p` +- *Description:* Specifies the partition (or queue) to submit the job to. To see a list of all partitions/queues, the nodes they contain and their respective time limits, type `sinfo` when logged in to the HPC cluster. +- *Example values:* `gpu`, `cpu`, `fast`, `medium` + +### Job Name +- *Name:* `--job-name` +- *Alias:* `-J` +- *Description:* Specifies a name for the job, which will appear in various SLURM commands and logs, making it easier to identify the job (especially when you have multiple jobs queued up) +- *Example values:* `training_run_24` + +### Number of Nodes +- *Name:* `--nodes` +- *Alias:* `-N` +- *Description:* Defines the number of nodes required for the job. +- *Example values:* `1` + +:::{warning} +This should always be `1`, unless you really know what you're doing, +e.g. you are parallelising your code across multiple nodes with MPI. +::: + +### Number of Cores +- *Name:* `--ntasks` +- *Alias:* `-n` +- *Description:* Defines the number of cores (or tasks) required for the job. +- *Example values:* `4`, `8`, `16` + +### Memory Pool for All Cores +- *Name:* `--mem` +- *Description:* Specifies the total amount of memory (RAM) required for the job across all cores (per node) +- *Example values:* `8G`, `16G`, `32G` + +### Time Limit +- *Name:* `--time` +- *Alias:* `-t` +- *Description:* Sets the maximum time the job is allowed to run. The format is D-HH:MM, where D is days, HH is hours, and MM is minutes. +- *Example values:* `0-01:00` (1 hour), `0-04:00` (4 hours), `1-00:00` (1 day). + +:::{warning} +If the job exceeds the time limit, it will be terminated by SLURM. +On the other hand, avoid requesting way more time than what your job needs, +as this may delay its scheduling (depending on resource availability). +::: + +### Generic Resources (GPUs) +- *Name:* `--gres` +- *Description:* Requests generic resources, such as GPUs. +- *Example values:* `gpu:1`, `gpu:rtx2080:1`, `gpu:rtx5000:1`, `gpu:a100_2g.10gb:1` + +:::{warning} +No GPU will be allocated to you unless you specify it via the `--gres` argument (even if you are on the 'gpu' partition). +To request 1 GPU of any kind, use `--gres gpu:1`. To request a specific GPU type, you have to include its name, e.g. `--gres gpu:rtx2080:1`. +You can view the available GPU types on the [SWC internal wiki](https://wiki.ucl.ac.uk/display/SSC/CPU+and+GPU+Platform+architecture). +::: + +### Standard Output File +- *Name:* `--output` +- *Alias:* `-o` +- *Description:* Defines the file where the standard output (STDOUT) will be written. In the examples scripts, it's set to slurm.%N.%j.out, where %N is the node name and %j is the job ID. +- *Example values:* `slurm.%N.%j.out`, `slurm.MyAwesomeJob.out` + +:::{note} +This file contains the output of the commands executed by the job (i.e. the messages that normally gets printed on the terminal). +::: + +### Standard Error File +- *Name:* `--error` +- *Alias:* `-e` +- *Description:* Specifies the file where the standard error (STDERR) will be written. In the examples, it's set to slurm.%N.%j.err, where %N is the node name and %j is the job ID. +- *Example values:* `slurm.%N.%j.err`, `slurm.MyAwesomeJob.err` + +:::{note} +This file is very useful for debugging, as it contains all the error messages produced by the commands executed by the job. +::: + +### Email Notifications +- *Name:* `--mail-type` +- *Description:* Defines the conditions under which the user will be notified by email. +- *Example values:* `ALL`, `BEGIN`, `END`, `FAIL` + +### Email Address +- *Name:* `--mail-user` +- *Description:* Specifies the email address to which notifications will be sent. +- *Example values:* `user@domain.com` + +### Array jobs +- *Name:* `--array` +- *Description:* Job array index values (a list of integers in increasing order). The task index can be accessed via the `SLURM_ARRAY_TASK_ID` environment variable. +- *Example values:* `--array=1-10` (10 jobs), `--array=1-100%5` (100 jobs, but only 5 of them will be allowed to run in parallel at any given time). + +:::{warning} +If an array consists of many jobs, using the `%` syntax to limit the maximum number of parallel jobs is recommended to prevent overloading the cluster. +::: diff --git a/_sources/programming/SSH-SWC-cluster.md.txt b/_sources/programming/SSH-SWC-cluster.md.txt index 549445c..36e8241 100644 --- a/_sources/programming/SSH-SWC-cluster.md.txt +++ b/_sources/programming/SSH-SWC-cluster.md.txt @@ -1,3 +1,4 @@ +(ssh-cluster-target)= # Set up SSH for the SWC HPC cluster This guide explains how to connect to the SWC's HPC cluster via SSH. @@ -9,14 +10,14 @@ This guide explains how to connect to the SWC's HPC cluster via SSH. ``` ## Abbreviations -| Acronym | Meaning | -| --- | --- | -| SWC | Sainsbury Wellcome Centre | -| HPC | High Performance Computing | -| SLURM | Simple Linux Utility for Resource Management | -| SSH | Secure (Socket) Shell protocol | -| IDE | Integrated Development Environment | -| GUI | Graphical User Interface | +| Acronym | Meaning | +| ------- | -------------------------------------------- | +| SWC | Sainsbury Wellcome Centre | +| HPC | High Performance Computing | +| SLURM | Simple Linux Utility for Resource Management | +| SSH | Secure (Socket) Shell protocol | +| IDE | Integrated Development Environment | +| GUI | Graphical User Interface | ## Prerequisites - You have an SWC account and know your username and password. diff --git a/_sources/programming/index.md.txt b/_sources/programming/index.md.txt index 2088507..32fb11c 100644 --- a/_sources/programming/index.md.txt +++ b/_sources/programming/index.md.txt @@ -7,6 +7,7 @@ Small tips and tricks that do not warrant a long-form guide can be found in the ```{toctree} :maxdepth: 1 +SLURM-arguments SSH-SWC-cluster SSH-vscode Mount-ceph-ubuntu 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..39cbaa7 --- /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, .gp, .go'; + + 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/documentation_options.js b/_static/documentation_options.js index 1f706aa..d1f2291 100644 --- a/_static/documentation_options.js +++ b/_static/documentation_options.js @@ -7,7 +7,7 @@ const DOCUMENTATION_OPTIONS = { LINK_SUFFIX: '.html', HAS_SOURCE: true, SOURCELINK_SUFFIX: '.txt', - NAVIGATION_WITH_KEYS: true, + NAVIGATION_WITH_KEYS: false, SHOW_SEARCH_SUMMARY: true, ENABLE_SEARCH_SHORTCUTS: true, }; \ No newline at end of file diff --git a/_static/scripts/bootstrap.js b/_static/scripts/bootstrap.js index ef07e0b..bda8a60 100644 --- a/_static/scripts/bootstrap.js +++ b/_static/scripts/bootstrap.js @@ -1,3 +1,3 @@ /*! For license information please see bootstrap.js.LICENSE.txt */ -(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>w,afterRead:()=>b,afterWrite:()=>C,applyStyles:()=>$,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,beforeRead:()=>m,beforeWrite:()=>A,bottom:()=>n,clippingParents:()=>h,computeStyles:()=>et,createPopper:()=>Dt,createPopperBase:()=>Lt,createPopperLite:()=>$t,detectOverflow:()=>mt,end:()=>c,eventListeners:()=>nt,flip:()=>_t,hide:()=>yt,left:()=>o,main:()=>y,modifierPhases:()=>T,offset:()=>wt,placements:()=>g,popper:()=>u,popperGenerator:()=>kt,popperOffsets:()=>At,preventOverflow:()=>Et,read:()=>_,reference:()=>f,right:()=>s,start:()=>l,top:()=>i,variationPlacements:()=>p,viewport:()=>d,write:()=>E});var i="top",n="bottom",s="right",o="left",r="auto",a=[i,n,s,o],l="start",c="end",h="clippingParents",d="viewport",u="popper",f="reference",p=a.reduce((function(t,e){return t.concat([e+"-"+l,e+"-"+c])}),[]),g=[].concat(a,[r]).reduce((function(t,e){return t.concat([e,e+"-"+l,e+"-"+c])}),[]),m="beforeRead",_="read",b="afterRead",v="beforeMain",y="main",w="afterMain",A="beforeWrite",E="write",C="afterWrite",T=[m,_,b,v,y,w,A,E,C];function O(t){return t?(t.nodeName||"").toLowerCase():null}function x(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function k(t){return t instanceof x(t).Element||t instanceof Element}function L(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function D(t){return"undefined"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}const $={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];L(s)&&O(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});L(n)&&O(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function S(t){return t.split("-")[0]}var I=Math.max,N=Math.min,P=Math.round;function j(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function M(){return!/^((?!chrome|android).)*safari/i.test(j())}function H(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&L(t)&&(s=t.offsetWidth>0&&P(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&P(n.height)/t.offsetHeight||1);var r=(k(t)?x(t):window).visualViewport,a=!M()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function B(t){var e=H(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function W(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&D(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function F(t){return x(t).getComputedStyle(t)}function z(t){return["table","td","th"].indexOf(O(t))>=0}function q(t){return((k(t)?t.ownerDocument:t.document)||window.document).documentElement}function R(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(D(t)?t.host:null)||q(t)}function V(t){return L(t)&&"fixed"!==F(t).position?t.offsetParent:null}function Y(t){for(var e=x(t),i=V(t);i&&z(i)&&"static"===F(i).position;)i=V(i);return i&&("html"===O(i)||"body"===O(i)&&"static"===F(i).position)?e:i||function(t){var e=/firefox/i.test(j());if(/Trident/i.test(j())&&L(t)&&"fixed"===F(t).position)return null;var i=R(t);for(D(i)&&(i=i.host);L(i)&&["html","body"].indexOf(O(i))<0;){var n=F(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function K(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return I(t,N(e,i))}function X(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function U(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const G={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,r=t.state,l=t.name,c=t.options,h=r.elements.arrow,d=r.modifiersData.popperOffsets,u=S(r.placement),f=K(u),p=[o,s].indexOf(u)>=0?"height":"width";if(h&&d){var g=function(t,e){return X("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:U(t,a))}(c.padding,r),m=B(h),_="y"===f?i:o,b="y"===f?n:s,v=r.rects.reference[p]+r.rects.reference[f]-d[f]-r.rects.popper[p],y=d[f]-r.rects.reference[f],w=Y(h),A=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,E=v/2-y/2,C=g[_],T=A-m[p]-g[b],O=A/2-m[p]/2+E,x=Q(C,O,T),k=f;r.modifiersData[l]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&W(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(t){return t.split("-")[1]}var Z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tt(t){var e,r=t.popper,a=t.popperRect,l=t.placement,h=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,g=t.roundOffsets,m=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof g?g({x:b,y}):{x:b,y};b=w.x,y=w.y;var A=d.hasOwnProperty("x"),E=d.hasOwnProperty("y"),C=o,T=i,O=window;if(p){var k=Y(r),L="clientHeight",D="clientWidth";k===x(r)&&"static"!==F(k=q(r)).position&&"absolute"===u&&(L="scrollHeight",D="scrollWidth"),(l===i||(l===o||l===s)&&h===c)&&(T=n,y-=(m&&k===O&&O.visualViewport?O.visualViewport.height:k[L])-a.height,y*=f?1:-1),l!==o&&(l!==i&&l!==n||h!==c)||(C=s,b-=(m&&k===O&&O.visualViewport?O.visualViewport.width:k[D])-a.width,b*=f?1:-1)}var $,S=Object.assign({position:u},p&&Z),I=!0===g?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:P(i*s)/s||0,y:P(n*s)/s||0}}({x:b,y},x(r)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},S,(($={})[T]=E?"0":"",$[C]=A?"0":"",$.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",$)):Object.assign({},S,((e={})[T]=E?y+"px":"",e[C]=A?b+"px":"",e.transform="",e))}const et={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:S(e.placement),variation:J(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,tt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,tt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var it={passive:!0};const nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=x(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,it)})),a&&l.addEventListener("resize",i.update,it),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,it)})),a&&l.removeEventListener("resize",i.update,it)}},data:{}};var st={left:"right",right:"left",bottom:"top",top:"bottom"};function ot(t){return t.replace(/left|right|bottom|top/g,(function(t){return st[t]}))}var rt={start:"end",end:"start"};function at(t){return t.replace(/start|end/g,(function(t){return rt[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ct(t){return H(q(t)).left+lt(t).scrollLeft}function ht(t){var e=F(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:L(t)&&ht(t)?t:dt(R(t))}function ut(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=x(n),r=s?[o].concat(o.visualViewport||[],ht(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ut(R(r)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pt(t,e,i){return e===d?ft(function(t,e){var i=x(t),n=q(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=M();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ct(t),y:l}}(t,i)):k(e)?function(t,e){var i=H(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ft(function(t){var e,i=q(t),n=lt(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=I(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=I(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ct(t),l=-n.scrollTop;return"rtl"===F(s||i).direction&&(a+=I(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(q(t)))}function gt(t){var e,r=t.reference,a=t.element,h=t.placement,d=h?S(h):null,u=h?J(h):null,f=r.x+r.width/2-a.width/2,p=r.y+r.height/2-a.height/2;switch(d){case i:e={x:f,y:r.y-a.height};break;case n:e={x:f,y:r.y+r.height};break;case s:e={x:r.x+r.width,y:p};break;case o:e={x:r.x-a.width,y:p};break;default:e={x:r.x,y:r.y}}var g=d?K(d):null;if(null!=g){var m="y"===g?"height":"width";switch(u){case l:e[g]=e[g]-(r[m]/2-a[m]/2);break;case c:e[g]=e[g]+(r[m]/2-a[m]/2)}}return e}function mt(t,e){void 0===e&&(e={});var o=e,r=o.placement,l=void 0===r?t.placement:r,c=o.strategy,p=void 0===c?t.strategy:c,g=o.boundary,m=void 0===g?h:g,_=o.rootBoundary,b=void 0===_?d:_,v=o.elementContext,y=void 0===v?u:v,w=o.altBoundary,A=void 0!==w&&w,E=o.padding,C=void 0===E?0:E,T=X("number"!=typeof C?C:U(C,a)),x=y===u?f:u,D=t.rects.popper,$=t.elements[A?x:y],S=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ut(R(t)),i=["absolute","fixed"].indexOf(F(t).position)>=0&&L(t)?Y(t):t;return k(i)?e.filter((function(t){return k(t)&&W(t,i)&&"body"!==O(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=pt(t,i,n);return e.top=I(s.top,e.top),e.right=N(s.right,e.right),e.bottom=N(s.bottom,e.bottom),e.left=I(s.left,e.left),e}),pt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(k($)?$:$.contextElement||q(t.elements.popper),m,b,p),P=H(t.elements.reference),j=gt({reference:P,element:D,strategy:"absolute",placement:l}),M=ft(Object.assign({},D,j)),B=y===u?M:P,z={top:S.top-B.top+T.top,bottom:B.bottom-S.bottom+T.bottom,left:S.left-B.left+T.left,right:B.right-S.right+T.right},V=t.modifiersData.offset;if(y===u&&V){var K=V[l];Object.keys(z).forEach((function(t){var e=[s,n].indexOf(t)>=0?1:-1,o=[i,n].indexOf(t)>=0?"y":"x";z[t]+=K[o]*e}))}return z}const _t={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,c=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=c.mainAxis,u=void 0===d||d,f=c.altAxis,m=void 0===f||f,_=c.fallbackPlacements,b=c.padding,v=c.boundary,y=c.rootBoundary,w=c.altBoundary,A=c.flipVariations,E=void 0===A||A,C=c.allowedAutoPlacements,T=e.options.placement,O=S(T),x=_||(O!==T&&E?function(t){if(S(t)===r)return[];var e=ot(t);return[at(t),e,at(e)]}(T):[ot(T)]),k=[T].concat(x).reduce((function(t,i){return t.concat(S(i)===r?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,l=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?g:c,d=J(n),u=d?l?p:p.filter((function(t){return J(t)===d})):a,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var m=f.reduce((function(e,i){return e[i]=mt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[S(i)],e}),{});return Object.keys(m).sort((function(t,e){return m[t]-m[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:E,allowedAutoPlacements:C}):i)}),[]),L=e.rects.reference,D=e.rects.popper,$=new Map,I=!0,N=k[0],P=0;P=0,W=B?"width":"height",F=mt(e,{placement:j,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=B?H?s:o:H?n:i;L[W]>D[W]&&(z=ot(z));var q=ot(z),R=[];if(u&&R.push(F[M]<=0),m&&R.push(F[z]<=0,F[q]<=0),R.every((function(t){return t}))){N=j,I=!1;break}$.set(j,R)}if(I)for(var V=function(t){var e=k.find((function(e){var i=$.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=E?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function vt(t){return[i,s,n,o].some((function(e){return t[e]>=0}))}const yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=mt(e,{elementContext:"reference"}),a=mt(e,{altBoundary:!0}),l=bt(r,n),c=bt(a,s,o),h=vt(l),d=vt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,r=t.name,a=n.offset,l=void 0===a?[0,0]:a,c=g.reduce((function(t,n){return t[n]=function(t,e,n){var r=S(t),a=[o,i].indexOf(r)>=0?-1:1,l="function"==typeof n?n(Object.assign({},e,{placement:t})):n,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[o,s].indexOf(r)>=0?{x:h,y:c}:{x:c,y:h}}(n,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=c}},At={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=gt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},Et={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,r=t.options,a=t.name,c=r.mainAxis,h=void 0===c||c,d=r.altAxis,u=void 0!==d&&d,f=r.boundary,p=r.rootBoundary,g=r.altBoundary,m=r.padding,_=r.tether,b=void 0===_||_,v=r.tetherOffset,y=void 0===v?0:v,w=mt(e,{boundary:f,rootBoundary:p,padding:m,altBoundary:g}),A=S(e.placement),E=J(e.placement),C=!E,T=K(A),O="x"===T?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,D="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,$="number"==typeof D?{mainAxis:D,altAxis:D}:Object.assign({mainAxis:0,altAxis:0},D),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,j={x:0,y:0};if(x){if(h){var M,H="y"===T?i:o,W="y"===T?n:s,F="y"===T?"height":"width",z=x[T],q=z+w[H],R=z-w[W],V=b?-L[F]/2:0,X=E===l?k[F]:L[F],U=E===l?-L[F]:-k[F],G=e.elements.arrow,Z=b&&G?B(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[H],it=tt[W],nt=Q(0,k[F],Z[F]),st=C?k[F]/2-V-nt-et-$.mainAxis:X-nt-et-$.mainAxis,ot=C?-k[F]/2+V+nt+it+$.mainAxis:U+nt+it+$.mainAxis,rt=e.elements.arrow&&Y(e.elements.arrow),at=rt?"y"===T?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(M=null==P?void 0:P[T])?M:0,ct=z+ot-lt,ht=Q(b?N(q,z+st-lt-at):q,z,b?I(R,ct):R);x[T]=ht,j[T]=ht-z}if(u){var dt,ut="x"===T?i:o,ft="x"===T?n:s,pt=x[O],gt="y"===O?"height":"width",_t=pt+w[ut],bt=pt-w[ft],vt=-1!==[i,o].indexOf(A),yt=null!=(dt=null==P?void 0:P[O])?dt:0,wt=vt?_t:pt-k[gt]-L[gt]-yt+$.altAxis,At=vt?pt+k[gt]+L[gt]-yt-$.altAxis:bt,Et=b&&vt?function(t,e,i){var n=Q(t,e,i);return n>i?i:n}(wt,pt,At):Q(b?wt:_t,pt,b?At:bt);x[O]=Et,j[O]=Et-pt}e.modifiersData[a]=j}},requiresIfExists:["offset"]};function Ct(t,e,i){void 0===i&&(i=!1);var n,s,o=L(e),r=L(e)&&function(t){var e=t.getBoundingClientRect(),i=P(e.width)/t.offsetWidth||1,n=P(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=q(e),l=H(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==O(e)||ht(a))&&(c=(n=e)!==x(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:lt(n)),L(e)?((h=H(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ct(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Tt(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function xt(){for(var t=arguments.length,e=new Array(t),i=0;i{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?i.trim():null}return e},Nt=t=>{const e=It(t);return e&&document.querySelector(e)?e:null},Pt=t=>{const e=It(t);return e?document.querySelector(e):null},jt=t=>{t.dispatchEvent(new Event(St))},Mt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ht=t=>Mt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(t):null,Bt=t=>{if(!Mt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Wt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Ft=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Ft(t.parentNode):null},zt=()=>{},qt=t=>{t.offsetHeight},Rt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Vt=[],Yt=()=>"rtl"===document.documentElement.dir,Kt=t=>{var e;e=()=>{const e=Rt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Vt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Vt)t()})),Vt.push(e)):e()},Qt=t=>{"function"==typeof t&&t()},Xt=(t,e,i=!0)=>{if(!i)return void Qt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(St,o),Qt(t))};e.addEventListener(St,o),setTimeout((()=>{s||jt(e)}),n)},Ut=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Gt=/[^.]*(?=\..*)\.|.*/,Jt=/\..*/,Zt=/::\d+$/,te={};let ee=1;const ie={mouseenter:"mouseover",mouseleave:"mouseout"},ne=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function se(t,e){return e&&`${e}::${ee++}`||t.uidEvent||ee++}function oe(t){const e=se(t);return t.uidEvent=e,te[e]=te[e]||{},te[e]}function re(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ae(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=de(t);return ne.has(o)||(o=t),[n,s,o]}function le(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ae(e,i,n);if(e in ie){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=oe(t),c=l[a]||(l[a]={}),h=re(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=se(r,e.replace(Gt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return fe(s,{delegateTarget:r}),n.oneOff&&ue.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return fe(n,{delegateTarget:t}),i.oneOff&&ue.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function ce(t,e,i,n,s){const o=re(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function he(t,e,i,n){const s=e[i]||{};for(const o of Object.keys(s))if(o.includes(n)){const n=s[o];ce(t,e,i,n.callable,n.delegationSelector)}}function de(t){return t=t.replace(Jt,""),ie[t]||t}const ue={on(t,e,i,n){le(t,e,i,n,!1)},one(t,e,i,n){le(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ae(e,i,n),a=r!==e,l=oe(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))he(t,l,i,e.slice(1));for(const i of Object.keys(c)){const n=i.replace(Zt,"");if(!a||e.includes(n)){const e=c[i];ce(t,l,r,e.callable,e.delegationSelector)}}}else{if(!Object.keys(c).length)return;ce(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=Rt();let s=null,o=!0,r=!0,a=!1;e!==de(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());let l=new Event(e,{bubbles:o,cancelable:!0});return l=fe(l,i),a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function fe(t,e){for(const[i,n]of Object.entries(e||{}))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}const pe=new Map,ge={set(t,e,i){pe.has(t)||pe.set(t,new Map);const n=pe.get(t);n.has(e)||0===n.size?n.set(e,i):console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(n.keys())[0]}.`)},get:(t,e)=>pe.has(t)&&pe.get(t).get(e)||null,remove(t,e){if(!pe.has(t))return;const i=pe.get(t);i.delete(e),0===i.size&&pe.delete(t)}};function me(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function _e(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const be={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${_e(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${_e(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=me(t.dataset[n])}return e},getDataAttribute:(t,e)=>me(t.getAttribute(`data-bs-${_e(e)}`))};class ve{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=Mt(e)?be.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...Mt(e)?be.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const n of Object.keys(e)){const s=e[n],o=t[n],r=Mt(o)?"element":null==(i=o)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(r))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${r}" but expected type "${s}".`)}var i}}class ye extends ve{constructor(t,e){super(),(t=Ht(t))&&(this._element=t,this._config=this._getConfig(e),ge.set(this._element,this.constructor.DATA_KEY,this))}dispose(){ge.remove(this._element,this.constructor.DATA_KEY),ue.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Xt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return ge.get(Ht(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.2.3"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const we=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ue.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Wt(this))return;const s=Pt(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ae=".bs.alert",Ee=`close${Ae}`,Ce=`closed${Ae}`;class Te extends ye{static get NAME(){return"alert"}close(){if(ue.trigger(this._element,Ee).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),ue.trigger(this._element,Ce),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Te.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}we(Te,"close"),Kt(Te);const Oe='[data-bs-toggle="button"]';class xe extends ye{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=xe.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ue.on(document,"click.bs.button.data-api",Oe,(t=>{t.preventDefault();const e=t.target.closest(Oe);xe.getOrCreateInstance(e).toggle()})),Kt(xe);const ke={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Wt(t)&&Bt(t)))}},Le=".bs.swipe",De=`touchstart${Le}`,$e=`touchmove${Le}`,Se=`touchend${Le}`,Ie=`pointerdown${Le}`,Ne=`pointerup${Le}`,Pe={endCallback:null,leftCallback:null,rightCallback:null},je={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Me extends ve{constructor(t,e){super(),this._element=t,t&&Me.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Pe}static get DefaultType(){return je}static get NAME(){return"swipe"}dispose(){ue.off(this._element,Le)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Qt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Qt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ue.on(this._element,Ie,(t=>this._start(t))),ue.on(this._element,Ne,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ue.on(this._element,De,(t=>this._start(t))),ue.on(this._element,$e,(t=>this._move(t))),ue.on(this._element,Se,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const He=".bs.carousel",Be=".data-api",We="next",Fe="prev",ze="left",qe="right",Re=`slide${He}`,Ve=`slid${He}`,Ye=`keydown${He}`,Ke=`mouseenter${He}`,Qe=`mouseleave${He}`,Xe=`dragstart${He}`,Ue=`load${He}${Be}`,Ge=`click${He}${Be}`,Je="carousel",Ze="active",ti=".active",ei=".carousel-item",ii=ti+ei,ni={ArrowLeft:qe,ArrowRight:ze},si={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},oi={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class ri extends ye{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ke.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Je&&this.cycle()}static get Default(){return si}static get DefaultType(){return oi}static get NAME(){return"carousel"}next(){this._slide(We)}nextWhenVisible(){!document.hidden&&Bt(this._element)&&this.next()}prev(){this._slide(Fe)}pause(){this._isSliding&&jt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ue.one(this._element,Ve,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ue.one(this._element,Ve,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?We:Fe;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&ue.on(this._element,Ye,(t=>this._keydown(t))),"hover"===this._config.pause&&(ue.on(this._element,Ke,(()=>this.pause())),ue.on(this._element,Qe,(()=>this._maybeEnableCycle()))),this._config.touch&&Me.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of ke.find(".carousel-item img",this._element))ue.on(t,Xe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(ze)),rightCallback:()=>this._slide(this._directionToOrder(qe)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Me(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ni[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=ke.findOne(ti,this._indicatorsElement);e.classList.remove(Ze),e.removeAttribute("aria-current");const i=ke.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Ze),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===We,s=e||Ut(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ue.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Re).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),qt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Ze),i.classList.remove(Ze,c,l),this._isSliding=!1,r(Ve)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return ke.findOne(ii,this._element)}_getItems(){return ke.find(ei,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===ze?Fe:We:t===ze?We:Fe}_orderToDirection(t){return Yt()?t===Fe?ze:qe:t===Fe?qe:ze}static jQueryInterface(t){return this.each((function(){const e=ri.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}ue.on(document,Ge,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=Pt(this);if(!e||!e.classList.contains(Je))return;t.preventDefault();const i=ri.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===be.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ue.on(window,Ue,(()=>{const t=ke.find('[data-bs-ride="carousel"]');for(const e of t)ri.getOrCreateInstance(e)})),Kt(ri);const ai=".bs.collapse",li=`show${ai}`,ci=`shown${ai}`,hi=`hide${ai}`,di=`hidden${ai}`,ui=`click${ai}.data-api`,fi="show",pi="collapse",gi="collapsing",mi=`:scope .${pi} .${pi}`,_i='[data-bs-toggle="collapse"]',bi={parent:null,toggle:!0},vi={parent:"(null|element)",toggle:"boolean"};class yi extends ye{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=ke.find(_i);for(const t of i){const e=Nt(t),i=ke.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return bi}static get DefaultType(){return vi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>yi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ue.trigger(this._element,li).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(pi),this._element.classList.add(gi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(gi),this._element.classList.add(pi,fi),this._element.style[e]="",ue.trigger(this._element,ci)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ue.trigger(this._element,hi).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,qt(this._element),this._element.classList.add(gi),this._element.classList.remove(pi,fi);for(const t of this._triggerArray){const e=Pt(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(gi),this._element.classList.add(pi),ue.trigger(this._element,di)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(fi)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ht(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(_i);for(const e of t){const t=Pt(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=ke.find(mi,this._config.parent);return ke.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=yi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ue.on(document,ui,_i,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();const e=Nt(this),i=ke.find(e);for(const t of i)yi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Kt(yi);const wi="dropdown",Ai=".bs.dropdown",Ei=".data-api",Ci="ArrowUp",Ti="ArrowDown",Oi=`hide${Ai}`,xi=`hidden${Ai}`,ki=`show${Ai}`,Li=`shown${Ai}`,Di=`click${Ai}${Ei}`,$i=`keydown${Ai}${Ei}`,Si=`keyup${Ai}${Ei}`,Ii="show",Ni='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Pi=`${Ni}.${Ii}`,ji=".dropdown-menu",Mi=Yt()?"top-end":"top-start",Hi=Yt()?"top-start":"top-end",Bi=Yt()?"bottom-end":"bottom-start",Wi=Yt()?"bottom-start":"bottom-end",Fi=Yt()?"left-start":"right-start",zi=Yt()?"right-start":"left-start",qi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class Vi extends ye{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=ke.next(this._element,ji)[0]||ke.prev(this._element,ji)[0]||ke.findOne(ji,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return qi}static get DefaultType(){return Ri}static get NAME(){return wi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Wt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ue.trigger(this._element,ki,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add(Ii),this._element.classList.add(Ii),ue.trigger(this._element,Li,t)}}hide(){if(Wt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!ue.trigger(this._element,Oi,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._popper&&this._popper.destroy(),this._menu.classList.remove(Ii),this._element.classList.remove(Ii),this._element.setAttribute("aria-expanded","false"),be.removeDataAttribute(this._menu,"popper"),ue.trigger(this._element,xi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!Mt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${wi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:Mt(this._config.reference)?t=Ht(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=Dt(t,this._menu,i)}_isShown(){return this._menu.classList.contains(Ii)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Fi;if(t.classList.contains("dropstart"))return zi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?Hi:Mi:e?Wi:Bi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(be.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,..."function"==typeof this._config.popperConfig?this._config.popperConfig(t):this._config.popperConfig}}_selectMenuItem({key:t,target:e}){const i=ke.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Bt(t)));i.length&&Ut(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=Vi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=ke.find(Pi);for(const i of e){const e=Vi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ci,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ni)?this:ke.prev(this,Ni)[0]||ke.next(this,Ni)[0]||ke.findOne(Ni,t.delegateTarget.parentNode),o=Vi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ue.on(document,$i,Ni,Vi.dataApiKeydownHandler),ue.on(document,$i,ji,Vi.dataApiKeydownHandler),ue.on(document,Di,Vi.clearMenus),ue.on(document,Si,Vi.clearMenus),ue.on(document,Di,Ni,(function(t){t.preventDefault(),Vi.getOrCreateInstance(this).toggle()})),Kt(Vi);const Yi=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",Ki=".sticky-top",Qi="padding-right",Xi="margin-right";class Ui{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,Qi,(e=>e+t)),this._setElementAttributes(Yi,Qi,(e=>e+t)),this._setElementAttributes(Ki,Xi,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,Qi),this._resetElementAttributes(Yi,Qi),this._resetElementAttributes(Ki,Xi)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&be.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=be.getDataAttribute(t,e);null!==i?(be.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(Mt(t))e(t);else for(const i of ke.find(t,this._element))e(i)}}const Gi="backdrop",Ji="show",Zi=`mousedown.bs.${Gi}`,tn={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},en={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class nn extends ve{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return tn}static get DefaultType(){return en}static get NAME(){return Gi}show(t){if(!this._config.isVisible)return void Qt(t);this._append();const e=this._getElement();this._config.isAnimated&&qt(e),e.classList.add(Ji),this._emulateAnimation((()=>{Qt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Ji),this._emulateAnimation((()=>{this.dispose(),Qt(t)}))):Qt(t)}dispose(){this._isAppended&&(ue.off(this._element,Zi),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ht(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ue.on(t,Zi,(()=>{Qt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Xt(t,this._getElement(),this._config.isAnimated)}}const sn=".bs.focustrap",on=`focusin${sn}`,rn=`keydown.tab${sn}`,an="backward",ln={autofocus:!0,trapElement:null},cn={autofocus:"boolean",trapElement:"element"};class hn extends ve{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return ln}static get DefaultType(){return cn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ue.off(document,sn),ue.on(document,on,(t=>this._handleFocusin(t))),ue.on(document,rn,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ue.off(document,sn))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=ke.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===an?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?an:"forward")}}const dn=".bs.modal",un=`hide${dn}`,fn=`hidePrevented${dn}`,pn=`hidden${dn}`,gn=`show${dn}`,mn=`shown${dn}`,_n=`resize${dn}`,bn=`click.dismiss${dn}`,vn=`mousedown.dismiss${dn}`,yn=`keydown.dismiss${dn}`,wn=`click${dn}.data-api`,An="modal-open",En="show",Cn="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},On={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class xn extends ye{constructor(t,e){super(t,e),this._dialog=ke.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new Ui,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return On}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||ue.trigger(this._element,gn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(An),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(ue.trigger(this._element,un).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(En),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){for(const t of[window,this._dialog])ue.off(t,dn);this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new nn({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new hn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=ke.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),qt(this._element),this._element.classList.add(En),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ue.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ue.on(this._element,yn,(t=>{if("Escape"===t.key)return this._config.keyboard?(t.preventDefault(),void this.hide()):void this._triggerBackdropTransition()})),ue.on(window,_n,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ue.on(this._element,vn,(t=>{ue.one(this._element,bn,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(An),this._resetAdjustments(),this._scrollBar.reset(),ue.trigger(this._element,pn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ue.trigger(this._element,fn).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(Cn)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(Cn),this._queueCallback((()=>{this._element.classList.remove(Cn),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=xn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ue.on(document,wn,'[data-bs-toggle="modal"]',(function(t){const e=Pt(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ue.one(e,gn,(t=>{t.defaultPrevented||ue.one(e,pn,(()=>{Bt(this)&&this.focus()}))}));const i=ke.findOne(".modal.show");i&&xn.getInstance(i).hide(),xn.getOrCreateInstance(e).toggle(this)})),we(xn),Kt(xn);const kn=".bs.offcanvas",Ln=".data-api",Dn=`load${kn}${Ln}`,$n="show",Sn="showing",In="hiding",Nn=".offcanvas.show",Pn=`show${kn}`,jn=`shown${kn}`,Mn=`hide${kn}`,Hn=`hidePrevented${kn}`,Bn=`hidden${kn}`,Wn=`resize${kn}`,Fn=`click${kn}${Ln}`,zn=`keydown.dismiss${kn}`,qn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class Vn extends ye{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return qn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||ue.trigger(this._element,Pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new Ui).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Sn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add($n),this._element.classList.remove(Sn),ue.trigger(this._element,jn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(ue.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add(In),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove($n,In),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new Ui).reset(),ue.trigger(this._element,Bn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new nn({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ue.trigger(this._element,Hn)}:null})}_initializeFocusTrap(){return new hn({trapElement:this._element})}_addEventListeners(){ue.on(this._element,zn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ue.trigger(this._element,Hn))}))}static jQueryInterface(t){return this.each((function(){const e=Vn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ue.on(document,Fn,'[data-bs-toggle="offcanvas"]',(function(t){const e=Pt(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this))return;ue.one(e,Bn,(()=>{Bt(this)&&this.focus()}));const i=ke.findOne(Nn);i&&i!==e&&Vn.getInstance(i).hide(),Vn.getOrCreateInstance(e).toggle(this)})),ue.on(window,Dn,(()=>{for(const t of ke.find(Nn))Vn.getOrCreateInstance(t).show()})),ue.on(window,Wn,(()=>{for(const t of ke.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&Vn.getOrCreateInstance(t).hide()})),we(Vn),Kt(Vn);const Yn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Kn=/^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i,Qn=/^data:(?:image\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\/(?:mpeg|mp4|ogg|webm)|audio\/(?:mp3|oga|ogg|opus));base64,[\d+/a-z]+=*$/i,Xn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Yn.has(i)||Boolean(Kn.test(t.nodeValue)||Qn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Un={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Gn={allowList:Un,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Jn={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Zn={entry:"(string|element|function|null)",selector:"(string|element)"};class ts extends ve{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Gn}static get DefaultType(){return Jn}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Zn)}_setContent(t,e,i){const n=ke.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?Mt(e)?this._putElementInTemplate(Ht(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Xn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return"function"==typeof t?t(this):t}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const es=new Set(["sanitize","allowList","sanitizeFn"]),is="fade",ns="show",ss=".modal",os="hide.bs.modal",rs="hover",as="focus",ls={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},cs={allowList:Un,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,0],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},hs={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class ds extends ye{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return cs}static get DefaultType(){return hs}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),ue.off(this._element.closest(ss),os,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=ue.trigger(this._element,this.constructor.eventName("show")),e=(Ft(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),ue.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(ns),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._queueCallback((()=>{ue.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!ue.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(ns),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._activeTrigger.click=!1,this._activeTrigger[as]=!1,this._activeTrigger[rs]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ue.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(is,ns),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(is),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new ts({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(is)}_isShown(){return this.tip&&this.tip.classList.contains(ns)}_createPopper(t){const e="function"==typeof this._config.placement?this._config.placement.call(this,t,this._element):this._config.placement,i=ls[e.toUpperCase()];return Dt(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return"function"==typeof t?t.call(this._element):t}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,..."function"==typeof this._config.popperConfig?this._config.popperConfig(e):this._config.popperConfig}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ue.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===rs?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===rs?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ue.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?as:rs]=!0,e._enter()})),ue.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?as:rs]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ue.on(this._element.closest(ss),os,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=be.getDataAttributes(this._element);for(const t of Object.keys(e))es.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ht(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const e in this._config)this.constructor.Default[e]!==this._config[e]&&(t[e]=this._config[e]);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=ds.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(ds);const us={...ds.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},fs={...ds.DefaultType,content:"(null|string|element|function)"};class ps extends ds{static get Default(){return us}static get DefaultType(){return fs}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=ps.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(ps);const gs=".bs.scrollspy",ms=`activate${gs}`,_s=`click${gs}`,bs=`load${gs}.data-api`,vs="active",ys="[href]",ws=".nav-link",As=`${ws}, .nav-item > ${ws}, .list-group-item`,Es={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Cs={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class Ts extends ye{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return Es}static get DefaultType(){return Cs}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ht(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(ue.off(this._config.target,_s),ue.on(this._config.target,_s,ys,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=ke.find(ys,this._config.target);for(const e of t){if(!e.hash||Wt(e))continue;const t=ke.findOne(e.hash,this._element);Bt(t)&&(this._targetLinks.set(e.hash,e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(vs),this._activateParents(t),ue.trigger(this._element,ms,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))ke.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(vs);else for(const e of ke.parents(t,".nav, .list-group"))for(const t of ke.prev(e,As))t.classList.add(vs)}_clearActiveClass(t){t.classList.remove(vs);const e=ke.find(`${ys}.${vs}`,t);for(const t of e)t.classList.remove(vs)}static jQueryInterface(t){return this.each((function(){const e=Ts.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(window,bs,(()=>{for(const t of ke.find('[data-bs-spy="scroll"]'))Ts.getOrCreateInstance(t)})),Kt(Ts);const Os=".bs.tab",xs=`hide${Os}`,ks=`hidden${Os}`,Ls=`show${Os}`,Ds=`shown${Os}`,$s=`click${Os}`,Ss=`keydown${Os}`,Is=`load${Os}`,Ns="ArrowLeft",Ps="ArrowRight",js="ArrowUp",Ms="ArrowDown",Hs="active",Bs="fade",Ws="show",Fs=":not(.dropdown-toggle)",zs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${Fs}, .list-group-item${Fs}, [role="tab"]${Fs}, ${zs}`,Rs=`.${Hs}[data-bs-toggle="tab"], .${Hs}[data-bs-toggle="pill"], .${Hs}[data-bs-toggle="list"]`;class Vs extends ye{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ue.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?ue.trigger(e,xs,{relatedTarget:t}):null;ue.trigger(t,Ls,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Hs),this._activate(Pt(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ue.trigger(t,Ds,{relatedTarget:e})):t.classList.add(Ws)}),t,t.classList.contains(Bs)))}_deactivate(t,e){t&&(t.classList.remove(Hs),t.blur(),this._deactivate(Pt(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ue.trigger(t,ks,{relatedTarget:e})):t.classList.remove(Ws)}),t,t.classList.contains(Bs)))}_keydown(t){if(![Ns,Ps,js,Ms].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=[Ps,Ms].includes(t.key),i=Ut(this._getChildren().filter((t=>!Wt(t))),t.target,e,!0);i&&(i.focus({preventScroll:!0}),Vs.getOrCreateInstance(i).show())}_getChildren(){return ke.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=Pt(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`#${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=ke.findOne(t,i);s&&s.classList.toggle(n,e)};n(".dropdown-toggle",Hs),n(".dropdown-menu",Ws),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Hs)}_getInnerElement(t){return t.matches(qs)?t:ke.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Vs.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(document,$s,zs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Wt(this)||Vs.getOrCreateInstance(this).show()})),ue.on(window,Is,(()=>{for(const t of ke.find(Rs))Vs.getOrCreateInstance(t)})),Kt(Vs);const Ys=".bs.toast",Ks=`mouseover${Ys}`,Qs=`mouseout${Ys}`,Xs=`focusin${Ys}`,Us=`focusout${Ys}`,Gs=`hide${Ys}`,Js=`hidden${Ys}`,Zs=`show${Ys}`,to=`shown${Ys}`,eo="hide",io="show",no="showing",so={animation:"boolean",autohide:"boolean",delay:"number"},oo={animation:!0,autohide:!0,delay:5e3};class ro extends ye{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return oo}static get DefaultType(){return so}static get NAME(){return"toast"}show(){ue.trigger(this._element,Zs).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(eo),qt(this._element),this._element.classList.add(io,no),this._queueCallback((()=>{this._element.classList.remove(no),ue.trigger(this._element,to),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(ue.trigger(this._element,Gs).defaultPrevented||(this._element.classList.add(no),this._queueCallback((()=>{this._element.classList.add(eo),this._element.classList.remove(no,io),ue.trigger(this._element,Js)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(io),super.dispose()}isShown(){return this._element.classList.contains(io)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){ue.on(this._element,Ks,(t=>this._onInteraction(t,!0))),ue.on(this._element,Qs,(t=>this._onInteraction(t,!1))),ue.on(this._element,Xs,(t=>this._onInteraction(t,!0))),ue.on(this._element,Us,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ro.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function ao(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}we(ro),Kt(ro),ao((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new ds(t,{delay:{show:500,hide:100}})}))})),ao((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),ao((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))}))})(); +(()=>{"use strict";var t={d:(e,i)=>{for(var n in i)t.o(i,n)&&!t.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:i[n]})},o:(t,e)=>Object.prototype.hasOwnProperty.call(t,e),r:t=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(t,"__esModule",{value:!0})}},e={};t.r(e),t.d(e,{afterMain:()=>w,afterRead:()=>b,afterWrite:()=>T,applyStyles:()=>D,arrow:()=>G,auto:()=>r,basePlacements:()=>a,beforeMain:()=>v,beforeRead:()=>g,beforeWrite:()=>E,bottom:()=>n,clippingParents:()=>h,computeStyles:()=>et,createPopper:()=>St,createPopperBase:()=>Lt,createPopperLite:()=>Dt,detectOverflow:()=>gt,end:()=>c,eventListeners:()=>nt,flip:()=>_t,hide:()=>yt,left:()=>o,main:()=>y,modifierPhases:()=>C,offset:()=>wt,placements:()=>m,popper:()=>u,popperGenerator:()=>kt,popperOffsets:()=>Et,preventOverflow:()=>At,read:()=>_,reference:()=>f,right:()=>s,start:()=>l,top:()=>i,variationPlacements:()=>p,viewport:()=>d,write:()=>A});var i="top",n="bottom",s="right",o="left",r="auto",a=[i,n,s,o],l="start",c="end",h="clippingParents",d="viewport",u="popper",f="reference",p=a.reduce((function(t,e){return t.concat([e+"-"+l,e+"-"+c])}),[]),m=[].concat(a,[r]).reduce((function(t,e){return t.concat([e,e+"-"+l,e+"-"+c])}),[]),g="beforeRead",_="read",b="afterRead",v="beforeMain",y="main",w="afterMain",E="beforeWrite",A="write",T="afterWrite",C=[g,_,b,v,y,w,E,A,T];function O(t){return t?(t.nodeName||"").toLowerCase():null}function x(t){if(null==t)return window;if("[object Window]"!==t.toString()){var e=t.ownerDocument;return e&&e.defaultView||window}return t}function k(t){return t instanceof x(t).Element||t instanceof Element}function L(t){return t instanceof x(t).HTMLElement||t instanceof HTMLElement}function S(t){return"undefined"!=typeof ShadowRoot&&(t instanceof x(t).ShadowRoot||t instanceof ShadowRoot)}const D={name:"applyStyles",enabled:!0,phase:"write",fn:function(t){var e=t.state;Object.keys(e.elements).forEach((function(t){var i=e.styles[t]||{},n=e.attributes[t]||{},s=e.elements[t];L(s)&&O(s)&&(Object.assign(s.style,i),Object.keys(n).forEach((function(t){var e=n[t];!1===e?s.removeAttribute(t):s.setAttribute(t,!0===e?"":e)})))}))},effect:function(t){var e=t.state,i={popper:{position:e.options.strategy,left:"0",top:"0",margin:"0"},arrow:{position:"absolute"},reference:{}};return Object.assign(e.elements.popper.style,i.popper),e.styles=i,e.elements.arrow&&Object.assign(e.elements.arrow.style,i.arrow),function(){Object.keys(e.elements).forEach((function(t){var n=e.elements[t],s=e.attributes[t]||{},o=Object.keys(e.styles.hasOwnProperty(t)?e.styles[t]:i[t]).reduce((function(t,e){return t[e]="",t}),{});L(n)&&O(n)&&(Object.assign(n.style,o),Object.keys(s).forEach((function(t){n.removeAttribute(t)})))}))}},requires:["computeStyles"]};function $(t){return t.split("-")[0]}var I=Math.max,N=Math.min,P=Math.round;function M(){var t=navigator.userAgentData;return null!=t&&t.brands&&Array.isArray(t.brands)?t.brands.map((function(t){return t.brand+"/"+t.version})).join(" "):navigator.userAgent}function j(){return!/^((?!chrome|android).)*safari/i.test(M())}function F(t,e,i){void 0===e&&(e=!1),void 0===i&&(i=!1);var n=t.getBoundingClientRect(),s=1,o=1;e&&L(t)&&(s=t.offsetWidth>0&&P(n.width)/t.offsetWidth||1,o=t.offsetHeight>0&&P(n.height)/t.offsetHeight||1);var r=(k(t)?x(t):window).visualViewport,a=!j()&&i,l=(n.left+(a&&r?r.offsetLeft:0))/s,c=(n.top+(a&&r?r.offsetTop:0))/o,h=n.width/s,d=n.height/o;return{width:h,height:d,top:c,right:l+h,bottom:c+d,left:l,x:l,y:c}}function H(t){var e=F(t),i=t.offsetWidth,n=t.offsetHeight;return Math.abs(e.width-i)<=1&&(i=e.width),Math.abs(e.height-n)<=1&&(n=e.height),{x:t.offsetLeft,y:t.offsetTop,width:i,height:n}}function B(t,e){var i=e.getRootNode&&e.getRootNode();if(t.contains(e))return!0;if(i&&S(i)){var n=e;do{if(n&&t.isSameNode(n))return!0;n=n.parentNode||n.host}while(n)}return!1}function W(t){return x(t).getComputedStyle(t)}function z(t){return["table","td","th"].indexOf(O(t))>=0}function R(t){return((k(t)?t.ownerDocument:t.document)||window.document).documentElement}function q(t){return"html"===O(t)?t:t.assignedSlot||t.parentNode||(S(t)?t.host:null)||R(t)}function V(t){return L(t)&&"fixed"!==W(t).position?t.offsetParent:null}function Y(t){for(var e=x(t),i=V(t);i&&z(i)&&"static"===W(i).position;)i=V(i);return i&&("html"===O(i)||"body"===O(i)&&"static"===W(i).position)?e:i||function(t){var e=/firefox/i.test(M());if(/Trident/i.test(M())&&L(t)&&"fixed"===W(t).position)return null;var i=q(t);for(S(i)&&(i=i.host);L(i)&&["html","body"].indexOf(O(i))<0;){var n=W(i);if("none"!==n.transform||"none"!==n.perspective||"paint"===n.contain||-1!==["transform","perspective"].indexOf(n.willChange)||e&&"filter"===n.willChange||e&&n.filter&&"none"!==n.filter)return i;i=i.parentNode}return null}(t)||e}function K(t){return["top","bottom"].indexOf(t)>=0?"x":"y"}function Q(t,e,i){return I(t,N(e,i))}function X(t){return Object.assign({},{top:0,right:0,bottom:0,left:0},t)}function U(t,e){return e.reduce((function(e,i){return e[i]=t,e}),{})}const G={name:"arrow",enabled:!0,phase:"main",fn:function(t){var e,r=t.state,l=t.name,c=t.options,h=r.elements.arrow,d=r.modifiersData.popperOffsets,u=$(r.placement),f=K(u),p=[o,s].indexOf(u)>=0?"height":"width";if(h&&d){var m=function(t,e){return X("number"!=typeof(t="function"==typeof t?t(Object.assign({},e.rects,{placement:e.placement})):t)?t:U(t,a))}(c.padding,r),g=H(h),_="y"===f?i:o,b="y"===f?n:s,v=r.rects.reference[p]+r.rects.reference[f]-d[f]-r.rects.popper[p],y=d[f]-r.rects.reference[f],w=Y(h),E=w?"y"===f?w.clientHeight||0:w.clientWidth||0:0,A=v/2-y/2,T=m[_],C=E-g[p]-m[b],O=E/2-g[p]/2+A,x=Q(T,O,C),k=f;r.modifiersData[l]=((e={})[k]=x,e.centerOffset=x-O,e)}},effect:function(t){var e=t.state,i=t.options.element,n=void 0===i?"[data-popper-arrow]":i;null!=n&&("string"!=typeof n||(n=e.elements.popper.querySelector(n)))&&B(e.elements.popper,n)&&(e.elements.arrow=n)},requires:["popperOffsets"],requiresIfExists:["preventOverflow"]};function J(t){return t.split("-")[1]}var Z={top:"auto",right:"auto",bottom:"auto",left:"auto"};function tt(t){var e,r=t.popper,a=t.popperRect,l=t.placement,h=t.variation,d=t.offsets,u=t.position,f=t.gpuAcceleration,p=t.adaptive,m=t.roundOffsets,g=t.isFixed,_=d.x,b=void 0===_?0:_,v=d.y,y=void 0===v?0:v,w="function"==typeof m?m({x:b,y}):{x:b,y};b=w.x,y=w.y;var E=d.hasOwnProperty("x"),A=d.hasOwnProperty("y"),T=o,C=i,O=window;if(p){var k=Y(r),L="clientHeight",S="clientWidth";k===x(r)&&"static"!==W(k=R(r)).position&&"absolute"===u&&(L="scrollHeight",S="scrollWidth"),(l===i||(l===o||l===s)&&h===c)&&(C=n,y-=(g&&k===O&&O.visualViewport?O.visualViewport.height:k[L])-a.height,y*=f?1:-1),l!==o&&(l!==i&&l!==n||h!==c)||(T=s,b-=(g&&k===O&&O.visualViewport?O.visualViewport.width:k[S])-a.width,b*=f?1:-1)}var D,$=Object.assign({position:u},p&&Z),I=!0===m?function(t,e){var i=t.x,n=t.y,s=e.devicePixelRatio||1;return{x:P(i*s)/s||0,y:P(n*s)/s||0}}({x:b,y},x(r)):{x:b,y};return b=I.x,y=I.y,f?Object.assign({},$,((D={})[C]=A?"0":"",D[T]=E?"0":"",D.transform=(O.devicePixelRatio||1)<=1?"translate("+b+"px, "+y+"px)":"translate3d("+b+"px, "+y+"px, 0)",D)):Object.assign({},$,((e={})[C]=A?y+"px":"",e[T]=E?b+"px":"",e.transform="",e))}const et={name:"computeStyles",enabled:!0,phase:"beforeWrite",fn:function(t){var e=t.state,i=t.options,n=i.gpuAcceleration,s=void 0===n||n,o=i.adaptive,r=void 0===o||o,a=i.roundOffsets,l=void 0===a||a,c={placement:$(e.placement),variation:J(e.placement),popper:e.elements.popper,popperRect:e.rects.popper,gpuAcceleration:s,isFixed:"fixed"===e.options.strategy};null!=e.modifiersData.popperOffsets&&(e.styles.popper=Object.assign({},e.styles.popper,tt(Object.assign({},c,{offsets:e.modifiersData.popperOffsets,position:e.options.strategy,adaptive:r,roundOffsets:l})))),null!=e.modifiersData.arrow&&(e.styles.arrow=Object.assign({},e.styles.arrow,tt(Object.assign({},c,{offsets:e.modifiersData.arrow,position:"absolute",adaptive:!1,roundOffsets:l})))),e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-placement":e.placement})},data:{}};var it={passive:!0};const nt={name:"eventListeners",enabled:!0,phase:"write",fn:function(){},effect:function(t){var e=t.state,i=t.instance,n=t.options,s=n.scroll,o=void 0===s||s,r=n.resize,a=void 0===r||r,l=x(e.elements.popper),c=[].concat(e.scrollParents.reference,e.scrollParents.popper);return o&&c.forEach((function(t){t.addEventListener("scroll",i.update,it)})),a&&l.addEventListener("resize",i.update,it),function(){o&&c.forEach((function(t){t.removeEventListener("scroll",i.update,it)})),a&&l.removeEventListener("resize",i.update,it)}},data:{}};var st={left:"right",right:"left",bottom:"top",top:"bottom"};function ot(t){return t.replace(/left|right|bottom|top/g,(function(t){return st[t]}))}var rt={start:"end",end:"start"};function at(t){return t.replace(/start|end/g,(function(t){return rt[t]}))}function lt(t){var e=x(t);return{scrollLeft:e.pageXOffset,scrollTop:e.pageYOffset}}function ct(t){return F(R(t)).left+lt(t).scrollLeft}function ht(t){var e=W(t),i=e.overflow,n=e.overflowX,s=e.overflowY;return/auto|scroll|overlay|hidden/.test(i+s+n)}function dt(t){return["html","body","#document"].indexOf(O(t))>=0?t.ownerDocument.body:L(t)&&ht(t)?t:dt(q(t))}function ut(t,e){var i;void 0===e&&(e=[]);var n=dt(t),s=n===(null==(i=t.ownerDocument)?void 0:i.body),o=x(n),r=s?[o].concat(o.visualViewport||[],ht(n)?n:[]):n,a=e.concat(r);return s?a:a.concat(ut(q(r)))}function ft(t){return Object.assign({},t,{left:t.x,top:t.y,right:t.x+t.width,bottom:t.y+t.height})}function pt(t,e,i){return e===d?ft(function(t,e){var i=x(t),n=R(t),s=i.visualViewport,o=n.clientWidth,r=n.clientHeight,a=0,l=0;if(s){o=s.width,r=s.height;var c=j();(c||!c&&"fixed"===e)&&(a=s.offsetLeft,l=s.offsetTop)}return{width:o,height:r,x:a+ct(t),y:l}}(t,i)):k(e)?function(t,e){var i=F(t,!1,"fixed"===e);return i.top=i.top+t.clientTop,i.left=i.left+t.clientLeft,i.bottom=i.top+t.clientHeight,i.right=i.left+t.clientWidth,i.width=t.clientWidth,i.height=t.clientHeight,i.x=i.left,i.y=i.top,i}(e,i):ft(function(t){var e,i=R(t),n=lt(t),s=null==(e=t.ownerDocument)?void 0:e.body,o=I(i.scrollWidth,i.clientWidth,s?s.scrollWidth:0,s?s.clientWidth:0),r=I(i.scrollHeight,i.clientHeight,s?s.scrollHeight:0,s?s.clientHeight:0),a=-n.scrollLeft+ct(t),l=-n.scrollTop;return"rtl"===W(s||i).direction&&(a+=I(i.clientWidth,s?s.clientWidth:0)-o),{width:o,height:r,x:a,y:l}}(R(t)))}function mt(t){var e,r=t.reference,a=t.element,h=t.placement,d=h?$(h):null,u=h?J(h):null,f=r.x+r.width/2-a.width/2,p=r.y+r.height/2-a.height/2;switch(d){case i:e={x:f,y:r.y-a.height};break;case n:e={x:f,y:r.y+r.height};break;case s:e={x:r.x+r.width,y:p};break;case o:e={x:r.x-a.width,y:p};break;default:e={x:r.x,y:r.y}}var m=d?K(d):null;if(null!=m){var g="y"===m?"height":"width";switch(u){case l:e[m]=e[m]-(r[g]/2-a[g]/2);break;case c:e[m]=e[m]+(r[g]/2-a[g]/2)}}return e}function gt(t,e){void 0===e&&(e={});var o=e,r=o.placement,l=void 0===r?t.placement:r,c=o.strategy,p=void 0===c?t.strategy:c,m=o.boundary,g=void 0===m?h:m,_=o.rootBoundary,b=void 0===_?d:_,v=o.elementContext,y=void 0===v?u:v,w=o.altBoundary,E=void 0!==w&&w,A=o.padding,T=void 0===A?0:A,C=X("number"!=typeof T?T:U(T,a)),x=y===u?f:u,S=t.rects.popper,D=t.elements[E?x:y],$=function(t,e,i,n){var s="clippingParents"===e?function(t){var e=ut(q(t)),i=["absolute","fixed"].indexOf(W(t).position)>=0&&L(t)?Y(t):t;return k(i)?e.filter((function(t){return k(t)&&B(t,i)&&"body"!==O(t)})):[]}(t):[].concat(e),o=[].concat(s,[i]),r=o[0],a=o.reduce((function(e,i){var s=pt(t,i,n);return e.top=I(s.top,e.top),e.right=N(s.right,e.right),e.bottom=N(s.bottom,e.bottom),e.left=I(s.left,e.left),e}),pt(t,r,n));return a.width=a.right-a.left,a.height=a.bottom-a.top,a.x=a.left,a.y=a.top,a}(k(D)?D:D.contextElement||R(t.elements.popper),g,b,p),P=F(t.elements.reference),M=mt({reference:P,element:S,strategy:"absolute",placement:l}),j=ft(Object.assign({},S,M)),H=y===u?j:P,z={top:$.top-H.top+C.top,bottom:H.bottom-$.bottom+C.bottom,left:$.left-H.left+C.left,right:H.right-$.right+C.right},V=t.modifiersData.offset;if(y===u&&V){var K=V[l];Object.keys(z).forEach((function(t){var e=[s,n].indexOf(t)>=0?1:-1,o=[i,n].indexOf(t)>=0?"y":"x";z[t]+=K[o]*e}))}return z}const _t={name:"flip",enabled:!0,phase:"main",fn:function(t){var e=t.state,c=t.options,h=t.name;if(!e.modifiersData[h]._skip){for(var d=c.mainAxis,u=void 0===d||d,f=c.altAxis,g=void 0===f||f,_=c.fallbackPlacements,b=c.padding,v=c.boundary,y=c.rootBoundary,w=c.altBoundary,E=c.flipVariations,A=void 0===E||E,T=c.allowedAutoPlacements,C=e.options.placement,O=$(C),x=_||(O!==C&&A?function(t){if($(t)===r)return[];var e=ot(t);return[at(t),e,at(e)]}(C):[ot(C)]),k=[C].concat(x).reduce((function(t,i){return t.concat($(i)===r?function(t,e){void 0===e&&(e={});var i=e,n=i.placement,s=i.boundary,o=i.rootBoundary,r=i.padding,l=i.flipVariations,c=i.allowedAutoPlacements,h=void 0===c?m:c,d=J(n),u=d?l?p:p.filter((function(t){return J(t)===d})):a,f=u.filter((function(t){return h.indexOf(t)>=0}));0===f.length&&(f=u);var g=f.reduce((function(e,i){return e[i]=gt(t,{placement:i,boundary:s,rootBoundary:o,padding:r})[$(i)],e}),{});return Object.keys(g).sort((function(t,e){return g[t]-g[e]}))}(e,{placement:i,boundary:v,rootBoundary:y,padding:b,flipVariations:A,allowedAutoPlacements:T}):i)}),[]),L=e.rects.reference,S=e.rects.popper,D=new Map,I=!0,N=k[0],P=0;P=0,B=H?"width":"height",W=gt(e,{placement:M,boundary:v,rootBoundary:y,altBoundary:w,padding:b}),z=H?F?s:o:F?n:i;L[B]>S[B]&&(z=ot(z));var R=ot(z),q=[];if(u&&q.push(W[j]<=0),g&&q.push(W[z]<=0,W[R]<=0),q.every((function(t){return t}))){N=M,I=!1;break}D.set(M,q)}if(I)for(var V=function(t){var e=k.find((function(e){var i=D.get(e);if(i)return i.slice(0,t).every((function(t){return t}))}));if(e)return N=e,"break"},Y=A?3:1;Y>0&&"break"!==V(Y);Y--);e.placement!==N&&(e.modifiersData[h]._skip=!0,e.placement=N,e.reset=!0)}},requiresIfExists:["offset"],data:{_skip:!1}};function bt(t,e,i){return void 0===i&&(i={x:0,y:0}),{top:t.top-e.height-i.y,right:t.right-e.width+i.x,bottom:t.bottom-e.height+i.y,left:t.left-e.width-i.x}}function vt(t){return[i,s,n,o].some((function(e){return t[e]>=0}))}const yt={name:"hide",enabled:!0,phase:"main",requiresIfExists:["preventOverflow"],fn:function(t){var e=t.state,i=t.name,n=e.rects.reference,s=e.rects.popper,o=e.modifiersData.preventOverflow,r=gt(e,{elementContext:"reference"}),a=gt(e,{altBoundary:!0}),l=bt(r,n),c=bt(a,s,o),h=vt(l),d=vt(c);e.modifiersData[i]={referenceClippingOffsets:l,popperEscapeOffsets:c,isReferenceHidden:h,hasPopperEscaped:d},e.attributes.popper=Object.assign({},e.attributes.popper,{"data-popper-reference-hidden":h,"data-popper-escaped":d})}},wt={name:"offset",enabled:!0,phase:"main",requires:["popperOffsets"],fn:function(t){var e=t.state,n=t.options,r=t.name,a=n.offset,l=void 0===a?[0,0]:a,c=m.reduce((function(t,n){return t[n]=function(t,e,n){var r=$(t),a=[o,i].indexOf(r)>=0?-1:1,l="function"==typeof n?n(Object.assign({},e,{placement:t})):n,c=l[0],h=l[1];return c=c||0,h=(h||0)*a,[o,s].indexOf(r)>=0?{x:h,y:c}:{x:c,y:h}}(n,e.rects,l),t}),{}),h=c[e.placement],d=h.x,u=h.y;null!=e.modifiersData.popperOffsets&&(e.modifiersData.popperOffsets.x+=d,e.modifiersData.popperOffsets.y+=u),e.modifiersData[r]=c}},Et={name:"popperOffsets",enabled:!0,phase:"read",fn:function(t){var e=t.state,i=t.name;e.modifiersData[i]=mt({reference:e.rects.reference,element:e.rects.popper,strategy:"absolute",placement:e.placement})},data:{}},At={name:"preventOverflow",enabled:!0,phase:"main",fn:function(t){var e=t.state,r=t.options,a=t.name,c=r.mainAxis,h=void 0===c||c,d=r.altAxis,u=void 0!==d&&d,f=r.boundary,p=r.rootBoundary,m=r.altBoundary,g=r.padding,_=r.tether,b=void 0===_||_,v=r.tetherOffset,y=void 0===v?0:v,w=gt(e,{boundary:f,rootBoundary:p,padding:g,altBoundary:m}),E=$(e.placement),A=J(e.placement),T=!A,C=K(E),O="x"===C?"y":"x",x=e.modifiersData.popperOffsets,k=e.rects.reference,L=e.rects.popper,S="function"==typeof y?y(Object.assign({},e.rects,{placement:e.placement})):y,D="number"==typeof S?{mainAxis:S,altAxis:S}:Object.assign({mainAxis:0,altAxis:0},S),P=e.modifiersData.offset?e.modifiersData.offset[e.placement]:null,M={x:0,y:0};if(x){if(h){var j,F="y"===C?i:o,B="y"===C?n:s,W="y"===C?"height":"width",z=x[C],R=z+w[F],q=z-w[B],V=b?-L[W]/2:0,X=A===l?k[W]:L[W],U=A===l?-L[W]:-k[W],G=e.elements.arrow,Z=b&&G?H(G):{width:0,height:0},tt=e.modifiersData["arrow#persistent"]?e.modifiersData["arrow#persistent"].padding:{top:0,right:0,bottom:0,left:0},et=tt[F],it=tt[B],nt=Q(0,k[W],Z[W]),st=T?k[W]/2-V-nt-et-D.mainAxis:X-nt-et-D.mainAxis,ot=T?-k[W]/2+V+nt+it+D.mainAxis:U+nt+it+D.mainAxis,rt=e.elements.arrow&&Y(e.elements.arrow),at=rt?"y"===C?rt.clientTop||0:rt.clientLeft||0:0,lt=null!=(j=null==P?void 0:P[C])?j:0,ct=z+ot-lt,ht=Q(b?N(R,z+st-lt-at):R,z,b?I(q,ct):q);x[C]=ht,M[C]=ht-z}if(u){var dt,ut="x"===C?i:o,ft="x"===C?n:s,pt=x[O],mt="y"===O?"height":"width",_t=pt+w[ut],bt=pt-w[ft],vt=-1!==[i,o].indexOf(E),yt=null!=(dt=null==P?void 0:P[O])?dt:0,wt=vt?_t:pt-k[mt]-L[mt]-yt+D.altAxis,Et=vt?pt+k[mt]+L[mt]-yt-D.altAxis:bt,At=b&&vt?function(t,e,i){var n=Q(t,e,i);return n>i?i:n}(wt,pt,Et):Q(b?wt:_t,pt,b?Et:bt);x[O]=At,M[O]=At-pt}e.modifiersData[a]=M}},requiresIfExists:["offset"]};function Tt(t,e,i){void 0===i&&(i=!1);var n,s,o=L(e),r=L(e)&&function(t){var e=t.getBoundingClientRect(),i=P(e.width)/t.offsetWidth||1,n=P(e.height)/t.offsetHeight||1;return 1!==i||1!==n}(e),a=R(e),l=F(t,r,i),c={scrollLeft:0,scrollTop:0},h={x:0,y:0};return(o||!o&&!i)&&(("body"!==O(e)||ht(a))&&(c=(n=e)!==x(n)&&L(n)?{scrollLeft:(s=n).scrollLeft,scrollTop:s.scrollTop}:lt(n)),L(e)?((h=F(e,!0)).x+=e.clientLeft,h.y+=e.clientTop):a&&(h.x=ct(a))),{x:l.left+c.scrollLeft-h.x,y:l.top+c.scrollTop-h.y,width:l.width,height:l.height}}function Ct(t){var e=new Map,i=new Set,n=[];function s(t){i.add(t.name),[].concat(t.requires||[],t.requiresIfExists||[]).forEach((function(t){if(!i.has(t)){var n=e.get(t);n&&s(n)}})),n.push(t)}return t.forEach((function(t){e.set(t.name,t)})),t.forEach((function(t){i.has(t.name)||s(t)})),n}var Ot={placement:"bottom",modifiers:[],strategy:"absolute"};function xt(){for(var t=arguments.length,e=new Array(t),i=0;i$t.has(t)&&$t.get(t).get(e)||null,remove(t,e){if(!$t.has(t))return;const i=$t.get(t);i.delete(e),0===i.size&&$t.delete(t)}},Nt="transitionend",Pt=t=>(t&&window.CSS&&window.CSS.escape&&(t=t.replace(/#([^\s"#']+)/g,((t,e)=>`#${CSS.escape(e)}`))),t),Mt=t=>{t.dispatchEvent(new Event(Nt))},jt=t=>!(!t||"object"!=typeof t)&&(void 0!==t.jquery&&(t=t[0]),void 0!==t.nodeType),Ft=t=>jt(t)?t.jquery?t[0]:t:"string"==typeof t&&t.length>0?document.querySelector(Pt(t)):null,Ht=t=>{if(!jt(t)||0===t.getClientRects().length)return!1;const e="visible"===getComputedStyle(t).getPropertyValue("visibility"),i=t.closest("details:not([open])");if(!i)return e;if(i!==t){const e=t.closest("summary");if(e&&e.parentNode!==i)return!1;if(null===e)return!1}return e},Bt=t=>!t||t.nodeType!==Node.ELEMENT_NODE||!!t.classList.contains("disabled")||(void 0!==t.disabled?t.disabled:t.hasAttribute("disabled")&&"false"!==t.getAttribute("disabled")),Wt=t=>{if(!document.documentElement.attachShadow)return null;if("function"==typeof t.getRootNode){const e=t.getRootNode();return e instanceof ShadowRoot?e:null}return t instanceof ShadowRoot?t:t.parentNode?Wt(t.parentNode):null},zt=()=>{},Rt=t=>{t.offsetHeight},qt=()=>window.jQuery&&!document.body.hasAttribute("data-bs-no-jquery")?window.jQuery:null,Vt=[],Yt=()=>"rtl"===document.documentElement.dir,Kt=t=>{var e;e=()=>{const e=qt();if(e){const i=t.NAME,n=e.fn[i];e.fn[i]=t.jQueryInterface,e.fn[i].Constructor=t,e.fn[i].noConflict=()=>(e.fn[i]=n,t.jQueryInterface)}},"loading"===document.readyState?(Vt.length||document.addEventListener("DOMContentLoaded",(()=>{for(const t of Vt)t()})),Vt.push(e)):e()},Qt=(t,e=[],i=t)=>"function"==typeof t?t(...e):i,Xt=(t,e,i=!0)=>{if(!i)return void Qt(t);const n=(t=>{if(!t)return 0;let{transitionDuration:e,transitionDelay:i}=window.getComputedStyle(t);const n=Number.parseFloat(e),s=Number.parseFloat(i);return n||s?(e=e.split(",")[0],i=i.split(",")[0],1e3*(Number.parseFloat(e)+Number.parseFloat(i))):0})(e)+5;let s=!1;const o=({target:i})=>{i===e&&(s=!0,e.removeEventListener(Nt,o),Qt(t))};e.addEventListener(Nt,o),setTimeout((()=>{s||Mt(e)}),n)},Ut=(t,e,i,n)=>{const s=t.length;let o=t.indexOf(e);return-1===o?!i&&n?t[s-1]:t[0]:(o+=i?1:-1,n&&(o=(o+s)%s),t[Math.max(0,Math.min(o,s-1))])},Gt=/[^.]*(?=\..*)\.|.*/,Jt=/\..*/,Zt=/::\d+$/,te={};let ee=1;const ie={mouseenter:"mouseover",mouseleave:"mouseout"},ne=new Set(["click","dblclick","mouseup","mousedown","contextmenu","mousewheel","DOMMouseScroll","mouseover","mouseout","mousemove","selectstart","selectend","keydown","keypress","keyup","orientationchange","touchstart","touchmove","touchend","touchcancel","pointerdown","pointermove","pointerup","pointerleave","pointercancel","gesturestart","gesturechange","gestureend","focus","blur","change","reset","select","submit","focusin","focusout","load","unload","beforeunload","resize","move","DOMContentLoaded","readystatechange","error","abort","scroll"]);function se(t,e){return e&&`${e}::${ee++}`||t.uidEvent||ee++}function oe(t){const e=se(t);return t.uidEvent=e,te[e]=te[e]||{},te[e]}function re(t,e,i=null){return Object.values(t).find((t=>t.callable===e&&t.delegationSelector===i))}function ae(t,e,i){const n="string"==typeof e,s=n?i:e||i;let o=de(t);return ne.has(o)||(o=t),[n,s,o]}function le(t,e,i,n,s){if("string"!=typeof e||!t)return;let[o,r,a]=ae(e,i,n);if(e in ie){const t=t=>function(e){if(!e.relatedTarget||e.relatedTarget!==e.delegateTarget&&!e.delegateTarget.contains(e.relatedTarget))return t.call(this,e)};r=t(r)}const l=oe(t),c=l[a]||(l[a]={}),h=re(c,r,o?i:null);if(h)return void(h.oneOff=h.oneOff&&s);const d=se(r,e.replace(Gt,"")),u=o?function(t,e,i){return function n(s){const o=t.querySelectorAll(e);for(let{target:r}=s;r&&r!==this;r=r.parentNode)for(const a of o)if(a===r)return fe(s,{delegateTarget:r}),n.oneOff&&ue.off(t,s.type,e,i),i.apply(r,[s])}}(t,i,r):function(t,e){return function i(n){return fe(n,{delegateTarget:t}),i.oneOff&&ue.off(t,n.type,e),e.apply(t,[n])}}(t,r);u.delegationSelector=o?i:null,u.callable=r,u.oneOff=s,u.uidEvent=d,c[d]=u,t.addEventListener(a,u,o)}function ce(t,e,i,n,s){const o=re(e[i],n,s);o&&(t.removeEventListener(i,o,Boolean(s)),delete e[i][o.uidEvent])}function he(t,e,i,n){const s=e[i]||{};for(const[o,r]of Object.entries(s))o.includes(n)&&ce(t,e,i,r.callable,r.delegationSelector)}function de(t){return t=t.replace(Jt,""),ie[t]||t}const ue={on(t,e,i,n){le(t,e,i,n,!1)},one(t,e,i,n){le(t,e,i,n,!0)},off(t,e,i,n){if("string"!=typeof e||!t)return;const[s,o,r]=ae(e,i,n),a=r!==e,l=oe(t),c=l[r]||{},h=e.startsWith(".");if(void 0===o){if(h)for(const i of Object.keys(l))he(t,l,i,e.slice(1));for(const[i,n]of Object.entries(c)){const s=i.replace(Zt,"");a&&!e.includes(s)||ce(t,l,r,n.callable,n.delegationSelector)}}else{if(!Object.keys(c).length)return;ce(t,l,r,o,s?i:null)}},trigger(t,e,i){if("string"!=typeof e||!t)return null;const n=qt();let s=null,o=!0,r=!0,a=!1;e!==de(e)&&n&&(s=n.Event(e,i),n(t).trigger(s),o=!s.isPropagationStopped(),r=!s.isImmediatePropagationStopped(),a=s.isDefaultPrevented());const l=fe(new Event(e,{bubbles:o,cancelable:!0}),i);return a&&l.preventDefault(),r&&t.dispatchEvent(l),l.defaultPrevented&&s&&s.preventDefault(),l}};function fe(t,e={}){for(const[i,n]of Object.entries(e))try{t[i]=n}catch(e){Object.defineProperty(t,i,{configurable:!0,get:()=>n})}return t}function pe(t){if("true"===t)return!0;if("false"===t)return!1;if(t===Number(t).toString())return Number(t);if(""===t||"null"===t)return null;if("string"!=typeof t)return t;try{return JSON.parse(decodeURIComponent(t))}catch(e){return t}}function me(t){return t.replace(/[A-Z]/g,(t=>`-${t.toLowerCase()}`))}const ge={setDataAttribute(t,e,i){t.setAttribute(`data-bs-${me(e)}`,i)},removeDataAttribute(t,e){t.removeAttribute(`data-bs-${me(e)}`)},getDataAttributes(t){if(!t)return{};const e={},i=Object.keys(t.dataset).filter((t=>t.startsWith("bs")&&!t.startsWith("bsConfig")));for(const n of i){let i=n.replace(/^bs/,"");i=i.charAt(0).toLowerCase()+i.slice(1,i.length),e[i]=pe(t.dataset[n])}return e},getDataAttribute:(t,e)=>pe(t.getAttribute(`data-bs-${me(e)}`))};class _e{static get Default(){return{}}static get DefaultType(){return{}}static get NAME(){throw new Error('You have to implement the static method "NAME", for each component!')}_getConfig(t){return t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t}_mergeConfigObj(t,e){const i=jt(e)?ge.getDataAttribute(e,"config"):{};return{...this.constructor.Default,..."object"==typeof i?i:{},...jt(e)?ge.getDataAttributes(e):{},..."object"==typeof t?t:{}}}_typeCheckConfig(t,e=this.constructor.DefaultType){for(const[n,s]of Object.entries(e)){const e=t[n],o=jt(e)?"element":null==(i=e)?`${i}`:Object.prototype.toString.call(i).match(/\s([a-z]+)/i)[1].toLowerCase();if(!new RegExp(s).test(o))throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option "${n}" provided type "${o}" but expected type "${s}".`)}var i}}class be extends _e{constructor(t,e){super(),(t=Ft(t))&&(this._element=t,this._config=this._getConfig(e),It.set(this._element,this.constructor.DATA_KEY,this))}dispose(){It.remove(this._element,this.constructor.DATA_KEY),ue.off(this._element,this.constructor.EVENT_KEY);for(const t of Object.getOwnPropertyNames(this))this[t]=null}_queueCallback(t,e,i=!0){Xt(t,e,i)}_getConfig(t){return t=this._mergeConfigObj(t,this._element),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}static getInstance(t){return It.get(Ft(t),this.DATA_KEY)}static getOrCreateInstance(t,e={}){return this.getInstance(t)||new this(t,"object"==typeof e?e:null)}static get VERSION(){return"5.3.2"}static get DATA_KEY(){return`bs.${this.NAME}`}static get EVENT_KEY(){return`.${this.DATA_KEY}`}static eventName(t){return`${t}${this.EVENT_KEY}`}}const ve=t=>{let e=t.getAttribute("data-bs-target");if(!e||"#"===e){let i=t.getAttribute("href");if(!i||!i.includes("#")&&!i.startsWith("."))return null;i.includes("#")&&!i.startsWith("#")&&(i=`#${i.split("#")[1]}`),e=i&&"#"!==i?Pt(i.trim()):null}return e},ye={find:(t,e=document.documentElement)=>[].concat(...Element.prototype.querySelectorAll.call(e,t)),findOne:(t,e=document.documentElement)=>Element.prototype.querySelector.call(e,t),children:(t,e)=>[].concat(...t.children).filter((t=>t.matches(e))),parents(t,e){const i=[];let n=t.parentNode.closest(e);for(;n;)i.push(n),n=n.parentNode.closest(e);return i},prev(t,e){let i=t.previousElementSibling;for(;i;){if(i.matches(e))return[i];i=i.previousElementSibling}return[]},next(t,e){let i=t.nextElementSibling;for(;i;){if(i.matches(e))return[i];i=i.nextElementSibling}return[]},focusableChildren(t){const e=["a","button","input","textarea","select","details","[tabindex]",'[contenteditable="true"]'].map((t=>`${t}:not([tabindex^="-"])`)).join(",");return this.find(e,t).filter((t=>!Bt(t)&&Ht(t)))},getSelectorFromElement(t){const e=ve(t);return e&&ye.findOne(e)?e:null},getElementFromSelector(t){const e=ve(t);return e?ye.findOne(e):null},getMultipleElementsFromSelector(t){const e=ve(t);return e?ye.find(e):[]}},we=(t,e="hide")=>{const i=`click.dismiss${t.EVENT_KEY}`,n=t.NAME;ue.on(document,i,`[data-bs-dismiss="${n}"]`,(function(i){if(["A","AREA"].includes(this.tagName)&&i.preventDefault(),Bt(this))return;const s=ye.getElementFromSelector(this)||this.closest(`.${n}`);t.getOrCreateInstance(s)[e]()}))},Ee=".bs.alert",Ae=`close${Ee}`,Te=`closed${Ee}`;class Ce extends be{static get NAME(){return"alert"}close(){if(ue.trigger(this._element,Ae).defaultPrevented)return;this._element.classList.remove("show");const t=this._element.classList.contains("fade");this._queueCallback((()=>this._destroyElement()),this._element,t)}_destroyElement(){this._element.remove(),ue.trigger(this._element,Te),this.dispose()}static jQueryInterface(t){return this.each((function(){const e=Ce.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}we(Ce,"close"),Kt(Ce);const Oe='[data-bs-toggle="button"]';class xe extends be{static get NAME(){return"button"}toggle(){this._element.setAttribute("aria-pressed",this._element.classList.toggle("active"))}static jQueryInterface(t){return this.each((function(){const e=xe.getOrCreateInstance(this);"toggle"===t&&e[t]()}))}}ue.on(document,"click.bs.button.data-api",Oe,(t=>{t.preventDefault();const e=t.target.closest(Oe);xe.getOrCreateInstance(e).toggle()})),Kt(xe);const ke=".bs.swipe",Le=`touchstart${ke}`,Se=`touchmove${ke}`,De=`touchend${ke}`,$e=`pointerdown${ke}`,Ie=`pointerup${ke}`,Ne={endCallback:null,leftCallback:null,rightCallback:null},Pe={endCallback:"(function|null)",leftCallback:"(function|null)",rightCallback:"(function|null)"};class Me extends _e{constructor(t,e){super(),this._element=t,t&&Me.isSupported()&&(this._config=this._getConfig(e),this._deltaX=0,this._supportPointerEvents=Boolean(window.PointerEvent),this._initEvents())}static get Default(){return Ne}static get DefaultType(){return Pe}static get NAME(){return"swipe"}dispose(){ue.off(this._element,ke)}_start(t){this._supportPointerEvents?this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX):this._deltaX=t.touches[0].clientX}_end(t){this._eventIsPointerPenTouch(t)&&(this._deltaX=t.clientX-this._deltaX),this._handleSwipe(),Qt(this._config.endCallback)}_move(t){this._deltaX=t.touches&&t.touches.length>1?0:t.touches[0].clientX-this._deltaX}_handleSwipe(){const t=Math.abs(this._deltaX);if(t<=40)return;const e=t/this._deltaX;this._deltaX=0,e&&Qt(e>0?this._config.rightCallback:this._config.leftCallback)}_initEvents(){this._supportPointerEvents?(ue.on(this._element,$e,(t=>this._start(t))),ue.on(this._element,Ie,(t=>this._end(t))),this._element.classList.add("pointer-event")):(ue.on(this._element,Le,(t=>this._start(t))),ue.on(this._element,Se,(t=>this._move(t))),ue.on(this._element,De,(t=>this._end(t))))}_eventIsPointerPenTouch(t){return this._supportPointerEvents&&("pen"===t.pointerType||"touch"===t.pointerType)}static isSupported(){return"ontouchstart"in document.documentElement||navigator.maxTouchPoints>0}}const je=".bs.carousel",Fe=".data-api",He="next",Be="prev",We="left",ze="right",Re=`slide${je}`,qe=`slid${je}`,Ve=`keydown${je}`,Ye=`mouseenter${je}`,Ke=`mouseleave${je}`,Qe=`dragstart${je}`,Xe=`load${je}${Fe}`,Ue=`click${je}${Fe}`,Ge="carousel",Je="active",Ze=".active",ti=".carousel-item",ei=Ze+ti,ii={ArrowLeft:ze,ArrowRight:We},ni={interval:5e3,keyboard:!0,pause:"hover",ride:!1,touch:!0,wrap:!0},si={interval:"(number|boolean)",keyboard:"boolean",pause:"(string|boolean)",ride:"(boolean|string)",touch:"boolean",wrap:"boolean"};class oi extends be{constructor(t,e){super(t,e),this._interval=null,this._activeElement=null,this._isSliding=!1,this.touchTimeout=null,this._swipeHelper=null,this._indicatorsElement=ye.findOne(".carousel-indicators",this._element),this._addEventListeners(),this._config.ride===Ge&&this.cycle()}static get Default(){return ni}static get DefaultType(){return si}static get NAME(){return"carousel"}next(){this._slide(He)}nextWhenVisible(){!document.hidden&&Ht(this._element)&&this.next()}prev(){this._slide(Be)}pause(){this._isSliding&&Mt(this._element),this._clearInterval()}cycle(){this._clearInterval(),this._updateInterval(),this._interval=setInterval((()=>this.nextWhenVisible()),this._config.interval)}_maybeEnableCycle(){this._config.ride&&(this._isSliding?ue.one(this._element,qe,(()=>this.cycle())):this.cycle())}to(t){const e=this._getItems();if(t>e.length-1||t<0)return;if(this._isSliding)return void ue.one(this._element,qe,(()=>this.to(t)));const i=this._getItemIndex(this._getActive());if(i===t)return;const n=t>i?He:Be;this._slide(n,e[t])}dispose(){this._swipeHelper&&this._swipeHelper.dispose(),super.dispose()}_configAfterMerge(t){return t.defaultInterval=t.interval,t}_addEventListeners(){this._config.keyboard&&ue.on(this._element,Ve,(t=>this._keydown(t))),"hover"===this._config.pause&&(ue.on(this._element,Ye,(()=>this.pause())),ue.on(this._element,Ke,(()=>this._maybeEnableCycle()))),this._config.touch&&Me.isSupported()&&this._addTouchEventListeners()}_addTouchEventListeners(){for(const t of ye.find(".carousel-item img",this._element))ue.on(t,Qe,(t=>t.preventDefault()));const t={leftCallback:()=>this._slide(this._directionToOrder(We)),rightCallback:()=>this._slide(this._directionToOrder(ze)),endCallback:()=>{"hover"===this._config.pause&&(this.pause(),this.touchTimeout&&clearTimeout(this.touchTimeout),this.touchTimeout=setTimeout((()=>this._maybeEnableCycle()),500+this._config.interval))}};this._swipeHelper=new Me(this._element,t)}_keydown(t){if(/input|textarea/i.test(t.target.tagName))return;const e=ii[t.key];e&&(t.preventDefault(),this._slide(this._directionToOrder(e)))}_getItemIndex(t){return this._getItems().indexOf(t)}_setActiveIndicatorElement(t){if(!this._indicatorsElement)return;const e=ye.findOne(Ze,this._indicatorsElement);e.classList.remove(Je),e.removeAttribute("aria-current");const i=ye.findOne(`[data-bs-slide-to="${t}"]`,this._indicatorsElement);i&&(i.classList.add(Je),i.setAttribute("aria-current","true"))}_updateInterval(){const t=this._activeElement||this._getActive();if(!t)return;const e=Number.parseInt(t.getAttribute("data-bs-interval"),10);this._config.interval=e||this._config.defaultInterval}_slide(t,e=null){if(this._isSliding)return;const i=this._getActive(),n=t===He,s=e||Ut(this._getItems(),i,n,this._config.wrap);if(s===i)return;const o=this._getItemIndex(s),r=e=>ue.trigger(this._element,e,{relatedTarget:s,direction:this._orderToDirection(t),from:this._getItemIndex(i),to:o});if(r(Re).defaultPrevented)return;if(!i||!s)return;const a=Boolean(this._interval);this.pause(),this._isSliding=!0,this._setActiveIndicatorElement(o),this._activeElement=s;const l=n?"carousel-item-start":"carousel-item-end",c=n?"carousel-item-next":"carousel-item-prev";s.classList.add(c),Rt(s),i.classList.add(l),s.classList.add(l),this._queueCallback((()=>{s.classList.remove(l,c),s.classList.add(Je),i.classList.remove(Je,c,l),this._isSliding=!1,r(qe)}),i,this._isAnimated()),a&&this.cycle()}_isAnimated(){return this._element.classList.contains("slide")}_getActive(){return ye.findOne(ei,this._element)}_getItems(){return ye.find(ti,this._element)}_clearInterval(){this._interval&&(clearInterval(this._interval),this._interval=null)}_directionToOrder(t){return Yt()?t===We?Be:He:t===We?He:Be}_orderToDirection(t){return Yt()?t===Be?We:ze:t===Be?ze:We}static jQueryInterface(t){return this.each((function(){const e=oi.getOrCreateInstance(this,t);if("number"!=typeof t){if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}else e.to(t)}))}}ue.on(document,Ue,"[data-bs-slide], [data-bs-slide-to]",(function(t){const e=ye.getElementFromSelector(this);if(!e||!e.classList.contains(Ge))return;t.preventDefault();const i=oi.getOrCreateInstance(e),n=this.getAttribute("data-bs-slide-to");return n?(i.to(n),void i._maybeEnableCycle()):"next"===ge.getDataAttribute(this,"slide")?(i.next(),void i._maybeEnableCycle()):(i.prev(),void i._maybeEnableCycle())})),ue.on(window,Xe,(()=>{const t=ye.find('[data-bs-ride="carousel"]');for(const e of t)oi.getOrCreateInstance(e)})),Kt(oi);const ri=".bs.collapse",ai=`show${ri}`,li=`shown${ri}`,ci=`hide${ri}`,hi=`hidden${ri}`,di=`click${ri}.data-api`,ui="show",fi="collapse",pi="collapsing",mi=`:scope .${fi} .${fi}`,gi='[data-bs-toggle="collapse"]',_i={parent:null,toggle:!0},bi={parent:"(null|element)",toggle:"boolean"};class vi extends be{constructor(t,e){super(t,e),this._isTransitioning=!1,this._triggerArray=[];const i=ye.find(gi);for(const t of i){const e=ye.getSelectorFromElement(t),i=ye.find(e).filter((t=>t===this._element));null!==e&&i.length&&this._triggerArray.push(t)}this._initializeChildren(),this._config.parent||this._addAriaAndCollapsedClass(this._triggerArray,this._isShown()),this._config.toggle&&this.toggle()}static get Default(){return _i}static get DefaultType(){return bi}static get NAME(){return"collapse"}toggle(){this._isShown()?this.hide():this.show()}show(){if(this._isTransitioning||this._isShown())return;let t=[];if(this._config.parent&&(t=this._getFirstLevelChildren(".collapse.show, .collapse.collapsing").filter((t=>t!==this._element)).map((t=>vi.getOrCreateInstance(t,{toggle:!1})))),t.length&&t[0]._isTransitioning)return;if(ue.trigger(this._element,ai).defaultPrevented)return;for(const e of t)e.hide();const e=this._getDimension();this._element.classList.remove(fi),this._element.classList.add(pi),this._element.style[e]=0,this._addAriaAndCollapsedClass(this._triggerArray,!0),this._isTransitioning=!0;const i=`scroll${e[0].toUpperCase()+e.slice(1)}`;this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi,ui),this._element.style[e]="",ue.trigger(this._element,li)}),this._element,!0),this._element.style[e]=`${this._element[i]}px`}hide(){if(this._isTransitioning||!this._isShown())return;if(ue.trigger(this._element,ci).defaultPrevented)return;const t=this._getDimension();this._element.style[t]=`${this._element.getBoundingClientRect()[t]}px`,Rt(this._element),this._element.classList.add(pi),this._element.classList.remove(fi,ui);for(const t of this._triggerArray){const e=ye.getElementFromSelector(t);e&&!this._isShown(e)&&this._addAriaAndCollapsedClass([t],!1)}this._isTransitioning=!0,this._element.style[t]="",this._queueCallback((()=>{this._isTransitioning=!1,this._element.classList.remove(pi),this._element.classList.add(fi),ue.trigger(this._element,hi)}),this._element,!0)}_isShown(t=this._element){return t.classList.contains(ui)}_configAfterMerge(t){return t.toggle=Boolean(t.toggle),t.parent=Ft(t.parent),t}_getDimension(){return this._element.classList.contains("collapse-horizontal")?"width":"height"}_initializeChildren(){if(!this._config.parent)return;const t=this._getFirstLevelChildren(gi);for(const e of t){const t=ye.getElementFromSelector(e);t&&this._addAriaAndCollapsedClass([e],this._isShown(t))}}_getFirstLevelChildren(t){const e=ye.find(mi,this._config.parent);return ye.find(t,this._config.parent).filter((t=>!e.includes(t)))}_addAriaAndCollapsedClass(t,e){if(t.length)for(const i of t)i.classList.toggle("collapsed",!e),i.setAttribute("aria-expanded",e)}static jQueryInterface(t){const e={};return"string"==typeof t&&/show|hide/.test(t)&&(e.toggle=!1),this.each((function(){const i=vi.getOrCreateInstance(this,e);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t]()}}))}}ue.on(document,di,gi,(function(t){("A"===t.target.tagName||t.delegateTarget&&"A"===t.delegateTarget.tagName)&&t.preventDefault();for(const t of ye.getMultipleElementsFromSelector(this))vi.getOrCreateInstance(t,{toggle:!1}).toggle()})),Kt(vi);const yi="dropdown",wi=".bs.dropdown",Ei=".data-api",Ai="ArrowUp",Ti="ArrowDown",Ci=`hide${wi}`,Oi=`hidden${wi}`,xi=`show${wi}`,ki=`shown${wi}`,Li=`click${wi}${Ei}`,Si=`keydown${wi}${Ei}`,Di=`keyup${wi}${Ei}`,$i="show",Ii='[data-bs-toggle="dropdown"]:not(.disabled):not(:disabled)',Ni=`${Ii}.${$i}`,Pi=".dropdown-menu",Mi=Yt()?"top-end":"top-start",ji=Yt()?"top-start":"top-end",Fi=Yt()?"bottom-end":"bottom-start",Hi=Yt()?"bottom-start":"bottom-end",Bi=Yt()?"left-start":"right-start",Wi=Yt()?"right-start":"left-start",zi={autoClose:!0,boundary:"clippingParents",display:"dynamic",offset:[0,2],popperConfig:null,reference:"toggle"},Ri={autoClose:"(boolean|string)",boundary:"(string|element)",display:"string",offset:"(array|string|function)",popperConfig:"(null|object|function)",reference:"(string|element|object)"};class qi extends be{constructor(t,e){super(t,e),this._popper=null,this._parent=this._element.parentNode,this._menu=ye.next(this._element,Pi)[0]||ye.prev(this._element,Pi)[0]||ye.findOne(Pi,this._parent),this._inNavbar=this._detectNavbar()}static get Default(){return zi}static get DefaultType(){return Ri}static get NAME(){return yi}toggle(){return this._isShown()?this.hide():this.show()}show(){if(Bt(this._element)||this._isShown())return;const t={relatedTarget:this._element};if(!ue.trigger(this._element,xi,t).defaultPrevented){if(this._createPopper(),"ontouchstart"in document.documentElement&&!this._parent.closest(".navbar-nav"))for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._element.focus(),this._element.setAttribute("aria-expanded",!0),this._menu.classList.add($i),this._element.classList.add($i),ue.trigger(this._element,ki,t)}}hide(){if(Bt(this._element)||!this._isShown())return;const t={relatedTarget:this._element};this._completeHide(t)}dispose(){this._popper&&this._popper.destroy(),super.dispose()}update(){this._inNavbar=this._detectNavbar(),this._popper&&this._popper.update()}_completeHide(t){if(!ue.trigger(this._element,Ci,t).defaultPrevented){if("ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._popper&&this._popper.destroy(),this._menu.classList.remove($i),this._element.classList.remove($i),this._element.setAttribute("aria-expanded","false"),ge.removeDataAttribute(this._menu,"popper"),ue.trigger(this._element,Oi,t)}}_getConfig(t){if("object"==typeof(t=super._getConfig(t)).reference&&!jt(t.reference)&&"function"!=typeof t.reference.getBoundingClientRect)throw new TypeError(`${yi.toUpperCase()}: Option "reference" provided type "object" without a required "getBoundingClientRect" method.`);return t}_createPopper(){if(void 0===e)throw new TypeError("Bootstrap's dropdowns require Popper (https://popper.js.org)");let t=this._element;"parent"===this._config.reference?t=this._parent:jt(this._config.reference)?t=Ft(this._config.reference):"object"==typeof this._config.reference&&(t=this._config.reference);const i=this._getPopperConfig();this._popper=St(t,this._menu,i)}_isShown(){return this._menu.classList.contains($i)}_getPlacement(){const t=this._parent;if(t.classList.contains("dropend"))return Bi;if(t.classList.contains("dropstart"))return Wi;if(t.classList.contains("dropup-center"))return"top";if(t.classList.contains("dropdown-center"))return"bottom";const e="end"===getComputedStyle(this._menu).getPropertyValue("--bs-position").trim();return t.classList.contains("dropup")?e?ji:Mi:e?Hi:Fi}_detectNavbar(){return null!==this._element.closest(".navbar")}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_getPopperConfig(){const t={placement:this._getPlacement(),modifiers:[{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"offset",options:{offset:this._getOffset()}}]};return(this._inNavbar||"static"===this._config.display)&&(ge.setDataAttribute(this._menu,"popper","static"),t.modifiers=[{name:"applyStyles",enabled:!1}]),{...t,...Qt(this._config.popperConfig,[t])}}_selectMenuItem({key:t,target:e}){const i=ye.find(".dropdown-menu .dropdown-item:not(.disabled):not(:disabled)",this._menu).filter((t=>Ht(t)));i.length&&Ut(i,e,t===Ti,!i.includes(e)).focus()}static jQueryInterface(t){return this.each((function(){const e=qi.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}static clearMenus(t){if(2===t.button||"keyup"===t.type&&"Tab"!==t.key)return;const e=ye.find(Ni);for(const i of e){const e=qi.getInstance(i);if(!e||!1===e._config.autoClose)continue;const n=t.composedPath(),s=n.includes(e._menu);if(n.includes(e._element)||"inside"===e._config.autoClose&&!s||"outside"===e._config.autoClose&&s)continue;if(e._menu.contains(t.target)&&("keyup"===t.type&&"Tab"===t.key||/input|select|option|textarea|form/i.test(t.target.tagName)))continue;const o={relatedTarget:e._element};"click"===t.type&&(o.clickEvent=t),e._completeHide(o)}}static dataApiKeydownHandler(t){const e=/input|textarea/i.test(t.target.tagName),i="Escape"===t.key,n=[Ai,Ti].includes(t.key);if(!n&&!i)return;if(e&&!i)return;t.preventDefault();const s=this.matches(Ii)?this:ye.prev(this,Ii)[0]||ye.next(this,Ii)[0]||ye.findOne(Ii,t.delegateTarget.parentNode),o=qi.getOrCreateInstance(s);if(n)return t.stopPropagation(),o.show(),void o._selectMenuItem(t);o._isShown()&&(t.stopPropagation(),o.hide(),s.focus())}}ue.on(document,Si,Ii,qi.dataApiKeydownHandler),ue.on(document,Si,Pi,qi.dataApiKeydownHandler),ue.on(document,Li,qi.clearMenus),ue.on(document,Di,qi.clearMenus),ue.on(document,Li,Ii,(function(t){t.preventDefault(),qi.getOrCreateInstance(this).toggle()})),Kt(qi);const Vi="backdrop",Yi="show",Ki=`mousedown.bs.${Vi}`,Qi={className:"modal-backdrop",clickCallback:null,isAnimated:!1,isVisible:!0,rootElement:"body"},Xi={className:"string",clickCallback:"(function|null)",isAnimated:"boolean",isVisible:"boolean",rootElement:"(element|string)"};class Ui extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isAppended=!1,this._element=null}static get Default(){return Qi}static get DefaultType(){return Xi}static get NAME(){return Vi}show(t){if(!this._config.isVisible)return void Qt(t);this._append();const e=this._getElement();this._config.isAnimated&&Rt(e),e.classList.add(Yi),this._emulateAnimation((()=>{Qt(t)}))}hide(t){this._config.isVisible?(this._getElement().classList.remove(Yi),this._emulateAnimation((()=>{this.dispose(),Qt(t)}))):Qt(t)}dispose(){this._isAppended&&(ue.off(this._element,Ki),this._element.remove(),this._isAppended=!1)}_getElement(){if(!this._element){const t=document.createElement("div");t.className=this._config.className,this._config.isAnimated&&t.classList.add("fade"),this._element=t}return this._element}_configAfterMerge(t){return t.rootElement=Ft(t.rootElement),t}_append(){if(this._isAppended)return;const t=this._getElement();this._config.rootElement.append(t),ue.on(t,Ki,(()=>{Qt(this._config.clickCallback)})),this._isAppended=!0}_emulateAnimation(t){Xt(t,this._getElement(),this._config.isAnimated)}}const Gi=".bs.focustrap",Ji=`focusin${Gi}`,Zi=`keydown.tab${Gi}`,tn="backward",en={autofocus:!0,trapElement:null},nn={autofocus:"boolean",trapElement:"element"};class sn extends _e{constructor(t){super(),this._config=this._getConfig(t),this._isActive=!1,this._lastTabNavDirection=null}static get Default(){return en}static get DefaultType(){return nn}static get NAME(){return"focustrap"}activate(){this._isActive||(this._config.autofocus&&this._config.trapElement.focus(),ue.off(document,Gi),ue.on(document,Ji,(t=>this._handleFocusin(t))),ue.on(document,Zi,(t=>this._handleKeydown(t))),this._isActive=!0)}deactivate(){this._isActive&&(this._isActive=!1,ue.off(document,Gi))}_handleFocusin(t){const{trapElement:e}=this._config;if(t.target===document||t.target===e||e.contains(t.target))return;const i=ye.focusableChildren(e);0===i.length?e.focus():this._lastTabNavDirection===tn?i[i.length-1].focus():i[0].focus()}_handleKeydown(t){"Tab"===t.key&&(this._lastTabNavDirection=t.shiftKey?tn:"forward")}}const on=".fixed-top, .fixed-bottom, .is-fixed, .sticky-top",rn=".sticky-top",an="padding-right",ln="margin-right";class cn{constructor(){this._element=document.body}getWidth(){const t=document.documentElement.clientWidth;return Math.abs(window.innerWidth-t)}hide(){const t=this.getWidth();this._disableOverFlow(),this._setElementAttributes(this._element,an,(e=>e+t)),this._setElementAttributes(on,an,(e=>e+t)),this._setElementAttributes(rn,ln,(e=>e-t))}reset(){this._resetElementAttributes(this._element,"overflow"),this._resetElementAttributes(this._element,an),this._resetElementAttributes(on,an),this._resetElementAttributes(rn,ln)}isOverflowing(){return this.getWidth()>0}_disableOverFlow(){this._saveInitialAttribute(this._element,"overflow"),this._element.style.overflow="hidden"}_setElementAttributes(t,e,i){const n=this.getWidth();this._applyManipulationCallback(t,(t=>{if(t!==this._element&&window.innerWidth>t.clientWidth+n)return;this._saveInitialAttribute(t,e);const s=window.getComputedStyle(t).getPropertyValue(e);t.style.setProperty(e,`${i(Number.parseFloat(s))}px`)}))}_saveInitialAttribute(t,e){const i=t.style.getPropertyValue(e);i&&ge.setDataAttribute(t,e,i)}_resetElementAttributes(t,e){this._applyManipulationCallback(t,(t=>{const i=ge.getDataAttribute(t,e);null!==i?(ge.removeDataAttribute(t,e),t.style.setProperty(e,i)):t.style.removeProperty(e)}))}_applyManipulationCallback(t,e){if(jt(t))e(t);else for(const i of ye.find(t,this._element))e(i)}}const hn=".bs.modal",dn=`hide${hn}`,un=`hidePrevented${hn}`,fn=`hidden${hn}`,pn=`show${hn}`,mn=`shown${hn}`,gn=`resize${hn}`,_n=`click.dismiss${hn}`,bn=`mousedown.dismiss${hn}`,vn=`keydown.dismiss${hn}`,yn=`click${hn}.data-api`,wn="modal-open",En="show",An="modal-static",Tn={backdrop:!0,focus:!0,keyboard:!0},Cn={backdrop:"(boolean|string)",focus:"boolean",keyboard:"boolean"};class On extends be{constructor(t,e){super(t,e),this._dialog=ye.findOne(".modal-dialog",this._element),this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._isShown=!1,this._isTransitioning=!1,this._scrollBar=new cn,this._addEventListeners()}static get Default(){return Tn}static get DefaultType(){return Cn}static get NAME(){return"modal"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||this._isTransitioning||ue.trigger(this._element,pn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._isTransitioning=!0,this._scrollBar.hide(),document.body.classList.add(wn),this._adjustDialog(),this._backdrop.show((()=>this._showElement(t))))}hide(){this._isShown&&!this._isTransitioning&&(ue.trigger(this._element,dn).defaultPrevented||(this._isShown=!1,this._isTransitioning=!0,this._focustrap.deactivate(),this._element.classList.remove(En),this._queueCallback((()=>this._hideModal()),this._element,this._isAnimated())))}dispose(){ue.off(window,hn),ue.off(this._dialog,hn),this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}handleUpdate(){this._adjustDialog()}_initializeBackDrop(){return new Ui({isVisible:Boolean(this._config.backdrop),isAnimated:this._isAnimated()})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_showElement(t){document.body.contains(this._element)||document.body.append(this._element),this._element.style.display="block",this._element.removeAttribute("aria-hidden"),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.scrollTop=0;const e=ye.findOne(".modal-body",this._dialog);e&&(e.scrollTop=0),Rt(this._element),this._element.classList.add(En),this._queueCallback((()=>{this._config.focus&&this._focustrap.activate(),this._isTransitioning=!1,ue.trigger(this._element,mn,{relatedTarget:t})}),this._dialog,this._isAnimated())}_addEventListeners(){ue.on(this._element,vn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():this._triggerBackdropTransition())})),ue.on(window,gn,(()=>{this._isShown&&!this._isTransitioning&&this._adjustDialog()})),ue.on(this._element,bn,(t=>{ue.one(this._element,_n,(e=>{this._element===t.target&&this._element===e.target&&("static"!==this._config.backdrop?this._config.backdrop&&this.hide():this._triggerBackdropTransition())}))}))}_hideModal(){this._element.style.display="none",this._element.setAttribute("aria-hidden",!0),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._isTransitioning=!1,this._backdrop.hide((()=>{document.body.classList.remove(wn),this._resetAdjustments(),this._scrollBar.reset(),ue.trigger(this._element,fn)}))}_isAnimated(){return this._element.classList.contains("fade")}_triggerBackdropTransition(){if(ue.trigger(this._element,un).defaultPrevented)return;const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._element.style.overflowY;"hidden"===e||this._element.classList.contains(An)||(t||(this._element.style.overflowY="hidden"),this._element.classList.add(An),this._queueCallback((()=>{this._element.classList.remove(An),this._queueCallback((()=>{this._element.style.overflowY=e}),this._dialog)}),this._dialog),this._element.focus())}_adjustDialog(){const t=this._element.scrollHeight>document.documentElement.clientHeight,e=this._scrollBar.getWidth(),i=e>0;if(i&&!t){const t=Yt()?"paddingLeft":"paddingRight";this._element.style[t]=`${e}px`}if(!i&&t){const t=Yt()?"paddingRight":"paddingLeft";this._element.style[t]=`${e}px`}}_resetAdjustments(){this._element.style.paddingLeft="",this._element.style.paddingRight=""}static jQueryInterface(t,e){return this.each((function(){const i=On.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===i[t])throw new TypeError(`No method named "${t}"`);i[t](e)}}))}}ue.on(document,yn,'[data-bs-toggle="modal"]',(function(t){const e=ye.getElementFromSelector(this);["A","AREA"].includes(this.tagName)&&t.preventDefault(),ue.one(e,pn,(t=>{t.defaultPrevented||ue.one(e,fn,(()=>{Ht(this)&&this.focus()}))}));const i=ye.findOne(".modal.show");i&&On.getInstance(i).hide(),On.getOrCreateInstance(e).toggle(this)})),we(On),Kt(On);const xn=".bs.offcanvas",kn=".data-api",Ln=`load${xn}${kn}`,Sn="show",Dn="showing",$n="hiding",In=".offcanvas.show",Nn=`show${xn}`,Pn=`shown${xn}`,Mn=`hide${xn}`,jn=`hidePrevented${xn}`,Fn=`hidden${xn}`,Hn=`resize${xn}`,Bn=`click${xn}${kn}`,Wn=`keydown.dismiss${xn}`,zn={backdrop:!0,keyboard:!0,scroll:!1},Rn={backdrop:"(boolean|string)",keyboard:"boolean",scroll:"boolean"};class qn extends be{constructor(t,e){super(t,e),this._isShown=!1,this._backdrop=this._initializeBackDrop(),this._focustrap=this._initializeFocusTrap(),this._addEventListeners()}static get Default(){return zn}static get DefaultType(){return Rn}static get NAME(){return"offcanvas"}toggle(t){return this._isShown?this.hide():this.show(t)}show(t){this._isShown||ue.trigger(this._element,Nn,{relatedTarget:t}).defaultPrevented||(this._isShown=!0,this._backdrop.show(),this._config.scroll||(new cn).hide(),this._element.setAttribute("aria-modal",!0),this._element.setAttribute("role","dialog"),this._element.classList.add(Dn),this._queueCallback((()=>{this._config.scroll&&!this._config.backdrop||this._focustrap.activate(),this._element.classList.add(Sn),this._element.classList.remove(Dn),ue.trigger(this._element,Pn,{relatedTarget:t})}),this._element,!0))}hide(){this._isShown&&(ue.trigger(this._element,Mn).defaultPrevented||(this._focustrap.deactivate(),this._element.blur(),this._isShown=!1,this._element.classList.add($n),this._backdrop.hide(),this._queueCallback((()=>{this._element.classList.remove(Sn,$n),this._element.removeAttribute("aria-modal"),this._element.removeAttribute("role"),this._config.scroll||(new cn).reset(),ue.trigger(this._element,Fn)}),this._element,!0)))}dispose(){this._backdrop.dispose(),this._focustrap.deactivate(),super.dispose()}_initializeBackDrop(){const t=Boolean(this._config.backdrop);return new Ui({className:"offcanvas-backdrop",isVisible:t,isAnimated:!0,rootElement:this._element.parentNode,clickCallback:t?()=>{"static"!==this._config.backdrop?this.hide():ue.trigger(this._element,jn)}:null})}_initializeFocusTrap(){return new sn({trapElement:this._element})}_addEventListeners(){ue.on(this._element,Wn,(t=>{"Escape"===t.key&&(this._config.keyboard?this.hide():ue.trigger(this._element,jn))}))}static jQueryInterface(t){return this.each((function(){const e=qn.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}ue.on(document,Bn,'[data-bs-toggle="offcanvas"]',(function(t){const e=ye.getElementFromSelector(this);if(["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this))return;ue.one(e,Fn,(()=>{Ht(this)&&this.focus()}));const i=ye.findOne(In);i&&i!==e&&qn.getInstance(i).hide(),qn.getOrCreateInstance(e).toggle(this)})),ue.on(window,Ln,(()=>{for(const t of ye.find(In))qn.getOrCreateInstance(t).show()})),ue.on(window,Hn,(()=>{for(const t of ye.find("[aria-modal][class*=show][class*=offcanvas-]"))"fixed"!==getComputedStyle(t).position&&qn.getOrCreateInstance(t).hide()})),we(qn),Kt(qn);const Vn={"*":["class","dir","id","lang","role",/^aria-[\w-]*$/i],a:["target","href","title","rel"],area:[],b:[],br:[],col:[],code:[],div:[],em:[],hr:[],h1:[],h2:[],h3:[],h4:[],h5:[],h6:[],i:[],img:["src","srcset","alt","title","width","height"],li:[],ol:[],p:[],pre:[],s:[],small:[],span:[],sub:[],sup:[],strong:[],u:[],ul:[]},Yn=new Set(["background","cite","href","itemtype","longdesc","poster","src","xlink:href"]),Kn=/^(?!javascript:)(?:[a-z0-9+.-]+:|[^&:/?#]*(?:[/?#]|$))/i,Qn=(t,e)=>{const i=t.nodeName.toLowerCase();return e.includes(i)?!Yn.has(i)||Boolean(Kn.test(t.nodeValue)):e.filter((t=>t instanceof RegExp)).some((t=>t.test(i)))},Xn={allowList:Vn,content:{},extraClass:"",html:!1,sanitize:!0,sanitizeFn:null,template:"
"},Un={allowList:"object",content:"object",extraClass:"(string|function)",html:"boolean",sanitize:"boolean",sanitizeFn:"(null|function)",template:"string"},Gn={entry:"(string|element|function|null)",selector:"(string|element)"};class Jn extends _e{constructor(t){super(),this._config=this._getConfig(t)}static get Default(){return Xn}static get DefaultType(){return Un}static get NAME(){return"TemplateFactory"}getContent(){return Object.values(this._config.content).map((t=>this._resolvePossibleFunction(t))).filter(Boolean)}hasContent(){return this.getContent().length>0}changeContent(t){return this._checkContent(t),this._config.content={...this._config.content,...t},this}toHtml(){const t=document.createElement("div");t.innerHTML=this._maybeSanitize(this._config.template);for(const[e,i]of Object.entries(this._config.content))this._setContent(t,i,e);const e=t.children[0],i=this._resolvePossibleFunction(this._config.extraClass);return i&&e.classList.add(...i.split(" ")),e}_typeCheckConfig(t){super._typeCheckConfig(t),this._checkContent(t.content)}_checkContent(t){for(const[e,i]of Object.entries(t))super._typeCheckConfig({selector:e,entry:i},Gn)}_setContent(t,e,i){const n=ye.findOne(i,t);n&&((e=this._resolvePossibleFunction(e))?jt(e)?this._putElementInTemplate(Ft(e),n):this._config.html?n.innerHTML=this._maybeSanitize(e):n.textContent=e:n.remove())}_maybeSanitize(t){return this._config.sanitize?function(t,e,i){if(!t.length)return t;if(i&&"function"==typeof i)return i(t);const n=(new window.DOMParser).parseFromString(t,"text/html"),s=[].concat(...n.body.querySelectorAll("*"));for(const t of s){const i=t.nodeName.toLowerCase();if(!Object.keys(e).includes(i)){t.remove();continue}const n=[].concat(...t.attributes),s=[].concat(e["*"]||[],e[i]||[]);for(const e of n)Qn(e,s)||t.removeAttribute(e.nodeName)}return n.body.innerHTML}(t,this._config.allowList,this._config.sanitizeFn):t}_resolvePossibleFunction(t){return Qt(t,[this])}_putElementInTemplate(t,e){if(this._config.html)return e.innerHTML="",void e.append(t);e.textContent=t.textContent}}const Zn=new Set(["sanitize","allowList","sanitizeFn"]),ts="fade",es="show",is=".modal",ns="hide.bs.modal",ss="hover",os="focus",rs={AUTO:"auto",TOP:"top",RIGHT:Yt()?"left":"right",BOTTOM:"bottom",LEFT:Yt()?"right":"left"},as={allowList:Vn,animation:!0,boundary:"clippingParents",container:!1,customClass:"",delay:0,fallbackPlacements:["top","right","bottom","left"],html:!1,offset:[0,6],placement:"top",popperConfig:null,sanitize:!0,sanitizeFn:null,selector:!1,template:'',title:"",trigger:"hover focus"},ls={allowList:"object",animation:"boolean",boundary:"(string|element)",container:"(string|element|boolean)",customClass:"(string|function)",delay:"(number|object)",fallbackPlacements:"array",html:"boolean",offset:"(array|string|function)",placement:"(string|function)",popperConfig:"(null|object|function)",sanitize:"boolean",sanitizeFn:"(null|function)",selector:"(string|boolean)",template:"string",title:"(string|element|function)",trigger:"string"};class cs extends be{constructor(t,i){if(void 0===e)throw new TypeError("Bootstrap's tooltips require Popper (https://popper.js.org)");super(t,i),this._isEnabled=!0,this._timeout=0,this._isHovered=null,this._activeTrigger={},this._popper=null,this._templateFactory=null,this._newContent=null,this.tip=null,this._setListeners(),this._config.selector||this._fixTitle()}static get Default(){return as}static get DefaultType(){return ls}static get NAME(){return"tooltip"}enable(){this._isEnabled=!0}disable(){this._isEnabled=!1}toggleEnabled(){this._isEnabled=!this._isEnabled}toggle(){this._isEnabled&&(this._activeTrigger.click=!this._activeTrigger.click,this._isShown()?this._leave():this._enter())}dispose(){clearTimeout(this._timeout),ue.off(this._element.closest(is),ns,this._hideModalHandler),this._element.getAttribute("data-bs-original-title")&&this._element.setAttribute("title",this._element.getAttribute("data-bs-original-title")),this._disposePopper(),super.dispose()}show(){if("none"===this._element.style.display)throw new Error("Please use show on visible elements");if(!this._isWithContent()||!this._isEnabled)return;const t=ue.trigger(this._element,this.constructor.eventName("show")),e=(Wt(this._element)||this._element.ownerDocument.documentElement).contains(this._element);if(t.defaultPrevented||!e)return;this._disposePopper();const i=this._getTipElement();this._element.setAttribute("aria-describedby",i.getAttribute("id"));const{container:n}=this._config;if(this._element.ownerDocument.documentElement.contains(this.tip)||(n.append(i),ue.trigger(this._element,this.constructor.eventName("inserted"))),this._popper=this._createPopper(i),i.classList.add(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.on(t,"mouseover",zt);this._queueCallback((()=>{ue.trigger(this._element,this.constructor.eventName("shown")),!1===this._isHovered&&this._leave(),this._isHovered=!1}),this.tip,this._isAnimated())}hide(){if(this._isShown()&&!ue.trigger(this._element,this.constructor.eventName("hide")).defaultPrevented){if(this._getTipElement().classList.remove(es),"ontouchstart"in document.documentElement)for(const t of[].concat(...document.body.children))ue.off(t,"mouseover",zt);this._activeTrigger.click=!1,this._activeTrigger[os]=!1,this._activeTrigger[ss]=!1,this._isHovered=null,this._queueCallback((()=>{this._isWithActiveTrigger()||(this._isHovered||this._disposePopper(),this._element.removeAttribute("aria-describedby"),ue.trigger(this._element,this.constructor.eventName("hidden")))}),this.tip,this._isAnimated())}}update(){this._popper&&this._popper.update()}_isWithContent(){return Boolean(this._getTitle())}_getTipElement(){return this.tip||(this.tip=this._createTipElement(this._newContent||this._getContentForTemplate())),this.tip}_createTipElement(t){const e=this._getTemplateFactory(t).toHtml();if(!e)return null;e.classList.remove(ts,es),e.classList.add(`bs-${this.constructor.NAME}-auto`);const i=(t=>{do{t+=Math.floor(1e6*Math.random())}while(document.getElementById(t));return t})(this.constructor.NAME).toString();return e.setAttribute("id",i),this._isAnimated()&&e.classList.add(ts),e}setContent(t){this._newContent=t,this._isShown()&&(this._disposePopper(),this.show())}_getTemplateFactory(t){return this._templateFactory?this._templateFactory.changeContent(t):this._templateFactory=new Jn({...this._config,content:t,extraClass:this._resolvePossibleFunction(this._config.customClass)}),this._templateFactory}_getContentForTemplate(){return{".tooltip-inner":this._getTitle()}}_getTitle(){return this._resolvePossibleFunction(this._config.title)||this._element.getAttribute("data-bs-original-title")}_initializeOnDelegatedTarget(t){return this.constructor.getOrCreateInstance(t.delegateTarget,this._getDelegateConfig())}_isAnimated(){return this._config.animation||this.tip&&this.tip.classList.contains(ts)}_isShown(){return this.tip&&this.tip.classList.contains(es)}_createPopper(t){const e=Qt(this._config.placement,[this,t,this._element]),i=rs[e.toUpperCase()];return St(this._element,t,this._getPopperConfig(i))}_getOffset(){const{offset:t}=this._config;return"string"==typeof t?t.split(",").map((t=>Number.parseInt(t,10))):"function"==typeof t?e=>t(e,this._element):t}_resolvePossibleFunction(t){return Qt(t,[this._element])}_getPopperConfig(t){const e={placement:t,modifiers:[{name:"flip",options:{fallbackPlacements:this._config.fallbackPlacements}},{name:"offset",options:{offset:this._getOffset()}},{name:"preventOverflow",options:{boundary:this._config.boundary}},{name:"arrow",options:{element:`.${this.constructor.NAME}-arrow`}},{name:"preSetPlacement",enabled:!0,phase:"beforeMain",fn:t=>{this._getTipElement().setAttribute("data-popper-placement",t.state.placement)}}]};return{...e,...Qt(this._config.popperConfig,[e])}}_setListeners(){const t=this._config.trigger.split(" ");for(const e of t)if("click"===e)ue.on(this._element,this.constructor.eventName("click"),this._config.selector,(t=>{this._initializeOnDelegatedTarget(t).toggle()}));else if("manual"!==e){const t=e===ss?this.constructor.eventName("mouseenter"):this.constructor.eventName("focusin"),i=e===ss?this.constructor.eventName("mouseleave"):this.constructor.eventName("focusout");ue.on(this._element,t,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusin"===t.type?os:ss]=!0,e._enter()})),ue.on(this._element,i,this._config.selector,(t=>{const e=this._initializeOnDelegatedTarget(t);e._activeTrigger["focusout"===t.type?os:ss]=e._element.contains(t.relatedTarget),e._leave()}))}this._hideModalHandler=()=>{this._element&&this.hide()},ue.on(this._element.closest(is),ns,this._hideModalHandler)}_fixTitle(){const t=this._element.getAttribute("title");t&&(this._element.getAttribute("aria-label")||this._element.textContent.trim()||this._element.setAttribute("aria-label",t),this._element.setAttribute("data-bs-original-title",t),this._element.removeAttribute("title"))}_enter(){this._isShown()||this._isHovered?this._isHovered=!0:(this._isHovered=!0,this._setTimeout((()=>{this._isHovered&&this.show()}),this._config.delay.show))}_leave(){this._isWithActiveTrigger()||(this._isHovered=!1,this._setTimeout((()=>{this._isHovered||this.hide()}),this._config.delay.hide))}_setTimeout(t,e){clearTimeout(this._timeout),this._timeout=setTimeout(t,e)}_isWithActiveTrigger(){return Object.values(this._activeTrigger).includes(!0)}_getConfig(t){const e=ge.getDataAttributes(this._element);for(const t of Object.keys(e))Zn.has(t)&&delete e[t];return t={...e,..."object"==typeof t&&t?t:{}},t=this._mergeConfigObj(t),t=this._configAfterMerge(t),this._typeCheckConfig(t),t}_configAfterMerge(t){return t.container=!1===t.container?document.body:Ft(t.container),"number"==typeof t.delay&&(t.delay={show:t.delay,hide:t.delay}),"number"==typeof t.title&&(t.title=t.title.toString()),"number"==typeof t.content&&(t.content=t.content.toString()),t}_getDelegateConfig(){const t={};for(const[e,i]of Object.entries(this._config))this.constructor.Default[e]!==i&&(t[e]=i);return t.selector=!1,t.trigger="manual",t}_disposePopper(){this._popper&&(this._popper.destroy(),this._popper=null),this.tip&&(this.tip.remove(),this.tip=null)}static jQueryInterface(t){return this.each((function(){const e=cs.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(cs);const hs={...cs.Default,content:"",offset:[0,8],placement:"right",template:'',trigger:"click"},ds={...cs.DefaultType,content:"(null|string|element|function)"};class us extends cs{static get Default(){return hs}static get DefaultType(){return ds}static get NAME(){return"popover"}_isWithContent(){return this._getTitle()||this._getContent()}_getContentForTemplate(){return{".popover-header":this._getTitle(),".popover-body":this._getContent()}}_getContent(){return this._resolvePossibleFunction(this._config.content)}static jQueryInterface(t){return this.each((function(){const e=us.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t]()}}))}}Kt(us);const fs=".bs.scrollspy",ps=`activate${fs}`,ms=`click${fs}`,gs=`load${fs}.data-api`,_s="active",bs="[href]",vs=".nav-link",ys=`${vs}, .nav-item > ${vs}, .list-group-item`,ws={offset:null,rootMargin:"0px 0px -25%",smoothScroll:!1,target:null,threshold:[.1,.5,1]},Es={offset:"(number|null)",rootMargin:"string",smoothScroll:"boolean",target:"element",threshold:"array"};class As extends be{constructor(t,e){super(t,e),this._targetLinks=new Map,this._observableSections=new Map,this._rootElement="visible"===getComputedStyle(this._element).overflowY?null:this._element,this._activeTarget=null,this._observer=null,this._previousScrollData={visibleEntryTop:0,parentScrollTop:0},this.refresh()}static get Default(){return ws}static get DefaultType(){return Es}static get NAME(){return"scrollspy"}refresh(){this._initializeTargetsAndObservables(),this._maybeEnableSmoothScroll(),this._observer?this._observer.disconnect():this._observer=this._getNewObserver();for(const t of this._observableSections.values())this._observer.observe(t)}dispose(){this._observer.disconnect(),super.dispose()}_configAfterMerge(t){return t.target=Ft(t.target)||document.body,t.rootMargin=t.offset?`${t.offset}px 0px -30%`:t.rootMargin,"string"==typeof t.threshold&&(t.threshold=t.threshold.split(",").map((t=>Number.parseFloat(t)))),t}_maybeEnableSmoothScroll(){this._config.smoothScroll&&(ue.off(this._config.target,ms),ue.on(this._config.target,ms,bs,(t=>{const e=this._observableSections.get(t.target.hash);if(e){t.preventDefault();const i=this._rootElement||window,n=e.offsetTop-this._element.offsetTop;if(i.scrollTo)return void i.scrollTo({top:n,behavior:"smooth"});i.scrollTop=n}})))}_getNewObserver(){const t={root:this._rootElement,threshold:this._config.threshold,rootMargin:this._config.rootMargin};return new IntersectionObserver((t=>this._observerCallback(t)),t)}_observerCallback(t){const e=t=>this._targetLinks.get(`#${t.target.id}`),i=t=>{this._previousScrollData.visibleEntryTop=t.target.offsetTop,this._process(e(t))},n=(this._rootElement||document.documentElement).scrollTop,s=n>=this._previousScrollData.parentScrollTop;this._previousScrollData.parentScrollTop=n;for(const o of t){if(!o.isIntersecting){this._activeTarget=null,this._clearActiveClass(e(o));continue}const t=o.target.offsetTop>=this._previousScrollData.visibleEntryTop;if(s&&t){if(i(o),!n)return}else s||t||i(o)}}_initializeTargetsAndObservables(){this._targetLinks=new Map,this._observableSections=new Map;const t=ye.find(bs,this._config.target);for(const e of t){if(!e.hash||Bt(e))continue;const t=ye.findOne(decodeURI(e.hash),this._element);Ht(t)&&(this._targetLinks.set(decodeURI(e.hash),e),this._observableSections.set(e.hash,t))}}_process(t){this._activeTarget!==t&&(this._clearActiveClass(this._config.target),this._activeTarget=t,t.classList.add(_s),this._activateParents(t),ue.trigger(this._element,ps,{relatedTarget:t}))}_activateParents(t){if(t.classList.contains("dropdown-item"))ye.findOne(".dropdown-toggle",t.closest(".dropdown")).classList.add(_s);else for(const e of ye.parents(t,".nav, .list-group"))for(const t of ye.prev(e,ys))t.classList.add(_s)}_clearActiveClass(t){t.classList.remove(_s);const e=ye.find(`${bs}.${_s}`,t);for(const t of e)t.classList.remove(_s)}static jQueryInterface(t){return this.each((function(){const e=As.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(window,gs,(()=>{for(const t of ye.find('[data-bs-spy="scroll"]'))As.getOrCreateInstance(t)})),Kt(As);const Ts=".bs.tab",Cs=`hide${Ts}`,Os=`hidden${Ts}`,xs=`show${Ts}`,ks=`shown${Ts}`,Ls=`click${Ts}`,Ss=`keydown${Ts}`,Ds=`load${Ts}`,$s="ArrowLeft",Is="ArrowRight",Ns="ArrowUp",Ps="ArrowDown",Ms="Home",js="End",Fs="active",Hs="fade",Bs="show",Ws=".dropdown-toggle",zs=`:not(${Ws})`,Rs='[data-bs-toggle="tab"], [data-bs-toggle="pill"], [data-bs-toggle="list"]',qs=`.nav-link${zs}, .list-group-item${zs}, [role="tab"]${zs}, ${Rs}`,Vs=`.${Fs}[data-bs-toggle="tab"], .${Fs}[data-bs-toggle="pill"], .${Fs}[data-bs-toggle="list"]`;class Ys extends be{constructor(t){super(t),this._parent=this._element.closest('.list-group, .nav, [role="tablist"]'),this._parent&&(this._setInitialAttributes(this._parent,this._getChildren()),ue.on(this._element,Ss,(t=>this._keydown(t))))}static get NAME(){return"tab"}show(){const t=this._element;if(this._elemIsActive(t))return;const e=this._getActiveElem(),i=e?ue.trigger(e,Cs,{relatedTarget:t}):null;ue.trigger(t,xs,{relatedTarget:e}).defaultPrevented||i&&i.defaultPrevented||(this._deactivate(e,t),this._activate(t,e))}_activate(t,e){t&&(t.classList.add(Fs),this._activate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.removeAttribute("tabindex"),t.setAttribute("aria-selected",!0),this._toggleDropDown(t,!0),ue.trigger(t,ks,{relatedTarget:e})):t.classList.add(Bs)}),t,t.classList.contains(Hs)))}_deactivate(t,e){t&&(t.classList.remove(Fs),t.blur(),this._deactivate(ye.getElementFromSelector(t)),this._queueCallback((()=>{"tab"===t.getAttribute("role")?(t.setAttribute("aria-selected",!1),t.setAttribute("tabindex","-1"),this._toggleDropDown(t,!1),ue.trigger(t,Os,{relatedTarget:e})):t.classList.remove(Bs)}),t,t.classList.contains(Hs)))}_keydown(t){if(![$s,Is,Ns,Ps,Ms,js].includes(t.key))return;t.stopPropagation(),t.preventDefault();const e=this._getChildren().filter((t=>!Bt(t)));let i;if([Ms,js].includes(t.key))i=e[t.key===Ms?0:e.length-1];else{const n=[Is,Ps].includes(t.key);i=Ut(e,t.target,n,!0)}i&&(i.focus({preventScroll:!0}),Ys.getOrCreateInstance(i).show())}_getChildren(){return ye.find(qs,this._parent)}_getActiveElem(){return this._getChildren().find((t=>this._elemIsActive(t)))||null}_setInitialAttributes(t,e){this._setAttributeIfNotExists(t,"role","tablist");for(const t of e)this._setInitialAttributesOnChild(t)}_setInitialAttributesOnChild(t){t=this._getInnerElement(t);const e=this._elemIsActive(t),i=this._getOuterElement(t);t.setAttribute("aria-selected",e),i!==t&&this._setAttributeIfNotExists(i,"role","presentation"),e||t.setAttribute("tabindex","-1"),this._setAttributeIfNotExists(t,"role","tab"),this._setInitialAttributesOnTargetPanel(t)}_setInitialAttributesOnTargetPanel(t){const e=ye.getElementFromSelector(t);e&&(this._setAttributeIfNotExists(e,"role","tabpanel"),t.id&&this._setAttributeIfNotExists(e,"aria-labelledby",`${t.id}`))}_toggleDropDown(t,e){const i=this._getOuterElement(t);if(!i.classList.contains("dropdown"))return;const n=(t,n)=>{const s=ye.findOne(t,i);s&&s.classList.toggle(n,e)};n(Ws,Fs),n(".dropdown-menu",Bs),i.setAttribute("aria-expanded",e)}_setAttributeIfNotExists(t,e,i){t.hasAttribute(e)||t.setAttribute(e,i)}_elemIsActive(t){return t.classList.contains(Fs)}_getInnerElement(t){return t.matches(qs)?t:ye.findOne(qs,t)}_getOuterElement(t){return t.closest(".nav-item, .list-group-item")||t}static jQueryInterface(t){return this.each((function(){const e=Ys.getOrCreateInstance(this);if("string"==typeof t){if(void 0===e[t]||t.startsWith("_")||"constructor"===t)throw new TypeError(`No method named "${t}"`);e[t]()}}))}}ue.on(document,Ls,Rs,(function(t){["A","AREA"].includes(this.tagName)&&t.preventDefault(),Bt(this)||Ys.getOrCreateInstance(this).show()})),ue.on(window,Ds,(()=>{for(const t of ye.find(Vs))Ys.getOrCreateInstance(t)})),Kt(Ys);const Ks=".bs.toast",Qs=`mouseover${Ks}`,Xs=`mouseout${Ks}`,Us=`focusin${Ks}`,Gs=`focusout${Ks}`,Js=`hide${Ks}`,Zs=`hidden${Ks}`,to=`show${Ks}`,eo=`shown${Ks}`,io="hide",no="show",so="showing",oo={animation:"boolean",autohide:"boolean",delay:"number"},ro={animation:!0,autohide:!0,delay:5e3};class ao extends be{constructor(t,e){super(t,e),this._timeout=null,this._hasMouseInteraction=!1,this._hasKeyboardInteraction=!1,this._setListeners()}static get Default(){return ro}static get DefaultType(){return oo}static get NAME(){return"toast"}show(){ue.trigger(this._element,to).defaultPrevented||(this._clearTimeout(),this._config.animation&&this._element.classList.add("fade"),this._element.classList.remove(io),Rt(this._element),this._element.classList.add(no,so),this._queueCallback((()=>{this._element.classList.remove(so),ue.trigger(this._element,eo),this._maybeScheduleHide()}),this._element,this._config.animation))}hide(){this.isShown()&&(ue.trigger(this._element,Js).defaultPrevented||(this._element.classList.add(so),this._queueCallback((()=>{this._element.classList.add(io),this._element.classList.remove(so,no),ue.trigger(this._element,Zs)}),this._element,this._config.animation)))}dispose(){this._clearTimeout(),this.isShown()&&this._element.classList.remove(no),super.dispose()}isShown(){return this._element.classList.contains(no)}_maybeScheduleHide(){this._config.autohide&&(this._hasMouseInteraction||this._hasKeyboardInteraction||(this._timeout=setTimeout((()=>{this.hide()}),this._config.delay)))}_onInteraction(t,e){switch(t.type){case"mouseover":case"mouseout":this._hasMouseInteraction=e;break;case"focusin":case"focusout":this._hasKeyboardInteraction=e}if(e)return void this._clearTimeout();const i=t.relatedTarget;this._element===i||this._element.contains(i)||this._maybeScheduleHide()}_setListeners(){ue.on(this._element,Qs,(t=>this._onInteraction(t,!0))),ue.on(this._element,Xs,(t=>this._onInteraction(t,!1))),ue.on(this._element,Us,(t=>this._onInteraction(t,!0))),ue.on(this._element,Gs,(t=>this._onInteraction(t,!1)))}_clearTimeout(){clearTimeout(this._timeout),this._timeout=null}static jQueryInterface(t){return this.each((function(){const e=ao.getOrCreateInstance(this,t);if("string"==typeof t){if(void 0===e[t])throw new TypeError(`No method named "${t}"`);e[t](this)}}))}}function lo(t){"loading"!=document.readyState?t():document.addEventListener("DOMContentLoaded",t)}we(ao),Kt(ao),lo((function(){[].slice.call(document.querySelectorAll('[data-bs-toggle="tooltip"]')).map((function(t){return new cs(t,{delay:{show:500,hide:100}})}))})),lo((function(){document.getElementById("pst-back-to-top").addEventListener("click",(function(){document.body.scrollTop=0,document.documentElement.scrollTop=0}))})),lo((function(){var t=document.getElementById("pst-back-to-top"),e=document.getElementsByClassName("bd-header")[0].getBoundingClientRect();window.addEventListener("scroll",(function(){this.oldScroll>this.scrollY&&this.scrollY>e.bottom?t.style.display="block":t.style.display="none",this.oldScroll=this.scrollY}))}))})(); //# sourceMappingURL=bootstrap.js.map \ No newline at end of file diff --git a/_static/scripts/bootstrap.js.LICENSE.txt b/_static/scripts/bootstrap.js.LICENSE.txt index 91ad10a..10f979d 100644 --- a/_static/scripts/bootstrap.js.LICENSE.txt +++ b/_static/scripts/bootstrap.js.LICENSE.txt @@ -1,5 +1,5 @@ /*! - * Bootstrap v5.2.3 (https://getbootstrap.com/) - * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) + * Bootstrap v5.3.2 (https://getbootstrap.com/) + * Copyright 2011-2023 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors) * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) */ diff --git a/_static/scripts/bootstrap.js.map b/_static/scripts/bootstrap.js.map index 04c27d7..e5bc157 100644 --- a/_static/scripts/bootstrap.js.map +++ b/_static/scripts/bootstrap.js.map @@ -1 +1 @@ -{"version":3,"file":"scripts/bootstrap.js","mappings":"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","sources":["webpack://pydata_sphinx_theme/webpack/bootstrap","webpack://pydata_sphinx_theme/webpack/runtime/define property getters","webpack://pydata_sphinx_theme/webpack/runtime/hasOwnProperty shorthand","webpack://pydata_sphinx_theme/webpack/runtime/make namespace object","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/enums.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/instanceOf.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/applyStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getBasePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/math.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/userAgent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isLayoutViewport.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getBoundingClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getLayoutRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/contains.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getComputedStyle.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isTableElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentElement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getParentNode.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getOffsetParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getMainAxisFromPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/within.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergePaddingObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getFreshSideObject.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/expandToHashMap.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/arrow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getVariation.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/computeStyles.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/eventListeners.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositePlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getOppositeVariationPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getWindowScrollBarX.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/isScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getScrollParent.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/listScrollParents.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/rectToClientRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getClippingRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getViewportRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getDocumentRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/detectOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/flip.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/computeAutoPlacement.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/hide.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/offset.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/popperOffsets.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/modifiers/preventOverflow.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/getAltAxis.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getCompositeRect.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getNodeScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/dom-utils/getHTMLElementScroll.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/orderModifiers.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/createPopper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/debounce.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/utils/mergeByName.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper.js","webpack://pydata_sphinx_theme/./node_modules/@popperjs/core/lib/popper-lite.js","webpack://pydata_sphinx_theme/./node_modules/bootstrap/dist/js/bootstrap.esm.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/mixin.js","webpack://pydata_sphinx_theme/./src/pydata_sphinx_theme/assets/scripts/bootstrap.js"],"sourcesContent":["// The require scope\nvar __webpack_require__ = {};\n\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__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export var top = 'top';\nexport var bottom = 'bottom';\nexport var right = 'right';\nexport var left = 'left';\nexport var auto = 'auto';\nexport var basePlacements = [top, bottom, right, left];\nexport var start = 'start';\nexport var end = 'end';\nexport var clippingParents = 'clippingParents';\nexport var viewport = 'viewport';\nexport var popper = 'popper';\nexport var reference = 'reference';\nexport var variationPlacements = /*#__PURE__*/basePlacements.reduce(function (acc, placement) {\n return acc.concat([placement + \"-\" + start, placement + \"-\" + end]);\n}, []);\nexport var placements = /*#__PURE__*/[].concat(basePlacements, [auto]).reduce(function (acc, placement) {\n return acc.concat([placement, placement + \"-\" + start, placement + \"-\" + end]);\n}, []); // modifiers that need to read the DOM\n\nexport var beforeRead = 'beforeRead';\nexport var read = 'read';\nexport var afterRead = 'afterRead'; // pure-logic modifiers\n\nexport var beforeMain = 'beforeMain';\nexport var main = 'main';\nexport var afterMain = 'afterMain'; // modifier with the purpose to write to the DOM (or write into a framework state)\n\nexport var beforeWrite = 'beforeWrite';\nexport var write = 'write';\nexport var afterWrite = 'afterWrite';\nexport var modifierPhases = [beforeRead, read, afterRead, beforeMain, main, afterMain, beforeWrite, write, afterWrite];","export default function getNodeName(element) {\n return element ? (element.nodeName || '').toLowerCase() : null;\n}","export default function getWindow(node) {\n if (node == null) {\n return window;\n }\n\n if (node.toString() !== '[object Window]') {\n var ownerDocument = node.ownerDocument;\n return ownerDocument ? ownerDocument.defaultView || window : window;\n }\n\n return node;\n}","import getWindow from \"./getWindow.js\";\n\nfunction isElement(node) {\n var OwnElement = getWindow(node).Element;\n return node instanceof OwnElement || node instanceof Element;\n}\n\nfunction isHTMLElement(node) {\n var OwnElement = getWindow(node).HTMLElement;\n return node instanceof OwnElement || node instanceof HTMLElement;\n}\n\nfunction isShadowRoot(node) {\n // IE 11 has no ShadowRoot\n if (typeof ShadowRoot === 'undefined') {\n return false;\n }\n\n var OwnElement = getWindow(node).ShadowRoot;\n return node instanceof OwnElement || node instanceof ShadowRoot;\n}\n\nexport { isElement, isHTMLElement, isShadowRoot };","import getNodeName from \"../dom-utils/getNodeName.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // This modifier takes the styles prepared by the `computeStyles` modifier\n// and applies them to the HTMLElements such as popper and arrow\n\nfunction applyStyles(_ref) {\n var state = _ref.state;\n Object.keys(state.elements).forEach(function (name) {\n var style = state.styles[name] || {};\n var attributes = state.attributes[name] || {};\n var element = state.elements[name]; // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n } // Flow doesn't support to extend this property, but it's the most\n // effective way to apply styles to an HTMLElement\n // $FlowFixMe[cannot-write]\n\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (name) {\n var value = attributes[name];\n\n if (value === false) {\n element.removeAttribute(name);\n } else {\n element.setAttribute(name, value === true ? '' : value);\n }\n });\n });\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state;\n var initialStyles = {\n popper: {\n position: state.options.strategy,\n left: '0',\n top: '0',\n margin: '0'\n },\n arrow: {\n position: 'absolute'\n },\n reference: {}\n };\n Object.assign(state.elements.popper.style, initialStyles.popper);\n state.styles = initialStyles;\n\n if (state.elements.arrow) {\n Object.assign(state.elements.arrow.style, initialStyles.arrow);\n }\n\n return function () {\n Object.keys(state.elements).forEach(function (name) {\n var element = state.elements[name];\n var attributes = state.attributes[name] || {};\n var styleProperties = Object.keys(state.styles.hasOwnProperty(name) ? state.styles[name] : initialStyles[name]); // Set all values to an empty string to unset them\n\n var style = styleProperties.reduce(function (style, property) {\n style[property] = '';\n return style;\n }, {}); // arrow is optional + virtual elements\n\n if (!isHTMLElement(element) || !getNodeName(element)) {\n return;\n }\n\n Object.assign(element.style, style);\n Object.keys(attributes).forEach(function (attribute) {\n element.removeAttribute(attribute);\n });\n });\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'applyStyles',\n enabled: true,\n phase: 'write',\n fn: applyStyles,\n effect: effect,\n requires: ['computeStyles']\n};","import { auto } from \"../enums.js\";\nexport default function getBasePlacement(placement) {\n return placement.split('-')[0];\n}","export var max = Math.max;\nexport var min = Math.min;\nexport var round = Math.round;","export default function getUAString() {\n var uaData = navigator.userAgentData;\n\n if (uaData != null && uaData.brands && Array.isArray(uaData.brands)) {\n return uaData.brands.map(function (item) {\n return item.brand + \"/\" + item.version;\n }).join(' ');\n }\n\n return navigator.userAgent;\n}","import getUAString from \"../utils/userAgent.js\";\nexport default function isLayoutViewport() {\n return !/^((?!chrome|android).)*safari/i.test(getUAString());\n}","import { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport { round } from \"../utils/math.js\";\nimport getWindow from \"./getWindow.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getBoundingClientRect(element, includeScale, isFixedStrategy) {\n if (includeScale === void 0) {\n includeScale = false;\n }\n\n if (isFixedStrategy === void 0) {\n isFixedStrategy = false;\n }\n\n var clientRect = element.getBoundingClientRect();\n var scaleX = 1;\n var scaleY = 1;\n\n if (includeScale && isHTMLElement(element)) {\n scaleX = element.offsetWidth > 0 ? round(clientRect.width) / element.offsetWidth || 1 : 1;\n scaleY = element.offsetHeight > 0 ? round(clientRect.height) / element.offsetHeight || 1 : 1;\n }\n\n var _ref = isElement(element) ? getWindow(element) : window,\n visualViewport = _ref.visualViewport;\n\n var addVisualOffsets = !isLayoutViewport() && isFixedStrategy;\n var x = (clientRect.left + (addVisualOffsets && visualViewport ? visualViewport.offsetLeft : 0)) / scaleX;\n var y = (clientRect.top + (addVisualOffsets && visualViewport ? visualViewport.offsetTop : 0)) / scaleY;\n var width = clientRect.width / scaleX;\n var height = clientRect.height / scaleY;\n return {\n width: width,\n height: height,\n top: y,\n right: x + width,\n bottom: y + height,\n left: x,\n x: x,\n y: y\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\"; // Returns the layout rect of an element relative to its offsetParent. Layout\n// means it doesn't take into account transforms.\n\nexport default function getLayoutRect(element) {\n var clientRect = getBoundingClientRect(element); // Use the clientRect sizes if it's not been transformed.\n // Fixes https://github.com/popperjs/popper-core/issues/1223\n\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (Math.abs(clientRect.width - width) <= 1) {\n width = clientRect.width;\n }\n\n if (Math.abs(clientRect.height - height) <= 1) {\n height = clientRect.height;\n }\n\n return {\n x: element.offsetLeft,\n y: element.offsetTop,\n width: width,\n height: height\n };\n}","import { isShadowRoot } from \"./instanceOf.js\";\nexport default function contains(parent, child) {\n var rootNode = child.getRootNode && child.getRootNode(); // First, attempt with faster native method\n\n if (parent.contains(child)) {\n return true;\n } // then fallback to custom implementation with Shadow DOM support\n else if (rootNode && isShadowRoot(rootNode)) {\n var next = child;\n\n do {\n if (next && parent.isSameNode(next)) {\n return true;\n } // $FlowFixMe[prop-missing]: need a better way to handle this...\n\n\n next = next.parentNode || next.host;\n } while (next);\n } // Give up, the result is false\n\n\n return false;\n}","import getWindow from \"./getWindow.js\";\nexport default function getComputedStyle(element) {\n return getWindow(element).getComputedStyle(element);\n}","import getNodeName from \"./getNodeName.js\";\nexport default function isTableElement(element) {\n return ['table', 'td', 'th'].indexOf(getNodeName(element)) >= 0;\n}","import { isElement } from \"./instanceOf.js\";\nexport default function getDocumentElement(element) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return ((isElement(element) ? element.ownerDocument : // $FlowFixMe[prop-missing]\n element.document) || window.document).documentElement;\n}","import getNodeName from \"./getNodeName.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport { isShadowRoot } from \"./instanceOf.js\";\nexport default function getParentNode(element) {\n if (getNodeName(element) === 'html') {\n return element;\n }\n\n return (// this is a quicker (but less type safe) way to save quite some bytes from the bundle\n // $FlowFixMe[incompatible-return]\n // $FlowFixMe[prop-missing]\n element.assignedSlot || // step into the shadow DOM of the parent of a slotted node\n element.parentNode || ( // DOM Element detected\n isShadowRoot(element) ? element.host : null) || // ShadowRoot detected\n // $FlowFixMe[incompatible-call]: HTMLElement is a Node\n getDocumentElement(element) // fallback\n\n );\n}","import getWindow from \"./getWindow.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isHTMLElement, isShadowRoot } from \"./instanceOf.js\";\nimport isTableElement from \"./isTableElement.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getUAString from \"../utils/userAgent.js\";\n\nfunction getTrueOffsetParent(element) {\n if (!isHTMLElement(element) || // https://github.com/popperjs/popper-core/issues/837\n getComputedStyle(element).position === 'fixed') {\n return null;\n }\n\n return element.offsetParent;\n} // `.offsetParent` reports `null` for fixed elements, while absolute elements\n// return the containing block\n\n\nfunction getContainingBlock(element) {\n var isFirefox = /firefox/i.test(getUAString());\n var isIE = /Trident/i.test(getUAString());\n\n if (isIE && isHTMLElement(element)) {\n // In IE 9, 10 and 11 fixed elements containing block is always established by the viewport\n var elementCss = getComputedStyle(element);\n\n if (elementCss.position === 'fixed') {\n return null;\n }\n }\n\n var currentNode = getParentNode(element);\n\n if (isShadowRoot(currentNode)) {\n currentNode = currentNode.host;\n }\n\n while (isHTMLElement(currentNode) && ['html', 'body'].indexOf(getNodeName(currentNode)) < 0) {\n var css = getComputedStyle(currentNode); // This is non-exhaustive but covers the most common CSS properties that\n // create a containing block.\n // https://developer.mozilla.org/en-US/docs/Web/CSS/Containing_block#identifying_the_containing_block\n\n if (css.transform !== 'none' || css.perspective !== 'none' || css.contain === 'paint' || ['transform', 'perspective'].indexOf(css.willChange) !== -1 || isFirefox && css.willChange === 'filter' || isFirefox && css.filter && css.filter !== 'none') {\n return currentNode;\n } else {\n currentNode = currentNode.parentNode;\n }\n }\n\n return null;\n} // Gets the closest ancestor positioned element. Handles some edge cases,\n// such as table ancestors and cross browser bugs.\n\n\nexport default function getOffsetParent(element) {\n var window = getWindow(element);\n var offsetParent = getTrueOffsetParent(element);\n\n while (offsetParent && isTableElement(offsetParent) && getComputedStyle(offsetParent).position === 'static') {\n offsetParent = getTrueOffsetParent(offsetParent);\n }\n\n if (offsetParent && (getNodeName(offsetParent) === 'html' || getNodeName(offsetParent) === 'body' && getComputedStyle(offsetParent).position === 'static')) {\n return window;\n }\n\n return offsetParent || getContainingBlock(element) || window;\n}","export default function getMainAxisFromPlacement(placement) {\n return ['top', 'bottom'].indexOf(placement) >= 0 ? 'x' : 'y';\n}","import { max as mathMax, min as mathMin } from \"./math.js\";\nexport function within(min, value, max) {\n return mathMax(min, mathMin(value, max));\n}\nexport function withinMaxClamp(min, value, max) {\n var v = within(min, value, max);\n return v > max ? max : v;\n}","import getFreshSideObject from \"./getFreshSideObject.js\";\nexport default function mergePaddingObject(paddingObject) {\n return Object.assign({}, getFreshSideObject(), paddingObject);\n}","export default function getFreshSideObject() {\n return {\n top: 0,\n right: 0,\n bottom: 0,\n left: 0\n };\n}","export default function expandToHashMap(value, keys) {\n return keys.reduce(function (hashMap, key) {\n hashMap[key] = value;\n return hashMap;\n }, {});\n}","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport contains from \"../dom-utils/contains.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport { within } from \"../utils/within.js\";\nimport mergePaddingObject from \"../utils/mergePaddingObject.js\";\nimport expandToHashMap from \"../utils/expandToHashMap.js\";\nimport { left, right, basePlacements, top, bottom } from \"../enums.js\";\nimport { isHTMLElement } from \"../dom-utils/instanceOf.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar toPaddingObject = function toPaddingObject(padding, state) {\n padding = typeof padding === 'function' ? padding(Object.assign({}, state.rects, {\n placement: state.placement\n })) : padding;\n return mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n};\n\nfunction arrow(_ref) {\n var _state$modifiersData$;\n\n var state = _ref.state,\n name = _ref.name,\n options = _ref.options;\n var arrowElement = state.elements.arrow;\n var popperOffsets = state.modifiersData.popperOffsets;\n var basePlacement = getBasePlacement(state.placement);\n var axis = getMainAxisFromPlacement(basePlacement);\n var isVertical = [left, right].indexOf(basePlacement) >= 0;\n var len = isVertical ? 'height' : 'width';\n\n if (!arrowElement || !popperOffsets) {\n return;\n }\n\n var paddingObject = toPaddingObject(options.padding, state);\n var arrowRect = getLayoutRect(arrowElement);\n var minProp = axis === 'y' ? top : left;\n var maxProp = axis === 'y' ? bottom : right;\n var endDiff = state.rects.reference[len] + state.rects.reference[axis] - popperOffsets[axis] - state.rects.popper[len];\n var startDiff = popperOffsets[axis] - state.rects.reference[axis];\n var arrowOffsetParent = getOffsetParent(arrowElement);\n var clientSize = arrowOffsetParent ? axis === 'y' ? arrowOffsetParent.clientHeight || 0 : arrowOffsetParent.clientWidth || 0 : 0;\n var centerToReference = endDiff / 2 - startDiff / 2; // Make sure the arrow doesn't overflow the popper if the center point is\n // outside of the popper bounds\n\n var min = paddingObject[minProp];\n var max = clientSize - arrowRect[len] - paddingObject[maxProp];\n var center = clientSize / 2 - arrowRect[len] / 2 + centerToReference;\n var offset = within(min, center, max); // Prevents breaking syntax highlighting...\n\n var axisProp = axis;\n state.modifiersData[name] = (_state$modifiersData$ = {}, _state$modifiersData$[axisProp] = offset, _state$modifiersData$.centerOffset = offset - center, _state$modifiersData$);\n}\n\nfunction effect(_ref2) {\n var state = _ref2.state,\n options = _ref2.options;\n var _options$element = options.element,\n arrowElement = _options$element === void 0 ? '[data-popper-arrow]' : _options$element;\n\n if (arrowElement == null) {\n return;\n } // CSS selector\n\n\n if (typeof arrowElement === 'string') {\n arrowElement = state.elements.popper.querySelector(arrowElement);\n\n if (!arrowElement) {\n return;\n }\n }\n\n if (process.env.NODE_ENV !== \"production\") {\n if (!isHTMLElement(arrowElement)) {\n console.error(['Popper: \"arrow\" element must be an HTMLElement (not an SVGElement).', 'To use an SVG arrow, wrap it in an HTMLElement that will be used as', 'the arrow.'].join(' '));\n }\n }\n\n if (!contains(state.elements.popper, arrowElement)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: \"arrow\" modifier\\'s `element` must be a child of the popper', 'element.'].join(' '));\n }\n\n return;\n }\n\n state.elements.arrow = arrowElement;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'arrow',\n enabled: true,\n phase: 'main',\n fn: arrow,\n effect: effect,\n requires: ['popperOffsets'],\n requiresIfExists: ['preventOverflow']\n};","export default function getVariation(placement) {\n return placement.split('-')[1];\n}","import { top, left, right, bottom, end } from \"../enums.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport getWindow from \"../dom-utils/getWindow.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getComputedStyle from \"../dom-utils/getComputedStyle.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport { round } from \"../utils/math.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar unsetSides = {\n top: 'auto',\n right: 'auto',\n bottom: 'auto',\n left: 'auto'\n}; // Round the offsets to the nearest suitable subpixel based on the DPR.\n// Zooming can change the DPR, but it seems to report a value that will\n// cleanly divide the values into the appropriate subpixels.\n\nfunction roundOffsetsByDPR(_ref, win) {\n var x = _ref.x,\n y = _ref.y;\n var dpr = win.devicePixelRatio || 1;\n return {\n x: round(x * dpr) / dpr || 0,\n y: round(y * dpr) / dpr || 0\n };\n}\n\nexport function mapToStyles(_ref2) {\n var _Object$assign2;\n\n var popper = _ref2.popper,\n popperRect = _ref2.popperRect,\n placement = _ref2.placement,\n variation = _ref2.variation,\n offsets = _ref2.offsets,\n position = _ref2.position,\n gpuAcceleration = _ref2.gpuAcceleration,\n adaptive = _ref2.adaptive,\n roundOffsets = _ref2.roundOffsets,\n isFixed = _ref2.isFixed;\n var _offsets$x = offsets.x,\n x = _offsets$x === void 0 ? 0 : _offsets$x,\n _offsets$y = offsets.y,\n y = _offsets$y === void 0 ? 0 : _offsets$y;\n\n var _ref3 = typeof roundOffsets === 'function' ? roundOffsets({\n x: x,\n y: y\n }) : {\n x: x,\n y: y\n };\n\n x = _ref3.x;\n y = _ref3.y;\n var hasX = offsets.hasOwnProperty('x');\n var hasY = offsets.hasOwnProperty('y');\n var sideX = left;\n var sideY = top;\n var win = window;\n\n if (adaptive) {\n var offsetParent = getOffsetParent(popper);\n var heightProp = 'clientHeight';\n var widthProp = 'clientWidth';\n\n if (offsetParent === getWindow(popper)) {\n offsetParent = getDocumentElement(popper);\n\n if (getComputedStyle(offsetParent).position !== 'static' && position === 'absolute') {\n heightProp = 'scrollHeight';\n widthProp = 'scrollWidth';\n }\n } // $FlowFixMe[incompatible-cast]: force type refinement, we compare offsetParent with window above, but Flow doesn't detect it\n\n\n offsetParent = offsetParent;\n\n if (placement === top || (placement === left || placement === right) && variation === end) {\n sideY = bottom;\n var offsetY = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.height : // $FlowFixMe[prop-missing]\n offsetParent[heightProp];\n y -= offsetY - popperRect.height;\n y *= gpuAcceleration ? 1 : -1;\n }\n\n if (placement === left || (placement === top || placement === bottom) && variation === end) {\n sideX = right;\n var offsetX = isFixed && offsetParent === win && win.visualViewport ? win.visualViewport.width : // $FlowFixMe[prop-missing]\n offsetParent[widthProp];\n x -= offsetX - popperRect.width;\n x *= gpuAcceleration ? 1 : -1;\n }\n }\n\n var commonStyles = Object.assign({\n position: position\n }, adaptive && unsetSides);\n\n var _ref4 = roundOffsets === true ? roundOffsetsByDPR({\n x: x,\n y: y\n }, getWindow(popper)) : {\n x: x,\n y: y\n };\n\n x = _ref4.x;\n y = _ref4.y;\n\n if (gpuAcceleration) {\n var _Object$assign;\n\n return Object.assign({}, commonStyles, (_Object$assign = {}, _Object$assign[sideY] = hasY ? '0' : '', _Object$assign[sideX] = hasX ? '0' : '', _Object$assign.transform = (win.devicePixelRatio || 1) <= 1 ? \"translate(\" + x + \"px, \" + y + \"px)\" : \"translate3d(\" + x + \"px, \" + y + \"px, 0)\", _Object$assign));\n }\n\n return Object.assign({}, commonStyles, (_Object$assign2 = {}, _Object$assign2[sideY] = hasY ? y + \"px\" : '', _Object$assign2[sideX] = hasX ? x + \"px\" : '', _Object$assign2.transform = '', _Object$assign2));\n}\n\nfunction computeStyles(_ref5) {\n var state = _ref5.state,\n options = _ref5.options;\n var _options$gpuAccelerat = options.gpuAcceleration,\n gpuAcceleration = _options$gpuAccelerat === void 0 ? true : _options$gpuAccelerat,\n _options$adaptive = options.adaptive,\n adaptive = _options$adaptive === void 0 ? true : _options$adaptive,\n _options$roundOffsets = options.roundOffsets,\n roundOffsets = _options$roundOffsets === void 0 ? true : _options$roundOffsets;\n\n if (process.env.NODE_ENV !== \"production\") {\n var transitionProperty = getComputedStyle(state.elements.popper).transitionProperty || '';\n\n if (adaptive && ['transform', 'top', 'right', 'bottom', 'left'].some(function (property) {\n return transitionProperty.indexOf(property) >= 0;\n })) {\n console.warn(['Popper: Detected CSS transitions on at least one of the following', 'CSS properties: \"transform\", \"top\", \"right\", \"bottom\", \"left\".', '\\n\\n', 'Disable the \"computeStyles\" modifier\\'s `adaptive` option to allow', 'for smooth transitions, or remove these properties from the CSS', 'transition declaration on the popper element if only transitioning', 'opacity or background-color for example.', '\\n\\n', 'We recommend using the popper element as a wrapper around an inner', 'element that can have any CSS property transitioned for animations.'].join(' '));\n }\n }\n\n var commonStyles = {\n placement: getBasePlacement(state.placement),\n variation: getVariation(state.placement),\n popper: state.elements.popper,\n popperRect: state.rects.popper,\n gpuAcceleration: gpuAcceleration,\n isFixed: state.options.strategy === 'fixed'\n };\n\n if (state.modifiersData.popperOffsets != null) {\n state.styles.popper = Object.assign({}, state.styles.popper, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.popperOffsets,\n position: state.options.strategy,\n adaptive: adaptive,\n roundOffsets: roundOffsets\n })));\n }\n\n if (state.modifiersData.arrow != null) {\n state.styles.arrow = Object.assign({}, state.styles.arrow, mapToStyles(Object.assign({}, commonStyles, {\n offsets: state.modifiersData.arrow,\n position: 'absolute',\n adaptive: false,\n roundOffsets: roundOffsets\n })));\n }\n\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-placement': state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'computeStyles',\n enabled: true,\n phase: 'beforeWrite',\n fn: computeStyles,\n data: {}\n};","import getWindow from \"../dom-utils/getWindow.js\"; // eslint-disable-next-line import/no-unused-modules\n\nvar passive = {\n passive: true\n};\n\nfunction effect(_ref) {\n var state = _ref.state,\n instance = _ref.instance,\n options = _ref.options;\n var _options$scroll = options.scroll,\n scroll = _options$scroll === void 0 ? true : _options$scroll,\n _options$resize = options.resize,\n resize = _options$resize === void 0 ? true : _options$resize;\n var window = getWindow(state.elements.popper);\n var scrollParents = [].concat(state.scrollParents.reference, state.scrollParents.popper);\n\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.addEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.addEventListener('resize', instance.update, passive);\n }\n\n return function () {\n if (scroll) {\n scrollParents.forEach(function (scrollParent) {\n scrollParent.removeEventListener('scroll', instance.update, passive);\n });\n }\n\n if (resize) {\n window.removeEventListener('resize', instance.update, passive);\n }\n };\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'eventListeners',\n enabled: true,\n phase: 'write',\n fn: function fn() {},\n effect: effect,\n data: {}\n};","var hash = {\n left: 'right',\n right: 'left',\n bottom: 'top',\n top: 'bottom'\n};\nexport default function getOppositePlacement(placement) {\n return placement.replace(/left|right|bottom|top/g, function (matched) {\n return hash[matched];\n });\n}","var hash = {\n start: 'end',\n end: 'start'\n};\nexport default function getOppositeVariationPlacement(placement) {\n return placement.replace(/start|end/g, function (matched) {\n return hash[matched];\n });\n}","import getWindow from \"./getWindow.js\";\nexport default function getWindowScroll(node) {\n var win = getWindow(node);\n var scrollLeft = win.pageXOffset;\n var scrollTop = win.pageYOffset;\n return {\n scrollLeft: scrollLeft,\n scrollTop: scrollTop\n };\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nexport default function getWindowScrollBarX(element) {\n // If has a CSS width greater than the viewport, then this will be\n // incorrect for RTL.\n // Popper 1 is broken in this case and never had a bug report so let's assume\n // it's not an issue. I don't think anyone ever specifies width on \n // anyway.\n // Browsers where the left scrollbar doesn't cause an issue report `0` for\n // this (e.g. Edge 2019, IE11, Safari)\n return getBoundingClientRect(getDocumentElement(element)).left + getWindowScroll(element).scrollLeft;\n}","import getComputedStyle from \"./getComputedStyle.js\";\nexport default function isScrollParent(element) {\n // Firefox wants us to check `-x` and `-y` variations as well\n var _getComputedStyle = getComputedStyle(element),\n overflow = _getComputedStyle.overflow,\n overflowX = _getComputedStyle.overflowX,\n overflowY = _getComputedStyle.overflowY;\n\n return /auto|scroll|overlay|hidden/.test(overflow + overflowY + overflowX);\n}","import getParentNode from \"./getParentNode.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nexport default function getScrollParent(node) {\n if (['html', 'body', '#document'].indexOf(getNodeName(node)) >= 0) {\n // $FlowFixMe[incompatible-return]: assume body is always available\n return node.ownerDocument.body;\n }\n\n if (isHTMLElement(node) && isScrollParent(node)) {\n return node;\n }\n\n return getScrollParent(getParentNode(node));\n}","import getScrollParent from \"./getScrollParent.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport getWindow from \"./getWindow.js\";\nimport isScrollParent from \"./isScrollParent.js\";\n/*\ngiven a DOM element, return the list of all scroll parents, up the list of ancesors\nuntil we get to the top window object. This list is what we attach scroll listeners\nto, because if any of these parent elements scroll, we'll need to re-calculate the\nreference element's position.\n*/\n\nexport default function listScrollParents(element, list) {\n var _element$ownerDocumen;\n\n if (list === void 0) {\n list = [];\n }\n\n var scrollParent = getScrollParent(element);\n var isBody = scrollParent === ((_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body);\n var win = getWindow(scrollParent);\n var target = isBody ? [win].concat(win.visualViewport || [], isScrollParent(scrollParent) ? scrollParent : []) : scrollParent;\n var updatedList = list.concat(target);\n return isBody ? updatedList : // $FlowFixMe[incompatible-call]: isBody tells us target will be an HTMLElement here\n updatedList.concat(listScrollParents(getParentNode(target)));\n}","export default function rectToClientRect(rect) {\n return Object.assign({}, rect, {\n left: rect.x,\n top: rect.y,\n right: rect.x + rect.width,\n bottom: rect.y + rect.height\n });\n}","import { viewport } from \"../enums.js\";\nimport getViewportRect from \"./getViewportRect.js\";\nimport getDocumentRect from \"./getDocumentRect.js\";\nimport listScrollParents from \"./listScrollParents.js\";\nimport getOffsetParent from \"./getOffsetParent.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport { isElement, isHTMLElement } from \"./instanceOf.js\";\nimport getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getParentNode from \"./getParentNode.js\";\nimport contains from \"./contains.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport rectToClientRect from \"../utils/rectToClientRect.js\";\nimport { max, min } from \"../utils/math.js\";\n\nfunction getInnerBoundingClientRect(element, strategy) {\n var rect = getBoundingClientRect(element, false, strategy === 'fixed');\n rect.top = rect.top + element.clientTop;\n rect.left = rect.left + element.clientLeft;\n rect.bottom = rect.top + element.clientHeight;\n rect.right = rect.left + element.clientWidth;\n rect.width = element.clientWidth;\n rect.height = element.clientHeight;\n rect.x = rect.left;\n rect.y = rect.top;\n return rect;\n}\n\nfunction getClientRectFromMixedType(element, clippingParent, strategy) {\n return clippingParent === viewport ? rectToClientRect(getViewportRect(element, strategy)) : isElement(clippingParent) ? getInnerBoundingClientRect(clippingParent, strategy) : rectToClientRect(getDocumentRect(getDocumentElement(element)));\n} // A \"clipping parent\" is an overflowable container with the characteristic of\n// clipping (or hiding) overflowing elements with a position different from\n// `initial`\n\n\nfunction getClippingParents(element) {\n var clippingParents = listScrollParents(getParentNode(element));\n var canEscapeClipping = ['absolute', 'fixed'].indexOf(getComputedStyle(element).position) >= 0;\n var clipperElement = canEscapeClipping && isHTMLElement(element) ? getOffsetParent(element) : element;\n\n if (!isElement(clipperElement)) {\n return [];\n } // $FlowFixMe[incompatible-return]: https://github.com/facebook/flow/issues/1414\n\n\n return clippingParents.filter(function (clippingParent) {\n return isElement(clippingParent) && contains(clippingParent, clipperElement) && getNodeName(clippingParent) !== 'body';\n });\n} // Gets the maximum area that the element is visible in due to any number of\n// clipping parents\n\n\nexport default function getClippingRect(element, boundary, rootBoundary, strategy) {\n var mainClippingParents = boundary === 'clippingParents' ? getClippingParents(element) : [].concat(boundary);\n var clippingParents = [].concat(mainClippingParents, [rootBoundary]);\n var firstClippingParent = clippingParents[0];\n var clippingRect = clippingParents.reduce(function (accRect, clippingParent) {\n var rect = getClientRectFromMixedType(element, clippingParent, strategy);\n accRect.top = max(rect.top, accRect.top);\n accRect.right = min(rect.right, accRect.right);\n accRect.bottom = min(rect.bottom, accRect.bottom);\n accRect.left = max(rect.left, accRect.left);\n return accRect;\n }, getClientRectFromMixedType(element, firstClippingParent, strategy));\n clippingRect.width = clippingRect.right - clippingRect.left;\n clippingRect.height = clippingRect.bottom - clippingRect.top;\n clippingRect.x = clippingRect.left;\n clippingRect.y = clippingRect.top;\n return clippingRect;\n}","import getWindow from \"./getWindow.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport isLayoutViewport from \"./isLayoutViewport.js\";\nexport default function getViewportRect(element, strategy) {\n var win = getWindow(element);\n var html = getDocumentElement(element);\n var visualViewport = win.visualViewport;\n var width = html.clientWidth;\n var height = html.clientHeight;\n var x = 0;\n var y = 0;\n\n if (visualViewport) {\n width = visualViewport.width;\n height = visualViewport.height;\n var layoutViewport = isLayoutViewport();\n\n if (layoutViewport || !layoutViewport && strategy === 'fixed') {\n x = visualViewport.offsetLeft;\n y = visualViewport.offsetTop;\n }\n }\n\n return {\n width: width,\n height: height,\n x: x + getWindowScrollBarX(element),\n y: y\n };\n}","import getDocumentElement from \"./getDocumentElement.js\";\nimport getComputedStyle from \"./getComputedStyle.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getWindowScroll from \"./getWindowScroll.js\";\nimport { max } from \"../utils/math.js\"; // Gets the entire size of the scrollable document area, even extending outside\n// of the `` and `` rect bounds if horizontally scrollable\n\nexport default function getDocumentRect(element) {\n var _element$ownerDocumen;\n\n var html = getDocumentElement(element);\n var winScroll = getWindowScroll(element);\n var body = (_element$ownerDocumen = element.ownerDocument) == null ? void 0 : _element$ownerDocumen.body;\n var width = max(html.scrollWidth, html.clientWidth, body ? body.scrollWidth : 0, body ? body.clientWidth : 0);\n var height = max(html.scrollHeight, html.clientHeight, body ? body.scrollHeight : 0, body ? body.clientHeight : 0);\n var x = -winScroll.scrollLeft + getWindowScrollBarX(element);\n var y = -winScroll.scrollTop;\n\n if (getComputedStyle(body || html).direction === 'rtl') {\n x += max(html.clientWidth, body ? body.clientWidth : 0) - width;\n }\n\n return {\n width: width,\n height: height,\n x: x,\n y: y\n };\n}","import getBasePlacement from \"./getBasePlacement.js\";\nimport getVariation from \"./getVariation.js\";\nimport getMainAxisFromPlacement from \"./getMainAxisFromPlacement.js\";\nimport { top, right, bottom, left, start, end } from \"../enums.js\";\nexport default function computeOffsets(_ref) {\n var reference = _ref.reference,\n element = _ref.element,\n placement = _ref.placement;\n var basePlacement = placement ? getBasePlacement(placement) : null;\n var variation = placement ? getVariation(placement) : null;\n var commonX = reference.x + reference.width / 2 - element.width / 2;\n var commonY = reference.y + reference.height / 2 - element.height / 2;\n var offsets;\n\n switch (basePlacement) {\n case top:\n offsets = {\n x: commonX,\n y: reference.y - element.height\n };\n break;\n\n case bottom:\n offsets = {\n x: commonX,\n y: reference.y + reference.height\n };\n break;\n\n case right:\n offsets = {\n x: reference.x + reference.width,\n y: commonY\n };\n break;\n\n case left:\n offsets = {\n x: reference.x - element.width,\n y: commonY\n };\n break;\n\n default:\n offsets = {\n x: reference.x,\n y: reference.y\n };\n }\n\n var mainAxis = basePlacement ? getMainAxisFromPlacement(basePlacement) : null;\n\n if (mainAxis != null) {\n var len = mainAxis === 'y' ? 'height' : 'width';\n\n switch (variation) {\n case start:\n offsets[mainAxis] = offsets[mainAxis] - (reference[len] / 2 - element[len] / 2);\n break;\n\n case end:\n offsets[mainAxis] = offsets[mainAxis] + (reference[len] / 2 - element[len] / 2);\n break;\n\n default:\n }\n }\n\n return offsets;\n}","import getClippingRect from \"../dom-utils/getClippingRect.js\";\nimport getDocumentElement from \"../dom-utils/getDocumentElement.js\";\nimport getBoundingClientRect from \"../dom-utils/getBoundingClientRect.js\";\nimport computeOffsets from \"./computeOffsets.js\";\nimport rectToClientRect from \"./rectToClientRect.js\";\nimport { clippingParents, reference, popper, bottom, top, right, basePlacements, viewport } from \"../enums.js\";\nimport { isElement } from \"../dom-utils/instanceOf.js\";\nimport mergePaddingObject from \"./mergePaddingObject.js\";\nimport expandToHashMap from \"./expandToHashMap.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport default function detectOverflow(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n _options$placement = _options.placement,\n placement = _options$placement === void 0 ? state.placement : _options$placement,\n _options$strategy = _options.strategy,\n strategy = _options$strategy === void 0 ? state.strategy : _options$strategy,\n _options$boundary = _options.boundary,\n boundary = _options$boundary === void 0 ? clippingParents : _options$boundary,\n _options$rootBoundary = _options.rootBoundary,\n rootBoundary = _options$rootBoundary === void 0 ? viewport : _options$rootBoundary,\n _options$elementConte = _options.elementContext,\n elementContext = _options$elementConte === void 0 ? popper : _options$elementConte,\n _options$altBoundary = _options.altBoundary,\n altBoundary = _options$altBoundary === void 0 ? false : _options$altBoundary,\n _options$padding = _options.padding,\n padding = _options$padding === void 0 ? 0 : _options$padding;\n var paddingObject = mergePaddingObject(typeof padding !== 'number' ? padding : expandToHashMap(padding, basePlacements));\n var altContext = elementContext === popper ? reference : popper;\n var popperRect = state.rects.popper;\n var element = state.elements[altBoundary ? altContext : elementContext];\n var clippingClientRect = getClippingRect(isElement(element) ? element : element.contextElement || getDocumentElement(state.elements.popper), boundary, rootBoundary, strategy);\n var referenceClientRect = getBoundingClientRect(state.elements.reference);\n var popperOffsets = computeOffsets({\n reference: referenceClientRect,\n element: popperRect,\n strategy: 'absolute',\n placement: placement\n });\n var popperClientRect = rectToClientRect(Object.assign({}, popperRect, popperOffsets));\n var elementClientRect = elementContext === popper ? popperClientRect : referenceClientRect; // positive = overflowing the clipping rect\n // 0 or negative = within the clipping rect\n\n var overflowOffsets = {\n top: clippingClientRect.top - elementClientRect.top + paddingObject.top,\n bottom: elementClientRect.bottom - clippingClientRect.bottom + paddingObject.bottom,\n left: clippingClientRect.left - elementClientRect.left + paddingObject.left,\n right: elementClientRect.right - clippingClientRect.right + paddingObject.right\n };\n var offsetData = state.modifiersData.offset; // Offsets can be applied only to the popper element\n\n if (elementContext === popper && offsetData) {\n var offset = offsetData[placement];\n Object.keys(overflowOffsets).forEach(function (key) {\n var multiply = [right, bottom].indexOf(key) >= 0 ? 1 : -1;\n var axis = [top, bottom].indexOf(key) >= 0 ? 'y' : 'x';\n overflowOffsets[key] += offset[axis] * multiply;\n });\n }\n\n return overflowOffsets;\n}","import getOppositePlacement from \"../utils/getOppositePlacement.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getOppositeVariationPlacement from \"../utils/getOppositeVariationPlacement.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport computeAutoPlacement from \"../utils/computeAutoPlacement.js\";\nimport { bottom, top, start, right, left, auto } from \"../enums.js\";\nimport getVariation from \"../utils/getVariation.js\"; // eslint-disable-next-line import/no-unused-modules\n\nfunction getExpandedFallbackPlacements(placement) {\n if (getBasePlacement(placement) === auto) {\n return [];\n }\n\n var oppositePlacement = getOppositePlacement(placement);\n return [getOppositeVariationPlacement(placement), oppositePlacement, getOppositeVariationPlacement(oppositePlacement)];\n}\n\nfunction flip(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n\n if (state.modifiersData[name]._skip) {\n return;\n }\n\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? true : _options$altAxis,\n specifiedFallbackPlacements = options.fallbackPlacements,\n padding = options.padding,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n _options$flipVariatio = options.flipVariations,\n flipVariations = _options$flipVariatio === void 0 ? true : _options$flipVariatio,\n allowedAutoPlacements = options.allowedAutoPlacements;\n var preferredPlacement = state.options.placement;\n var basePlacement = getBasePlacement(preferredPlacement);\n var isBasePlacement = basePlacement === preferredPlacement;\n var fallbackPlacements = specifiedFallbackPlacements || (isBasePlacement || !flipVariations ? [getOppositePlacement(preferredPlacement)] : getExpandedFallbackPlacements(preferredPlacement));\n var placements = [preferredPlacement].concat(fallbackPlacements).reduce(function (acc, placement) {\n return acc.concat(getBasePlacement(placement) === auto ? computeAutoPlacement(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n flipVariations: flipVariations,\n allowedAutoPlacements: allowedAutoPlacements\n }) : placement);\n }, []);\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var checksMap = new Map();\n var makeFallbackChecks = true;\n var firstFittingPlacement = placements[0];\n\n for (var i = 0; i < placements.length; i++) {\n var placement = placements[i];\n\n var _basePlacement = getBasePlacement(placement);\n\n var isStartVariation = getVariation(placement) === start;\n var isVertical = [top, bottom].indexOf(_basePlacement) >= 0;\n var len = isVertical ? 'width' : 'height';\n var overflow = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n altBoundary: altBoundary,\n padding: padding\n });\n var mainVariationSide = isVertical ? isStartVariation ? right : left : isStartVariation ? bottom : top;\n\n if (referenceRect[len] > popperRect[len]) {\n mainVariationSide = getOppositePlacement(mainVariationSide);\n }\n\n var altVariationSide = getOppositePlacement(mainVariationSide);\n var checks = [];\n\n if (checkMainAxis) {\n checks.push(overflow[_basePlacement] <= 0);\n }\n\n if (checkAltAxis) {\n checks.push(overflow[mainVariationSide] <= 0, overflow[altVariationSide] <= 0);\n }\n\n if (checks.every(function (check) {\n return check;\n })) {\n firstFittingPlacement = placement;\n makeFallbackChecks = false;\n break;\n }\n\n checksMap.set(placement, checks);\n }\n\n if (makeFallbackChecks) {\n // `2` may be desired in some cases – research later\n var numberOfChecks = flipVariations ? 3 : 1;\n\n var _loop = function _loop(_i) {\n var fittingPlacement = placements.find(function (placement) {\n var checks = checksMap.get(placement);\n\n if (checks) {\n return checks.slice(0, _i).every(function (check) {\n return check;\n });\n }\n });\n\n if (fittingPlacement) {\n firstFittingPlacement = fittingPlacement;\n return \"break\";\n }\n };\n\n for (var _i = numberOfChecks; _i > 0; _i--) {\n var _ret = _loop(_i);\n\n if (_ret === \"break\") break;\n }\n }\n\n if (state.placement !== firstFittingPlacement) {\n state.modifiersData[name]._skip = true;\n state.placement = firstFittingPlacement;\n state.reset = true;\n }\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'flip',\n enabled: true,\n phase: 'main',\n fn: flip,\n requiresIfExists: ['offset'],\n data: {\n _skip: false\n }\n};","import getVariation from \"./getVariation.js\";\nimport { variationPlacements, basePlacements, placements as allPlacements } from \"../enums.js\";\nimport detectOverflow from \"./detectOverflow.js\";\nimport getBasePlacement from \"./getBasePlacement.js\";\nexport default function computeAutoPlacement(state, options) {\n if (options === void 0) {\n options = {};\n }\n\n var _options = options,\n placement = _options.placement,\n boundary = _options.boundary,\n rootBoundary = _options.rootBoundary,\n padding = _options.padding,\n flipVariations = _options.flipVariations,\n _options$allowedAutoP = _options.allowedAutoPlacements,\n allowedAutoPlacements = _options$allowedAutoP === void 0 ? allPlacements : _options$allowedAutoP;\n var variation = getVariation(placement);\n var placements = variation ? flipVariations ? variationPlacements : variationPlacements.filter(function (placement) {\n return getVariation(placement) === variation;\n }) : basePlacements;\n var allowedPlacements = placements.filter(function (placement) {\n return allowedAutoPlacements.indexOf(placement) >= 0;\n });\n\n if (allowedPlacements.length === 0) {\n allowedPlacements = placements;\n\n if (process.env.NODE_ENV !== \"production\") {\n console.error(['Popper: The `allowedAutoPlacements` option did not allow any', 'placements. Ensure the `placement` option matches the variation', 'of the allowed placements.', 'For example, \"auto\" cannot be used to allow \"bottom-start\".', 'Use \"auto-start\" instead.'].join(' '));\n }\n } // $FlowFixMe[incompatible-type]: Flow seems to have problems with two array unions...\n\n\n var overflows = allowedPlacements.reduce(function (acc, placement) {\n acc[placement] = detectOverflow(state, {\n placement: placement,\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding\n })[getBasePlacement(placement)];\n return acc;\n }, {});\n return Object.keys(overflows).sort(function (a, b) {\n return overflows[a] - overflows[b];\n });\n}","import { top, bottom, left, right } from \"../enums.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\n\nfunction getSideOffsets(overflow, rect, preventedOffsets) {\n if (preventedOffsets === void 0) {\n preventedOffsets = {\n x: 0,\n y: 0\n };\n }\n\n return {\n top: overflow.top - rect.height - preventedOffsets.y,\n right: overflow.right - rect.width + preventedOffsets.x,\n bottom: overflow.bottom - rect.height + preventedOffsets.y,\n left: overflow.left - rect.width - preventedOffsets.x\n };\n}\n\nfunction isAnySideFullyClipped(overflow) {\n return [top, right, bottom, left].some(function (side) {\n return overflow[side] >= 0;\n });\n}\n\nfunction hide(_ref) {\n var state = _ref.state,\n name = _ref.name;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var preventedOffsets = state.modifiersData.preventOverflow;\n var referenceOverflow = detectOverflow(state, {\n elementContext: 'reference'\n });\n var popperAltOverflow = detectOverflow(state, {\n altBoundary: true\n });\n var referenceClippingOffsets = getSideOffsets(referenceOverflow, referenceRect);\n var popperEscapeOffsets = getSideOffsets(popperAltOverflow, popperRect, preventedOffsets);\n var isReferenceHidden = isAnySideFullyClipped(referenceClippingOffsets);\n var hasPopperEscaped = isAnySideFullyClipped(popperEscapeOffsets);\n state.modifiersData[name] = {\n referenceClippingOffsets: referenceClippingOffsets,\n popperEscapeOffsets: popperEscapeOffsets,\n isReferenceHidden: isReferenceHidden,\n hasPopperEscaped: hasPopperEscaped\n };\n state.attributes.popper = Object.assign({}, state.attributes.popper, {\n 'data-popper-reference-hidden': isReferenceHidden,\n 'data-popper-escaped': hasPopperEscaped\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'hide',\n enabled: true,\n phase: 'main',\n requiresIfExists: ['preventOverflow'],\n fn: hide\n};","import getBasePlacement from \"../utils/getBasePlacement.js\";\nimport { top, left, right, placements } from \"../enums.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport function distanceAndSkiddingToXY(placement, rects, offset) {\n var basePlacement = getBasePlacement(placement);\n var invertDistance = [left, top].indexOf(basePlacement) >= 0 ? -1 : 1;\n\n var _ref = typeof offset === 'function' ? offset(Object.assign({}, rects, {\n placement: placement\n })) : offset,\n skidding = _ref[0],\n distance = _ref[1];\n\n skidding = skidding || 0;\n distance = (distance || 0) * invertDistance;\n return [left, right].indexOf(basePlacement) >= 0 ? {\n x: distance,\n y: skidding\n } : {\n x: skidding,\n y: distance\n };\n}\n\nfunction offset(_ref2) {\n var state = _ref2.state,\n options = _ref2.options,\n name = _ref2.name;\n var _options$offset = options.offset,\n offset = _options$offset === void 0 ? [0, 0] : _options$offset;\n var data = placements.reduce(function (acc, placement) {\n acc[placement] = distanceAndSkiddingToXY(placement, state.rects, offset);\n return acc;\n }, {});\n var _data$state$placement = data[state.placement],\n x = _data$state$placement.x,\n y = _data$state$placement.y;\n\n if (state.modifiersData.popperOffsets != null) {\n state.modifiersData.popperOffsets.x += x;\n state.modifiersData.popperOffsets.y += y;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'offset',\n enabled: true,\n phase: 'main',\n requires: ['popperOffsets'],\n fn: offset\n};","import computeOffsets from \"../utils/computeOffsets.js\";\n\nfunction popperOffsets(_ref) {\n var state = _ref.state,\n name = _ref.name;\n // Offsets are the actual position the popper needs to have to be\n // properly positioned near its reference element\n // This is the most basic placement, and will be adjusted by\n // the modifiers in the next step\n state.modifiersData[name] = computeOffsets({\n reference: state.rects.reference,\n element: state.rects.popper,\n strategy: 'absolute',\n placement: state.placement\n });\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'popperOffsets',\n enabled: true,\n phase: 'read',\n fn: popperOffsets,\n data: {}\n};","import { top, left, right, bottom, start } from \"../enums.js\";\nimport getBasePlacement from \"../utils/getBasePlacement.js\";\nimport getMainAxisFromPlacement from \"../utils/getMainAxisFromPlacement.js\";\nimport getAltAxis from \"../utils/getAltAxis.js\";\nimport { within, withinMaxClamp } from \"../utils/within.js\";\nimport getLayoutRect from \"../dom-utils/getLayoutRect.js\";\nimport getOffsetParent from \"../dom-utils/getOffsetParent.js\";\nimport detectOverflow from \"../utils/detectOverflow.js\";\nimport getVariation from \"../utils/getVariation.js\";\nimport getFreshSideObject from \"../utils/getFreshSideObject.js\";\nimport { min as mathMin, max as mathMax } from \"../utils/math.js\";\n\nfunction preventOverflow(_ref) {\n var state = _ref.state,\n options = _ref.options,\n name = _ref.name;\n var _options$mainAxis = options.mainAxis,\n checkMainAxis = _options$mainAxis === void 0 ? true : _options$mainAxis,\n _options$altAxis = options.altAxis,\n checkAltAxis = _options$altAxis === void 0 ? false : _options$altAxis,\n boundary = options.boundary,\n rootBoundary = options.rootBoundary,\n altBoundary = options.altBoundary,\n padding = options.padding,\n _options$tether = options.tether,\n tether = _options$tether === void 0 ? true : _options$tether,\n _options$tetherOffset = options.tetherOffset,\n tetherOffset = _options$tetherOffset === void 0 ? 0 : _options$tetherOffset;\n var overflow = detectOverflow(state, {\n boundary: boundary,\n rootBoundary: rootBoundary,\n padding: padding,\n altBoundary: altBoundary\n });\n var basePlacement = getBasePlacement(state.placement);\n var variation = getVariation(state.placement);\n var isBasePlacement = !variation;\n var mainAxis = getMainAxisFromPlacement(basePlacement);\n var altAxis = getAltAxis(mainAxis);\n var popperOffsets = state.modifiersData.popperOffsets;\n var referenceRect = state.rects.reference;\n var popperRect = state.rects.popper;\n var tetherOffsetValue = typeof tetherOffset === 'function' ? tetherOffset(Object.assign({}, state.rects, {\n placement: state.placement\n })) : tetherOffset;\n var normalizedTetherOffsetValue = typeof tetherOffsetValue === 'number' ? {\n mainAxis: tetherOffsetValue,\n altAxis: tetherOffsetValue\n } : Object.assign({\n mainAxis: 0,\n altAxis: 0\n }, tetherOffsetValue);\n var offsetModifierState = state.modifiersData.offset ? state.modifiersData.offset[state.placement] : null;\n var data = {\n x: 0,\n y: 0\n };\n\n if (!popperOffsets) {\n return;\n }\n\n if (checkMainAxis) {\n var _offsetModifierState$;\n\n var mainSide = mainAxis === 'y' ? top : left;\n var altSide = mainAxis === 'y' ? bottom : right;\n var len = mainAxis === 'y' ? 'height' : 'width';\n var offset = popperOffsets[mainAxis];\n var min = offset + overflow[mainSide];\n var max = offset - overflow[altSide];\n var additive = tether ? -popperRect[len] / 2 : 0;\n var minLen = variation === start ? referenceRect[len] : popperRect[len];\n var maxLen = variation === start ? -popperRect[len] : -referenceRect[len]; // We need to include the arrow in the calculation so the arrow doesn't go\n // outside the reference bounds\n\n var arrowElement = state.elements.arrow;\n var arrowRect = tether && arrowElement ? getLayoutRect(arrowElement) : {\n width: 0,\n height: 0\n };\n var arrowPaddingObject = state.modifiersData['arrow#persistent'] ? state.modifiersData['arrow#persistent'].padding : getFreshSideObject();\n var arrowPaddingMin = arrowPaddingObject[mainSide];\n var arrowPaddingMax = arrowPaddingObject[altSide]; // If the reference length is smaller than the arrow length, we don't want\n // to include its full size in the calculation. If the reference is small\n // and near the edge of a boundary, the popper can overflow even if the\n // reference is not overflowing as well (e.g. virtual elements with no\n // width or height)\n\n var arrowLen = within(0, referenceRect[len], arrowRect[len]);\n var minOffset = isBasePlacement ? referenceRect[len] / 2 - additive - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis : minLen - arrowLen - arrowPaddingMin - normalizedTetherOffsetValue.mainAxis;\n var maxOffset = isBasePlacement ? -referenceRect[len] / 2 + additive + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis : maxLen + arrowLen + arrowPaddingMax + normalizedTetherOffsetValue.mainAxis;\n var arrowOffsetParent = state.elements.arrow && getOffsetParent(state.elements.arrow);\n var clientOffset = arrowOffsetParent ? mainAxis === 'y' ? arrowOffsetParent.clientTop || 0 : arrowOffsetParent.clientLeft || 0 : 0;\n var offsetModifierValue = (_offsetModifierState$ = offsetModifierState == null ? void 0 : offsetModifierState[mainAxis]) != null ? _offsetModifierState$ : 0;\n var tetherMin = offset + minOffset - offsetModifierValue - clientOffset;\n var tetherMax = offset + maxOffset - offsetModifierValue;\n var preventedOffset = within(tether ? mathMin(min, tetherMin) : min, offset, tether ? mathMax(max, tetherMax) : max);\n popperOffsets[mainAxis] = preventedOffset;\n data[mainAxis] = preventedOffset - offset;\n }\n\n if (checkAltAxis) {\n var _offsetModifierState$2;\n\n var _mainSide = mainAxis === 'x' ? top : left;\n\n var _altSide = mainAxis === 'x' ? bottom : right;\n\n var _offset = popperOffsets[altAxis];\n\n var _len = altAxis === 'y' ? 'height' : 'width';\n\n var _min = _offset + overflow[_mainSide];\n\n var _max = _offset - overflow[_altSide];\n\n var isOriginSide = [top, left].indexOf(basePlacement) !== -1;\n\n var _offsetModifierValue = (_offsetModifierState$2 = offsetModifierState == null ? void 0 : offsetModifierState[altAxis]) != null ? _offsetModifierState$2 : 0;\n\n var _tetherMin = isOriginSide ? _min : _offset - referenceRect[_len] - popperRect[_len] - _offsetModifierValue + normalizedTetherOffsetValue.altAxis;\n\n var _tetherMax = isOriginSide ? _offset + referenceRect[_len] + popperRect[_len] - _offsetModifierValue - normalizedTetherOffsetValue.altAxis : _max;\n\n var _preventedOffset = tether && isOriginSide ? withinMaxClamp(_tetherMin, _offset, _tetherMax) : within(tether ? _tetherMin : _min, _offset, tether ? _tetherMax : _max);\n\n popperOffsets[altAxis] = _preventedOffset;\n data[altAxis] = _preventedOffset - _offset;\n }\n\n state.modifiersData[name] = data;\n} // eslint-disable-next-line import/no-unused-modules\n\n\nexport default {\n name: 'preventOverflow',\n enabled: true,\n phase: 'main',\n fn: preventOverflow,\n requiresIfExists: ['offset']\n};","export default function getAltAxis(axis) {\n return axis === 'x' ? 'y' : 'x';\n}","import getBoundingClientRect from \"./getBoundingClientRect.js\";\nimport getNodeScroll from \"./getNodeScroll.js\";\nimport getNodeName from \"./getNodeName.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getWindowScrollBarX from \"./getWindowScrollBarX.js\";\nimport getDocumentElement from \"./getDocumentElement.js\";\nimport isScrollParent from \"./isScrollParent.js\";\nimport { round } from \"../utils/math.js\";\n\nfunction isElementScaled(element) {\n var rect = element.getBoundingClientRect();\n var scaleX = round(rect.width) / element.offsetWidth || 1;\n var scaleY = round(rect.height) / element.offsetHeight || 1;\n return scaleX !== 1 || scaleY !== 1;\n} // Returns the composite rect of an element relative to its offsetParent.\n// Composite means it takes into account transforms as well as layout.\n\n\nexport default function getCompositeRect(elementOrVirtualElement, offsetParent, isFixed) {\n if (isFixed === void 0) {\n isFixed = false;\n }\n\n var isOffsetParentAnElement = isHTMLElement(offsetParent);\n var offsetParentIsScaled = isHTMLElement(offsetParent) && isElementScaled(offsetParent);\n var documentElement = getDocumentElement(offsetParent);\n var rect = getBoundingClientRect(elementOrVirtualElement, offsetParentIsScaled, isFixed);\n var scroll = {\n scrollLeft: 0,\n scrollTop: 0\n };\n var offsets = {\n x: 0,\n y: 0\n };\n\n if (isOffsetParentAnElement || !isOffsetParentAnElement && !isFixed) {\n if (getNodeName(offsetParent) !== 'body' || // https://github.com/popperjs/popper-core/issues/1078\n isScrollParent(documentElement)) {\n scroll = getNodeScroll(offsetParent);\n }\n\n if (isHTMLElement(offsetParent)) {\n offsets = getBoundingClientRect(offsetParent, true);\n offsets.x += offsetParent.clientLeft;\n offsets.y += offsetParent.clientTop;\n } else if (documentElement) {\n offsets.x = getWindowScrollBarX(documentElement);\n }\n }\n\n return {\n x: rect.left + scroll.scrollLeft - offsets.x,\n y: rect.top + scroll.scrollTop - offsets.y,\n width: rect.width,\n height: rect.height\n };\n}","import getWindowScroll from \"./getWindowScroll.js\";\nimport getWindow from \"./getWindow.js\";\nimport { isHTMLElement } from \"./instanceOf.js\";\nimport getHTMLElementScroll from \"./getHTMLElementScroll.js\";\nexport default function getNodeScroll(node) {\n if (node === getWindow(node) || !isHTMLElement(node)) {\n return getWindowScroll(node);\n } else {\n return getHTMLElementScroll(node);\n }\n}","export default function getHTMLElementScroll(element) {\n return {\n scrollLeft: element.scrollLeft,\n scrollTop: element.scrollTop\n };\n}","import { modifierPhases } from \"../enums.js\"; // source: https://stackoverflow.com/questions/49875255\n\nfunction order(modifiers) {\n var map = new Map();\n var visited = new Set();\n var result = [];\n modifiers.forEach(function (modifier) {\n map.set(modifier.name, modifier);\n }); // On visiting object, check for its dependencies and visit them recursively\n\n function sort(modifier) {\n visited.add(modifier.name);\n var requires = [].concat(modifier.requires || [], modifier.requiresIfExists || []);\n requires.forEach(function (dep) {\n if (!visited.has(dep)) {\n var depModifier = map.get(dep);\n\n if (depModifier) {\n sort(depModifier);\n }\n }\n });\n result.push(modifier);\n }\n\n modifiers.forEach(function (modifier) {\n if (!visited.has(modifier.name)) {\n // check for visited object\n sort(modifier);\n }\n });\n return result;\n}\n\nexport default function orderModifiers(modifiers) {\n // order based on dependencies\n var orderedModifiers = order(modifiers); // order based on phase\n\n return modifierPhases.reduce(function (acc, phase) {\n return acc.concat(orderedModifiers.filter(function (modifier) {\n return modifier.phase === phase;\n }));\n }, []);\n}","import getCompositeRect from \"./dom-utils/getCompositeRect.js\";\nimport getLayoutRect from \"./dom-utils/getLayoutRect.js\";\nimport listScrollParents from \"./dom-utils/listScrollParents.js\";\nimport getOffsetParent from \"./dom-utils/getOffsetParent.js\";\nimport getComputedStyle from \"./dom-utils/getComputedStyle.js\";\nimport orderModifiers from \"./utils/orderModifiers.js\";\nimport debounce from \"./utils/debounce.js\";\nimport validateModifiers from \"./utils/validateModifiers.js\";\nimport uniqueBy from \"./utils/uniqueBy.js\";\nimport getBasePlacement from \"./utils/getBasePlacement.js\";\nimport mergeByName from \"./utils/mergeByName.js\";\nimport detectOverflow from \"./utils/detectOverflow.js\";\nimport { isElement } from \"./dom-utils/instanceOf.js\";\nimport { auto } from \"./enums.js\";\nvar INVALID_ELEMENT_ERROR = 'Popper: Invalid reference or popper argument provided. They must be either a DOM element or virtual element.';\nvar INFINITE_LOOP_ERROR = 'Popper: An infinite loop in the modifiers cycle has been detected! The cycle has been interrupted to prevent a browser crash.';\nvar DEFAULT_OPTIONS = {\n placement: 'bottom',\n modifiers: [],\n strategy: 'absolute'\n};\n\nfunction areValidElements() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return !args.some(function (element) {\n return !(element && typeof element.getBoundingClientRect === 'function');\n });\n}\n\nexport function popperGenerator(generatorOptions) {\n if (generatorOptions === void 0) {\n generatorOptions = {};\n }\n\n var _generatorOptions = generatorOptions,\n _generatorOptions$def = _generatorOptions.defaultModifiers,\n defaultModifiers = _generatorOptions$def === void 0 ? [] : _generatorOptions$def,\n _generatorOptions$def2 = _generatorOptions.defaultOptions,\n defaultOptions = _generatorOptions$def2 === void 0 ? DEFAULT_OPTIONS : _generatorOptions$def2;\n return function createPopper(reference, popper, options) {\n if (options === void 0) {\n options = defaultOptions;\n }\n\n var state = {\n placement: 'bottom',\n orderedModifiers: [],\n options: Object.assign({}, DEFAULT_OPTIONS, defaultOptions),\n modifiersData: {},\n elements: {\n reference: reference,\n popper: popper\n },\n attributes: {},\n styles: {}\n };\n var effectCleanupFns = [];\n var isDestroyed = false;\n var instance = {\n state: state,\n setOptions: function setOptions(setOptionsAction) {\n var options = typeof setOptionsAction === 'function' ? setOptionsAction(state.options) : setOptionsAction;\n cleanupModifierEffects();\n state.options = Object.assign({}, defaultOptions, state.options, options);\n state.scrollParents = {\n reference: isElement(reference) ? listScrollParents(reference) : reference.contextElement ? listScrollParents(reference.contextElement) : [],\n popper: listScrollParents(popper)\n }; // Orders the modifiers based on their dependencies and `phase`\n // properties\n\n var orderedModifiers = orderModifiers(mergeByName([].concat(defaultModifiers, state.options.modifiers))); // Strip out disabled modifiers\n\n state.orderedModifiers = orderedModifiers.filter(function (m) {\n return m.enabled;\n }); // Validate the provided modifiers so that the consumer will get warned\n // if one of the modifiers is invalid for any reason\n\n if (process.env.NODE_ENV !== \"production\") {\n var modifiers = uniqueBy([].concat(orderedModifiers, state.options.modifiers), function (_ref) {\n var name = _ref.name;\n return name;\n });\n validateModifiers(modifiers);\n\n if (getBasePlacement(state.options.placement) === auto) {\n var flipModifier = state.orderedModifiers.find(function (_ref2) {\n var name = _ref2.name;\n return name === 'flip';\n });\n\n if (!flipModifier) {\n console.error(['Popper: \"auto\" placements require the \"flip\" modifier be', 'present and enabled to work.'].join(' '));\n }\n }\n\n var _getComputedStyle = getComputedStyle(popper),\n marginTop = _getComputedStyle.marginTop,\n marginRight = _getComputedStyle.marginRight,\n marginBottom = _getComputedStyle.marginBottom,\n marginLeft = _getComputedStyle.marginLeft; // We no longer take into account `margins` on the popper, and it can\n // cause bugs with positioning, so we'll warn the consumer\n\n\n if ([marginTop, marginRight, marginBottom, marginLeft].some(function (margin) {\n return parseFloat(margin);\n })) {\n console.warn(['Popper: CSS \"margin\" styles cannot be used to apply padding', 'between the popper and its reference element or boundary.', 'To replicate margin, use the `offset` modifier, as well as', 'the `padding` option in the `preventOverflow` and `flip`', 'modifiers.'].join(' '));\n }\n }\n\n runModifierEffects();\n return instance.update();\n },\n // Sync update – it will always be executed, even if not necessary. This\n // is useful for low frequency updates where sync behavior simplifies the\n // logic.\n // For high frequency updates (e.g. `resize` and `scroll` events), always\n // prefer the async Popper#update method\n forceUpdate: function forceUpdate() {\n if (isDestroyed) {\n return;\n }\n\n var _state$elements = state.elements,\n reference = _state$elements.reference,\n popper = _state$elements.popper; // Don't proceed if `reference` or `popper` are not valid elements\n // anymore\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return;\n } // Store the reference and popper rects to be read by modifiers\n\n\n state.rects = {\n reference: getCompositeRect(reference, getOffsetParent(popper), state.options.strategy === 'fixed'),\n popper: getLayoutRect(popper)\n }; // Modifiers have the ability to reset the current update cycle. The\n // most common use case for this is the `flip` modifier changing the\n // placement, which then needs to re-run all the modifiers, because the\n // logic was previously ran for the previous placement and is therefore\n // stale/incorrect\n\n state.reset = false;\n state.placement = state.options.placement; // On each update cycle, the `modifiersData` property for each modifier\n // is filled with the initial data specified by the modifier. This means\n // it doesn't persist and is fresh on each update.\n // To ensure persistent data, use `${name}#persistent`\n\n state.orderedModifiers.forEach(function (modifier) {\n return state.modifiersData[modifier.name] = Object.assign({}, modifier.data);\n });\n var __debug_loops__ = 0;\n\n for (var index = 0; index < state.orderedModifiers.length; index++) {\n if (process.env.NODE_ENV !== \"production\") {\n __debug_loops__ += 1;\n\n if (__debug_loops__ > 100) {\n console.error(INFINITE_LOOP_ERROR);\n break;\n }\n }\n\n if (state.reset === true) {\n state.reset = false;\n index = -1;\n continue;\n }\n\n var _state$orderedModifie = state.orderedModifiers[index],\n fn = _state$orderedModifie.fn,\n _state$orderedModifie2 = _state$orderedModifie.options,\n _options = _state$orderedModifie2 === void 0 ? {} : _state$orderedModifie2,\n name = _state$orderedModifie.name;\n\n if (typeof fn === 'function') {\n state = fn({\n state: state,\n options: _options,\n name: name,\n instance: instance\n }) || state;\n }\n }\n },\n // Async and optimistically optimized update – it will not be executed if\n // not necessary (debounced to run at most once-per-tick)\n update: debounce(function () {\n return new Promise(function (resolve) {\n instance.forceUpdate();\n resolve(state);\n });\n }),\n destroy: function destroy() {\n cleanupModifierEffects();\n isDestroyed = true;\n }\n };\n\n if (!areValidElements(reference, popper)) {\n if (process.env.NODE_ENV !== \"production\") {\n console.error(INVALID_ELEMENT_ERROR);\n }\n\n return instance;\n }\n\n instance.setOptions(options).then(function (state) {\n if (!isDestroyed && options.onFirstUpdate) {\n options.onFirstUpdate(state);\n }\n }); // Modifiers have the ability to execute arbitrary code before the first\n // update cycle runs. They will be executed in the same order as the update\n // cycle. This is useful when a modifier adds some persistent data that\n // other modifiers need to use, but the modifier is run after the dependent\n // one.\n\n function runModifierEffects() {\n state.orderedModifiers.forEach(function (_ref3) {\n var name = _ref3.name,\n _ref3$options = _ref3.options,\n options = _ref3$options === void 0 ? {} : _ref3$options,\n effect = _ref3.effect;\n\n if (typeof effect === 'function') {\n var cleanupFn = effect({\n state: state,\n name: name,\n instance: instance,\n options: options\n });\n\n var noopFn = function noopFn() {};\n\n effectCleanupFns.push(cleanupFn || noopFn);\n }\n });\n }\n\n function cleanupModifierEffects() {\n effectCleanupFns.forEach(function (fn) {\n return fn();\n });\n effectCleanupFns = [];\n }\n\n return instance;\n };\n}\nexport var createPopper = /*#__PURE__*/popperGenerator(); // eslint-disable-next-line import/no-unused-modules\n\nexport { detectOverflow };","export default function debounce(fn) {\n var pending;\n return function () {\n if (!pending) {\n pending = new Promise(function (resolve) {\n Promise.resolve().then(function () {\n pending = undefined;\n resolve(fn());\n });\n });\n }\n\n return pending;\n };\n}","export default function mergeByName(modifiers) {\n var merged = modifiers.reduce(function (merged, current) {\n var existing = merged[current.name];\n merged[current.name] = existing ? Object.assign({}, existing, current, {\n options: Object.assign({}, existing.options, current.options),\n data: Object.assign({}, existing.data, current.data)\n }) : current;\n return merged;\n }, {}); // IE11 does not support Object.values\n\n return Object.keys(merged).map(function (key) {\n return merged[key];\n });\n}","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nimport offset from \"./modifiers/offset.js\";\nimport flip from \"./modifiers/flip.js\";\nimport preventOverflow from \"./modifiers/preventOverflow.js\";\nimport arrow from \"./modifiers/arrow.js\";\nimport hide from \"./modifiers/hide.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles, offset, flip, preventOverflow, arrow, hide];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow }; // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper as createPopperLite } from \"./popper-lite.js\"; // eslint-disable-next-line import/no-unused-modules\n\nexport * from \"./modifiers/index.js\";","import { popperGenerator, detectOverflow } from \"./createPopper.js\";\nimport eventListeners from \"./modifiers/eventListeners.js\";\nimport popperOffsets from \"./modifiers/popperOffsets.js\";\nimport computeStyles from \"./modifiers/computeStyles.js\";\nimport applyStyles from \"./modifiers/applyStyles.js\";\nvar defaultModifiers = [eventListeners, popperOffsets, computeStyles, applyStyles];\nvar createPopper = /*#__PURE__*/popperGenerator({\n defaultModifiers: defaultModifiers\n}); // eslint-disable-next-line import/no-unused-modules\n\nexport { createPopper, popperGenerator, defaultModifiers, detectOverflow };","/*!\n * Bootstrap v5.2.3 (https://getbootstrap.com/)\n * Copyright 2011-2022 The Bootstrap Authors (https://github.com/twbs/bootstrap/graphs/contributors)\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n */\nimport * as Popper from '@popperjs/core';\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/index.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst MAX_UID = 1000000;\nconst MILLISECONDS_MULTIPLIER = 1000;\nconst TRANSITION_END = 'transitionend'; // Shout-out Angus Croll (https://goo.gl/pxwQGp)\n\nconst toType = object => {\n if (object === null || object === undefined) {\n return `${object}`;\n }\n\n return Object.prototype.toString.call(object).match(/\\s([a-z]+)/i)[1].toLowerCase();\n};\n/**\n * Public Util API\n */\n\n\nconst getUID = prefix => {\n do {\n prefix += Math.floor(Math.random() * MAX_UID);\n } while (document.getElementById(prefix));\n\n return prefix;\n};\n\nconst getSelector = element => {\n let selector = element.getAttribute('data-bs-target');\n\n if (!selector || selector === '#') {\n let hrefAttribute = element.getAttribute('href'); // The only valid content that could double as a selector are IDs or classes,\n // so everything starting with `#` or `.`. If a \"real\" URL is used as the selector,\n // `document.querySelector` will rightfully complain it is invalid.\n // See https://github.com/twbs/bootstrap/issues/32273\n\n if (!hrefAttribute || !hrefAttribute.includes('#') && !hrefAttribute.startsWith('.')) {\n return null;\n } // Just in case some CMS puts out a full URL with the anchor appended\n\n\n if (hrefAttribute.includes('#') && !hrefAttribute.startsWith('#')) {\n hrefAttribute = `#${hrefAttribute.split('#')[1]}`;\n }\n\n selector = hrefAttribute && hrefAttribute !== '#' ? hrefAttribute.trim() : null;\n }\n\n return selector;\n};\n\nconst getSelectorFromElement = element => {\n const selector = getSelector(element);\n\n if (selector) {\n return document.querySelector(selector) ? selector : null;\n }\n\n return null;\n};\n\nconst getElementFromSelector = element => {\n const selector = getSelector(element);\n return selector ? document.querySelector(selector) : null;\n};\n\nconst getTransitionDurationFromElement = element => {\n if (!element) {\n return 0;\n } // Get transition-duration of the element\n\n\n let {\n transitionDuration,\n transitionDelay\n } = window.getComputedStyle(element);\n const floatTransitionDuration = Number.parseFloat(transitionDuration);\n const floatTransitionDelay = Number.parseFloat(transitionDelay); // Return 0 if element or transition duration is not found\n\n if (!floatTransitionDuration && !floatTransitionDelay) {\n return 0;\n } // If multiple durations are defined, take the first\n\n\n transitionDuration = transitionDuration.split(',')[0];\n transitionDelay = transitionDelay.split(',')[0];\n return (Number.parseFloat(transitionDuration) + Number.parseFloat(transitionDelay)) * MILLISECONDS_MULTIPLIER;\n};\n\nconst triggerTransitionEnd = element => {\n element.dispatchEvent(new Event(TRANSITION_END));\n};\n\nconst isElement = object => {\n if (!object || typeof object !== 'object') {\n return false;\n }\n\n if (typeof object.jquery !== 'undefined') {\n object = object[0];\n }\n\n return typeof object.nodeType !== 'undefined';\n};\n\nconst getElement = object => {\n // it's a jQuery object or a node element\n if (isElement(object)) {\n return object.jquery ? object[0] : object;\n }\n\n if (typeof object === 'string' && object.length > 0) {\n return document.querySelector(object);\n }\n\n return null;\n};\n\nconst isVisible = element => {\n if (!isElement(element) || element.getClientRects().length === 0) {\n return false;\n }\n\n const elementIsVisible = getComputedStyle(element).getPropertyValue('visibility') === 'visible'; // Handle `details` element as its content may falsie appear visible when it is closed\n\n const closedDetails = element.closest('details:not([open])');\n\n if (!closedDetails) {\n return elementIsVisible;\n }\n\n if (closedDetails !== element) {\n const summary = element.closest('summary');\n\n if (summary && summary.parentNode !== closedDetails) {\n return false;\n }\n\n if (summary === null) {\n return false;\n }\n }\n\n return elementIsVisible;\n};\n\nconst isDisabled = element => {\n if (!element || element.nodeType !== Node.ELEMENT_NODE) {\n return true;\n }\n\n if (element.classList.contains('disabled')) {\n return true;\n }\n\n if (typeof element.disabled !== 'undefined') {\n return element.disabled;\n }\n\n return element.hasAttribute('disabled') && element.getAttribute('disabled') !== 'false';\n};\n\nconst findShadowRoot = element => {\n if (!document.documentElement.attachShadow) {\n return null;\n } // Can find the shadow root otherwise it'll return the document\n\n\n if (typeof element.getRootNode === 'function') {\n const root = element.getRootNode();\n return root instanceof ShadowRoot ? root : null;\n }\n\n if (element instanceof ShadowRoot) {\n return element;\n } // when we don't find a shadow root\n\n\n if (!element.parentNode) {\n return null;\n }\n\n return findShadowRoot(element.parentNode);\n};\n\nconst noop = () => {};\n/**\n * Trick to restart an element's animation\n *\n * @param {HTMLElement} element\n * @return void\n *\n * @see https://www.charistheo.io/blog/2021/02/restart-a-css-animation-with-javascript/#restarting-a-css-animation\n */\n\n\nconst reflow = element => {\n element.offsetHeight; // eslint-disable-line no-unused-expressions\n};\n\nconst getjQuery = () => {\n if (window.jQuery && !document.body.hasAttribute('data-bs-no-jquery')) {\n return window.jQuery;\n }\n\n return null;\n};\n\nconst DOMContentLoadedCallbacks = [];\n\nconst onDOMContentLoaded = callback => {\n if (document.readyState === 'loading') {\n // add listener on the first call when the document is in loading state\n if (!DOMContentLoadedCallbacks.length) {\n document.addEventListener('DOMContentLoaded', () => {\n for (const callback of DOMContentLoadedCallbacks) {\n callback();\n }\n });\n }\n\n DOMContentLoadedCallbacks.push(callback);\n } else {\n callback();\n }\n};\n\nconst isRTL = () => document.documentElement.dir === 'rtl';\n\nconst defineJQueryPlugin = plugin => {\n onDOMContentLoaded(() => {\n const $ = getjQuery();\n /* istanbul ignore if */\n\n if ($) {\n const name = plugin.NAME;\n const JQUERY_NO_CONFLICT = $.fn[name];\n $.fn[name] = plugin.jQueryInterface;\n $.fn[name].Constructor = plugin;\n\n $.fn[name].noConflict = () => {\n $.fn[name] = JQUERY_NO_CONFLICT;\n return plugin.jQueryInterface;\n };\n }\n });\n};\n\nconst execute = callback => {\n if (typeof callback === 'function') {\n callback();\n }\n};\n\nconst executeAfterTransition = (callback, transitionElement, waitForTransition = true) => {\n if (!waitForTransition) {\n execute(callback);\n return;\n }\n\n const durationPadding = 5;\n const emulatedDuration = getTransitionDurationFromElement(transitionElement) + durationPadding;\n let called = false;\n\n const handler = ({\n target\n }) => {\n if (target !== transitionElement) {\n return;\n }\n\n called = true;\n transitionElement.removeEventListener(TRANSITION_END, handler);\n execute(callback);\n };\n\n transitionElement.addEventListener(TRANSITION_END, handler);\n setTimeout(() => {\n if (!called) {\n triggerTransitionEnd(transitionElement);\n }\n }, emulatedDuration);\n};\n/**\n * Return the previous/next element of a list.\n *\n * @param {array} list The list of elements\n * @param activeElement The active element\n * @param shouldGetNext Choose to get next or previous element\n * @param isCycleAllowed\n * @return {Element|elem} The proper element\n */\n\n\nconst getNextActiveElement = (list, activeElement, shouldGetNext, isCycleAllowed) => {\n const listLength = list.length;\n let index = list.indexOf(activeElement); // if the element does not exist in the list return an element\n // depending on the direction and if cycle is allowed\n\n if (index === -1) {\n return !shouldGetNext && isCycleAllowed ? list[listLength - 1] : list[0];\n }\n\n index += shouldGetNext ? 1 : -1;\n\n if (isCycleAllowed) {\n index = (index + listLength) % listLength;\n }\n\n return list[Math.max(0, Math.min(index, listLength - 1))];\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/event-handler.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst namespaceRegex = /[^.]*(?=\\..*)\\.|.*/;\nconst stripNameRegex = /\\..*/;\nconst stripUidRegex = /::\\d+$/;\nconst eventRegistry = {}; // Events storage\n\nlet uidEvent = 1;\nconst customEvents = {\n mouseenter: 'mouseover',\n mouseleave: 'mouseout'\n};\nconst nativeEvents = new Set(['click', 'dblclick', 'mouseup', 'mousedown', 'contextmenu', 'mousewheel', 'DOMMouseScroll', 'mouseover', 'mouseout', 'mousemove', 'selectstart', 'selectend', 'keydown', 'keypress', 'keyup', 'orientationchange', 'touchstart', 'touchmove', 'touchend', 'touchcancel', 'pointerdown', 'pointermove', 'pointerup', 'pointerleave', 'pointercancel', 'gesturestart', 'gesturechange', 'gestureend', 'focus', 'blur', 'change', 'reset', 'select', 'submit', 'focusin', 'focusout', 'load', 'unload', 'beforeunload', 'resize', 'move', 'DOMContentLoaded', 'readystatechange', 'error', 'abort', 'scroll']);\n/**\n * Private methods\n */\n\nfunction makeEventUid(element, uid) {\n return uid && `${uid}::${uidEvent++}` || element.uidEvent || uidEvent++;\n}\n\nfunction getElementEvents(element) {\n const uid = makeEventUid(element);\n element.uidEvent = uid;\n eventRegistry[uid] = eventRegistry[uid] || {};\n return eventRegistry[uid];\n}\n\nfunction bootstrapHandler(element, fn) {\n return function handler(event) {\n hydrateObj(event, {\n delegateTarget: element\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, fn);\n }\n\n return fn.apply(element, [event]);\n };\n}\n\nfunction bootstrapDelegationHandler(element, selector, fn) {\n return function handler(event) {\n const domElements = element.querySelectorAll(selector);\n\n for (let {\n target\n } = event; target && target !== this; target = target.parentNode) {\n for (const domElement of domElements) {\n if (domElement !== target) {\n continue;\n }\n\n hydrateObj(event, {\n delegateTarget: target\n });\n\n if (handler.oneOff) {\n EventHandler.off(element, event.type, selector, fn);\n }\n\n return fn.apply(target, [event]);\n }\n }\n };\n}\n\nfunction findHandler(events, callable, delegationSelector = null) {\n return Object.values(events).find(event => event.callable === callable && event.delegationSelector === delegationSelector);\n}\n\nfunction normalizeParameters(originalTypeEvent, handler, delegationFunction) {\n const isDelegated = typeof handler === 'string'; // todo: tooltip passes `false` instead of selector, so we need to check\n\n const callable = isDelegated ? delegationFunction : handler || delegationFunction;\n let typeEvent = getTypeEvent(originalTypeEvent);\n\n if (!nativeEvents.has(typeEvent)) {\n typeEvent = originalTypeEvent;\n }\n\n return [isDelegated, callable, typeEvent];\n}\n\nfunction addHandler(element, originalTypeEvent, handler, delegationFunction, oneOff) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n let [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction); // in case of mouseenter or mouseleave wrap the handler within a function that checks for its DOM position\n // this prevents the handler from being dispatched the same way as mouseover or mouseout does\n\n if (originalTypeEvent in customEvents) {\n const wrapFunction = fn => {\n return function (event) {\n if (!event.relatedTarget || event.relatedTarget !== event.delegateTarget && !event.delegateTarget.contains(event.relatedTarget)) {\n return fn.call(this, event);\n }\n };\n };\n\n callable = wrapFunction(callable);\n }\n\n const events = getElementEvents(element);\n const handlers = events[typeEvent] || (events[typeEvent] = {});\n const previousFunction = findHandler(handlers, callable, isDelegated ? handler : null);\n\n if (previousFunction) {\n previousFunction.oneOff = previousFunction.oneOff && oneOff;\n return;\n }\n\n const uid = makeEventUid(callable, originalTypeEvent.replace(namespaceRegex, ''));\n const fn = isDelegated ? bootstrapDelegationHandler(element, handler, callable) : bootstrapHandler(element, callable);\n fn.delegationSelector = isDelegated ? handler : null;\n fn.callable = callable;\n fn.oneOff = oneOff;\n fn.uidEvent = uid;\n handlers[uid] = fn;\n element.addEventListener(typeEvent, fn, isDelegated);\n}\n\nfunction removeHandler(element, events, typeEvent, handler, delegationSelector) {\n const fn = findHandler(events[typeEvent], handler, delegationSelector);\n\n if (!fn) {\n return;\n }\n\n element.removeEventListener(typeEvent, fn, Boolean(delegationSelector));\n delete events[typeEvent][fn.uidEvent];\n}\n\nfunction removeNamespacedHandlers(element, events, typeEvent, namespace) {\n const storeElementEvent = events[typeEvent] || {};\n\n for (const handlerKey of Object.keys(storeElementEvent)) {\n if (handlerKey.includes(namespace)) {\n const event = storeElementEvent[handlerKey];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n}\n\nfunction getTypeEvent(event) {\n // allow to get the native events from namespaced events ('click.bs.button' --> 'click')\n event = event.replace(stripNameRegex, '');\n return customEvents[event] || event;\n}\n\nconst EventHandler = {\n on(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, false);\n },\n\n one(element, event, handler, delegationFunction) {\n addHandler(element, event, handler, delegationFunction, true);\n },\n\n off(element, originalTypeEvent, handler, delegationFunction) {\n if (typeof originalTypeEvent !== 'string' || !element) {\n return;\n }\n\n const [isDelegated, callable, typeEvent] = normalizeParameters(originalTypeEvent, handler, delegationFunction);\n const inNamespace = typeEvent !== originalTypeEvent;\n const events = getElementEvents(element);\n const storeElementEvent = events[typeEvent] || {};\n const isNamespace = originalTypeEvent.startsWith('.');\n\n if (typeof callable !== 'undefined') {\n // Simplest case: handler is passed, remove that listener ONLY.\n if (!Object.keys(storeElementEvent).length) {\n return;\n }\n\n removeHandler(element, events, typeEvent, callable, isDelegated ? handler : null);\n return;\n }\n\n if (isNamespace) {\n for (const elementEvent of Object.keys(events)) {\n removeNamespacedHandlers(element, events, elementEvent, originalTypeEvent.slice(1));\n }\n }\n\n for (const keyHandlers of Object.keys(storeElementEvent)) {\n const handlerKey = keyHandlers.replace(stripUidRegex, '');\n\n if (!inNamespace || originalTypeEvent.includes(handlerKey)) {\n const event = storeElementEvent[keyHandlers];\n removeHandler(element, events, typeEvent, event.callable, event.delegationSelector);\n }\n }\n },\n\n trigger(element, event, args) {\n if (typeof event !== 'string' || !element) {\n return null;\n }\n\n const $ = getjQuery();\n const typeEvent = getTypeEvent(event);\n const inNamespace = event !== typeEvent;\n let jQueryEvent = null;\n let bubbles = true;\n let nativeDispatch = true;\n let defaultPrevented = false;\n\n if (inNamespace && $) {\n jQueryEvent = $.Event(event, args);\n $(element).trigger(jQueryEvent);\n bubbles = !jQueryEvent.isPropagationStopped();\n nativeDispatch = !jQueryEvent.isImmediatePropagationStopped();\n defaultPrevented = jQueryEvent.isDefaultPrevented();\n }\n\n let evt = new Event(event, {\n bubbles,\n cancelable: true\n });\n evt = hydrateObj(evt, args);\n\n if (defaultPrevented) {\n evt.preventDefault();\n }\n\n if (nativeDispatch) {\n element.dispatchEvent(evt);\n }\n\n if (evt.defaultPrevented && jQueryEvent) {\n jQueryEvent.preventDefault();\n }\n\n return evt;\n }\n\n};\n\nfunction hydrateObj(obj, meta) {\n for (const [key, value] of Object.entries(meta || {})) {\n try {\n obj[key] = value;\n } catch (_unused) {\n Object.defineProperty(obj, key, {\n configurable: true,\n\n get() {\n return value;\n }\n\n });\n }\n }\n\n return obj;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/data.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\n/**\n * Constants\n */\nconst elementMap = new Map();\nconst Data = {\n set(element, key, instance) {\n if (!elementMap.has(element)) {\n elementMap.set(element, new Map());\n }\n\n const instanceMap = elementMap.get(element); // make it clear we only want one instance per element\n // can be removed later when multiple key/instances are fine to be used\n\n if (!instanceMap.has(key) && instanceMap.size !== 0) {\n // eslint-disable-next-line no-console\n console.error(`Bootstrap doesn't allow more than one instance per element. Bound instance: ${Array.from(instanceMap.keys())[0]}.`);\n return;\n }\n\n instanceMap.set(key, instance);\n },\n\n get(element, key) {\n if (elementMap.has(element)) {\n return elementMap.get(element).get(key) || null;\n }\n\n return null;\n },\n\n remove(element, key) {\n if (!elementMap.has(element)) {\n return;\n }\n\n const instanceMap = elementMap.get(element);\n instanceMap.delete(key); // free up element references if there are no instances left for an element\n\n if (instanceMap.size === 0) {\n elementMap.delete(element);\n }\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/manipulator.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nfunction normalizeData(value) {\n if (value === 'true') {\n return true;\n }\n\n if (value === 'false') {\n return false;\n }\n\n if (value === Number(value).toString()) {\n return Number(value);\n }\n\n if (value === '' || value === 'null') {\n return null;\n }\n\n if (typeof value !== 'string') {\n return value;\n }\n\n try {\n return JSON.parse(decodeURIComponent(value));\n } catch (_unused) {\n return value;\n }\n}\n\nfunction normalizeDataKey(key) {\n return key.replace(/[A-Z]/g, chr => `-${chr.toLowerCase()}`);\n}\n\nconst Manipulator = {\n setDataAttribute(element, key, value) {\n element.setAttribute(`data-bs-${normalizeDataKey(key)}`, value);\n },\n\n removeDataAttribute(element, key) {\n element.removeAttribute(`data-bs-${normalizeDataKey(key)}`);\n },\n\n getDataAttributes(element) {\n if (!element) {\n return {};\n }\n\n const attributes = {};\n const bsKeys = Object.keys(element.dataset).filter(key => key.startsWith('bs') && !key.startsWith('bsConfig'));\n\n for (const key of bsKeys) {\n let pureKey = key.replace(/^bs/, '');\n pureKey = pureKey.charAt(0).toLowerCase() + pureKey.slice(1, pureKey.length);\n attributes[pureKey] = normalizeData(element.dataset[key]);\n }\n\n return attributes;\n },\n\n getDataAttribute(element, key) {\n return normalizeData(element.getAttribute(`data-bs-${normalizeDataKey(key)}`));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/config.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Class definition\n */\n\nclass Config {\n // Getters\n static get Default() {\n return {};\n }\n\n static get DefaultType() {\n return {};\n }\n\n static get NAME() {\n throw new Error('You have to implement the static method \"NAME\", for each component!');\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n return config;\n }\n\n _mergeConfigObj(config, element) {\n const jsonConfig = isElement(element) ? Manipulator.getDataAttribute(element, 'config') : {}; // try to parse\n\n return { ...this.constructor.Default,\n ...(typeof jsonConfig === 'object' ? jsonConfig : {}),\n ...(isElement(element) ? Manipulator.getDataAttributes(element) : {}),\n ...(typeof config === 'object' ? config : {})\n };\n }\n\n _typeCheckConfig(config, configTypes = this.constructor.DefaultType) {\n for (const property of Object.keys(configTypes)) {\n const expectedTypes = configTypes[property];\n const value = config[property];\n const valueType = isElement(value) ? 'element' : toType(value);\n\n if (!new RegExp(expectedTypes).test(valueType)) {\n throw new TypeError(`${this.constructor.NAME.toUpperCase()}: Option \"${property}\" provided type \"${valueType}\" but expected type \"${expectedTypes}\".`);\n }\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): base-component.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst VERSION = '5.2.3';\n/**\n * Class definition\n */\n\nclass BaseComponent extends Config {\n constructor(element, config) {\n super();\n element = getElement(element);\n\n if (!element) {\n return;\n }\n\n this._element = element;\n this._config = this._getConfig(config);\n Data.set(this._element, this.constructor.DATA_KEY, this);\n } // Public\n\n\n dispose() {\n Data.remove(this._element, this.constructor.DATA_KEY);\n EventHandler.off(this._element, this.constructor.EVENT_KEY);\n\n for (const propertyName of Object.getOwnPropertyNames(this)) {\n this[propertyName] = null;\n }\n }\n\n _queueCallback(callback, element, isAnimated = true) {\n executeAfterTransition(callback, element, isAnimated);\n }\n\n _getConfig(config) {\n config = this._mergeConfigObj(config, this._element);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n } // Static\n\n\n static getInstance(element) {\n return Data.get(getElement(element), this.DATA_KEY);\n }\n\n static getOrCreateInstance(element, config = {}) {\n return this.getInstance(element) || new this(element, typeof config === 'object' ? config : null);\n }\n\n static get VERSION() {\n return VERSION;\n }\n\n static get DATA_KEY() {\n return `bs.${this.NAME}`;\n }\n\n static get EVENT_KEY() {\n return `.${this.DATA_KEY}`;\n }\n\n static eventName(name) {\n return `${name}${this.EVENT_KEY}`;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/component-functions.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n\nconst enableDismissTrigger = (component, method = 'hide') => {\n const clickEvent = `click.dismiss${component.EVENT_KEY}`;\n const name = component.NAME;\n EventHandler.on(document, clickEvent, `[data-bs-dismiss=\"${name}\"]`, function (event) {\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n const target = getElementFromSelector(this) || this.closest(`.${name}`);\n const instance = component.getOrCreateInstance(target); // Method argument is left, for Alert and only, as it doesn't implement the 'hide' method\n\n instance[method]();\n });\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): alert.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$f = 'alert';\nconst DATA_KEY$a = 'bs.alert';\nconst EVENT_KEY$b = `.${DATA_KEY$a}`;\nconst EVENT_CLOSE = `close${EVENT_KEY$b}`;\nconst EVENT_CLOSED = `closed${EVENT_KEY$b}`;\nconst CLASS_NAME_FADE$5 = 'fade';\nconst CLASS_NAME_SHOW$8 = 'show';\n/**\n * Class definition\n */\n\nclass Alert extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$f;\n } // Public\n\n\n close() {\n const closeEvent = EventHandler.trigger(this._element, EVENT_CLOSE);\n\n if (closeEvent.defaultPrevented) {\n return;\n }\n\n this._element.classList.remove(CLASS_NAME_SHOW$8);\n\n const isAnimated = this._element.classList.contains(CLASS_NAME_FADE$5);\n\n this._queueCallback(() => this._destroyElement(), this._element, isAnimated);\n } // Private\n\n\n _destroyElement() {\n this._element.remove();\n\n EventHandler.trigger(this._element, EVENT_CLOSED);\n this.dispose();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Alert.getOrCreateInstance(this);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nenableDismissTrigger(Alert, 'close');\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Alert);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): button.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$e = 'button';\nconst DATA_KEY$9 = 'bs.button';\nconst EVENT_KEY$a = `.${DATA_KEY$9}`;\nconst DATA_API_KEY$6 = '.data-api';\nconst CLASS_NAME_ACTIVE$3 = 'active';\nconst SELECTOR_DATA_TOGGLE$5 = '[data-bs-toggle=\"button\"]';\nconst EVENT_CLICK_DATA_API$6 = `click${EVENT_KEY$a}${DATA_API_KEY$6}`;\n/**\n * Class definition\n */\n\nclass Button extends BaseComponent {\n // Getters\n static get NAME() {\n return NAME$e;\n } // Public\n\n\n toggle() {\n // Toggle class and sync the `aria-pressed` attribute with the return value of the `.toggle()` method\n this._element.setAttribute('aria-pressed', this._element.classList.toggle(CLASS_NAME_ACTIVE$3));\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Button.getOrCreateInstance(this);\n\n if (config === 'toggle') {\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$6, SELECTOR_DATA_TOGGLE$5, event => {\n event.preventDefault();\n const button = event.target.closest(SELECTOR_DATA_TOGGLE$5);\n const data = Button.getOrCreateInstance(button);\n data.toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Button);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dom/selector-engine.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SelectorEngine = {\n find(selector, element = document.documentElement) {\n return [].concat(...Element.prototype.querySelectorAll.call(element, selector));\n },\n\n findOne(selector, element = document.documentElement) {\n return Element.prototype.querySelector.call(element, selector);\n },\n\n children(element, selector) {\n return [].concat(...element.children).filter(child => child.matches(selector));\n },\n\n parents(element, selector) {\n const parents = [];\n let ancestor = element.parentNode.closest(selector);\n\n while (ancestor) {\n parents.push(ancestor);\n ancestor = ancestor.parentNode.closest(selector);\n }\n\n return parents;\n },\n\n prev(element, selector) {\n let previous = element.previousElementSibling;\n\n while (previous) {\n if (previous.matches(selector)) {\n return [previous];\n }\n\n previous = previous.previousElementSibling;\n }\n\n return [];\n },\n\n // TODO: this is now unused; remove later along with prev()\n next(element, selector) {\n let next = element.nextElementSibling;\n\n while (next) {\n if (next.matches(selector)) {\n return [next];\n }\n\n next = next.nextElementSibling;\n }\n\n return [];\n },\n\n focusableChildren(element) {\n const focusables = ['a', 'button', 'input', 'textarea', 'select', 'details', '[tabindex]', '[contenteditable=\"true\"]'].map(selector => `${selector}:not([tabindex^=\"-\"])`).join(',');\n return this.find(focusables, element).filter(el => !isDisabled(el) && isVisible(el));\n }\n\n};\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/swipe.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$d = 'swipe';\nconst EVENT_KEY$9 = '.bs.swipe';\nconst EVENT_TOUCHSTART = `touchstart${EVENT_KEY$9}`;\nconst EVENT_TOUCHMOVE = `touchmove${EVENT_KEY$9}`;\nconst EVENT_TOUCHEND = `touchend${EVENT_KEY$9}`;\nconst EVENT_POINTERDOWN = `pointerdown${EVENT_KEY$9}`;\nconst EVENT_POINTERUP = `pointerup${EVENT_KEY$9}`;\nconst POINTER_TYPE_TOUCH = 'touch';\nconst POINTER_TYPE_PEN = 'pen';\nconst CLASS_NAME_POINTER_EVENT = 'pointer-event';\nconst SWIPE_THRESHOLD = 40;\nconst Default$c = {\n endCallback: null,\n leftCallback: null,\n rightCallback: null\n};\nconst DefaultType$c = {\n endCallback: '(function|null)',\n leftCallback: '(function|null)',\n rightCallback: '(function|null)'\n};\n/**\n * Class definition\n */\n\nclass Swipe extends Config {\n constructor(element, config) {\n super();\n this._element = element;\n\n if (!element || !Swipe.isSupported()) {\n return;\n }\n\n this._config = this._getConfig(config);\n this._deltaX = 0;\n this._supportPointerEvents = Boolean(window.PointerEvent);\n\n this._initEvents();\n } // Getters\n\n\n static get Default() {\n return Default$c;\n }\n\n static get DefaultType() {\n return DefaultType$c;\n }\n\n static get NAME() {\n return NAME$d;\n } // Public\n\n\n dispose() {\n EventHandler.off(this._element, EVENT_KEY$9);\n } // Private\n\n\n _start(event) {\n if (!this._supportPointerEvents) {\n this._deltaX = event.touches[0].clientX;\n return;\n }\n\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX;\n }\n }\n\n _end(event) {\n if (this._eventIsPointerPenTouch(event)) {\n this._deltaX = event.clientX - this._deltaX;\n }\n\n this._handleSwipe();\n\n execute(this._config.endCallback);\n }\n\n _move(event) {\n this._deltaX = event.touches && event.touches.length > 1 ? 0 : event.touches[0].clientX - this._deltaX;\n }\n\n _handleSwipe() {\n const absDeltaX = Math.abs(this._deltaX);\n\n if (absDeltaX <= SWIPE_THRESHOLD) {\n return;\n }\n\n const direction = absDeltaX / this._deltaX;\n this._deltaX = 0;\n\n if (!direction) {\n return;\n }\n\n execute(direction > 0 ? this._config.rightCallback : this._config.leftCallback);\n }\n\n _initEvents() {\n if (this._supportPointerEvents) {\n EventHandler.on(this._element, EVENT_POINTERDOWN, event => this._start(event));\n EventHandler.on(this._element, EVENT_POINTERUP, event => this._end(event));\n\n this._element.classList.add(CLASS_NAME_POINTER_EVENT);\n } else {\n EventHandler.on(this._element, EVENT_TOUCHSTART, event => this._start(event));\n EventHandler.on(this._element, EVENT_TOUCHMOVE, event => this._move(event));\n EventHandler.on(this._element, EVENT_TOUCHEND, event => this._end(event));\n }\n }\n\n _eventIsPointerPenTouch(event) {\n return this._supportPointerEvents && (event.pointerType === POINTER_TYPE_PEN || event.pointerType === POINTER_TYPE_TOUCH);\n } // Static\n\n\n static isSupported() {\n return 'ontouchstart' in document.documentElement || navigator.maxTouchPoints > 0;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): carousel.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$c = 'carousel';\nconst DATA_KEY$8 = 'bs.carousel';\nconst EVENT_KEY$8 = `.${DATA_KEY$8}`;\nconst DATA_API_KEY$5 = '.data-api';\nconst ARROW_LEFT_KEY$1 = 'ArrowLeft';\nconst ARROW_RIGHT_KEY$1 = 'ArrowRight';\nconst TOUCHEVENT_COMPAT_WAIT = 500; // Time for mouse compat events to fire after touch\n\nconst ORDER_NEXT = 'next';\nconst ORDER_PREV = 'prev';\nconst DIRECTION_LEFT = 'left';\nconst DIRECTION_RIGHT = 'right';\nconst EVENT_SLIDE = `slide${EVENT_KEY$8}`;\nconst EVENT_SLID = `slid${EVENT_KEY$8}`;\nconst EVENT_KEYDOWN$1 = `keydown${EVENT_KEY$8}`;\nconst EVENT_MOUSEENTER$1 = `mouseenter${EVENT_KEY$8}`;\nconst EVENT_MOUSELEAVE$1 = `mouseleave${EVENT_KEY$8}`;\nconst EVENT_DRAG_START = `dragstart${EVENT_KEY$8}`;\nconst EVENT_LOAD_DATA_API$3 = `load${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst EVENT_CLICK_DATA_API$5 = `click${EVENT_KEY$8}${DATA_API_KEY$5}`;\nconst CLASS_NAME_CAROUSEL = 'carousel';\nconst CLASS_NAME_ACTIVE$2 = 'active';\nconst CLASS_NAME_SLIDE = 'slide';\nconst CLASS_NAME_END = 'carousel-item-end';\nconst CLASS_NAME_START = 'carousel-item-start';\nconst CLASS_NAME_NEXT = 'carousel-item-next';\nconst CLASS_NAME_PREV = 'carousel-item-prev';\nconst SELECTOR_ACTIVE = '.active';\nconst SELECTOR_ITEM = '.carousel-item';\nconst SELECTOR_ACTIVE_ITEM = SELECTOR_ACTIVE + SELECTOR_ITEM;\nconst SELECTOR_ITEM_IMG = '.carousel-item img';\nconst SELECTOR_INDICATORS = '.carousel-indicators';\nconst SELECTOR_DATA_SLIDE = '[data-bs-slide], [data-bs-slide-to]';\nconst SELECTOR_DATA_RIDE = '[data-bs-ride=\"carousel\"]';\nconst KEY_TO_DIRECTION = {\n [ARROW_LEFT_KEY$1]: DIRECTION_RIGHT,\n [ARROW_RIGHT_KEY$1]: DIRECTION_LEFT\n};\nconst Default$b = {\n interval: 5000,\n keyboard: true,\n pause: 'hover',\n ride: false,\n touch: true,\n wrap: true\n};\nconst DefaultType$b = {\n interval: '(number|boolean)',\n // TODO:v6 remove boolean support\n keyboard: 'boolean',\n pause: '(string|boolean)',\n ride: '(boolean|string)',\n touch: 'boolean',\n wrap: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Carousel extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._interval = null;\n this._activeElement = null;\n this._isSliding = false;\n this.touchTimeout = null;\n this._swipeHelper = null;\n this._indicatorsElement = SelectorEngine.findOne(SELECTOR_INDICATORS, this._element);\n\n this._addEventListeners();\n\n if (this._config.ride === CLASS_NAME_CAROUSEL) {\n this.cycle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$b;\n }\n\n static get DefaultType() {\n return DefaultType$b;\n }\n\n static get NAME() {\n return NAME$c;\n } // Public\n\n\n next() {\n this._slide(ORDER_NEXT);\n }\n\n nextWhenVisible() {\n // FIXME TODO use `document.visibilityState`\n // Don't call next when the page isn't visible\n // or the carousel or its parent isn't visible\n if (!document.hidden && isVisible(this._element)) {\n this.next();\n }\n }\n\n prev() {\n this._slide(ORDER_PREV);\n }\n\n pause() {\n if (this._isSliding) {\n triggerTransitionEnd(this._element);\n }\n\n this._clearInterval();\n }\n\n cycle() {\n this._clearInterval();\n\n this._updateInterval();\n\n this._interval = setInterval(() => this.nextWhenVisible(), this._config.interval);\n }\n\n _maybeEnableCycle() {\n if (!this._config.ride) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.cycle());\n return;\n }\n\n this.cycle();\n }\n\n to(index) {\n const items = this._getItems();\n\n if (index > items.length - 1 || index < 0) {\n return;\n }\n\n if (this._isSliding) {\n EventHandler.one(this._element, EVENT_SLID, () => this.to(index));\n return;\n }\n\n const activeIndex = this._getItemIndex(this._getActive());\n\n if (activeIndex === index) {\n return;\n }\n\n const order = index > activeIndex ? ORDER_NEXT : ORDER_PREV;\n\n this._slide(order, items[index]);\n }\n\n dispose() {\n if (this._swipeHelper) {\n this._swipeHelper.dispose();\n }\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n config.defaultInterval = config.interval;\n return config;\n }\n\n _addEventListeners() {\n if (this._config.keyboard) {\n EventHandler.on(this._element, EVENT_KEYDOWN$1, event => this._keydown(event));\n }\n\n if (this._config.pause === 'hover') {\n EventHandler.on(this._element, EVENT_MOUSEENTER$1, () => this.pause());\n EventHandler.on(this._element, EVENT_MOUSELEAVE$1, () => this._maybeEnableCycle());\n }\n\n if (this._config.touch && Swipe.isSupported()) {\n this._addTouchEventListeners();\n }\n }\n\n _addTouchEventListeners() {\n for (const img of SelectorEngine.find(SELECTOR_ITEM_IMG, this._element)) {\n EventHandler.on(img, EVENT_DRAG_START, event => event.preventDefault());\n }\n\n const endCallBack = () => {\n if (this._config.pause !== 'hover') {\n return;\n } // If it's a touch-enabled device, mouseenter/leave are fired as\n // part of the mouse compatibility events on first tap - the carousel\n // would stop cycling until user tapped out of it;\n // here, we listen for touchend, explicitly pause the carousel\n // (as if it's the second time we tap on it, mouseenter compat event\n // is NOT fired) and after a timeout (to allow for mouse compatibility\n // events to fire) we explicitly restart cycling\n\n\n this.pause();\n\n if (this.touchTimeout) {\n clearTimeout(this.touchTimeout);\n }\n\n this.touchTimeout = setTimeout(() => this._maybeEnableCycle(), TOUCHEVENT_COMPAT_WAIT + this._config.interval);\n };\n\n const swipeConfig = {\n leftCallback: () => this._slide(this._directionToOrder(DIRECTION_LEFT)),\n rightCallback: () => this._slide(this._directionToOrder(DIRECTION_RIGHT)),\n endCallback: endCallBack\n };\n this._swipeHelper = new Swipe(this._element, swipeConfig);\n }\n\n _keydown(event) {\n if (/input|textarea/i.test(event.target.tagName)) {\n return;\n }\n\n const direction = KEY_TO_DIRECTION[event.key];\n\n if (direction) {\n event.preventDefault();\n\n this._slide(this._directionToOrder(direction));\n }\n }\n\n _getItemIndex(element) {\n return this._getItems().indexOf(element);\n }\n\n _setActiveIndicatorElement(index) {\n if (!this._indicatorsElement) {\n return;\n }\n\n const activeIndicator = SelectorEngine.findOne(SELECTOR_ACTIVE, this._indicatorsElement);\n activeIndicator.classList.remove(CLASS_NAME_ACTIVE$2);\n activeIndicator.removeAttribute('aria-current');\n const newActiveIndicator = SelectorEngine.findOne(`[data-bs-slide-to=\"${index}\"]`, this._indicatorsElement);\n\n if (newActiveIndicator) {\n newActiveIndicator.classList.add(CLASS_NAME_ACTIVE$2);\n newActiveIndicator.setAttribute('aria-current', 'true');\n }\n }\n\n _updateInterval() {\n const element = this._activeElement || this._getActive();\n\n if (!element) {\n return;\n }\n\n const elementInterval = Number.parseInt(element.getAttribute('data-bs-interval'), 10);\n this._config.interval = elementInterval || this._config.defaultInterval;\n }\n\n _slide(order, element = null) {\n if (this._isSliding) {\n return;\n }\n\n const activeElement = this._getActive();\n\n const isNext = order === ORDER_NEXT;\n const nextElement = element || getNextActiveElement(this._getItems(), activeElement, isNext, this._config.wrap);\n\n if (nextElement === activeElement) {\n return;\n }\n\n const nextElementIndex = this._getItemIndex(nextElement);\n\n const triggerEvent = eventName => {\n return EventHandler.trigger(this._element, eventName, {\n relatedTarget: nextElement,\n direction: this._orderToDirection(order),\n from: this._getItemIndex(activeElement),\n to: nextElementIndex\n });\n };\n\n const slideEvent = triggerEvent(EVENT_SLIDE);\n\n if (slideEvent.defaultPrevented) {\n return;\n }\n\n if (!activeElement || !nextElement) {\n // Some weirdness is happening, so we bail\n // todo: change tests that use empty divs to avoid this check\n return;\n }\n\n const isCycling = Boolean(this._interval);\n this.pause();\n this._isSliding = true;\n\n this._setActiveIndicatorElement(nextElementIndex);\n\n this._activeElement = nextElement;\n const directionalClassName = isNext ? CLASS_NAME_START : CLASS_NAME_END;\n const orderClassName = isNext ? CLASS_NAME_NEXT : CLASS_NAME_PREV;\n nextElement.classList.add(orderClassName);\n reflow(nextElement);\n activeElement.classList.add(directionalClassName);\n nextElement.classList.add(directionalClassName);\n\n const completeCallBack = () => {\n nextElement.classList.remove(directionalClassName, orderClassName);\n nextElement.classList.add(CLASS_NAME_ACTIVE$2);\n activeElement.classList.remove(CLASS_NAME_ACTIVE$2, orderClassName, directionalClassName);\n this._isSliding = false;\n triggerEvent(EVENT_SLID);\n };\n\n this._queueCallback(completeCallBack, activeElement, this._isAnimated());\n\n if (isCycling) {\n this.cycle();\n }\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_SLIDE);\n }\n\n _getActive() {\n return SelectorEngine.findOne(SELECTOR_ACTIVE_ITEM, this._element);\n }\n\n _getItems() {\n return SelectorEngine.find(SELECTOR_ITEM, this._element);\n }\n\n _clearInterval() {\n if (this._interval) {\n clearInterval(this._interval);\n this._interval = null;\n }\n }\n\n _directionToOrder(direction) {\n if (isRTL()) {\n return direction === DIRECTION_LEFT ? ORDER_PREV : ORDER_NEXT;\n }\n\n return direction === DIRECTION_LEFT ? ORDER_NEXT : ORDER_PREV;\n }\n\n _orderToDirection(order) {\n if (isRTL()) {\n return order === ORDER_PREV ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n\n return order === ORDER_PREV ? DIRECTION_RIGHT : DIRECTION_LEFT;\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Carousel.getOrCreateInstance(this, config);\n\n if (typeof config === 'number') {\n data.to(config);\n return;\n }\n\n if (typeof config === 'string') {\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$5, SELECTOR_DATA_SLIDE, function (event) {\n const target = getElementFromSelector(this);\n\n if (!target || !target.classList.contains(CLASS_NAME_CAROUSEL)) {\n return;\n }\n\n event.preventDefault();\n const carousel = Carousel.getOrCreateInstance(target);\n const slideIndex = this.getAttribute('data-bs-slide-to');\n\n if (slideIndex) {\n carousel.to(slideIndex);\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n if (Manipulator.getDataAttribute(this, 'slide') === 'next') {\n carousel.next();\n\n carousel._maybeEnableCycle();\n\n return;\n }\n\n carousel.prev();\n\n carousel._maybeEnableCycle();\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$3, () => {\n const carousels = SelectorEngine.find(SELECTOR_DATA_RIDE);\n\n for (const carousel of carousels) {\n Carousel.getOrCreateInstance(carousel);\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Carousel);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): collapse.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$b = 'collapse';\nconst DATA_KEY$7 = 'bs.collapse';\nconst EVENT_KEY$7 = `.${DATA_KEY$7}`;\nconst DATA_API_KEY$4 = '.data-api';\nconst EVENT_SHOW$6 = `show${EVENT_KEY$7}`;\nconst EVENT_SHOWN$6 = `shown${EVENT_KEY$7}`;\nconst EVENT_HIDE$6 = `hide${EVENT_KEY$7}`;\nconst EVENT_HIDDEN$6 = `hidden${EVENT_KEY$7}`;\nconst EVENT_CLICK_DATA_API$4 = `click${EVENT_KEY$7}${DATA_API_KEY$4}`;\nconst CLASS_NAME_SHOW$7 = 'show';\nconst CLASS_NAME_COLLAPSE = 'collapse';\nconst CLASS_NAME_COLLAPSING = 'collapsing';\nconst CLASS_NAME_COLLAPSED = 'collapsed';\nconst CLASS_NAME_DEEPER_CHILDREN = `:scope .${CLASS_NAME_COLLAPSE} .${CLASS_NAME_COLLAPSE}`;\nconst CLASS_NAME_HORIZONTAL = 'collapse-horizontal';\nconst WIDTH = 'width';\nconst HEIGHT = 'height';\nconst SELECTOR_ACTIVES = '.collapse.show, .collapse.collapsing';\nconst SELECTOR_DATA_TOGGLE$4 = '[data-bs-toggle=\"collapse\"]';\nconst Default$a = {\n parent: null,\n toggle: true\n};\nconst DefaultType$a = {\n parent: '(null|element)',\n toggle: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Collapse extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isTransitioning = false;\n this._triggerArray = [];\n const toggleList = SelectorEngine.find(SELECTOR_DATA_TOGGLE$4);\n\n for (const elem of toggleList) {\n const selector = getSelectorFromElement(elem);\n const filterElement = SelectorEngine.find(selector).filter(foundElement => foundElement === this._element);\n\n if (selector !== null && filterElement.length) {\n this._triggerArray.push(elem);\n }\n }\n\n this._initializeChildren();\n\n if (!this._config.parent) {\n this._addAriaAndCollapsedClass(this._triggerArray, this._isShown());\n }\n\n if (this._config.toggle) {\n this.toggle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$a;\n }\n\n static get DefaultType() {\n return DefaultType$a;\n }\n\n static get NAME() {\n return NAME$b;\n } // Public\n\n\n toggle() {\n if (this._isShown()) {\n this.hide();\n } else {\n this.show();\n }\n }\n\n show() {\n if (this._isTransitioning || this._isShown()) {\n return;\n }\n\n let activeChildren = []; // find active children\n\n if (this._config.parent) {\n activeChildren = this._getFirstLevelChildren(SELECTOR_ACTIVES).filter(element => element !== this._element).map(element => Collapse.getOrCreateInstance(element, {\n toggle: false\n }));\n }\n\n if (activeChildren.length && activeChildren[0]._isTransitioning) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_SHOW$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n for (const activeInstance of activeChildren) {\n activeInstance.hide();\n }\n\n const dimension = this._getDimension();\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.style[dimension] = 0;\n\n this._addAriaAndCollapsedClass(this._triggerArray, true);\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n this._element.style[dimension] = '';\n EventHandler.trigger(this._element, EVENT_SHOWN$6);\n };\n\n const capitalizedDimension = dimension[0].toUpperCase() + dimension.slice(1);\n const scrollSize = `scroll${capitalizedDimension}`;\n\n this._queueCallback(complete, this._element, true);\n\n this._element.style[dimension] = `${this._element[scrollSize]}px`;\n }\n\n hide() {\n if (this._isTransitioning || !this._isShown()) {\n return;\n }\n\n const startEvent = EventHandler.trigger(this._element, EVENT_HIDE$6);\n\n if (startEvent.defaultPrevented) {\n return;\n }\n\n const dimension = this._getDimension();\n\n this._element.style[dimension] = `${this._element.getBoundingClientRect()[dimension]}px`;\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_COLLAPSING);\n\n this._element.classList.remove(CLASS_NAME_COLLAPSE, CLASS_NAME_SHOW$7);\n\n for (const trigger of this._triggerArray) {\n const element = getElementFromSelector(trigger);\n\n if (element && !this._isShown(element)) {\n this._addAriaAndCollapsedClass([trigger], false);\n }\n }\n\n this._isTransitioning = true;\n\n const complete = () => {\n this._isTransitioning = false;\n\n this._element.classList.remove(CLASS_NAME_COLLAPSING);\n\n this._element.classList.add(CLASS_NAME_COLLAPSE);\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$6);\n };\n\n this._element.style[dimension] = '';\n\n this._queueCallback(complete, this._element, true);\n }\n\n _isShown(element = this._element) {\n return element.classList.contains(CLASS_NAME_SHOW$7);\n } // Private\n\n\n _configAfterMerge(config) {\n config.toggle = Boolean(config.toggle); // Coerce string values\n\n config.parent = getElement(config.parent);\n return config;\n }\n\n _getDimension() {\n return this._element.classList.contains(CLASS_NAME_HORIZONTAL) ? WIDTH : HEIGHT;\n }\n\n _initializeChildren() {\n if (!this._config.parent) {\n return;\n }\n\n const children = this._getFirstLevelChildren(SELECTOR_DATA_TOGGLE$4);\n\n for (const element of children) {\n const selected = getElementFromSelector(element);\n\n if (selected) {\n this._addAriaAndCollapsedClass([element], this._isShown(selected));\n }\n }\n }\n\n _getFirstLevelChildren(selector) {\n const children = SelectorEngine.find(CLASS_NAME_DEEPER_CHILDREN, this._config.parent); // remove children if greater depth\n\n return SelectorEngine.find(selector, this._config.parent).filter(element => !children.includes(element));\n }\n\n _addAriaAndCollapsedClass(triggerArray, isOpen) {\n if (!triggerArray.length) {\n return;\n }\n\n for (const element of triggerArray) {\n element.classList.toggle(CLASS_NAME_COLLAPSED, !isOpen);\n element.setAttribute('aria-expanded', isOpen);\n }\n } // Static\n\n\n static jQueryInterface(config) {\n const _config = {};\n\n if (typeof config === 'string' && /show|hide/.test(config)) {\n _config.toggle = false;\n }\n\n return this.each(function () {\n const data = Collapse.getOrCreateInstance(this, _config);\n\n if (typeof config === 'string') {\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n }\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$4, SELECTOR_DATA_TOGGLE$4, function (event) {\n // preventDefault only for
elements (which change the URL) not inside the collapsible element\n if (event.target.tagName === 'A' || event.delegateTarget && event.delegateTarget.tagName === 'A') {\n event.preventDefault();\n }\n\n const selector = getSelectorFromElement(this);\n const selectorElements = SelectorEngine.find(selector);\n\n for (const element of selectorElements) {\n Collapse.getOrCreateInstance(element, {\n toggle: false\n }).toggle();\n }\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Collapse);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): dropdown.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$a = 'dropdown';\nconst DATA_KEY$6 = 'bs.dropdown';\nconst EVENT_KEY$6 = `.${DATA_KEY$6}`;\nconst DATA_API_KEY$3 = '.data-api';\nconst ESCAPE_KEY$2 = 'Escape';\nconst TAB_KEY$1 = 'Tab';\nconst ARROW_UP_KEY$1 = 'ArrowUp';\nconst ARROW_DOWN_KEY$1 = 'ArrowDown';\nconst RIGHT_MOUSE_BUTTON = 2; // MouseEvent.button value for the secondary button, usually the right button\n\nconst EVENT_HIDE$5 = `hide${EVENT_KEY$6}`;\nconst EVENT_HIDDEN$5 = `hidden${EVENT_KEY$6}`;\nconst EVENT_SHOW$5 = `show${EVENT_KEY$6}`;\nconst EVENT_SHOWN$5 = `shown${EVENT_KEY$6}`;\nconst EVENT_CLICK_DATA_API$3 = `click${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYDOWN_DATA_API = `keydown${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst EVENT_KEYUP_DATA_API = `keyup${EVENT_KEY$6}${DATA_API_KEY$3}`;\nconst CLASS_NAME_SHOW$6 = 'show';\nconst CLASS_NAME_DROPUP = 'dropup';\nconst CLASS_NAME_DROPEND = 'dropend';\nconst CLASS_NAME_DROPSTART = 'dropstart';\nconst CLASS_NAME_DROPUP_CENTER = 'dropup-center';\nconst CLASS_NAME_DROPDOWN_CENTER = 'dropdown-center';\nconst SELECTOR_DATA_TOGGLE$3 = '[data-bs-toggle=\"dropdown\"]:not(.disabled):not(:disabled)';\nconst SELECTOR_DATA_TOGGLE_SHOWN = `${SELECTOR_DATA_TOGGLE$3}.${CLASS_NAME_SHOW$6}`;\nconst SELECTOR_MENU = '.dropdown-menu';\nconst SELECTOR_NAVBAR = '.navbar';\nconst SELECTOR_NAVBAR_NAV = '.navbar-nav';\nconst SELECTOR_VISIBLE_ITEMS = '.dropdown-menu .dropdown-item:not(.disabled):not(:disabled)';\nconst PLACEMENT_TOP = isRTL() ? 'top-end' : 'top-start';\nconst PLACEMENT_TOPEND = isRTL() ? 'top-start' : 'top-end';\nconst PLACEMENT_BOTTOM = isRTL() ? 'bottom-end' : 'bottom-start';\nconst PLACEMENT_BOTTOMEND = isRTL() ? 'bottom-start' : 'bottom-end';\nconst PLACEMENT_RIGHT = isRTL() ? 'left-start' : 'right-start';\nconst PLACEMENT_LEFT = isRTL() ? 'right-start' : 'left-start';\nconst PLACEMENT_TOPCENTER = 'top';\nconst PLACEMENT_BOTTOMCENTER = 'bottom';\nconst Default$9 = {\n autoClose: true,\n boundary: 'clippingParents',\n display: 'dynamic',\n offset: [0, 2],\n popperConfig: null,\n reference: 'toggle'\n};\nconst DefaultType$9 = {\n autoClose: '(boolean|string)',\n boundary: '(string|element)',\n display: 'string',\n offset: '(array|string|function)',\n popperConfig: '(null|object|function)',\n reference: '(string|element|object)'\n};\n/**\n * Class definition\n */\n\nclass Dropdown extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._popper = null;\n this._parent = this._element.parentNode; // dropdown wrapper\n // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n this._menu = SelectorEngine.next(this._element, SELECTOR_MENU)[0] || SelectorEngine.prev(this._element, SELECTOR_MENU)[0] || SelectorEngine.findOne(SELECTOR_MENU, this._parent);\n this._inNavbar = this._detectNavbar();\n } // Getters\n\n\n static get Default() {\n return Default$9;\n }\n\n static get DefaultType() {\n return DefaultType$9;\n }\n\n static get NAME() {\n return NAME$a;\n } // Public\n\n\n toggle() {\n return this._isShown() ? this.hide() : this.show();\n }\n\n show() {\n if (isDisabled(this._element) || this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$5, relatedTarget);\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._createPopper(); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n\n if ('ontouchstart' in document.documentElement && !this._parent.closest(SELECTOR_NAVBAR_NAV)) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n this._element.focus();\n\n this._element.setAttribute('aria-expanded', true);\n\n this._menu.classList.add(CLASS_NAME_SHOW$6);\n\n this._element.classList.add(CLASS_NAME_SHOW$6);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$5, relatedTarget);\n }\n\n hide() {\n if (isDisabled(this._element) || !this._isShown()) {\n return;\n }\n\n const relatedTarget = {\n relatedTarget: this._element\n };\n\n this._completeHide(relatedTarget);\n }\n\n dispose() {\n if (this._popper) {\n this._popper.destroy();\n }\n\n super.dispose();\n }\n\n update() {\n this._inNavbar = this._detectNavbar();\n\n if (this._popper) {\n this._popper.update();\n }\n } // Private\n\n\n _completeHide(relatedTarget) {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$5, relatedTarget);\n\n if (hideEvent.defaultPrevented) {\n return;\n } // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n if (this._popper) {\n this._popper.destroy();\n }\n\n this._menu.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.classList.remove(CLASS_NAME_SHOW$6);\n\n this._element.setAttribute('aria-expanded', 'false');\n\n Manipulator.removeDataAttribute(this._menu, 'popper');\n EventHandler.trigger(this._element, EVENT_HIDDEN$5, relatedTarget);\n }\n\n _getConfig(config) {\n config = super._getConfig(config);\n\n if (typeof config.reference === 'object' && !isElement(config.reference) && typeof config.reference.getBoundingClientRect !== 'function') {\n // Popper virtual elements require a getBoundingClientRect method\n throw new TypeError(`${NAME$a.toUpperCase()}: Option \"reference\" provided type \"object\" without a required \"getBoundingClientRect\" method.`);\n }\n\n return config;\n }\n\n _createPopper() {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s dropdowns require Popper (https://popper.js.org)');\n }\n\n let referenceElement = this._element;\n\n if (this._config.reference === 'parent') {\n referenceElement = this._parent;\n } else if (isElement(this._config.reference)) {\n referenceElement = getElement(this._config.reference);\n } else if (typeof this._config.reference === 'object') {\n referenceElement = this._config.reference;\n }\n\n const popperConfig = this._getPopperConfig();\n\n this._popper = Popper.createPopper(referenceElement, this._menu, popperConfig);\n }\n\n _isShown() {\n return this._menu.classList.contains(CLASS_NAME_SHOW$6);\n }\n\n _getPlacement() {\n const parentDropdown = this._parent;\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPEND)) {\n return PLACEMENT_RIGHT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPSTART)) {\n return PLACEMENT_LEFT;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP_CENTER)) {\n return PLACEMENT_TOPCENTER;\n }\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPDOWN_CENTER)) {\n return PLACEMENT_BOTTOMCENTER;\n } // We need to trim the value because custom properties can also include spaces\n\n\n const isEnd = getComputedStyle(this._menu).getPropertyValue('--bs-position').trim() === 'end';\n\n if (parentDropdown.classList.contains(CLASS_NAME_DROPUP)) {\n return isEnd ? PLACEMENT_TOPEND : PLACEMENT_TOP;\n }\n\n return isEnd ? PLACEMENT_BOTTOMEND : PLACEMENT_BOTTOM;\n }\n\n _detectNavbar() {\n return this._element.closest(SELECTOR_NAVBAR) !== null;\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _getPopperConfig() {\n const defaultBsPopperConfig = {\n placement: this._getPlacement(),\n modifiers: [{\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }]\n }; // Disable Popper if we have a static display or Dropdown is in Navbar\n\n if (this._inNavbar || this._config.display === 'static') {\n Manipulator.setDataAttribute(this._menu, 'popper', 'static'); // todo:v6 remove\n\n defaultBsPopperConfig.modifiers = [{\n name: 'applyStyles',\n enabled: false\n }];\n }\n\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _selectMenuItem({\n key,\n target\n }) {\n const items = SelectorEngine.find(SELECTOR_VISIBLE_ITEMS, this._menu).filter(element => isVisible(element));\n\n if (!items.length) {\n return;\n } // if target isn't included in items (e.g. when expanding the dropdown)\n // allow cycling to get the last item in case key equals ARROW_UP_KEY\n\n\n getNextActiveElement(items, target, key === ARROW_DOWN_KEY$1, !items.includes(target)).focus();\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Dropdown.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n static clearMenus(event) {\n if (event.button === RIGHT_MOUSE_BUTTON || event.type === 'keyup' && event.key !== TAB_KEY$1) {\n return;\n }\n\n const openToggles = SelectorEngine.find(SELECTOR_DATA_TOGGLE_SHOWN);\n\n for (const toggle of openToggles) {\n const context = Dropdown.getInstance(toggle);\n\n if (!context || context._config.autoClose === false) {\n continue;\n }\n\n const composedPath = event.composedPath();\n const isMenuTarget = composedPath.includes(context._menu);\n\n if (composedPath.includes(context._element) || context._config.autoClose === 'inside' && !isMenuTarget || context._config.autoClose === 'outside' && isMenuTarget) {\n continue;\n } // Tab navigation through the dropdown menu or events from contained inputs shouldn't close the menu\n\n\n if (context._menu.contains(event.target) && (event.type === 'keyup' && event.key === TAB_KEY$1 || /input|select|option|textarea|form/i.test(event.target.tagName))) {\n continue;\n }\n\n const relatedTarget = {\n relatedTarget: context._element\n };\n\n if (event.type === 'click') {\n relatedTarget.clickEvent = event;\n }\n\n context._completeHide(relatedTarget);\n }\n }\n\n static dataApiKeydownHandler(event) {\n // If not an UP | DOWN | ESCAPE key => not a dropdown command\n // If input/textarea && if key is other than ESCAPE => not a dropdown command\n const isInput = /input|textarea/i.test(event.target.tagName);\n const isEscapeEvent = event.key === ESCAPE_KEY$2;\n const isUpOrDownEvent = [ARROW_UP_KEY$1, ARROW_DOWN_KEY$1].includes(event.key);\n\n if (!isUpOrDownEvent && !isEscapeEvent) {\n return;\n }\n\n if (isInput && !isEscapeEvent) {\n return;\n }\n\n event.preventDefault(); // todo: v6 revert #37011 & change markup https://getbootstrap.com/docs/5.2/forms/input-group/\n\n const getToggleButton = this.matches(SELECTOR_DATA_TOGGLE$3) ? this : SelectorEngine.prev(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.next(this, SELECTOR_DATA_TOGGLE$3)[0] || SelectorEngine.findOne(SELECTOR_DATA_TOGGLE$3, event.delegateTarget.parentNode);\n const instance = Dropdown.getOrCreateInstance(getToggleButton);\n\n if (isUpOrDownEvent) {\n event.stopPropagation();\n instance.show();\n\n instance._selectMenuItem(event);\n\n return;\n }\n\n if (instance._isShown()) {\n // else is escape and we check if it is shown\n event.stopPropagation();\n instance.hide();\n getToggleButton.focus();\n }\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_DATA_TOGGLE$3, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_KEYDOWN_DATA_API, SELECTOR_MENU, Dropdown.dataApiKeydownHandler);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_KEYUP_DATA_API, Dropdown.clearMenus);\nEventHandler.on(document, EVENT_CLICK_DATA_API$3, SELECTOR_DATA_TOGGLE$3, function (event) {\n event.preventDefault();\n Dropdown.getOrCreateInstance(this).toggle();\n});\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Dropdown);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/scrollBar.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst SELECTOR_FIXED_CONTENT = '.fixed-top, .fixed-bottom, .is-fixed, .sticky-top';\nconst SELECTOR_STICKY_CONTENT = '.sticky-top';\nconst PROPERTY_PADDING = 'padding-right';\nconst PROPERTY_MARGIN = 'margin-right';\n/**\n * Class definition\n */\n\nclass ScrollBarHelper {\n constructor() {\n this._element = document.body;\n } // Public\n\n\n getWidth() {\n // https://developer.mozilla.org/en-US/docs/Web/API/Window/innerWidth#usage_notes\n const documentWidth = document.documentElement.clientWidth;\n return Math.abs(window.innerWidth - documentWidth);\n }\n\n hide() {\n const width = this.getWidth();\n\n this._disableOverFlow(); // give padding to element to balance the hidden scrollbar width\n\n\n this._setElementAttributes(this._element, PROPERTY_PADDING, calculatedValue => calculatedValue + width); // trick: We adjust positive paddingRight and negative marginRight to sticky-top elements to keep showing fullwidth\n\n\n this._setElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING, calculatedValue => calculatedValue + width);\n\n this._setElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN, calculatedValue => calculatedValue - width);\n }\n\n reset() {\n this._resetElementAttributes(this._element, 'overflow');\n\n this._resetElementAttributes(this._element, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_FIXED_CONTENT, PROPERTY_PADDING);\n\n this._resetElementAttributes(SELECTOR_STICKY_CONTENT, PROPERTY_MARGIN);\n }\n\n isOverflowing() {\n return this.getWidth() > 0;\n } // Private\n\n\n _disableOverFlow() {\n this._saveInitialAttribute(this._element, 'overflow');\n\n this._element.style.overflow = 'hidden';\n }\n\n _setElementAttributes(selector, styleProperty, callback) {\n const scrollbarWidth = this.getWidth();\n\n const manipulationCallBack = element => {\n if (element !== this._element && window.innerWidth > element.clientWidth + scrollbarWidth) {\n return;\n }\n\n this._saveInitialAttribute(element, styleProperty);\n\n const calculatedValue = window.getComputedStyle(element).getPropertyValue(styleProperty);\n element.style.setProperty(styleProperty, `${callback(Number.parseFloat(calculatedValue))}px`);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _saveInitialAttribute(element, styleProperty) {\n const actualValue = element.style.getPropertyValue(styleProperty);\n\n if (actualValue) {\n Manipulator.setDataAttribute(element, styleProperty, actualValue);\n }\n }\n\n _resetElementAttributes(selector, styleProperty) {\n const manipulationCallBack = element => {\n const value = Manipulator.getDataAttribute(element, styleProperty); // We only want to remove the property if the value is `null`; the value can also be zero\n\n if (value === null) {\n element.style.removeProperty(styleProperty);\n return;\n }\n\n Manipulator.removeDataAttribute(element, styleProperty);\n element.style.setProperty(styleProperty, value);\n };\n\n this._applyManipulationCallback(selector, manipulationCallBack);\n }\n\n _applyManipulationCallback(selector, callBack) {\n if (isElement(selector)) {\n callBack(selector);\n return;\n }\n\n for (const sel of SelectorEngine.find(selector, this._element)) {\n callBack(sel);\n }\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/backdrop.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$9 = 'backdrop';\nconst CLASS_NAME_FADE$4 = 'fade';\nconst CLASS_NAME_SHOW$5 = 'show';\nconst EVENT_MOUSEDOWN = `mousedown.bs.${NAME$9}`;\nconst Default$8 = {\n className: 'modal-backdrop',\n clickCallback: null,\n isAnimated: false,\n isVisible: true,\n // if false, we use the backdrop helper without adding any element to the dom\n rootElement: 'body' // give the choice to place backdrop under different elements\n\n};\nconst DefaultType$8 = {\n className: 'string',\n clickCallback: '(function|null)',\n isAnimated: 'boolean',\n isVisible: 'boolean',\n rootElement: '(element|string)'\n};\n/**\n * Class definition\n */\n\nclass Backdrop extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isAppended = false;\n this._element = null;\n } // Getters\n\n\n static get Default() {\n return Default$8;\n }\n\n static get DefaultType() {\n return DefaultType$8;\n }\n\n static get NAME() {\n return NAME$9;\n } // Public\n\n\n show(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._append();\n\n const element = this._getElement();\n\n if (this._config.isAnimated) {\n reflow(element);\n }\n\n element.classList.add(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n execute(callback);\n });\n }\n\n hide(callback) {\n if (!this._config.isVisible) {\n execute(callback);\n return;\n }\n\n this._getElement().classList.remove(CLASS_NAME_SHOW$5);\n\n this._emulateAnimation(() => {\n this.dispose();\n execute(callback);\n });\n }\n\n dispose() {\n if (!this._isAppended) {\n return;\n }\n\n EventHandler.off(this._element, EVENT_MOUSEDOWN);\n\n this._element.remove();\n\n this._isAppended = false;\n } // Private\n\n\n _getElement() {\n if (!this._element) {\n const backdrop = document.createElement('div');\n backdrop.className = this._config.className;\n\n if (this._config.isAnimated) {\n backdrop.classList.add(CLASS_NAME_FADE$4);\n }\n\n this._element = backdrop;\n }\n\n return this._element;\n }\n\n _configAfterMerge(config) {\n // use getElement() with the default \"body\" to get a fresh Element on each instantiation\n config.rootElement = getElement(config.rootElement);\n return config;\n }\n\n _append() {\n if (this._isAppended) {\n return;\n }\n\n const element = this._getElement();\n\n this._config.rootElement.append(element);\n\n EventHandler.on(element, EVENT_MOUSEDOWN, () => {\n execute(this._config.clickCallback);\n });\n this._isAppended = true;\n }\n\n _emulateAnimation(callback) {\n executeAfterTransition(callback, this._getElement(), this._config.isAnimated);\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/focustrap.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$8 = 'focustrap';\nconst DATA_KEY$5 = 'bs.focustrap';\nconst EVENT_KEY$5 = `.${DATA_KEY$5}`;\nconst EVENT_FOCUSIN$2 = `focusin${EVENT_KEY$5}`;\nconst EVENT_KEYDOWN_TAB = `keydown.tab${EVENT_KEY$5}`;\nconst TAB_KEY = 'Tab';\nconst TAB_NAV_FORWARD = 'forward';\nconst TAB_NAV_BACKWARD = 'backward';\nconst Default$7 = {\n autofocus: true,\n trapElement: null // The element to trap focus inside of\n\n};\nconst DefaultType$7 = {\n autofocus: 'boolean',\n trapElement: 'element'\n};\n/**\n * Class definition\n */\n\nclass FocusTrap extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n this._isActive = false;\n this._lastTabNavDirection = null;\n } // Getters\n\n\n static get Default() {\n return Default$7;\n }\n\n static get DefaultType() {\n return DefaultType$7;\n }\n\n static get NAME() {\n return NAME$8;\n } // Public\n\n\n activate() {\n if (this._isActive) {\n return;\n }\n\n if (this._config.autofocus) {\n this._config.trapElement.focus();\n }\n\n EventHandler.off(document, EVENT_KEY$5); // guard against infinite focus loop\n\n EventHandler.on(document, EVENT_FOCUSIN$2, event => this._handleFocusin(event));\n EventHandler.on(document, EVENT_KEYDOWN_TAB, event => this._handleKeydown(event));\n this._isActive = true;\n }\n\n deactivate() {\n if (!this._isActive) {\n return;\n }\n\n this._isActive = false;\n EventHandler.off(document, EVENT_KEY$5);\n } // Private\n\n\n _handleFocusin(event) {\n const {\n trapElement\n } = this._config;\n\n if (event.target === document || event.target === trapElement || trapElement.contains(event.target)) {\n return;\n }\n\n const elements = SelectorEngine.focusableChildren(trapElement);\n\n if (elements.length === 0) {\n trapElement.focus();\n } else if (this._lastTabNavDirection === TAB_NAV_BACKWARD) {\n elements[elements.length - 1].focus();\n } else {\n elements[0].focus();\n }\n }\n\n _handleKeydown(event) {\n if (event.key !== TAB_KEY) {\n return;\n }\n\n this._lastTabNavDirection = event.shiftKey ? TAB_NAV_BACKWARD : TAB_NAV_FORWARD;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): modal.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$7 = 'modal';\nconst DATA_KEY$4 = 'bs.modal';\nconst EVENT_KEY$4 = `.${DATA_KEY$4}`;\nconst DATA_API_KEY$2 = '.data-api';\nconst ESCAPE_KEY$1 = 'Escape';\nconst EVENT_HIDE$4 = `hide${EVENT_KEY$4}`;\nconst EVENT_HIDE_PREVENTED$1 = `hidePrevented${EVENT_KEY$4}`;\nconst EVENT_HIDDEN$4 = `hidden${EVENT_KEY$4}`;\nconst EVENT_SHOW$4 = `show${EVENT_KEY$4}`;\nconst EVENT_SHOWN$4 = `shown${EVENT_KEY$4}`;\nconst EVENT_RESIZE$1 = `resize${EVENT_KEY$4}`;\nconst EVENT_CLICK_DISMISS = `click.dismiss${EVENT_KEY$4}`;\nconst EVENT_MOUSEDOWN_DISMISS = `mousedown.dismiss${EVENT_KEY$4}`;\nconst EVENT_KEYDOWN_DISMISS$1 = `keydown.dismiss${EVENT_KEY$4}`;\nconst EVENT_CLICK_DATA_API$2 = `click${EVENT_KEY$4}${DATA_API_KEY$2}`;\nconst CLASS_NAME_OPEN = 'modal-open';\nconst CLASS_NAME_FADE$3 = 'fade';\nconst CLASS_NAME_SHOW$4 = 'show';\nconst CLASS_NAME_STATIC = 'modal-static';\nconst OPEN_SELECTOR$1 = '.modal.show';\nconst SELECTOR_DIALOG = '.modal-dialog';\nconst SELECTOR_MODAL_BODY = '.modal-body';\nconst SELECTOR_DATA_TOGGLE$2 = '[data-bs-toggle=\"modal\"]';\nconst Default$6 = {\n backdrop: true,\n focus: true,\n keyboard: true\n};\nconst DefaultType$6 = {\n backdrop: '(boolean|string)',\n focus: 'boolean',\n keyboard: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Modal extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._dialog = SelectorEngine.findOne(SELECTOR_DIALOG, this._element);\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n this._isShown = false;\n this._isTransitioning = false;\n this._scrollBar = new ScrollBarHelper();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$6;\n }\n\n static get DefaultType() {\n return DefaultType$6;\n }\n\n static get NAME() {\n return NAME$7;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown || this._isTransitioning) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$4, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n this._isTransitioning = true;\n\n this._scrollBar.hide();\n\n document.body.classList.add(CLASS_NAME_OPEN);\n\n this._adjustDialog();\n\n this._backdrop.show(() => this._showElement(relatedTarget));\n }\n\n hide() {\n if (!this._isShown || this._isTransitioning) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$4);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = false;\n this._isTransitioning = true;\n\n this._focustrap.deactivate();\n\n this._element.classList.remove(CLASS_NAME_SHOW$4);\n\n this._queueCallback(() => this._hideModal(), this._element, this._isAnimated());\n }\n\n dispose() {\n for (const htmlElement of [window, this._dialog]) {\n EventHandler.off(htmlElement, EVENT_KEY$4);\n }\n\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n }\n\n handleUpdate() {\n this._adjustDialog();\n } // Private\n\n\n _initializeBackDrop() {\n return new Backdrop({\n isVisible: Boolean(this._config.backdrop),\n // 'static' option will be translated to true, and booleans will keep their value,\n isAnimated: this._isAnimated()\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _showElement(relatedTarget) {\n // try to append dynamic modal\n if (!document.body.contains(this._element)) {\n document.body.append(this._element);\n }\n\n this._element.style.display = 'block';\n\n this._element.removeAttribute('aria-hidden');\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.scrollTop = 0;\n const modalBody = SelectorEngine.findOne(SELECTOR_MODAL_BODY, this._dialog);\n\n if (modalBody) {\n modalBody.scrollTop = 0;\n }\n\n reflow(this._element);\n\n this._element.classList.add(CLASS_NAME_SHOW$4);\n\n const transitionComplete = () => {\n if (this._config.focus) {\n this._focustrap.activate();\n }\n\n this._isTransitioning = false;\n EventHandler.trigger(this._element, EVENT_SHOWN$4, {\n relatedTarget\n });\n };\n\n this._queueCallback(transitionComplete, this._dialog, this._isAnimated());\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS$1, event => {\n if (event.key !== ESCAPE_KEY$1) {\n return;\n }\n\n if (this._config.keyboard) {\n event.preventDefault();\n this.hide();\n return;\n }\n\n this._triggerBackdropTransition();\n });\n EventHandler.on(window, EVENT_RESIZE$1, () => {\n if (this._isShown && !this._isTransitioning) {\n this._adjustDialog();\n }\n });\n EventHandler.on(this._element, EVENT_MOUSEDOWN_DISMISS, event => {\n // a bad trick to segregate clicks that may start inside dialog but end outside, and avoid listen to scrollbar clicks\n EventHandler.one(this._element, EVENT_CLICK_DISMISS, event2 => {\n if (this._element !== event.target || this._element !== event2.target) {\n return;\n }\n\n if (this._config.backdrop === 'static') {\n this._triggerBackdropTransition();\n\n return;\n }\n\n if (this._config.backdrop) {\n this.hide();\n }\n });\n });\n }\n\n _hideModal() {\n this._element.style.display = 'none';\n\n this._element.setAttribute('aria-hidden', true);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n this._isTransitioning = false;\n\n this._backdrop.hide(() => {\n document.body.classList.remove(CLASS_NAME_OPEN);\n\n this._resetAdjustments();\n\n this._scrollBar.reset();\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$4);\n });\n }\n\n _isAnimated() {\n return this._element.classList.contains(CLASS_NAME_FADE$3);\n }\n\n _triggerBackdropTransition() {\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED$1);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n const initialOverflowY = this._element.style.overflowY; // return if the following background transition hasn't yet completed\n\n if (initialOverflowY === 'hidden' || this._element.classList.contains(CLASS_NAME_STATIC)) {\n return;\n }\n\n if (!isModalOverflowing) {\n this._element.style.overflowY = 'hidden';\n }\n\n this._element.classList.add(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.classList.remove(CLASS_NAME_STATIC);\n\n this._queueCallback(() => {\n this._element.style.overflowY = initialOverflowY;\n }, this._dialog);\n }, this._dialog);\n\n this._element.focus();\n }\n /**\n * The following methods are used to handle overflowing modals\n */\n\n\n _adjustDialog() {\n const isModalOverflowing = this._element.scrollHeight > document.documentElement.clientHeight;\n\n const scrollbarWidth = this._scrollBar.getWidth();\n\n const isBodyOverflowing = scrollbarWidth > 0;\n\n if (isBodyOverflowing && !isModalOverflowing) {\n const property = isRTL() ? 'paddingLeft' : 'paddingRight';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n\n if (!isBodyOverflowing && isModalOverflowing) {\n const property = isRTL() ? 'paddingRight' : 'paddingLeft';\n this._element.style[property] = `${scrollbarWidth}px`;\n }\n }\n\n _resetAdjustments() {\n this._element.style.paddingLeft = '';\n this._element.style.paddingRight = '';\n } // Static\n\n\n static jQueryInterface(config, relatedTarget) {\n return this.each(function () {\n const data = Modal.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](relatedTarget);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$2, SELECTOR_DATA_TOGGLE$2, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n EventHandler.one(target, EVENT_SHOW$4, showEvent => {\n if (showEvent.defaultPrevented) {\n // only register focus restorer if modal will actually get shown\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$4, () => {\n if (isVisible(this)) {\n this.focus();\n }\n });\n }); // avoid conflict when clicking modal toggler while another one is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR$1);\n\n if (alreadyOpen) {\n Modal.getInstance(alreadyOpen).hide();\n }\n\n const data = Modal.getOrCreateInstance(target);\n data.toggle(this);\n});\nenableDismissTrigger(Modal);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Modal);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): offcanvas.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$6 = 'offcanvas';\nconst DATA_KEY$3 = 'bs.offcanvas';\nconst EVENT_KEY$3 = `.${DATA_KEY$3}`;\nconst DATA_API_KEY$1 = '.data-api';\nconst EVENT_LOAD_DATA_API$2 = `load${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst ESCAPE_KEY = 'Escape';\nconst CLASS_NAME_SHOW$3 = 'show';\nconst CLASS_NAME_SHOWING$1 = 'showing';\nconst CLASS_NAME_HIDING = 'hiding';\nconst CLASS_NAME_BACKDROP = 'offcanvas-backdrop';\nconst OPEN_SELECTOR = '.offcanvas.show';\nconst EVENT_SHOW$3 = `show${EVENT_KEY$3}`;\nconst EVENT_SHOWN$3 = `shown${EVENT_KEY$3}`;\nconst EVENT_HIDE$3 = `hide${EVENT_KEY$3}`;\nconst EVENT_HIDE_PREVENTED = `hidePrevented${EVENT_KEY$3}`;\nconst EVENT_HIDDEN$3 = `hidden${EVENT_KEY$3}`;\nconst EVENT_RESIZE = `resize${EVENT_KEY$3}`;\nconst EVENT_CLICK_DATA_API$1 = `click${EVENT_KEY$3}${DATA_API_KEY$1}`;\nconst EVENT_KEYDOWN_DISMISS = `keydown.dismiss${EVENT_KEY$3}`;\nconst SELECTOR_DATA_TOGGLE$1 = '[data-bs-toggle=\"offcanvas\"]';\nconst Default$5 = {\n backdrop: true,\n keyboard: true,\n scroll: false\n};\nconst DefaultType$5 = {\n backdrop: '(boolean|string)',\n keyboard: 'boolean',\n scroll: 'boolean'\n};\n/**\n * Class definition\n */\n\nclass Offcanvas extends BaseComponent {\n constructor(element, config) {\n super(element, config);\n this._isShown = false;\n this._backdrop = this._initializeBackDrop();\n this._focustrap = this._initializeFocusTrap();\n\n this._addEventListeners();\n } // Getters\n\n\n static get Default() {\n return Default$5;\n }\n\n static get DefaultType() {\n return DefaultType$5;\n }\n\n static get NAME() {\n return NAME$6;\n } // Public\n\n\n toggle(relatedTarget) {\n return this._isShown ? this.hide() : this.show(relatedTarget);\n }\n\n show(relatedTarget) {\n if (this._isShown) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, EVENT_SHOW$3, {\n relatedTarget\n });\n\n if (showEvent.defaultPrevented) {\n return;\n }\n\n this._isShown = true;\n\n this._backdrop.show();\n\n if (!this._config.scroll) {\n new ScrollBarHelper().hide();\n }\n\n this._element.setAttribute('aria-modal', true);\n\n this._element.setAttribute('role', 'dialog');\n\n this._element.classList.add(CLASS_NAME_SHOWING$1);\n\n const completeCallBack = () => {\n if (!this._config.scroll || this._config.backdrop) {\n this._focustrap.activate();\n }\n\n this._element.classList.add(CLASS_NAME_SHOW$3);\n\n this._element.classList.remove(CLASS_NAME_SHOWING$1);\n\n EventHandler.trigger(this._element, EVENT_SHOWN$3, {\n relatedTarget\n });\n };\n\n this._queueCallback(completeCallBack, this._element, true);\n }\n\n hide() {\n if (!this._isShown) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, EVENT_HIDE$3);\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n this._focustrap.deactivate();\n\n this._element.blur();\n\n this._isShown = false;\n\n this._element.classList.add(CLASS_NAME_HIDING);\n\n this._backdrop.hide();\n\n const completeCallback = () => {\n this._element.classList.remove(CLASS_NAME_SHOW$3, CLASS_NAME_HIDING);\n\n this._element.removeAttribute('aria-modal');\n\n this._element.removeAttribute('role');\n\n if (!this._config.scroll) {\n new ScrollBarHelper().reset();\n }\n\n EventHandler.trigger(this._element, EVENT_HIDDEN$3);\n };\n\n this._queueCallback(completeCallback, this._element, true);\n }\n\n dispose() {\n this._backdrop.dispose();\n\n this._focustrap.deactivate();\n\n super.dispose();\n } // Private\n\n\n _initializeBackDrop() {\n const clickCallback = () => {\n if (this._config.backdrop === 'static') {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n }; // 'static' option will be translated to true, and booleans will keep their value\n\n\n const isVisible = Boolean(this._config.backdrop);\n return new Backdrop({\n className: CLASS_NAME_BACKDROP,\n isVisible,\n isAnimated: true,\n rootElement: this._element.parentNode,\n clickCallback: isVisible ? clickCallback : null\n });\n }\n\n _initializeFocusTrap() {\n return new FocusTrap({\n trapElement: this._element\n });\n }\n\n _addEventListeners() {\n EventHandler.on(this._element, EVENT_KEYDOWN_DISMISS, event => {\n if (event.key !== ESCAPE_KEY) {\n return;\n }\n\n if (!this._config.keyboard) {\n EventHandler.trigger(this._element, EVENT_HIDE_PREVENTED);\n return;\n }\n\n this.hide();\n });\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Offcanvas.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (data[config] === undefined || config.startsWith('_') || config === 'constructor') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config](this);\n });\n }\n\n}\n/**\n * Data API implementation\n */\n\n\nEventHandler.on(document, EVENT_CLICK_DATA_API$1, SELECTOR_DATA_TOGGLE$1, function (event) {\n const target = getElementFromSelector(this);\n\n if (['A', 'AREA'].includes(this.tagName)) {\n event.preventDefault();\n }\n\n if (isDisabled(this)) {\n return;\n }\n\n EventHandler.one(target, EVENT_HIDDEN$3, () => {\n // focus on trigger when it is closed\n if (isVisible(this)) {\n this.focus();\n }\n }); // avoid conflict when clicking a toggler of an offcanvas, while another is open\n\n const alreadyOpen = SelectorEngine.findOne(OPEN_SELECTOR);\n\n if (alreadyOpen && alreadyOpen !== target) {\n Offcanvas.getInstance(alreadyOpen).hide();\n }\n\n const data = Offcanvas.getOrCreateInstance(target);\n data.toggle(this);\n});\nEventHandler.on(window, EVENT_LOAD_DATA_API$2, () => {\n for (const selector of SelectorEngine.find(OPEN_SELECTOR)) {\n Offcanvas.getOrCreateInstance(selector).show();\n }\n});\nEventHandler.on(window, EVENT_RESIZE, () => {\n for (const element of SelectorEngine.find('[aria-modal][class*=show][class*=offcanvas-]')) {\n if (getComputedStyle(element).position !== 'fixed') {\n Offcanvas.getOrCreateInstance(element).hide();\n }\n }\n});\nenableDismissTrigger(Offcanvas);\n/**\n * jQuery\n */\n\ndefineJQueryPlugin(Offcanvas);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/sanitizer.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\nconst uriAttributes = new Set(['background', 'cite', 'href', 'itemtype', 'longdesc', 'poster', 'src', 'xlink:href']);\nconst ARIA_ATTRIBUTE_PATTERN = /^aria-[\\w-]*$/i;\n/**\n * A pattern that recognizes a commonly useful subset of URLs that are safe.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst SAFE_URL_PATTERN = /^(?:(?:https?|mailto|ftp|tel|file|sms):|[^#&/:?]*(?:[#/?]|$))/i;\n/**\n * A pattern that matches safe data URLs. Only matches image, video and audio types.\n *\n * Shout-out to Angular https://github.com/angular/angular/blob/12.2.x/packages/core/src/sanitization/url_sanitizer.ts\n */\n\nconst DATA_URL_PATTERN = /^data:(?:image\\/(?:bmp|gif|jpeg|jpg|png|tiff|webp)|video\\/(?:mpeg|mp4|ogg|webm)|audio\\/(?:mp3|oga|ogg|opus));base64,[\\d+/a-z]+=*$/i;\n\nconst allowedAttribute = (attribute, allowedAttributeList) => {\n const attributeName = attribute.nodeName.toLowerCase();\n\n if (allowedAttributeList.includes(attributeName)) {\n if (uriAttributes.has(attributeName)) {\n return Boolean(SAFE_URL_PATTERN.test(attribute.nodeValue) || DATA_URL_PATTERN.test(attribute.nodeValue));\n }\n\n return true;\n } // Check if a regular expression validates the attribute.\n\n\n return allowedAttributeList.filter(attributeRegex => attributeRegex instanceof RegExp).some(regex => regex.test(attributeName));\n};\n\nconst DefaultAllowlist = {\n // Global attributes allowed on any supplied element below.\n '*': ['class', 'dir', 'id', 'lang', 'role', ARIA_ATTRIBUTE_PATTERN],\n a: ['target', 'href', 'title', 'rel'],\n area: [],\n b: [],\n br: [],\n col: [],\n code: [],\n div: [],\n em: [],\n hr: [],\n h1: [],\n h2: [],\n h3: [],\n h4: [],\n h5: [],\n h6: [],\n i: [],\n img: ['src', 'srcset', 'alt', 'title', 'width', 'height'],\n li: [],\n ol: [],\n p: [],\n pre: [],\n s: [],\n small: [],\n span: [],\n sub: [],\n sup: [],\n strong: [],\n u: [],\n ul: []\n};\nfunction sanitizeHtml(unsafeHtml, allowList, sanitizeFunction) {\n if (!unsafeHtml.length) {\n return unsafeHtml;\n }\n\n if (sanitizeFunction && typeof sanitizeFunction === 'function') {\n return sanitizeFunction(unsafeHtml);\n }\n\n const domParser = new window.DOMParser();\n const createdDocument = domParser.parseFromString(unsafeHtml, 'text/html');\n const elements = [].concat(...createdDocument.body.querySelectorAll('*'));\n\n for (const element of elements) {\n const elementName = element.nodeName.toLowerCase();\n\n if (!Object.keys(allowList).includes(elementName)) {\n element.remove();\n continue;\n }\n\n const attributeList = [].concat(...element.attributes);\n const allowedAttributes = [].concat(allowList['*'] || [], allowList[elementName] || []);\n\n for (const attribute of attributeList) {\n if (!allowedAttribute(attribute, allowedAttributes)) {\n element.removeAttribute(attribute.nodeName);\n }\n }\n }\n\n return createdDocument.body.innerHTML;\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): util/template-factory.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$5 = 'TemplateFactory';\nconst Default$4 = {\n allowList: DefaultAllowlist,\n content: {},\n // { selector : text , selector2 : text2 , }\n extraClass: '',\n html: false,\n sanitize: true,\n sanitizeFn: null,\n template: '
'\n};\nconst DefaultType$4 = {\n allowList: 'object',\n content: 'object',\n extraClass: '(string|function)',\n html: 'boolean',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n template: 'string'\n};\nconst DefaultContentType = {\n entry: '(string|element|function|null)',\n selector: '(string|element)'\n};\n/**\n * Class definition\n */\n\nclass TemplateFactory extends Config {\n constructor(config) {\n super();\n this._config = this._getConfig(config);\n } // Getters\n\n\n static get Default() {\n return Default$4;\n }\n\n static get DefaultType() {\n return DefaultType$4;\n }\n\n static get NAME() {\n return NAME$5;\n } // Public\n\n\n getContent() {\n return Object.values(this._config.content).map(config => this._resolvePossibleFunction(config)).filter(Boolean);\n }\n\n hasContent() {\n return this.getContent().length > 0;\n }\n\n changeContent(content) {\n this._checkContent(content);\n\n this._config.content = { ...this._config.content,\n ...content\n };\n return this;\n }\n\n toHtml() {\n const templateWrapper = document.createElement('div');\n templateWrapper.innerHTML = this._maybeSanitize(this._config.template);\n\n for (const [selector, text] of Object.entries(this._config.content)) {\n this._setContent(templateWrapper, text, selector);\n }\n\n const template = templateWrapper.children[0];\n\n const extraClass = this._resolvePossibleFunction(this._config.extraClass);\n\n if (extraClass) {\n template.classList.add(...extraClass.split(' '));\n }\n\n return template;\n } // Private\n\n\n _typeCheckConfig(config) {\n super._typeCheckConfig(config);\n\n this._checkContent(config.content);\n }\n\n _checkContent(arg) {\n for (const [selector, content] of Object.entries(arg)) {\n super._typeCheckConfig({\n selector,\n entry: content\n }, DefaultContentType);\n }\n }\n\n _setContent(template, content, selector) {\n const templateElement = SelectorEngine.findOne(selector, template);\n\n if (!templateElement) {\n return;\n }\n\n content = this._resolvePossibleFunction(content);\n\n if (!content) {\n templateElement.remove();\n return;\n }\n\n if (isElement(content)) {\n this._putElementInTemplate(getElement(content), templateElement);\n\n return;\n }\n\n if (this._config.html) {\n templateElement.innerHTML = this._maybeSanitize(content);\n return;\n }\n\n templateElement.textContent = content;\n }\n\n _maybeSanitize(arg) {\n return this._config.sanitize ? sanitizeHtml(arg, this._config.allowList, this._config.sanitizeFn) : arg;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg(this) : arg;\n }\n\n _putElementInTemplate(element, templateElement) {\n if (this._config.html) {\n templateElement.innerHTML = '';\n templateElement.append(element);\n return;\n }\n\n templateElement.textContent = element.textContent;\n }\n\n}\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): tooltip.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$4 = 'tooltip';\nconst DISALLOWED_ATTRIBUTES = new Set(['sanitize', 'allowList', 'sanitizeFn']);\nconst CLASS_NAME_FADE$2 = 'fade';\nconst CLASS_NAME_MODAL = 'modal';\nconst CLASS_NAME_SHOW$2 = 'show';\nconst SELECTOR_TOOLTIP_INNER = '.tooltip-inner';\nconst SELECTOR_MODAL = `.${CLASS_NAME_MODAL}`;\nconst EVENT_MODAL_HIDE = 'hide.bs.modal';\nconst TRIGGER_HOVER = 'hover';\nconst TRIGGER_FOCUS = 'focus';\nconst TRIGGER_CLICK = 'click';\nconst TRIGGER_MANUAL = 'manual';\nconst EVENT_HIDE$2 = 'hide';\nconst EVENT_HIDDEN$2 = 'hidden';\nconst EVENT_SHOW$2 = 'show';\nconst EVENT_SHOWN$2 = 'shown';\nconst EVENT_INSERTED = 'inserted';\nconst EVENT_CLICK$1 = 'click';\nconst EVENT_FOCUSIN$1 = 'focusin';\nconst EVENT_FOCUSOUT$1 = 'focusout';\nconst EVENT_MOUSEENTER = 'mouseenter';\nconst EVENT_MOUSELEAVE = 'mouseleave';\nconst AttachmentMap = {\n AUTO: 'auto',\n TOP: 'top',\n RIGHT: isRTL() ? 'left' : 'right',\n BOTTOM: 'bottom',\n LEFT: isRTL() ? 'right' : 'left'\n};\nconst Default$3 = {\n allowList: DefaultAllowlist,\n animation: true,\n boundary: 'clippingParents',\n container: false,\n customClass: '',\n delay: 0,\n fallbackPlacements: ['top', 'right', 'bottom', 'left'],\n html: false,\n offset: [0, 0],\n placement: 'top',\n popperConfig: null,\n sanitize: true,\n sanitizeFn: null,\n selector: false,\n template: '
' + '
' + '
' + '
',\n title: '',\n trigger: 'hover focus'\n};\nconst DefaultType$3 = {\n allowList: 'object',\n animation: 'boolean',\n boundary: '(string|element)',\n container: '(string|element|boolean)',\n customClass: '(string|function)',\n delay: '(number|object)',\n fallbackPlacements: 'array',\n html: 'boolean',\n offset: '(array|string|function)',\n placement: '(string|function)',\n popperConfig: '(null|object|function)',\n sanitize: 'boolean',\n sanitizeFn: '(null|function)',\n selector: '(string|boolean)',\n template: 'string',\n title: '(string|element|function)',\n trigger: 'string'\n};\n/**\n * Class definition\n */\n\nclass Tooltip extends BaseComponent {\n constructor(element, config) {\n if (typeof Popper === 'undefined') {\n throw new TypeError('Bootstrap\\'s tooltips require Popper (https://popper.js.org)');\n }\n\n super(element, config); // Private\n\n this._isEnabled = true;\n this._timeout = 0;\n this._isHovered = null;\n this._activeTrigger = {};\n this._popper = null;\n this._templateFactory = null;\n this._newContent = null; // Protected\n\n this.tip = null;\n\n this._setListeners();\n\n if (!this._config.selector) {\n this._fixTitle();\n }\n } // Getters\n\n\n static get Default() {\n return Default$3;\n }\n\n static get DefaultType() {\n return DefaultType$3;\n }\n\n static get NAME() {\n return NAME$4;\n } // Public\n\n\n enable() {\n this._isEnabled = true;\n }\n\n disable() {\n this._isEnabled = false;\n }\n\n toggleEnabled() {\n this._isEnabled = !this._isEnabled;\n }\n\n toggle() {\n if (!this._isEnabled) {\n return;\n }\n\n this._activeTrigger.click = !this._activeTrigger.click;\n\n if (this._isShown()) {\n this._leave();\n\n return;\n }\n\n this._enter();\n }\n\n dispose() {\n clearTimeout(this._timeout);\n EventHandler.off(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n\n if (this._element.getAttribute('data-bs-original-title')) {\n this._element.setAttribute('title', this._element.getAttribute('data-bs-original-title'));\n }\n\n this._disposePopper();\n\n super.dispose();\n }\n\n show() {\n if (this._element.style.display === 'none') {\n throw new Error('Please use show on visible elements');\n }\n\n if (!(this._isWithContent() && this._isEnabled)) {\n return;\n }\n\n const showEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOW$2));\n const shadowRoot = findShadowRoot(this._element);\n\n const isInTheDom = (shadowRoot || this._element.ownerDocument.documentElement).contains(this._element);\n\n if (showEvent.defaultPrevented || !isInTheDom) {\n return;\n } // todo v6 remove this OR make it optional\n\n\n this._disposePopper();\n\n const tip = this._getTipElement();\n\n this._element.setAttribute('aria-describedby', tip.getAttribute('id'));\n\n const {\n container\n } = this._config;\n\n if (!this._element.ownerDocument.documentElement.contains(this.tip)) {\n container.append(tip);\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_INSERTED));\n }\n\n this._popper = this._createPopper(tip);\n tip.classList.add(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we add extra\n // empty mouseover listeners to the body's immediate children;\n // only needed because of broken event delegation on iOS\n // https://www.quirksmode.org/blog/archives/2014/02/mouse_event_bub.html\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.on(element, 'mouseover', noop);\n }\n }\n\n const complete = () => {\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_SHOWN$2));\n\n if (this._isHovered === false) {\n this._leave();\n }\n\n this._isHovered = false;\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n hide() {\n if (!this._isShown()) {\n return;\n }\n\n const hideEvent = EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDE$2));\n\n if (hideEvent.defaultPrevented) {\n return;\n }\n\n const tip = this._getTipElement();\n\n tip.classList.remove(CLASS_NAME_SHOW$2); // If this is a touch-enabled device we remove the extra\n // empty mouseover listeners we added for iOS support\n\n if ('ontouchstart' in document.documentElement) {\n for (const element of [].concat(...document.body.children)) {\n EventHandler.off(element, 'mouseover', noop);\n }\n }\n\n this._activeTrigger[TRIGGER_CLICK] = false;\n this._activeTrigger[TRIGGER_FOCUS] = false;\n this._activeTrigger[TRIGGER_HOVER] = false;\n this._isHovered = null; // it is a trick to support manual triggering\n\n const complete = () => {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n if (!this._isHovered) {\n this._disposePopper();\n }\n\n this._element.removeAttribute('aria-describedby');\n\n EventHandler.trigger(this._element, this.constructor.eventName(EVENT_HIDDEN$2));\n };\n\n this._queueCallback(complete, this.tip, this._isAnimated());\n }\n\n update() {\n if (this._popper) {\n this._popper.update();\n }\n } // Protected\n\n\n _isWithContent() {\n return Boolean(this._getTitle());\n }\n\n _getTipElement() {\n if (!this.tip) {\n this.tip = this._createTipElement(this._newContent || this._getContentForTemplate());\n }\n\n return this.tip;\n }\n\n _createTipElement(content) {\n const tip = this._getTemplateFactory(content).toHtml(); // todo: remove this check on v6\n\n\n if (!tip) {\n return null;\n }\n\n tip.classList.remove(CLASS_NAME_FADE$2, CLASS_NAME_SHOW$2); // todo: on v6 the following can be achieved with CSS only\n\n tip.classList.add(`bs-${this.constructor.NAME}-auto`);\n const tipId = getUID(this.constructor.NAME).toString();\n tip.setAttribute('id', tipId);\n\n if (this._isAnimated()) {\n tip.classList.add(CLASS_NAME_FADE$2);\n }\n\n return tip;\n }\n\n setContent(content) {\n this._newContent = content;\n\n if (this._isShown()) {\n this._disposePopper();\n\n this.show();\n }\n }\n\n _getTemplateFactory(content) {\n if (this._templateFactory) {\n this._templateFactory.changeContent(content);\n } else {\n this._templateFactory = new TemplateFactory({ ...this._config,\n // the `content` var has to be after `this._config`\n // to override config.content in case of popover\n content,\n extraClass: this._resolvePossibleFunction(this._config.customClass)\n });\n }\n\n return this._templateFactory;\n }\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TOOLTIP_INNER]: this._getTitle()\n };\n }\n\n _getTitle() {\n return this._resolvePossibleFunction(this._config.title) || this._element.getAttribute('data-bs-original-title');\n } // Private\n\n\n _initializeOnDelegatedTarget(event) {\n return this.constructor.getOrCreateInstance(event.delegateTarget, this._getDelegateConfig());\n }\n\n _isAnimated() {\n return this._config.animation || this.tip && this.tip.classList.contains(CLASS_NAME_FADE$2);\n }\n\n _isShown() {\n return this.tip && this.tip.classList.contains(CLASS_NAME_SHOW$2);\n }\n\n _createPopper(tip) {\n const placement = typeof this._config.placement === 'function' ? this._config.placement.call(this, tip, this._element) : this._config.placement;\n const attachment = AttachmentMap[placement.toUpperCase()];\n return Popper.createPopper(this._element, tip, this._getPopperConfig(attachment));\n }\n\n _getOffset() {\n const {\n offset\n } = this._config;\n\n if (typeof offset === 'string') {\n return offset.split(',').map(value => Number.parseInt(value, 10));\n }\n\n if (typeof offset === 'function') {\n return popperData => offset(popperData, this._element);\n }\n\n return offset;\n }\n\n _resolvePossibleFunction(arg) {\n return typeof arg === 'function' ? arg.call(this._element) : arg;\n }\n\n _getPopperConfig(attachment) {\n const defaultBsPopperConfig = {\n placement: attachment,\n modifiers: [{\n name: 'flip',\n options: {\n fallbackPlacements: this._config.fallbackPlacements\n }\n }, {\n name: 'offset',\n options: {\n offset: this._getOffset()\n }\n }, {\n name: 'preventOverflow',\n options: {\n boundary: this._config.boundary\n }\n }, {\n name: 'arrow',\n options: {\n element: `.${this.constructor.NAME}-arrow`\n }\n }, {\n name: 'preSetPlacement',\n enabled: true,\n phase: 'beforeMain',\n fn: data => {\n // Pre-set Popper's placement attribute in order to read the arrow sizes properly.\n // Otherwise, Popper mixes up the width and height dimensions since the initial arrow style is for top placement\n this._getTipElement().setAttribute('data-popper-placement', data.state.placement);\n }\n }]\n };\n return { ...defaultBsPopperConfig,\n ...(typeof this._config.popperConfig === 'function' ? this._config.popperConfig(defaultBsPopperConfig) : this._config.popperConfig)\n };\n }\n\n _setListeners() {\n const triggers = this._config.trigger.split(' ');\n\n for (const trigger of triggers) {\n if (trigger === 'click') {\n EventHandler.on(this._element, this.constructor.eventName(EVENT_CLICK$1), this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context.toggle();\n });\n } else if (trigger !== TRIGGER_MANUAL) {\n const eventIn = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSEENTER) : this.constructor.eventName(EVENT_FOCUSIN$1);\n const eventOut = trigger === TRIGGER_HOVER ? this.constructor.eventName(EVENT_MOUSELEAVE) : this.constructor.eventName(EVENT_FOCUSOUT$1);\n EventHandler.on(this._element, eventIn, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusin' ? TRIGGER_FOCUS : TRIGGER_HOVER] = true;\n\n context._enter();\n });\n EventHandler.on(this._element, eventOut, this._config.selector, event => {\n const context = this._initializeOnDelegatedTarget(event);\n\n context._activeTrigger[event.type === 'focusout' ? TRIGGER_FOCUS : TRIGGER_HOVER] = context._element.contains(event.relatedTarget);\n\n context._leave();\n });\n }\n }\n\n this._hideModalHandler = () => {\n if (this._element) {\n this.hide();\n }\n };\n\n EventHandler.on(this._element.closest(SELECTOR_MODAL), EVENT_MODAL_HIDE, this._hideModalHandler);\n }\n\n _fixTitle() {\n const title = this._element.getAttribute('title');\n\n if (!title) {\n return;\n }\n\n if (!this._element.getAttribute('aria-label') && !this._element.textContent.trim()) {\n this._element.setAttribute('aria-label', title);\n }\n\n this._element.setAttribute('data-bs-original-title', title); // DO NOT USE IT. Is only for backwards compatibility\n\n\n this._element.removeAttribute('title');\n }\n\n _enter() {\n if (this._isShown() || this._isHovered) {\n this._isHovered = true;\n return;\n }\n\n this._isHovered = true;\n\n this._setTimeout(() => {\n if (this._isHovered) {\n this.show();\n }\n }, this._config.delay.show);\n }\n\n _leave() {\n if (this._isWithActiveTrigger()) {\n return;\n }\n\n this._isHovered = false;\n\n this._setTimeout(() => {\n if (!this._isHovered) {\n this.hide();\n }\n }, this._config.delay.hide);\n }\n\n _setTimeout(handler, timeout) {\n clearTimeout(this._timeout);\n this._timeout = setTimeout(handler, timeout);\n }\n\n _isWithActiveTrigger() {\n return Object.values(this._activeTrigger).includes(true);\n }\n\n _getConfig(config) {\n const dataAttributes = Manipulator.getDataAttributes(this._element);\n\n for (const dataAttribute of Object.keys(dataAttributes)) {\n if (DISALLOWED_ATTRIBUTES.has(dataAttribute)) {\n delete dataAttributes[dataAttribute];\n }\n }\n\n config = { ...dataAttributes,\n ...(typeof config === 'object' && config ? config : {})\n };\n config = this._mergeConfigObj(config);\n config = this._configAfterMerge(config);\n\n this._typeCheckConfig(config);\n\n return config;\n }\n\n _configAfterMerge(config) {\n config.container = config.container === false ? document.body : getElement(config.container);\n\n if (typeof config.delay === 'number') {\n config.delay = {\n show: config.delay,\n hide: config.delay\n };\n }\n\n if (typeof config.title === 'number') {\n config.title = config.title.toString();\n }\n\n if (typeof config.content === 'number') {\n config.content = config.content.toString();\n }\n\n return config;\n }\n\n _getDelegateConfig() {\n const config = {};\n\n for (const key in this._config) {\n if (this.constructor.Default[key] !== this._config[key]) {\n config[key] = this._config[key];\n }\n }\n\n config.selector = false;\n config.trigger = 'manual'; // In the future can be replaced with:\n // const keysWithDifferentValues = Object.entries(this._config).filter(entry => this.constructor.Default[entry[0]] !== this._config[entry[0]])\n // `Object.fromEntries(keysWithDifferentValues)`\n\n return config;\n }\n\n _disposePopper() {\n if (this._popper) {\n this._popper.destroy();\n\n this._popper = null;\n }\n\n if (this.tip) {\n this.tip.remove();\n this.tip = null;\n }\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Tooltip.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Tooltip);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): popover.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$3 = 'popover';\nconst SELECTOR_TITLE = '.popover-header';\nconst SELECTOR_CONTENT = '.popover-body';\nconst Default$2 = { ...Tooltip.Default,\n content: '',\n offset: [0, 8],\n placement: 'right',\n template: '
' + '
' + '

' + '
' + '
',\n trigger: 'click'\n};\nconst DefaultType$2 = { ...Tooltip.DefaultType,\n content: '(null|string|element|function)'\n};\n/**\n * Class definition\n */\n\nclass Popover extends Tooltip {\n // Getters\n static get Default() {\n return Default$2;\n }\n\n static get DefaultType() {\n return DefaultType$2;\n }\n\n static get NAME() {\n return NAME$3;\n } // Overrides\n\n\n _isWithContent() {\n return this._getTitle() || this._getContent();\n } // Private\n\n\n _getContentForTemplate() {\n return {\n [SELECTOR_TITLE]: this._getTitle(),\n [SELECTOR_CONTENT]: this._getContent()\n };\n }\n\n _getContent() {\n return this._resolvePossibleFunction(this._config.content);\n } // Static\n\n\n static jQueryInterface(config) {\n return this.each(function () {\n const data = Popover.getOrCreateInstance(this, config);\n\n if (typeof config !== 'string') {\n return;\n }\n\n if (typeof data[config] === 'undefined') {\n throw new TypeError(`No method named \"${config}\"`);\n }\n\n data[config]();\n });\n }\n\n}\n/**\n * jQuery\n */\n\n\ndefineJQueryPlugin(Popover);\n\n/**\n * --------------------------------------------------------------------------\n * Bootstrap (v5.2.3): scrollspy.js\n * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE)\n * --------------------------------------------------------------------------\n */\n/**\n * Constants\n */\n\nconst NAME$2 = 'scrollspy';\nconst DATA_KEY$2 = 'bs.scrollspy';\nconst EVENT_KEY$2 = `.${DATA_KEY$2}`;\nconst DATA_API_KEY = '.data-api';\nconst EVENT_ACTIVATE = `activate${EVENT_KEY$2}`;\nconst EVENT_CLICK = `click${EVENT_KEY$2}`;\nconst EVENT_LOAD_DATA_API$1 = `load${EVENT_KEY$2}${DATA_API_KEY}`;\nconst CLASS_NAME_DROPDOWN_ITEM = 'dropdown-item';\nconst CLASS_NAME_ACTIVE$1 = 'active';\nconst SELECTOR_DATA_SPY = '[data-bs-spy=\"scroll\"]';\nconst SELECTOR_TARGET_LINKS = '[href]';\nconst SELECTOR_NAV_LIST_GROUP = '.nav, .list-group';\nconst SELECTOR_NAV_LINKS = '.nav-link';\nconst SELECTOR_NAV_ITEMS = '.nav-item';\nconst SELECTOR_LIST_ITEMS = '.list-group-item';\nconst SELECTOR_LINK_ITEMS = `${SELECTOR_NAV_LINKS}, ${SELECTOR_NAV_ITEMS} > ${SELECTOR_NAV_LINKS}, ${SELECTOR_LIST_ITEMS}`;\nconst SELECTOR_DROPDOWN = '.dropdown';\nconst SELECTOR_DROPDOWN_TOGGLE$1 = '.dropdown-toggle';\nconst Default$1 = {\n offset: null,\n // TODO: v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: '0px 0px -25%',\n smoothScroll: false,\n target: null,\n threshold: [0.1, 0.5, 1]\n};\nconst DefaultType$1 = {\n offset: '(number|null)',\n // TODO v6 @deprecated, keep it for backwards compatibility reasons\n rootMargin: 'string',\n smoothScroll: 'boolean',\n target: 'element',\n threshold: 'array'\n};\n/**\n * Class definition\n */\n\nclass ScrollSpy extends BaseComponent {\n constructor(element, config) {\n super(element, config); // this._element is the observablesContainer and config.target the menu links wrapper\n\n this._targetLinks = new Map();\n this._observableSections = new Map();\n this._rootElement = getComputedStyle(this._element).overflowY === 'visible' ? null : this._element;\n this._activeTarget = null;\n this._observer = null;\n this._previousScrollData = {\n visibleEntryTop: 0,\n parentScrollTop: 0\n };\n this.refresh(); // initialize\n } // Getters\n\n\n static get Default() {\n return Default$1;\n }\n\n static get DefaultType() {\n return DefaultType$1;\n }\n\n static get NAME() {\n return NAME$2;\n } // Public\n\n\n refresh() {\n this._initializeTargetsAndObservables();\n\n this._maybeEnableSmoothScroll();\n\n if (this._observer) {\n this._observer.disconnect();\n } else {\n this._observer = this._getNewObserver();\n }\n\n for (const section of this._observableSections.values()) {\n this._observer.observe(section);\n }\n }\n\n dispose() {\n this._observer.disconnect();\n\n super.dispose();\n } // Private\n\n\n _configAfterMerge(config) {\n // TODO: on v6 target should be given explicitly & remove the {target: 'ss-target'} case\n config.target = getElement(config.target) || document.body; // TODO: v6 Only for backwards compatibility reasons. Use rootMargin only\n\n config.rootMargin = config.offset ? `${config.offset}px 0px -30%` : config.rootMargin;\n\n if (typeof config.threshold === 'string') {\n config.threshold = config.threshold.split(',').map(value => Number.parseFloat(value));\n }\n\n return config;\n }\n\n _maybeEnableSmoothScroll() {\n if (!this._config.smoothScroll) {\n return;\n } // unregister any previous listeners\n\n\n EventHandler.off(this._config.target, EVENT_CLICK);\n EventHandler.on(this._config.target, EVENT_CLICK, SELECTOR_TARGET_LINKS, event => {\n const observableSection = this._observableSections.get(event.target.hash);\n\n if (observableSection) {\n event.preventDefault();\n const root = this._rootElement || window;\n const height = observableSection.offsetTop - this._element.offsetTop;\n\n if (root.scrollTo) {\n root.scrollTo({\n top: height,\n behavior: 'smooth'\n });\n return;\n } // Chrome 60 doesn't support `scrollTo`\n\n\n root.scrollTop = height;\n }\n });\n }\n\n _getNewObserver() {\n const options = {\n root: this._rootElement,\n threshold: this._config.threshold,\n rootMargin: this._config.rootMargin\n };\n return new IntersectionObserver(entries => this._observerCallback(entries), options);\n } // The logic of selection\n\n\n _observerCallback(entries) {\n const targetElement = entry => this._targetLinks.get(`#${entry.target.id}`);\n\n const activate = entry => {\n this._previousScrollData.visibleEntryTop = entry.target.offsetTop;\n\n this._process(targetElement(entry));\n };\n\n const parentScrollTop = (this._rootElement || document.documentElement).scrollTop;\n const userScrollsDown = parentScrollTop >= this._previousScrollData.parentScrollTop;\n this._previousScrollData.parentScrollTop = parentScrollTop;\n\n for (const entry of entries) {\n if (!entry.isIntersecting) {\n this._activeTarget = null;\n\n this._clearActiveClass(targetElement(entry));\n\n continue;\n }\n\n const entryIsLowerThanPrevious = entry.target.offsetTop >= this._previousScrollData.visibleEntryTop; // if we are scrolling down, pick the bigger offsetTop\n\n if (userScrollsDown && entryIsLowerThanPrevious) {\n activate(entry); // if parent isn't scrolled, let's keep the first visible item, breaking the iteration\n\n if (!parentScrollTop) {\n return;\n }\n\n continue;\n } // if we are scrolling up, pick the smallest offsetTop\n\n\n if (!userScrollsDown && !entryIsLowerThanPrevious) {\n activate(entry);\n }\n }\n }\n\n _initializeTargetsAndObservables() {\n this._targetLinks = new Map();\n this._observableSections = new Map();\n const targetLinks = SelectorEngine.find(SELECTOR_TARGET_LINKS, this._config.target);\n\n for (const anchor of targetLinks) {\n // ensure that the anchor has an id and is not disabled\n if (!anchor.hash || isDisabled(anchor)) {\n continue;\n }\n\n const observableSection = SelectorEngine.findOne(anchor.hash, this._element); // ensure that the observableSection exists & is visible\n\n if (isVisible(observableSection)) {\n this._targetLinks.set(anchor.hash, anchor);\n\n this._observableSections.set(anchor.hash, observableSection);\n }\n }\n }\n\n _process(target) {\n if (this._activeTarget === target) {\n return;\n }\n\n this._clearActiveClass(this._config.target);\n\n this._activeTarget = target;\n target.classList.add(CLASS_NAME_ACTIVE$1);\n\n this._activateParents(target);\n\n EventHandler.trigger(this._element, EVENT_ACTIVATE, {\n relatedTarget: target\n });\n }\n\n _activateParents(target) {\n // Activate dropdown parents\n if (target.classList.contains(CLASS_NAME_DROPDOWN_ITEM)) {\n SelectorEngine.findOne(SELECTOR_DROPDOWN_TOGGLE$1, target.closest(SELECTOR_DROPDOWN)).classList.add(CLASS_NAME_ACTIVE$1);\n return;\n }\n\n for (const listGroup of SelectorEngine.parents(target, SELECTOR_NAV_LIST_GROUP)) {\n // Set triggered links parents as active\n // With both