diff --git a/.gitignore b/.gitignore index 549e00a2..d4716e4b 100644 --- a/.gitignore +++ b/.gitignore @@ -31,3 +31,13 @@ build/ ### VS Code ### .vscode/ +node_modules +/package.json +/package-lock.json + +### Remove persistent data from version control ### +volumes/uploads/** +volumes/sqlite.db +images/tmp/MonaLisa.gif +images/tmp/MonaLisa.png +images/tmp/MonaLisa.txt diff --git a/CNAME b/CNAME new file mode 100644 index 00000000..0c35501b --- /dev/null +++ b/CNAME @@ -0,0 +1 @@ +csacoders.nighthawkcodingsociety.com \ No newline at end of file diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 00000000..cca2dfee --- /dev/null +++ b/Dockerfile @@ -0,0 +1,9 @@ +# syntax=docker/dockerfile:1 +FROM openjdk:18-alpine3.13 +WORKDIR /app +RUN apk update && apk upgrade && \ + apk add --no-cache git +COPY . /app +RUN ./mvnw package +CMD ["java", "-jar", "target/csa-0.0.1-SNAPSHOT.jar"] +EXPOSE 8078 diff --git a/README.md b/README.md index d1da1320..390239c5 100644 --- a/README.md +++ b/README.md @@ -1,126 +1,235 @@ -# Deployment Guide - -## Setting up Java runtime and development -Java is two pieces, we will need both if you want to run and build -``` -$ sudo apt update -$ sudo apt upgrade -``` -Install Java Runtime Environment -``` -$ sudo apt install default-jre -$ java -version -``` -Install Java Development Kit -``` -$ sudo apt install default-jdk -$ javac -version -``` - -## Build and run project -Prerequisite is Maven install in order to build project -``` -$ sudo apt update -$ sudo apt upgrade -$ sudo apt install maven -$ mvn -version -``` -Clone and build spring-idea repository -``` -$ cd -$ git clone https://github.com/nighthawkcoders/nighthawk_csa.git -$ cd nighthawk_csa -$ ./mvnw package -``` -Run your java project, after test ctl-C to stop service -``` -$ cd -$ java -jar nighthawk_csa/target/csa-0.0.1-SNAPSHOT.jar -``` -Test on localhost browser -``` -localhost:8080 -``` - - - -## Java service configuration -To run and start application automatically it will require a the JAR file from previous step to run from a .service file. -In this service file we are providing details of the java runtime service: -* start after “network.target” has been started -* the ExecStart is the same as command you validated to executes JAR - -Create a 'service' file as administratr: -* sudo nano -* change nighthawk_csa reference or jar file name as applicable to your project -* replace User=pi with User=ubuntu if applicable - -File is located at /etc/systemd/system/nighthawk_csa.service. -``` -[Unit] -Description=Java -After=network.target - -[Service] -User=ubuntu -Restart=always -ExecStart=java -jar /home/ubuntu/nighthawk_csa/target/csa-0.0.1-SNAPSHOT.jar - -[Install] -WantedBy=multi-user.target -``` - -Run and enable your service file -``` -$ sudo systemctl start nighthawk_csa -$ systemctl status nightawk_csa -``` - -If succesfull, enable your service file to be persistant on machine -``` -$ sudo systemctl enable nighthawk_csa - -``` - -## Nginx service configuration -File is located at /etc/nginx/sites-available/nighthawk_csa -``` -server { - listen 80; - server_name csa.nighthawkcoders.cf; - - location / { - proxy_pass http://localhost:8080; - } -} -``` -Test the configuration to make sure there are no errors: - - $ sudo ln -s /etc/nginx/sites-available/nighthawk_csa /etc/nginx/sites-enabled - $ sudo nginx -t - -If there are no errors, restart NGINX so the changes take effect: - - $ sudo systemctl restart nginx - - -## Goto freenom.com and register public IP Address to a Domain - -```diff -- Domain and Public IP Address match your nginx configuration files -+ REPLACE freenom config with your-domain and your-public-ip, make one or more a records for each project -``` - -#### This illustration shows configuration of A records within the domain - - - -## Port Forward your Web application on Internal Host (aka RPi) to the Internet -```diff -- Your Public IP Address needs to connect to your host on Private IP network through Port Forwarding -+ PROCESS will vary on every home network, but basic premis is to Port forward external port 80 to your Private Host (aka RPi) on internal port 80 -``` - -#### This illustration shows configuration of HTTP, as well as some other common service to access a Private IP host computer through port forwarding. It is always recommended to minimize access points from internet to your home network. - - +# Time Box Tri 3 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
WeekDatesStand Up ThemeTest PrepTech TalkCanvas
FinalsJune 6 - 9Finals Weeknonenonenone
11May 31 - June 3PBL Customer Project DueN@tM Wed 6/1 6-7:30pmnoneProject Final Review
10May 23 - 27Final Project Dev 2noneSpring Boot Security and Notes and Uploadsnone
9May 16 - 20Final Project Dev 1noneSpring Boot Security and Many-to-One Notesnone
8May 9 - 13AP Week 2, Final Project Review 2noneMany-to-Many Relations DataPBL Sponsor Requirements Presentations
7May 2 - 6AP Week 1, Final Project Review 1CSA Exam May 4thnonePBL Classroom Requirements Presentations
6April 25 - 29CSA College Board Prep Week 2Proctored MCQ Tue, FRQ ThnoneStudy Week 2
5April 18 - 22CSA College Board Prep Week 1Proctored MCQ Tue, FRQ ThunoneStudy Week 1
Spring BreakApril 11 - 15nonenonenonenone
4April 4 - 8Data Structures FinalnoneCrossover Coding Tue, WedIndividual Data Structures Final
3March 28 - April 1SortsnoneTT3 Sorts and AnalysisSorts and Analysis
2March 21 - 25CalculatornoneTT2 Calculator, Stacks, ArrayListsData Structures Challenge 2
1March 14 - 18Custom Java and Linked ListsnoneTT1 Linked ListsData Structures Challenge 1
0March 7 - 11Innovation Week ObjectivesnoneTT0 Data StructuresPlans, Team, Jobs
+ + +# Tri 2 Time Box + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
WeekStand Up ThemeTest PrepTech TalkCanvas
11Finals WeeknoneN@tMPBL Final
10Surprise Test and Tri 3 IntrononeTT10Final MCQ Test
9Student Tech TalksnoneTT9.1Search, TT9.2SassyPBL Part 1
8Data Ops, Linked List of ObjectsFRQ9 Books, FRQ10 GCFTT8Pair/Trio Showing 2
7Data Ops, SortsFRQ7 Users, FRQ8 PlotsTT7Pair/Trio Showing 1
6Midterm, FRQs, and KetchupFRQ6, Enhanced for loopTT6Mid Term FRQ and Vocab
5Data Ops, GenericsFRQ5, InvitationTT5PBL Showing
4StringOps, JekyllFRQ4, StreakTT4 3, 4, 5
3TO DB TrainingFRQ3, RSVPTT3WIP Review
2Certbot, 1to1FRQ2, Light SequenceTT2.1 TT2.2Home Pages
1SCCS, AsyncNoneTT1.1, TT1.2Project Approval
diff --git a/_config.yml b/_config.yml new file mode 100644 index 00000000..7c06f8df --- /dev/null +++ b/_config.yml @@ -0,0 +1,9 @@ +theme: jekyll-theme-midnight +title: Nighthawk CSA +gitorg: "https://github.com/nighthawkcoders" +description: "This GitHub project provides Advance Placement Computer Science 'A' (AP-CSA) code, training, and teaching materials. This page is a 'GitHub Pages' website and contains guidance and development activities. Cloning the GitHub Project provides Java-Spring webserver code. Explore this page for activities. including procedures to develop, build, and deploy a Web Server." +webserver: "https://csa.nighthawkcodingsociety.com/" +webserverid: "nighthawkcodingsociety" +twitter: "https://twitter.com/NighthawkCoding" +twitterid: "@NighthawkCoding" +email: "nighthawkcodingsociety@gmail.com" diff --git a/_includes/navigation.html b/_includes/navigation.html new file mode 100644 index 00000000..39b28b82 --- /dev/null +++ b/_includes/navigation.html @@ -0,0 +1,9 @@ + + + + + + + + +
HomePostsUnitsAbout
diff --git a/_layouts/default.html b/_layouts/default.html new file mode 100644 index 00000000..235d251d --- /dev/null +++ b/_layouts/default.html @@ -0,0 +1,44 @@ + + + + + + + {% seo %} + + + + + + + {% include head-custom.html %} + + + + +
+ +
+ +
+

{{ site.title | default: site.github.repository_name }}

+

{{ site.description | default: site.github.project_tagline }}

+
+ {% include navigation.html %} + Runtime {{ site.webserverid }} + Twitter {{ site.twitterid }} +
+ + + {{ content }} + +
+ +
+ + diff --git a/_notebooks/2022-06-14-anatomy.ipynb b/_notebooks/2022-06-14-anatomy.ipynb new file mode 100644 index 00000000..16af8f2e --- /dev/null +++ b/_notebooks/2022-06-14-anatomy.ipynb @@ -0,0 +1,139 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Java Hello, World!" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Static example" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello World!\n" + ] + } + ], + "source": [ + "// Define Static Method within a Class\n", + "public class HelloStatic {\n", + " // Java standard entry point\n", + " public static void main(String[] args) { \n", + " System.out.println(\"Hello World!\");\n", + " }\n", + "}\n", + "// IJava only --- allows us to rexecute code without be wrapped in Class\n", + "HelloStatic.main(null); // Class prefix allows reference of Static Method" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dynamic Example" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello, World!\n" + ] + } + ], + "source": [ + "// Define Class with Constructor returning Object\n", + "public class HelloObject {\n", + " private String hello;\n", + " public HelloObject() {\n", + " hello = \"Hello, World!\";\n", + " }\n", + " public String getHello() {\n", + " return this.hello;\n", + " }\n", + "}\n", + "HelloObject ho = new HelloObject(); // Instance of Class (ho) is an Object via \"new\"\n", + "System.out.println(ho.getHello()); // Object allows reference to public methods and data" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Dynamic Example with two constructors" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Hello, World!\n", + "Hello, Nighthawk Coding Society!\n" + ] + } + ], + "source": [ + "// Define Class with Constructor returning Object\n", + "public class HelloDynamic {\n", + " private String hello;\n", + " // no arguement signature\n", + " public HelloDynamic() {\n", + " hello = \"Hello, World!\";\n", + " }\n", + " // one argument signature\n", + " public HelloDynamic(String hello) {\n", + " this.hello = hello;\n", + " }\n", + " public String getHello() {\n", + " return this.hello;\n", + " }\n", + "}\n", + "HelloDynamic hd1 = new HelloDynamic(); // no argument signature\n", + "HelloDynamic hd2 = new HelloDynamic(\"Hello, Nighthawk Coding Society!\"); // one argument signature\n", + "System.out.println(hd1.getHello()); \n", + "System.out.println(hd2.getHello()); " + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "java", + "file_extension": ".jshell", + "mimetype": "text/x-java-source", + "name": "java", + "pygments_lexer": "java", + "version": "17.0.3+7" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_notebooks/2022-06-14-primitive.ipynb b/_notebooks/2022-06-14-primitive.ipynb new file mode 100644 index 00000000..d88f4213 --- /dev/null +++ b/_notebooks/2022-06-14-primitive.ipynb @@ -0,0 +1,115 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "# Primitive Types\n", + "College Board focus is on primitive types of int, double, and boolean. In unit1, String is mentioned, but it is a Wrapper Class, the primitive type associated with String is the single characther char. String is an array of char's." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Scan Primitive data" + ] + }, + { + "cell_type": "code", + "execution_count": 24, + "metadata": { + "vscode": { + "languageId": "java" + } + }, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Enter an integer: 21\n", + "Enter a double: 3.14159\n", + "Enter a boolean: true\n", + "Enter a String: basketball 🏀\n" + ] + } + ], + "source": [ + "// java style to import library\n", + "import java.util.Scanner;\n", + "\n", + "// class must alway have 1st letter as uppercase, CamelCase is Java Class convention\n", + "public class ScanPrimitives {\n", + " public static void main(String[] args) { \n", + " Scanner input;\n", + "\n", + " // primitive int\n", + " input = new Scanner(System.in);\n", + " System.out.print(\"Enter an integer: \");\n", + " try {\n", + " int sampleInputInt = input.nextInt();\n", + " System.out.println(sampleInputInt);\n", + " } catch (Exception e) { // if not an integer\n", + " System.out.println(\"Not an integer (form like 159), \" + e);\n", + " }\n", + " input.close();\n", + "\n", + " // primitive double\n", + " input = new Scanner(System.in);\n", + " System.out.print(\"Enter a double: \");\n", + " try {\n", + " double sampleInputDouble = input.nextDouble();\n", + " System.out.println(sampleInputDouble);\n", + " } catch (Exception e) { // if not a number\n", + " System.out.println(\"Not an double (form like 9.99), \" + e);\n", + " }\n", + " input.close();\n", + "\n", + " // primitive boolean\n", + " input = new Scanner(System.in);\n", + " System.out.print(\"Enter a boolean: \");\n", + " try {\n", + " boolean sampleInputBoolean = input.nextBoolean();\n", + " System.out.println(sampleInputBoolean);\n", + " } catch (Exception e) { // if not true or false\n", + " System.out.println(\"Not an boolean (true or false), \" + e);\n", + " }\n", + " input.close();\n", + "\n", + " // wrapper class String\n", + " input = new Scanner(System.in);\n", + " System.out.print(\"Enter a String: \");\n", + " try {\n", + " String sampleInputString = input.nextLine();\n", + " System.out.println(sampleInputString);\n", + " } catch (Exception e) { // this may never happen\n", + " System.out.println(\"Not an String, \" + e);\n", + " }\n", + " input.close();\n", + " }\n", + "}\n", + "\n", + "ScanPrimitives.main(null);" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Java", + "language": "java", + "name": "java" + }, + "language_info": { + "codemirror_mode": "java", + "file_extension": ".jshell", + "mimetype": "text/x-java-source", + "name": "Java", + "pygments_lexer": "java", + "version": "17.0.3+7" + }, + "orig_nbformat": 4 + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/_posts/2022-03-07-Week-0-Data-Structures-Objectives.md b/_posts/2022-03-07-Week-0-Data-Structures-Objectives.md new file mode 100644 index 00000000..b6c94d81 --- /dev/null +++ b/_posts/2022-03-07-Week-0-Data-Structures-Objectives.md @@ -0,0 +1,3 @@ +### Primary deliverables for trimester: +* Individual/Pair Data Structures Project - every individual will manage their own Java Data Structures project. Replit or Web deliverables with integrated GitHub version control are required. Those who commit frequently and regularly will receive higher grades. Requirements for this project will be provided via Tech Talks. +* PBL Customer Project Embedded or Web - teams of four will work on a project throughout the trimester, this should be a focus in all planning during Trimester. For Web projects it is advised that you build or add to a project that was started in Trimester 1 or 2, or that you fork/extend an idea from CSA 2021 students. For embedded projects you will work with Teacher and cover new ground. In this work, we will be researching technology for our individual learning and be building curriculm for the future. It is highly advised to plan to incorporate any data structures ideas into your final project. Such planning will lead to leveraged and strategic implementation. Teams that assign jobs, leverage work, and plan throughout the trimester and will undoubltable receive higher grades. Requirements need to be approved by Project Owner, this job represents needs of a Customer and must be someone outside of project team. diff --git a/_posts/2022-03-27-Week-3-Sorts.md b/_posts/2022-03-27-Week-3-Sorts.md new file mode 100644 index 00000000..d8d2025d --- /dev/null +++ b/_posts/2022-03-27-Week-3-Sorts.md @@ -0,0 +1,11 @@ +### **2020 Tri 3 Week 3: 3/28 - 4/1**, Sorts work for Java Data Structures project. +* **Mon Tech Talk** + * Two week plan + * [Sorts Tech Talk](https://github.com/nighthawkcoders/nighthawk_csa/wiki/Tri-3:-Tech-Talk-3:-Sorts) +* **Tue Crossover grading** + * INDIVIDUAL **Data Strucutres Challenge 2** Review Ticket with Team score/3 + Indi score/2 (incl. name of grader next to score) + * DMs for John Mortensen: GitHub Pages, Review Ticket + * See canvas for [Data Structures Challenge 2](https://poway.instructure.com/courses/112339/assignments/2063677) for grading percentages and requirements +* **Wed-Fri CCC** + * Finish Sorts + * Prepare for [Data Structures Final/Video](https://poway.instructure.com/courses/112339/assignments/2077455) (Due Friday 4/11 @ 8:00AM) diff --git a/_posts/2022-03-27-Week-4-Data-Structures-Final.md b/_posts/2022-03-27-Week-4-Data-Structures-Final.md new file mode 100644 index 00000000..9ccb1b02 --- /dev/null +++ b/_posts/2022-03-27-Week-4-Data-Structures-Final.md @@ -0,0 +1,13 @@ +### **2020 Tri 3 Week 4: 4/4 - 4/8**, Finish trimester work on Java Data Structures. +* **Mon Crossover grading** (Must be new Partner) + * INDIVIDUAL **Sorts** Review Ticket with Indi score/5 (incl. name of grader next to score) + * DMs for John Mortensen: GitHub Pages, Review Ticket + * See canvas for [Sorts](https://poway.instructure.com/courses/112339/assignments/2077454) grading percentages and requirements +* **Tue-Wed Crossover coding** (Same as Sorts Grading Partner) + * Pick a crossover partner from a group other than your study group. + * Check for completion of all challenges (weeks0/1/2/3) to meet the finals requirements of [Individual Data Structures Final](https://poway.instructure.com/courses/112339/assignments/2077455). + * Make/Complete/Fix/Contribute to the crossover project and add a Data Structure, ie POJO or ASCI art. Be creative! +* **Thu** Code Code Code +* **Fri Data Structures Final Crossover Grading** (Due Friday AM, Regular Scrum Team Partner) + * INDIVIDUAL **Datat Structures Final** Review Ticket with Indi score/10 + * See [Individual Data Strcutures Final](https://poway.instructure.com/courses/112339/assignments/2077455) diff --git a/_posts/2022-04-03-Finish-Line.md b/_posts/2022-04-03-Finish-Line.md new file mode 100644 index 00000000..8f297e75 --- /dev/null +++ b/_posts/2022-04-03-Finish-Line.md @@ -0,0 +1,61 @@ +### Preparing for the Finish Line +Steve Jobs Founder of Apple Computer 2 minutes: [Thinker Doer](https://www.google.com/search?q=Steve+Jobs+Thinker+Doers&oq=Steve+Jobs+Thinker+Doers&aqs=chrome..69i57.16126j0j7&sourceid=chrome&ie=UTF-8#kpvalbx=_kTZKYoe0KoKckPIPlJWX-Aw20). What is your takeaway? + + +Something happened to me last Thursday. I was tagged as having said something inappropriate. This put me into a state of depression. I even spent big portions of Friday crying, praying, listening to talks and soul searching. As this process continued into the weekend I have learned that I can’t quit, linger in depression, or stay in self pity because of something that was said about me. No matter how much it hurts me inside: Pity, anger, injustice feelings won't make it go away. + + +I have learned this weekend that just because I have tried to be good and dedicate a second career to others, this in itself does not entitle me to be isolated from criticism and dislike. I am now willing to accept that internal pain and go forward with a renewed positive and spirited momentum. I am comfortable in values I represent, in what I have said or not said. I listened to a speaker who spoke about riding a bicycle, don't look back or at down to the peddles. These behaviors only lead to worse things happening. Instead, look at the road ahead and enjoy the ride. + + +Students please remember that I have my faults! These faults, perhaps, have contributed to a system that puts pressure on you as students. A pressure that makes my students feel a need to copy versus do their own work, or attempt to place fault in me as a Teacher, or even represent that this Teacher is a root of certain students faults and problems. I can see how you, as a student, might view me as a Teacher as an obstacle to get points and a grade. I want you to ask your forgiveness if you think I am that person. + + +---- + +David Karger, Works at Massachusetts Institute of Technology + + +How prevalent is cheating at MIT? Answer (1 of 25) + + +I teach 6.854 Advanced Algorithms every fall at MIT. This is a graduate class although about 1/2 the students are undergrads. The class assessments are based entirely on weekly homework and final project; there are no exams. Many of my problems are recycled from previous years because they are the most effective problems for teaching the material. As with most classes at MIT, collaboration is strongly encouraged (and, for most students, necessary to complete the work). I begin the first lecture with a discussion of what kind of collaboration is acceptable (working on solving the problems together) and what is not (copying anyone’s work, or any solutions you find online — you have to write up your own thoughts). I’ve also, in recent years, put an “ethics” problem on the first problem set, which lists various scenarios and asks which ones violate the collaboration policy and why. Students always get this question right. And, I say what I say in the previous paragraph. But it doesn’t help. + + +Just about every year, we discover (exactly) one cheating incident where a student finds solutions online and copies them. I suspect it’s the only one, because it’s honestly pretty easy to notice when the student solution is just like the one I wrote. In general, the student admits what they’ve done as soon as they’re confronted, expresses remorse, and explains that it’s just because they were under so much pressure and the course is really hard. + + +The students’ excuses, sadly, are true. I don’t condone this behavior, and we always send these students up before the office of student conduct. But I do understand this behavior: MIT is a place which prizes academic achievement above everything, and when you’re not achieving you feel tremendous pressure to do something about it. It’s a shame, because when you take away this pressure (I see this between semesters) the students turn into brilliant and enthusiastic people who just love learning for its own sake. I wish we could detach the learning that they all love from the assessment that they all hate, but nobody has solved that problem yet. + +---- + +I have similar policies to this MIT algorithm teacher. No test, collaboration, ... I am trying to find the master algorithm of motivation versus learning as well. + + +I want you to remember my policies… +1. 50% for attending class and doing. A ‘C’ grade for an entire trimester of doing nothing +2. A ‘B’ for any reasonable effort, that effort can be ON assignment or ON almost anything technical +3. An ‘A’ for consistently improving on assignments that are within my suggested task. Ss I have stated a positive slope. +4. An ‘A’ and recommendation for doing things beyond tasks or special service in classroom. I believe you will know when you have reached this level. +5. Then finally, a zero if you copy, cheat, bear false witness of your own work, or bear false witness in crossover of another’s work. IMO, picking this option has led to sorrow for many of us in recent weeks. + + +Though, these are just my policies. Nothing is final and I am willing to give time, help, or advice on how to overcome obstacles. In fact, it is part of a covenant I have made with God to live a life that honors my wife, family and others. In that, as a family, we believe in serving each and every student as individuals. My wife knows many of your stories and needs, as I consult with her often. Additionally, with Ms Naidu now on staff we often speak of how to improve our CompSci teaching and how to help those that feel challenges or overwhelmed. I have policies as mentioned, but I am not bound by these policies. This year, I am adapting policies for many. Particularly those that we have noticed or those that have advocated needs. + + +In my life, I have needed policy adaptations. In 2004, my 1st wife became terminally ill and died. At the time. I had a child in High School, Middle School, and Elementary. The company had policies for work, policies for time, and expectations for performance. I am grateful for the many friends and colleagues that did not bind me to a policy at that time. + + +I have many more faults…. I often say what I am thinking… I tend to tease…. I can get upset when I feel I am unfairly challenged or targeted …. I use colloquial expressions that certainly have passed there time… I have experienced depression creeps into my life when things go wrong…. To this depression fault on Thu and Fri last week I was in a bad place with regards to continuing with Teaching. It was many of the messages by you as students that helped me out of a dark spot. + + +However, even beyond your uplifting messages, I spent my weekend looking for guidance. I spent time at the Temple, and listened to 10 hours of talks to reform and improve myself. Through this process, I have realized this place, Del Norte HS, is a place that I can do good. Even if some do not like me, or are not willing to bear with the differences of my classroom style, and feel it is their right to discredit this situation. I have seen and feel that I am doing some good. I apologize to those who feel uncomfortable in my class or in my presence. I will do all I can to try to get administration and/or counseling to assist you with your burdens. I encourage you to seek help outside the classroom as you have troubles. Or, if I can gain your confidence, I will work with you on a deal that makes you reach your academic goals and strives minimizes your discomfort in your our clas situation. + + +I hope you can forgive me for my faults. From here, my message is one of HOPE. A HOPE that we can establish a positive and spirited momentum these last 7 weeks. A momentum that is rooted on helping each other, meaning a whole lot of COLLABORATION. A HOPE that we see this a a learning journey as opportunity to improve ourselves, improve each other, become thinkers and be doers, and understand in SO DOING that A's can be achieved. I believe in each of you and your potential for GREATNESS. Today and for the remainder of of this 7 week ride I HOPE to be looking forward, and I HOPE to see you out in front ENJOYING the ride. + + +Code Code Code + + + diff --git a/_posts/2022-04-11-Week-5-Study1.md b/_posts/2022-04-11-Week-5-Study1.md new file mode 100644 index 00000000..3b8980a1 --- /dev/null +++ b/_posts/2022-04-11-Week-5-Study1.md @@ -0,0 +1,24 @@ +### **2022 Tri 3 Week 5: 4/18 - 4/25**, AP Preparation Week 1. +There will be two weeks of AP Test Study or PBL Coding based off your goals. Some can use time to Ketchup, as long as it is in your plan. +#### Activities. +* AP Testers + * Check College Board for study material, procotored test will open up on the morning of the event. + * On Tue and Thu you will have a 4 hour window where MCQ or FRQ will be open. This is to provide simulation of timed testing. + * There are many little quizes and videos assigned for review. These are optional, but suggested. + * For points, GH individual pages and Review Ticket is required to account for your time, progress, and corrections. +* PBL Coders + * All teams have a project and should be establishing milestones in order to accomplish goals set by sponsor + * For Indi points, assigned ticket, scrum master review, and tangibles for individual + * For Team points, scrum master week plan and overview of key feature additions per sponsor requirements +#### Timeline +* **Mon Plan Week** + * AP Testers establish Individual Test plan ticket and record progress in individual GH Pages + * PBL Coders need to establish Individual Ticket and record Team progress in GH Pages +* **Tue** MCQ Testing for AP Testers or CCC +* **Wed** MCQ corrections or CCC + * Test corrections for Finals-Quiz1 for AP Testers or CCC + * Last 20 minutes review most missed questions in MCQ for AP Testers, OO sponsored +* **Thu** FRQ Testing or CCC +* **Fri** FRQ crossover review and corrections or CCC, Deliver Review ticket and GH Pages + * AP Testers will find fellow AP Tester and do Crossover Review and Grading + * PBL Coders will do Scrum Master reviews and grading diff --git a/_posts/2022-04-23-Week-6-Study2.md b/_posts/2022-04-23-Week-6-Study2.md new file mode 100644 index 00000000..81e58b31 --- /dev/null +++ b/_posts/2022-04-23-Week-6-Study2.md @@ -0,0 +1,52 @@ +# 2022 Tri 3 Week 6: 4/25 - 5/2, AP Preparation Week 2. + +### Practice Testing +This is the second of two weeks of AP Test Study. Everyone will be performing AP Classroom MCQs and FRQs, even PBL coders. Only exception is if I have observed actions in your PBL and provided you an exception. Such exception is merited on Technical Challenge beyond CB or College/Career development. + + +* Requirements for Testing + * No collaboration, no outside sources during classroom testing. + * MCQ testing. 50% score required on live session for points (1 or 0). MCQ scores will be complete on CB site by end of period. MCQ scores will be posted on GitHub Pages. AP Testers will provide corrections, PBL Testers only need scores unless the score is under 50%. + * FRQ testing. 50% score according on live session, evaluation is according to CB rules (1 or 0). FRQs will be performed on paper. FRQ papers will be turned in at the end of period (students need to take a photo). Testers will post pictures of Quiz on GitHub Pages, everyone will have a REPL link on Indi GH Pages prior to live grading on Monday. + + +### Grading Adjustments +Review ticket should be provided by owner-coder with check boxes and clear tangibles showing completion. I have not been seeing this, yet the crossover-grader is giving extremely high marks. For remainder of year, particularly as we move back to PBL project, owner-coder needs to provide clarity of tangibles in their review ticket. +* Adjustments + * Crossover grading. Collaboration and Peer review is a key part of Computer Science. Grading has been very casual lately. If tangible work is not shown in review ticket, work should be considered incomplete and .5/1 should be maximum score. In crossover grading session, grader has the option to suggest and update information with owner-coder during grading. In the end of grading session, if crossover-grader provides 1/1 on work without tangibles they will max out at 4.5/5 on their own work. + * Attendance. Absence, Sick, or Events. These last couple of weeks many have been missing class. I have asked, in the past, that you message me in Slack and discuss what you can do to make things up. In PBL, as well as Test Prep, attendance is very important. Also, if you don't participate in the events of class, like crossover-grading, you are missing out on an important learning experiences. + * Teacher review. From now on Teacher will reserve .5 after crossover evaluations. Maximum crossover score will be 4.5/5. Teacher will be looking at Tangbiles, Student completeness, and Grader evaluations for final .5. + + +### Here is Friday Acting/Skit/Improv (ASI) activity - Extra credit grading and donuts will be up for grabs. +Northeastern University requires all of its computer science majors to take improv class ... The Wall Street Journal says it "forces students to come out of their shells and exercise creative play" before they can get their diplomas. ... "We saw a lot of hysterics and crying," says Carla E. Brodley, dean of the computer science department.). + +* Rules... + 1. Pick a subject that is related to Tech, Algorithm, Teaching, Study, Classroom or N@tM experience. + 2. Must be done in one or two Scrum Teams, anyone who does not participate will receive a 1 point deduction from Seed + 3. Objective is to make Teacher(s) laugh, cry, or be amazed. Make sure there is some CS educational basis to ASI activity. + 4. Top ASI and/or ASI ideas may earn spots in N@tM finals, with additional REWARDS. + 5. Time 2 to 5 minutes + 6. Stage is center table, central areas, white board, projection system, pulpit. Video recording of event is a Plus, Plus + * ASI brain invigoration sample, an over the top example: https://www.youtube.com/watch?v=14La4BKNoqc + * CS education basis topics/parodies: Stand-up Meeting, Tech Talks, Test Prep Tue, Stacks, Queues, Sorts, Frontent/Backend, Sassy, POJO, POM.xml, Class, Extends, Overrides, Templates, public/static/void/main, Instance, Variables, 1D, 2D, Initializers, Setters/Getters, Objects, IF ELSE, Live Grading, Crossover Grading, N@tM presentations, Sponsor requirements meeting, GitHub, GitHub Pages, Deployment, Paper testing, IntelliJ, Replit, Deployment + + +### Study Week 2 Schedule +Current week + +* M - Intorduction to Week, Crossover Grading 20 minutes, Acting/Skit/Improv (ASI) Prep +* Tu - MCQ testing, everyone +* W - Improv Prep, Study or PBL +* Th - FRQ testing, everyone +* F - Acting/Skit/Improv Event + + +### Exam Week Schedule +Next week look ahead. Class will mostly be a study hall. As an exception, other classroom study will be acceptable. The big CS events for next week will be Monday (crossover grading) and Friday (feature review, update) + +* M May 2 - Crossover Grading 20 minutes +* Tu May 3 - Study Hall +* W May 4 - AP Exam +* Th May 5 - Study Hall +* F May 6 - PBL Final Project feature reviews 5 minutes, Live Grading 3 points diff --git a/_posts/2022-05-01-AP-Week1.md b/_posts/2022-05-01-AP-Week1.md new file mode 100644 index 00000000..9699da11 --- /dev/null +++ b/_posts/2022-05-01-AP-Week1.md @@ -0,0 +1,27 @@ +# 2022 Tri 3 Week 7: 5/2 - 5/6, AP Exams Week 1. +This is the first of the two weeks of AP Exams. Each of the two weeks, Teacher expects 3 days of CompSci classroom work. +### AP Exam +* Wednesday May 4 - CB AP CSA Exam + * MCQ - **40 questions in 90 minutes** + * FRQ - **4 questions in 90 Minutes** + * Methods and Control Structures + * Classes and Objects + * Arrays and ArrayLists + * 2D Arrays + + +### AP Exams Week 1 Schedule +The week will start as a study hall. As an exception, other classroom study will be acceptable. +* M May 2 - Study Hall +* Tu May 3 - Crossover Grading (see Grading Adjustments), Study Hall +* W May 4 - Study Hall, CB AP CSA Exam at 11:30 +* Th May 5 - PBL Live Requirements Prep +* F May 6 - PBL Live Requirements Presentations (see canvas) + + +### Grading Adjustments +Review ticket should be provided by owner-coder with check boxes and clear tangibles showing completion. I have not been seeing this, yet the crossover-grader is giving extremely high marks. For remainder of year, particularly as we move back to PBL project, owner-coder needs to provide clarity of tangibles in their review ticket. +* Adjustments + * Crossover grading. Collaboration and Peer review is a key part of Computer Science. Grading has been very casual lately. If tangible work is not shown in review ticket, work should be considered incomplete and .5/1 should be maximum score. In crossover grading session, grader has the option to suggest and update information with owner-coder during grading. In the end of grading session, if crossover-grader provides 1/1 on work without tangibles they will max out at 4.5/5 on their own work. + * Attendance. Absence, Sick, or Events. These last couple of weeks many have been missing class. I have asked, in the past, that you message me in Slack and discuss what you can do to make things up. In PBL, as well as Test Prep, attendance is very important. Also, if you don't participate in the events of class, like crossover-grading, you are missing out on an important learning experiences. + * Teacher review. From now on Teacher will reserve .5 after crossover evaluations. Maximum crossover score will be 4.5/5. Teacher will be looking at Tangbiles, Student completeness, and Grader evaluations for final .5. diff --git a/_posts/2022-05-01-AP-Week2.md b/_posts/2022-05-01-AP-Week2.md new file mode 100644 index 00000000..a8b1523e --- /dev/null +++ b/_posts/2022-05-01-AP-Week2.md @@ -0,0 +1,16 @@ +# 2022 Tri 3 Week 8: 5/9 - 5/13, AP Exams Week 2. +This is the second of the two weeks of AP Exams. Teacher expects 3 days of CompSci classroom work. +### Live Review scheduled with Teacher and Sponsor +* Thu or Fri scheduled meeting +* Schedule for last 13 days + +### Crossover Team +Establish peer grading team for final 3 assignments. + +### AP Exams Week 2 Schedule +Class will start as a study hall. As an exception, Study Hall allows for other classroom work. +* M May 9 - Study Hall, PBL Coding +* Tu May 10 - Study Hall, PBL Coding +* W May 11 - PBL Coding +* Th May 12 - Tech Talk, Live Review Mtgs, and PBL Coding +* F May 13 - Live Review Mtgs and PBL Coding diff --git a/_posts/2022-05-16-Final-Project1.md b/_posts/2022-05-16-Final-Project1.md new file mode 100644 index 00000000..fff67b3b --- /dev/null +++ b/_posts/2022-05-16-Final-Project1.md @@ -0,0 +1,41 @@ +# 2022 Tri 3 Week 9: 5/16 - 5/20, Final Project Development Week 1. +This is the first of the two weeks dedicated to Project Development. Teacher expects 5 days of CompSci classroom work. +### Live Review scheduled with Teacher and Sponsor +* Thu is scheduled Teacher meeting +* Review Ticket required + +### Final Project Development Week 1 Schedule +* M May 16 - Expectations Speech, PBL Code Code Code +* Tu May 17 - Tech Talk, PBL Code Code Code +* W May 18 - Sponsor review, PBL Code Code Code +* Th May 19 - Teacher review, PBL Code Code Code +* F May 20 - PBL Code Code Code + +### Expectations + +#### Individual Expectation - Weekly (Wednesday at BOD, 8:00am) +* Minimum of 5 hours of Code, Code, Code; 4 hours can easily be performed in class +* A personally developed Review Ticket with Tangibles +* Tangibles that easily help individuals visualize work in project, honest contributions! +* In ticket, review comments with Scrum Team crossover and Scrum Master + * Score of 2 points, 1.8 maximum + * Meeting 5 hours with commit evidence, minimum for .9 + * Meeting team and sponsor objectives + +#### Team Expectations - Weekly (Wednesday at EOD, 6:00pm) +* Mortensen AWS is a must for weekly reviews +* Minimum of 3 Scrum Team Review Tickets + * Checkpoint with Individual progress and meeting Individual Expectations + * Checkpoint with Scrum Master and meeting Master plan +* Runtime of Project updated and online +* Create Live Review Ticket with Master Plan updates + * Score of 1 point, .9 maximum + * Meeting sponsor objectives + * Total score for each individual + +#### Teacher Review - Weekly (Thursday in class) +* Comments on Live Review Ticket + * Master Plan review + * Runtime review + * Individual scrum ticket review +* Weekly Assesment on individual/team grades (-, agree, +) diff --git a/_posts/2022-05-22-Final-Project2.md b/_posts/2022-05-22-Final-Project2.md new file mode 100644 index 00000000..69b4fb3e --- /dev/null +++ b/_posts/2022-05-22-Final-Project2.md @@ -0,0 +1,9 @@ +# 2022 Tri 3 Week 10: 5/23 - 5/27, Final Project Development Week 2. +This is the second of the two weeks dedicated to Project Development. Teacher has provided Security, Notes, and Uploads as options to enhance your project. I am particularly concerned about the lack of balance and meaninful contribution by all members within the team. Technical advancement, challenge, and project participation is the only way to get an "A" on this assignment. "A" and "B" grade will be dependent on how the points play out with regards to your effort and self-challenge on this project. Don't show up with pretty pictures and nothing regarding Data or Data Strucutres (group work will not carry those who don't participate). 7 classroom days remain. + +### Final Project Development Week 2 Schedule +* M May 23 - Review Canvas, PBL Code Code Code +* Tu May 24 - Tech Talk, PBL Code Code Code +* W May 25 - Sponsor review, PBL Code Code Code +* Th May 26 - Teacher review, PBL Code Code Code +* F May 27 - PBL Code Code Code diff --git a/_posts/2022-05-30-Final.md b/_posts/2022-05-30-Final.md new file mode 100644 index 00000000..6a1ed2ed --- /dev/null +++ b/_posts/2022-05-30-Final.md @@ -0,0 +1,29 @@ +# 2022 Tri 3 Week 11: 5/31 - 6/03, N@tM, PBL Finals - Sponsor Project Due +This is the Finals week for the sponsor project and presentation at the N@tM. Tune your project, get deployed, and finish your commercial video. The finish line is Wednesday night. + + +### N@tM 0n Wednesday, June 1st from 6:00 - 7:30PM , 2.5/5 of seed come from attenadance at the N@tM +### 1 minute commercial video on Sponsor Project (advertise your accomplishments). Due Wed 6/1 at 6:00PM + + +### Review with Teacher and Sponsor +* Invite your sponsor to the N@tM and present project to them +* Thu/Fri - Teacher reviews for seniors +* Review Ticket for indi/team required + + +### Schecule for presentation at N@tM +P4 Mort 6:00pm A101 +P4 Naidu 6:00pm A151 +P2 Mort 6:30pm A151 +P3 Mort 6:30pm A101 +P1 Mort 7:00pm A151 +P5 Naidu 7:00pm A101 + + +### Final Sponsor Project Week Schedule +* Tu May 31 - Teacher's Message, Notes, Uploads, PBL Code Code Code +* W Jun 1 - 1 min video due, PBL Final CCC, deploy, present on the deployed website at the N@tM +* Th Jun 2 - Teacher review/final grading for seniors +* F Jun 3 - Teacher review/final grading for seniors + diff --git a/_posts/2022-06-05-Modulo.md b/_posts/2022-06-05-Modulo.md new file mode 100644 index 00000000..88bed4cc --- /dev/null +++ b/_posts/2022-06-05-Modulo.md @@ -0,0 +1,16 @@ +# 2022 Tri 3 Week 12: 6/6 - 6/9, Modulo Week - Sponsor Project Checkouts for 10th and 11th grades +Classes are smaller, but we will need to finish strong. Week starts with "checkout" and finishes with "play day". + + +### Summary +* Mon/Tue - Project Checkout +* Finals + + +### Finals Week Schedule +* M June 6 - Project Checkout all teams 3 minutes, start individual 1 minute +* T Jun 7 - Project Checkout finish individual 1 minute +* W Period 1 - 8:40 - 10:40 Breakfast Potluck, Blacktop Basketball, Video Games +* W Period 2 - 11:15 - 1:15 Blacktop Basketball, Video Games + +6/8 Wednesday 1:15pm CompSci Pizza party A101 diff --git a/about.md b/about.md new file mode 100644 index 00000000..a5920b6a --- /dev/null +++ b/about.md @@ -0,0 +1,23 @@ +# GitHub Activity + + + + + + + + + + + + + + +
NameProfileIssuesCommits
John MortensenProfileIssuesCommits
+ +# About Nighthawk Coding Society +WebSite [ {{ site.webserver }} ]({{ site.webserver }}) + +Email [ {{ site.email }} ](mailto:{{ site.email }}) + +Twitter [ {{ site.twitter }} ]({{ site.twitter }}) diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 00000000..3adae2da --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,17 @@ +version: '3' +services: + web: + image: java_csav2 + build: . + ports: + - "8081:8078" + volumes: + - persistent_volume:/app/volumes + restart: unless-stopped +volumes: + persistent_volume: + driver: local + driver_opts: + o: bind + type: none + device: /home/ubuntu/nighthawk_csa/volumes diff --git a/images/MonaLisa.png b/images/MonaLisa.png new file mode 100644 index 00000000..1ddad73a Binary files /dev/null and b/images/MonaLisa.png differ diff --git a/images/pumpkin.png b/images/pumpkin.png new file mode 100644 index 00000000..d784e034 Binary files /dev/null and b/images/pumpkin.png differ diff --git a/index.md b/index.md new file mode 100644 index 00000000..995a7ffd --- /dev/null +++ b/index.md @@ -0,0 +1,5 @@ +--- +layout: default +--- + +{% include_relative README.md %} diff --git a/mvnw b/mvnw index a16b5431..3ec8fd10 100755 --- a/mvnw +++ b/mvnw @@ -201,7 +201,7 @@ fi ########################################################################################## # Extension to allow automatically downloading the maven-wrapper.jar from Maven-central -# This allows using the maven wrapper in projects that prohibit checking in binary data. +# This allows using the maven wrapper in projects that prohibit checking in binary database. ########################################################################################## if [ -r "$BASE_DIR/.mvn/wrapper/maven-wrapper.jar" ]; then if [ "$MVNW_VERBOSE" = true ]; then diff --git a/notebooks.md b/notebooks.md new file mode 100644 index 00000000..1f6b6f46 --- /dev/null +++ b/notebooks.md @@ -0,0 +1,8 @@ + diff --git a/pom.xml b/pom.xml index e0d14a9f..8861a66d 100644 --- a/pom.xml +++ b/pom.xml @@ -14,13 +14,14 @@ csa CSA project for Spring Boot - 11 + 17 3.0.12.RELEASE 3.0.2.RELEASE 2.3.0 3.0.1.RELEASE + @@ -60,7 +61,7 @@ org.thymeleaf - thymeleaf-spring4 + thymeleaf-spring5 ${org.thymeleaf-version} @@ -95,6 +96,7 @@ org.projectlombok lombok + 1.18.22 org.springframework.boot @@ -125,6 +127,45 @@ h2 runtime + + com.googlecode.json-simple + json-simple + 1.1.1 + + + org.springframework.security + spring-security-crypto + 5.6.3 + + + org.springframework.security + spring-security-config + 5.6.3 + + + com.auth0 + java-jwt + 3.18.1 + + + org.springframework.security + spring-security-web + 5.6.3 + + + org.thymeleaf.extras + thymeleaf-extras-springsecurity5 + + + org.commonmark + commonmark + 0.17.2 + + + commons-fileupload + commons-fileupload + 1.4 + diff --git a/posts.md b/posts.md new file mode 100644 index 00000000..44364010 --- /dev/null +++ b/posts.md @@ -0,0 +1,8 @@ + diff --git a/sqlite.db b/sqlite.db deleted file mode 100644 index 3beb2ccb..00000000 Binary files a/sqlite.db and /dev/null differ diff --git a/src/main/java/com/nighthawk/csa/FamilySqlMvcController.java b/src/main/java/com/nighthawk/csa/FamilySqlMvcController.java deleted file mode 100644 index 1971c3d1..00000000 --- a/src/main/java/com/nighthawk/csa/FamilySqlMvcController.java +++ /dev/null @@ -1,71 +0,0 @@ -package com.nighthawk.csa; - -import com.nighthawk.csa.model.SQL.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.PostMapping; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; -import org.springframework.web.servlet.mvc.support.RedirectAttributes; - -import javax.validation.Valid; - -// Built using video: https://www.youtube.com/watch?v=ctwRpskAeIU -@Controller -public class FamilySqlMvcController implements WebMvcConfigurer { - - @Autowired - private FamilySqlRepository familySqlRepository; - - @Autowired - private PersonSqlRepository personSqlRepository; - - @GetMapping("/sql/family") - public String family(Model model) { - model.addAttribute("list", familySqlRepository.listAll()); - return "sql/family"; - } - - /* The HTML template Forms and Model attributes are bound - @return - Template for form - @param - Class for form - */ - @GetMapping("/sql/familycreate") - public String familyCreate(Model model) { - model.addAttribute("family", new Family()); - model.addAttribute("listPersons", personSqlRepository.listAll()); - return "sql/familyform"; - } - - @GetMapping("/sql/familyupdate/{id}") - public String familyUpdate(@PathVariable("id") int id, Model model) { - model.addAttribute("edit_id", id); //passed to support using one form - model.addAttribute("family", familySqlRepository.get(id)); - model.addAttribute("listPersons", personSqlRepository.listAll()); - return "sql/familyform"; - } - - /* Gathers the attributes filled out in the form, tests for and retrieves validation error - @param - object with @Valid - @param - BindingResult object - */ - @PostMapping("/sql/familysave") - public String saveData(@Valid Family family, BindingResult bindingResult, RedirectAttributes redirectAttributes) { - // Validation of Family attributes, validation of nested object supported - if (bindingResult.hasErrors()) { - return "sql/familyform"; - } - // Redirect to next step - familySqlRepository.save(family); - return "redirect:/sql/family"; - } - - @GetMapping("/sql/familydelete/{id}") - public String familyDelete(@PathVariable("id") long id) { - familySqlRepository.delete(id); - return "redirect:/sql/family"; - } -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/Main.java b/src/main/java/com/nighthawk/csa/Main.java index 76163bee..b2b618cc 100644 --- a/src/main/java/com/nighthawk/csa/Main.java +++ b/src/main/java/com/nighthawk/csa/Main.java @@ -2,6 +2,8 @@ import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; +import org.springframework.context.annotation.Bean; +import org.springframework.web.multipart.support.StandardServletMultipartResolver; @SpringBootApplication public class Main { @@ -9,4 +11,8 @@ public static void main(String[] args) { SpringApplication.run(Main.class, args); } + @Bean + public StandardServletMultipartResolver multipartResolver() { + return new StandardServletMultipartResolver(); + } } diff --git a/src/main/java/com/nighthawk/csa/MainController.java b/src/main/java/com/nighthawk/csa/MainController.java deleted file mode 100644 index 40577f87..00000000 --- a/src/main/java/com/nighthawk/csa/MainController.java +++ /dev/null @@ -1,119 +0,0 @@ -package com.nighthawk.csa; - -import com.fasterxml.jackson.databind.ObjectMapper; -import com.nighthawk.csa.model.starters.ImageInfo; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.web.bind.annotation.GetMapping; -import org.springframework.web.bind.annotation.RequestParam; - -import java.io.IOException; -import java.net.URI; -import java.net.http.HttpClient; -import java.net.http.HttpRequest; -import java.net.http.HttpResponse; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -@Controller // HTTP requests are handled as a controller, using the @Controller annotation -public class MainController { - - @GetMapping("/greet") // CONTROLLER handles GET request for /greeting, maps it to greeting() and does variable bindings - public String greeting(@RequestParam(name="name", required=false, defaultValue="World") String name, Model model) { - // @RequestParam handles required and default values, name and model are class variables, model looking like JSON - model.addAttribute("name", name); // MODEL is passed to html - return "starters/greet"; // returns HTML VIEW (greeting) - } - - @GetMapping("/image") - public String image(Model model) { - //String web_server = "http://localhost:8080/"; - String web_server = "https://csa.nighthawkcodingsociety.com"; - List lii = new ArrayList<>(); - - String file0 = "/images/Mona_Lisa.png"; - lii.add(new ImageInfo(file0, web_server+file0, 12)); - lii.get(0).read_image(); - - String file1 = "/images/bulb_on.gif"; - lii.add(new ImageInfo(file1, web_server+file1, 2)); - lii.get(1).read_image(); - - String file2 = "/images/bulb_off.png"; - lii.add(new ImageInfo(file2, web_server+file2, 7)); - lii.get(2).read_image(); - - model.addAttribute("lii", lii); - return "starters/image"; - } - - @GetMapping("/image/grayscale") - public String image_grayscale(Model model) { - //String web_server = "http://localhost:8080/"; - String web_server = "https://csa.nighthawkcodingsociety.com"; - List lii = new ArrayList<>(); - - String file0 = "/images/Mona_Lisa.png"; - lii.add(new ImageInfo(file0, web_server+file0, 12)); - String str = lii.get(0).grayscale(); -// String str = lii.get(0).grayscale(); - model.addAttribute("str", str); - return "starters/image_grayscale"; - } - - - @GetMapping("/binary") // CONTROLLER handles GET request for /greeting, maps it to greeting() and does variable bindings - public String binary() { - return "starters/binary"; - } - - // GET request, no parameters - @GetMapping("/covid19") - public String covid19(Model model) throws IOException, InterruptedException { - //rapidapi setup - HttpRequest request = HttpRequest.newBuilder() - .uri(URI.create("https://corona-virus-world-and-india-data.p.rapidapi.com/api")) - .header("x-rapidapi-key", "dec069b877msh0d9d0827664078cp1a18fajsn2afac35ae063") - .header("x-rapidapi-host", "corona-virus-world-and-india-data.p.rapidapi.com") - .method("GET", HttpRequest.BodyPublishers.noBody()) - .build(); - //rapidapi call - HttpResponse response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); - //convert to java hash map - var map = new ObjectMapper().readValue(response.body(), HashMap.class); - //pass country stats to view - model.addAttribute("data", map); - model.addAttribute("world", map.get("world_total")); - model.addAttribute("countries", map.get("countries_stat")); - return "starters/covid19"; - } - - @GetMapping("/snake") // GET request - public String snake() { - return "starters/snake"; - } - - @GetMapping("/course/repos") - public String courseRepos(Model model) { - return "course/repos"; - } - - @GetMapping("/course/deploy") - public String courseDeploy(Model model) { - return "course/deploy"; - } - - @GetMapping("/course/prep") - public String coursePrep(Model model) { - model.addAttribute("url", "https://padlet.com/jmortensen7/csatime"); - return "course/timelines"; - } - - @GetMapping("/course/tri1") - public String courseTri1(Model model) { - model.addAttribute("url", "https://padlet.com/jmortensen7/csa2022tri1"); - return "course/timelines"; - } - -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/MainWebAppInitializer.java b/src/main/java/com/nighthawk/csa/MainWebAppInitializer.java new file mode 100644 index 00000000..0b015786 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/MainWebAppInitializer.java @@ -0,0 +1,29 @@ +package com.nighthawk.csa; + +import org.springframework.web.WebApplicationInitializer; +import org.springframework.web.context.support.GenericWebApplicationContext; +import org.springframework.web.servlet.DispatcherServlet; + +import javax.servlet.MultipartConfigElement; +import javax.servlet.ServletContext; +import javax.servlet.ServletException; +import javax.servlet.ServletRegistration; + +public class MainWebAppInitializer implements WebApplicationInitializer { + + @Override + public void onStartup(ServletContext sc) throws ServletException { + + ServletRegistration.Dynamic appServlet = sc.addServlet("mvc", new DispatcherServlet( + new GenericWebApplicationContext())); + + appServlet.setLoadOnStartup(1); + + int MAX_UPLOAD_SIZE = 5 * 1024 * 1024; // limits image size to 5GB + String TMP_FOLDER = "uploads"; // not used, as it is not understood + MultipartConfigElement multipartConfigElement = new MultipartConfigElement(TMP_FOLDER, + MAX_UPLOAD_SIZE, MAX_UPLOAD_SIZE * 2L, MAX_UPLOAD_SIZE / 2); + + appServlet.setMultipartConfig(multipartConfigElement); + } +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/PersonSqlMvcController.java b/src/main/java/com/nighthawk/csa/PersonSqlMvcController.java deleted file mode 100644 index 8bd710d8..00000000 --- a/src/main/java/com/nighthawk/csa/PersonSqlMvcController.java +++ /dev/null @@ -1,132 +0,0 @@ -package com.nighthawk.csa; - - -import com.nighthawk.csa.model.SQL.*; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.http.HttpStatus; -import org.springframework.http.ResponseEntity; -import org.springframework.stereotype.Controller; -import org.springframework.ui.Model; -import org.springframework.validation.BindingResult; -import org.springframework.web.bind.annotation.*; -import org.springframework.web.servlet.config.annotation.WebMvcConfigurer; - -import javax.validation.Valid; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -// Built using article: https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html -// or similar: https://asbnotebook.com/2020/04/11/spring-boot-thymeleaf-form-validation-example/ -@Controller -public class PersonSqlMvcController implements WebMvcConfigurer { - - // Autowired enables Control to connect HTML and POJO Object to Database easily for CRUD - @Autowired - private PersonSqlRepository repository; - - @GetMapping("/sql/person") - public String person(Model model) { - List list = repository.listAll(); - model.addAttribute("list", list); - return "sql/person"; - } - - /* The HTML template Forms and PersonForm attributes are bound - @return - template for person form - @param - Person Class - */ - @GetMapping("/sql/personcreate") - public String personAdd(Person person) { - return "sql/personcreate"; - } - - /* Gathers the attributes filled out in the form, tests for and retrieves validation error - @param - Person object with @Valid - @param - BindingResult object - */ - @PostMapping("/sql/personcreate") - public String personSave(@Valid Person person, BindingResult bindingResult) { - // Validation of Decorated PersonForm attributes - if (bindingResult.hasErrors()) { - return "sql/personcreate"; - } - repository.save(person); - // Redirect to next step - return "redirect:/sql/person"; - } - - @GetMapping("/sql/personupdate/{id}") - public String personUpdate(@PathVariable("id") int id, Model model) { - model.addAttribute("person", repository.get(id)); - return "sql/personupdate"; - } - - @PostMapping("/sql/personupdate") - public String personUpdateSave(@Valid Person person, BindingResult bindingResult) { - // Validation of Decorated PersonForm attributes - if (bindingResult.hasErrors()) { - return "sql/personupdate"; - } - repository.save(person); - // Redirect to next step - return "redirect:/sql/person"; - } - - @GetMapping("/sql/persondelete/{id}") - public String personDelete(@PathVariable("id") long id) { - repository.delete(id); - return "redirect:/sql/person"; - } - - /* - #### RESTful API section #### - Resource: https://spring.io/guides/gs/rest-service/ - */ - - /* - GET List of People - */ - @RequestMapping(value = "/sql/people/get") - public ResponseEntity> getPeople() { - return new ResponseEntity<>( repository.listAll(), HttpStatus.OK); - } - - /* - GET individual Person using ID - */ - @RequestMapping(value = "/sql/person/get/{id}") - public ResponseEntity getPerson(@PathVariable long id) { - return new ResponseEntity<>( repository.get(id), HttpStatus.OK); - } - - /* - DELETE individual Person using ID - */ - @RequestMapping(value = "/sql/person/delete/{id}", method = RequestMethod.DELETE) - public ResponseEntity deletePerson(@PathVariable long id) { - repository.delete(id); - return new ResponseEntity<>( ""+ id +" deleted", HttpStatus.OK); - } - - - /* - POST Aa record by Requesting Parameters from URI - */ - @RequestMapping(value = "/sql/person/post", method = RequestMethod.POST) - public ResponseEntity postPerson(@RequestParam("email") String email, - @RequestParam("name") String name, - @RequestParam("dob") String dobString) { - Date dob; - try { - dob = new SimpleDateFormat("MM-dd-yyyy").parse(dobString); - } catch (Exception e) { - return new ResponseEntity<>(dobString +" error; try MM-dd-yyyy", HttpStatus.BAD_REQUEST); - } - // A person object WITHOUT ID will create a new record - Person person = new Person(email, name, dob); - repository.save(person); - return new ResponseEntity<>(email +" is created successfully", HttpStatus.CREATED); - } - -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/model/SQL/SQLDialect.java b/src/main/java/com/nighthawk/csa/SQLDialect.java similarity index 99% rename from src/main/java/com/nighthawk/csa/model/SQL/SQLDialect.java rename to src/main/java/com/nighthawk/csa/SQLDialect.java index 7b4aada3..7c3358bf 100644 --- a/src/main/java/com/nighthawk/csa/model/SQL/SQLDialect.java +++ b/src/main/java/com/nighthawk/csa/SQLDialect.java @@ -1,4 +1,4 @@ -package com.nighthawk.csa.model.SQL; +package com.nighthawk.csa; import org.hibernate.dialect.Dialect; import org.hibernate.dialect.function.SQLFunctionTemplate; diff --git a/src/main/java/com/nighthawk/csa/algorithm/DataOps.md b/src/main/java/com/nighthawk/csa/algorithm/DataOps.md deleted file mode 100644 index 6c4ef092..00000000 --- a/src/main/java/com/nighthawk/csa/algorithm/DataOps.md +++ /dev/null @@ -1,36 +0,0 @@ -# Data Ops with Spring/Java - -### Overview -This lab and future labs can/should be strung together. - -1. Pull code and Demo. -2. Key elements (Data, Controller, Data Structure, Sort) - -- Activity, reverse order of sort -- -3. Object, toString, changing Key (static) - -- Add data to a Class -- -4. Look at Checkboxes and Radio Buttons. - -- Activity, add sound to animal sort key (can you get it to work?) -- - -### Key Topics -* @Controller (My code) -* Static Variables -* Enums -### Other Topics -* Inheritance -* Abstract Class (My code) - -### Mini-lab Ideas -1. Build section into your Scrum Team project or individual section for execution. -2. Build abstract Class and have multiple derivative classes (extend) with Override on method(s). -3. Have default data that loads and displays on Web page -4. Interact with data on Web to Filter result using Check Box and Radio Controls -5. Prepare or think ahead to Sort lab. - -### Mini-lab binary point criteria -* Make your own Data/Class and initialize it. See how far you can go to get things to work. Make adaptations as you see fit. -* Use of toString() -* Use of a Data Structure to hold Objects of your Class or Abstract class. -* Web UI and visuals to interact with data -* Check Boxes -* Radio Buttons -* Console testers of component parts of system. diff --git a/src/main/java/com/nighthawk/csa/algorithm/FunMath.java b/src/main/java/com/nighthawk/csa/algorithm/FunMath.java deleted file mode 100644 index 44cd5a09..00000000 --- a/src/main/java/com/nighthawk/csa/algorithm/FunMath.java +++ /dev/null @@ -1,54 +0,0 @@ -package com.nighthawk.csa.algorithm; - -import java.util.ArrayList; -import java.util.List; - -public class FunMath { - - /* Convert num into a list of digits of the specified base - num: an integer - base: binary, octal, decimal, hexadecimal - @return: a list containing the series of digits of specified base - */ - static List baseConvert(int num, int base) { - List num_list = new ArrayList(); // what is List versus ArrayList? Which one is Abstract? - do { - num_list.add(0, num % base); // what does this do? explain boxing and unboxing - num /= base; // what does this do? - } while (num > 0); // why did I put this on the end - - return num_list; - } - - /* Recursion algorithm that does the summation of series of integers up to n - num: an integer - @return: - */ - static int sumUp(int n) { - return n == 0 ? 0 : n + sumUp(n - 1); // what is this called? hint TO. - } - - public static void main(String[] args) { - // Summation of a series starts a 1 and goes to 6 - System.out.println(sumUp(6)); - - // Base 2 - System.out.println(baseConvert(0,2)); - System.out.println(baseConvert(255,2)); - System.out.println(baseConvert(256,2)); - // Base 8 - System.out.println(baseConvert(0,28)); - System.out.println(baseConvert(255,8)); - System.out.println(baseConvert(256,8)); - // Base 10 - System.out.println(baseConvert(0,10)); - System.out.println(baseConvert(255,10)); - System.out.println(baseConvert(256,10)); - // Base 16 - System.out.println(baseConvert(0,16)); - System.out.println(baseConvert(255,16)); - System.out.println(baseConvert(256,16)); - - } -} - diff --git a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Alphabet.java b/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Alphabet.java deleted file mode 100644 index d023f51f..00000000 --- a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Alphabet.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.nighthawk.csa.algorithm.genericDataModel; -import com.nighthawk.csa.consoleUI.ConsoleMethods; - -public class Alphabet extends Generics { - public enum KeyType {title, letter} - public static KeyType key = KeyType.title; - private static final int size = 26; - private final char letter; - - /* - * single letter object - */ - public Alphabet(char l) - { - this.setType("Alphabet"); - this.letter = l; - } - - /* - * toString provides output based off of key setting - */ - @Override - public String toString() - { - - String output=""; - switch(key) { - case letter: - output += this.letter; - break; - case title: - default: - output += super.getType() + ": " + this.letter; - } - return output; - } - - /* - * upper case alphabet array - */ - public static Generics[] alphabetData() - { - Generics[] alphabet = new Alphabet[Alphabet.size]; - for (int i = 0; i < Alphabet.size; i++) - { - alphabet[i] = new Alphabet( (char)('A' + i) ); - } - return alphabet; - } - - /* - * main to test Animal class - */ - public static void main(String[] args) - { - Generics[] alphaData = alphabetData(); - for(Generics a : alphaData) - ConsoleMethods.println("" + a); - } - -} - - - \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Animal.java b/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Animal.java deleted file mode 100644 index 7398734f..00000000 --- a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Animal.java +++ /dev/null @@ -1,76 +0,0 @@ -package com.nighthawk.csa.algorithm.genericDataModel; -import com.nighthawk.csa.consoleUI.ConsoleMethods; - -/* - * Animal class extends Generics and defines abstract methods - */ -public class Animal extends Generics { - public enum KeyType {title, name, age, color} //Used with radio button selection - public static KeyType key = KeyType.title; //Static variable: a key that applies to all Objects - private final String name; - private final int age; - private final String color; - - - /* constructor - * - */ - public Animal(String name, int age, String color) - { - super.setType("Animal"); - this.name = name; - this.age = age; - this.color = color; - } - - /* Generics requires toString override - * toString provides conditional output based off of key - */ - @Override - public String toString() - { - String output=""; - switch(key) { - case name: - output += this.name; - break; - case age: - output += "00" + this.age; - output = output.substring(output.length()-2); - break; - case color: - output += this.color; - break; - case title: - default: - output += super.getType() + ": " + this.name + ", " + this.color + ", " + this.age; - } - return output; - - } - - /* Initialize Animal data - * - */ - public static Generics[] animalData() { - return new Generics[]{ - new Animal("Lion", 8, "Gold"), - new Animal("Pig", 3, "Pink"), - new Animal("Robin", 7, "Red"), - new Animal("Cat", 10, "Black"), - new Animal("Kitty", 1, "Calico"), - new Animal("Dog", 14, "Brown") - }; - } - - /* main to test Animal class - * - */ - public static void main(String[] args) - { - Generics[] animData = animalData(); //shows abstract class usage - for(Generics a : animData) - ConsoleMethods.println("" + a); //shows polymorphic behavior - } - -} diff --git a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Cupcakes.java b/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Cupcakes.java deleted file mode 100644 index 304945b6..00000000 --- a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Cupcakes.java +++ /dev/null @@ -1,64 +0,0 @@ -package com.nighthawk.csa.algorithm.genericDataModel; -import com.nighthawk.csa.consoleUI.ConsoleMethods; - -public class Cupcakes extends Generics { - public enum KeyType {title, flavor, frosting, sprinkles} - public static KeyType key = KeyType.title; - private final String frosting; - private final int sprinkles; - private final String flavor; - - Cupcakes(String frosting, int sprinkles, String flavor) - { - this.setType("Cupcakes"); - this.frosting = frosting; - this.sprinkles = sprinkles; - this.flavor = flavor; - } - - /* - * toString provides output based off of this.key setting - */ - @Override - public String toString() { - String output=""; - switch(key) { - case flavor: - output += this.flavor; - break; - case frosting: - output += this.frosting; - break; - case sprinkles: - output += "00" + this.sprinkles; - output = output.substring(output.length()-2); - break; - case title: - default: - output = super.getType() + ": " + this.flavor + ", " + this.frosting + ", " + this.sprinkles; - } - return output; - } - - public static Generics[] cupCakeData() { - return new Generics[]{ - new Cupcakes("Red", 4, "Red Velvet"), - new Cupcakes("Orange", 5, "Orange"), - new Cupcakes("Yellow", 6, "Lemon"), - new Cupcakes("Green", 7, "Apple"), - new Cupcakes("Blue", 8, "Blueberry"), - new Cupcakes("Purple", 9, "Blackberry"), - new Cupcakes("Pink", 10, "Strawberry"), - new Cupcakes("Tan", 11, "Vanilla"), - new Cupcakes("Brown", 12, "Chocolate"), - }; - } - - public static void main(String[] args) - { - Generics[] cupCake = cupCakeData(); - for(Generics c: cupCake) - ConsoleMethods.println(c); - } - -} diff --git a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Generics.java b/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Generics.java deleted file mode 100644 index c6251fd3..00000000 --- a/src/main/java/com/nighthawk/csa/algorithm/genericDataModel/Generics.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.nighthawk.csa.algorithm.genericDataModel; - -import lombok.Getter; -import lombok.Setter; - -/* This is wrapper class... - Objective would be to push more functionality into this Class to drive HTML definition - */ -@Getter -@Setter -public abstract class Generics { - public final String masterType = "Generic"; - private String type; - - // force toString - public abstract String toString(); -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/course/CourseController.java b/src/main/java/com/nighthawk/csa/course/CourseController.java new file mode 100644 index 00000000..9373be40 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/course/CourseController.java @@ -0,0 +1,38 @@ +package com.nighthawk.csa.course; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller // HTTP requests are handled as a controller, using the @Controller annotation +public class CourseController { + + @GetMapping("/course/repos") + public String courseRepos(Model model) { + return "course/repos"; + } + + @GetMapping("/course/deploy") + public String courseDeploy(Model model) { + return "course/deploy"; + } + + @GetMapping("/course/prep") + public String coursePrep(Model model) { + model.addAttribute("url", "https://padlet.com/jmortensen7/csatime"); + return "course/timelines"; + } + + @GetMapping("/course/tri1") + public String courseTri1(Model model) { + model.addAttribute("url", "https://padlet.com/jmortensen7/csa2022tri1"); + return "course/timelines"; + } + + @GetMapping("/course/tri2") + public String courseTri2(Model model) { + model.addAttribute("url", "https://padlet.com/jmortensen7/csa2022tri2"); + return "course/timelines"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/frontend/FrontEndController.java b/src/main/java/com/nighthawk/csa/frontend/FrontEndController.java new file mode 100644 index 00000000..898671a9 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/frontend/FrontEndController.java @@ -0,0 +1,29 @@ +package com.nighthawk.csa.frontend; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller // HTTP requests are handled as a controller, using the @Controller annotation +public class FrontEndController { + + @GetMapping("/frontend/binary") // CONTROLLER handles GET request for /greeting, maps it to greeting() and does variable bindings + public String binary() { + return "frontend/binary"; + } + + @GetMapping("/frontend/draw") // GET request + public String draw() { + return "frontend/draw"; + } + + @GetMapping("/frontend/snake") // GET request + public String snake() { + return "frontend/snake"; + } + + @GetMapping("/frontend/life") // GET request + public String life() { + return "frontend/life"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/hacks/Calculator.java b/src/main/java/com/nighthawk/csa/hacks/Calculator.java new file mode 100644 index 00000000..79a335c5 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/hacks/Calculator.java @@ -0,0 +1,267 @@ +package com.nighthawk.csa.hacks; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Map; + +import com.nighthawk.csa.utility.LinkedLists.Stack; + +/* In mathematics, + an expression or mathematical expression is a finite combination of symbols that is well-formed + according to rules that depend on the context. + + In computers, + expression can be hard to calculate with precedence rules and user input errors + to handle computer math we often convert strings into reverse polish notation + to handle errors we perform try / catch or set default conditions to trap errors + */ +public class Calculator { + // Key instance variables + private final String expression; + private ArrayList tokens; + private ArrayList reverse_polish; + private Double result = 0.0; + + // Helper definition for supported operators + private final Map OPERATORS = new HashMap<>(); + { + // Map<"token", precedence> + OPERATORS.put("*", 3); + OPERATORS.put("/", 3); + OPERATORS.put("%", 3); + OPERATORS.put("+", 4); + OPERATORS.put("-", 4); + } + + // Helper definition for supported operators + private final Map SEPARATORS = new HashMap<>(); + { + // Map<"separator", not_used> + SEPARATORS.put(" ", 0); + SEPARATORS.put("(", 0); + SEPARATORS.put(")", 0); + } + + // Create a 1 argument constructor expecting a mathematical expression + public Calculator(String expression) { + // original input + this.expression = expression; + + // parse expression into terms + this.termTokenizer(); + + // place terms into reverse polish notation + this.tokensToReversePolishNotation(); + + // calculate reverse polish notation + this.rpnToResult(); + } + + // Test if token is an operator + private boolean isOperator(String token) { + // find the token in the hash map + return OPERATORS.containsKey(token); + } + + // Test if token is an seperator + private boolean isSeperator(String token) { + // find the token in the hash map + return SEPARATORS.containsKey(token); + } + + // Compare precedence of operators. + private Boolean isPrecedent(String token1, String token2) { + // token 1 is precedent if it is greater than token 2 + return (OPERATORS.get(token1) - OPERATORS.get(token2) >= 0) ; + } + + // Term Tokenizer takes original expression and converts it to ArrayList of tokens + private void termTokenizer() { + // contains final list of tokens + this.tokens = new ArrayList<>(); + + int start = 0; // term split starting index + StringBuilder multiCharTerm = new StringBuilder(); // term holder + for (int i = 0; i < this.expression.length(); i++) { + Character c = this.expression.charAt(i); + if ( isOperator(c.toString() ) || isSeperator(c.toString()) ) { + // 1st check for working term and add if it exists + if (multiCharTerm.length() > 0) { + tokens.add(this.expression.substring(start, i)); + } + // Add operator or parenthesis term to list + if (c != ' ') { + tokens.add(c.toString()); + } + // Get ready for next term + start = i + 1; + multiCharTerm = new StringBuilder(); + } else { + // multi character terms: numbers, functions, perhaps non-supported elements + // Add next character to working term + multiCharTerm.append(c); + } + + } + // Add last term + if (multiCharTerm.length() > 0) { + tokens.add(this.expression.substring(start)); + } + } + + // Takes tokens and converts to Reverse Polish Notation (RPN), this is one where the operator follows its operands. + private void tokensToReversePolishNotation () { + // contains final list of tokens in RPN + this.reverse_polish = new ArrayList<>(); + + // stack is used to reorder for appropriate grouping and precedence + Stack tokenStack = new Stack(); + for (String token : tokens) { + switch (token) { + // If left bracket push token on to stack + case "(": + tokenStack.push(token); + break; + case ")": + while (tokenStack.peek() != null && !tokenStack.peek().equals("(")) + { + reverse_polish.add( (String)tokenStack.pop() ); + } + tokenStack.pop(); + break; + case "+": + case "-": + case "*": + case "/": + case "%": + // While stack + // not empty AND stack top element + // and is an operator + while (tokenStack.peek() != null && isOperator((String) tokenStack.peek())) + { + if ( isPrecedent(token, (String) tokenStack.peek() )) { + reverse_polish.add((String)tokenStack.pop()); + continue; + } + break; + } + // Push the new operator on the stack + tokenStack.push(token); + break; + default: // Default should be a number, there could be test here + this.reverse_polish.add(token); + } + } + // Empty remaining tokens + while (tokenStack.peek() != null) { + reverse_polish.add((String)tokenStack.pop()); + } + + } + + // Takes RPN and produces a final result + private void rpnToResult() + { + // stack is used to hold calculation while using RPN rules for calculation + Stack stack = new Stack(); + + // reverse_polish is processed and ultimately used to produce final result + for (String token : this.reverse_polish) + { + // If the token is a number push it onto the stack + if (!isOperator(token)) + { + stack.push(token); + } + else + { + // Pop the two top entries + Double operand1 = Double.valueOf( (String)stack.pop() ); + Double operand0 = Double.valueOf( (String)stack.pop() ); + + // Calculate intermediate results + Double result; + switch (token) { // token is the operator + case "+": + result = operand0 + operand1; + break; + case "-": + result = operand0 - operand1; + break; + case "*": + result = operand0 * operand1; + break; + case "/": + result = operand0 / operand1; + break; + case "%": + result = operand0 % operand1; + break; + default: // replace this code with errors + result = 0.0; + } + + // Push intermediate result back onto the stack + stack.push( String.valueOf( result )); + } + } + // Pop final result and set as final result for expression + this.result = Double.valueOf((String)stack.pop()); + } + + // Print the expression, terms, and result + public String toString() { + return ("Original expression: " + this.expression + "\n" + + "Tokenized expression: " + this.tokens.toString() + "\n" + + "Reverse Polish Notation: " +this.reverse_polish.toString() + "\n" + + "Final result: " + String.format("%.2f", this.result)); + } + + // Tester method + public static void main(String[] args) { + // Random set of test cases + Calculator simpleMath = new Calculator("100 + 200 * 3"); + System.out.println("Simple Math\n" + simpleMath); + + System.out.println(); + + Calculator parenthesisMath = new Calculator("(100 + 200) * 3"); + System.out.println("Parenthesis Math\n" + parenthesisMath); + + System.out.println(); + + Calculator fractionMath = new Calculator("100.2 - 99.3"); + System.out.println("Fraction Math\n" + fractionMath); + + System.out.println(); + + Calculator moduloMath = new Calculator("300 % 200"); + System.out.println("Modulo Math\n" + moduloMath); + + System.out.println(); + + Calculator divisionMath = new Calculator("300/200"); + System.out.println("Division Math\n" + divisionMath); + + System.out.println(); + + Calculator multiplicationMath = new Calculator("300 * 200"); + System.out.println("Multiplication Math\n" + multiplicationMath); + + System.out.println(); + + Calculator allMath = new Calculator("200 % 300 + 5 + 300 / 200 + 1 * 100"); + System.out.println("All Math\n" + allMath); + + System.out.println(); + + Calculator allMath2 = new Calculator("200 % (300 + 5 + 300) / 200 + 1 * 100"); + System.out.println("All Math2\n" + allMath2); + + System.out.println(); + + Calculator allMath3 = new Calculator("200%(300+5+300)/200+1*100"); + System.out.println("All Math3\n" + allMath3); + + } +} diff --git a/src/main/java/com/nighthawk/csa/hacks/IntByReference.java b/src/main/java/com/nighthawk/csa/hacks/IntByReference.java new file mode 100644 index 00000000..d795dd62 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/hacks/IntByReference.java @@ -0,0 +1,37 @@ +package com.nighthawk.csa.hacks; + +public class IntByReference { + private int value; + + public IntByReference(Integer value) { + this.value = value; + } + + public String toString() { + return (String.format("%d", this.value)); + } + + public void swapToLowHighOrder(IntByReference i) { + if (this.value > i.value) { + int tmp = this.value; + this.value = i.value; + i.value = tmp; + } + } + + public static void swapper(int n0, int n1) { + IntByReference a = new IntByReference(n0); + IntByReference b = new IntByReference(n1); + System.out.println("Before: " + a + " " + b); + a.swapToLowHighOrder(b); // conditionally build swap method to change values of a, b + System.out.println("After: " + a + " " + b); + System.out.println(); + } + + public static void main(String[] ags) { + IntByReference.swapper(21, 16); + IntByReference.swapper(16, 21); + IntByReference.swapper(16, -1); + } + +} diff --git a/src/main/java/com/nighthawk/csa/hacks/Matrix.java b/src/main/java/com/nighthawk/csa/hacks/Matrix.java new file mode 100644 index 00000000..9d4a1bf9 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/hacks/Matrix.java @@ -0,0 +1,68 @@ +package com.nighthawk.csa.hacks; + +// matrix class is used to store and format the output of a matrix +public class Matrix { + private final int[][] matrix; + + // store matrix + public Matrix(int[][] matrix) { + this.matrix = matrix; + } + + // nest for loops to format output of a matrix + public String toString() { + // construct output of matrix using for loops + // outer loop for row + StringBuilder output = new StringBuilder(); + for (int[] row : matrix) { + // inner loop for column + for (int cell : row) { + output.append((cell==-1) ? " " : String.format("%x",cell)).append(" "); + } + output.append("\n"); // new line + } + return output.toString(); + } + + // print it backwards matrix + public String reverse() { + // outer loop starting at end row + StringBuilder output = new StringBuilder(); + for (int i = matrix.length; 0 < i; i--) { + // inner loop for column + for (int j = matrix[i-1].length; 0 < j; j--) { + output.append((matrix[i-1][j-1]==-1) ? " " : String.format("%x",matrix[i-1][j-1])).append(" "); + } + output.append("\n"); // new line + } + return output.toString(); + } + + // declare and initialize a matrix for a keypad + static int[][] keypad() { + return new int[][]{ { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 }, {-1, 0, -1} }; + } + + // declare and initialize a random length arrays + static int[][] numbers() { + return new int[][]{ { 0, 1 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 }, + { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 } }; + } + + // tester method for matrix formatting + public static void main(String[] args) { + Matrix m0 = new Matrix(keypad()); + System.out.println("Keypad:"); + System.out.println(m0); + System.out.println(m0.reverse()); + + + Matrix m1 = new Matrix(numbers()); + System.out.println("Numbers Systems:"); + System.out.println(m1); + System.out.println(m1.reverse()); + + } + +} diff --git a/src/main/java/com/nighthawk/csa/hacks/Menu.java b/src/main/java/com/nighthawk/csa/hacks/Menu.java new file mode 100644 index 00000000..16586e86 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/hacks/Menu.java @@ -0,0 +1,139 @@ +package com.nighthawk.csa.hacks; + +import java.util.HashMap; +import java.util.Map; +import java.util.Scanner; + +/** + * Menu: custom implementation + * @author John Mortensen + * + * Uses String to contain Title for Option + * Uses Runnable to store Class-Method to be run when Title is selected + */ + +// The Menu Class has a HashMap of Menu Rows +public class Menu { + // Format + // Key {0, 1, 2, ...} created based on order of input menu + // Value {MenuRow0, MenuRow1, MenuRow2,...} each corresponds to key + // MenuRow {, Option1, Option2, ...} + Map menu = new HashMap<>(); + + /** + * Constructor for Menu, + * + * @param rows, is the row data for menu. + */ + public Menu(MenuRow[] rows) { + int i = 0; + for (MenuRow row : rows) { + // Build HashMap for lookup convenience + menu.put(i++, new MenuRow(row.getTitle(), row.getAction())); + } + } + + /** + * Get Row from Menu, + * + * @param i, HashMap key (k) + * + * @return MenuRow, the selected menu + */ + public MenuRow get(int i) { + return menu.get(i); + } + + /** + * Iterate and print rows in HashMap + * + */ + public void print() { + for (Map.Entry pair : menu.entrySet()) { + System.out.println(pair.getKey() + " ==> " + pair.getValue().getTitle()); + } + } +} + +// The MenuRow Class has title and action for individual line item in menu +class MenuRow { + String title; // menu item title + Runnable action; // menu item action, using Runnable + + /** + * Constructor for MenuRow, + * + * @param title, is the description of the menu item + * @param action, is the run-able action for the menu item + */ + public MenuRow(String title, Runnable action) { + this.title = title; + this.action = action; + } + + /** + * Getters + */ + public String getTitle() { + return this.title; + } + public Runnable getAction() { + return this.action; + } + + /** + * Runs the action using Runnable (.run) + */ + public void run() { + action.run(); + } +} + +// The Main Class illustrates initializing and using Menu with Runnable action +class Main { + /** + * Menu Control Example + */ + public static void main(String[] args) { + // Row initialize + MenuRow[] rows = new MenuRow[]{ + new MenuRow("Exit", () -> main(null)), + new MenuRow("Swap", () -> IntByReference.main(null)), // lambda style, () -> to point to Class.Method + new MenuRow("Matrix", () -> Matrix.main(null)) + }; + + // Menu construction + Menu menu = new Menu(rows); + // Setup scanner + Scanner sc = new Scanner(System.in); + + + // Run menu forever, exit condition contained in loop + while (true) { + System.out.println("Hacks Menu:"); + // print rows + menu.print(); + + // Scan for input + try { + int selection = sc.nextInt(); + + // menu action + try { + MenuRow row = menu.get(selection); + // stop menu condition + if (row.getTitle().equals("Exit")) + break; + // run option + row.run(); + } catch (Exception e) { + System.out.printf("Invalid selection %d\n", selection); + } + } catch (Exception e) { + System.out.println("Not a number"); + } + } + sc.close(); + } +} + diff --git a/src/main/java/com/nighthawk/csa/hacks/Number.java b/src/main/java/com/nighthawk/csa/hacks/Number.java new file mode 100644 index 00000000..79478aca --- /dev/null +++ b/src/main/java/com/nighthawk/csa/hacks/Number.java @@ -0,0 +1,85 @@ +package com.nighthawk.csa.hacks; + +import java.util.ArrayList; + +// Write a Class Number +public class Number { + private String title = "Number"; + private String counter = "Index"; + private static int COUNT = 0; + private final int number; + private final int index; + + // Number has a zero Argument constructor + // It initializes a random number between 3 and 36, ie the number of squirrels in class + public Number() { + int SIZE = 36; int MIN = 3; int RANGE = SIZE - MIN + 1; // constants for initialization + this.number = (int)(Math.random()*RANGE) + MIN; // observe RANGE calculation and MIN offset + this.index = Number.COUNT++; // observe use of Class variable COUNT and post increment + } + + // It contains a getter for the Random Number + public int getNumber() { + return this.number; + } + + // It contains a getter for Index, or the order it was initialized + public int getIndex() { + return this.index; + } + + // Make a setter to title the Random Number + public void setTitle(String title) { this.title = title; } + + // Make a setter to name the Counter + public void setCounter(String counter) { this.counter = counter; } + + // toString method for formatted output, this was not in requirement but is critical knowledge + public String toString() { + return this.title + ": " + this.getNumber() + " " + this.counter + ": " + this.getIndex(); + } + + // Write a tester method + public static void main(String[] args) { + + // Create an ArrayList of Type Number, the ArrayList is called squirrels + ArrayList squirrels = new ArrayList<>(); + + // Initialize 10 squirrels of class type Number + // Insert Number Object into ArrayList Squirrels in least to the greatest order using getNumber() + int SQUIRRELS = 10; + for (int i = 0; i < SQUIRRELS; i++) { + Number num = new Number(); + num.setTitle("Squirrels"); + num.setCounter("Days"); + // Insert in ordered position, this avoids sort algorithm + for (int j = 0; true; j++) { + // Conditions to insert + if ((squirrels.size() == j) // empty or at end of list + || (num.getNumber() < squirrels.get(j).getNumber()) ) // less than current + { + /* The java.util.ArrayList.add(int index, Object) + method inserts the specified object at the specified position in this list. + This is overload of the common java.util.ArrayList.add(Object) + */ + squirrels.add(j, num); // insert in "j" position + break; // break forever loop when inserted + } + } + } + + // Added total/average, not in requirements + int total = 0; + for (Number squirrel : squirrels) { + // Print a formatted message with number of Squirrels and Index + System.out.println(squirrel); // prints Object using toString() method + total += squirrel.getNumber(); // running total, not in requirements + } + // Integer division requires cast for precision + System.out.println("Total random squirrels: " + total + ", Number of days: " + squirrels.size()); + System.out.println("Average squirrels per day: " + total / (double) squirrels.size()); + } + +} + + diff --git a/src/main/java/com/nighthawk/csa/hacks/Pics.java b/src/main/java/com/nighthawk/csa/hacks/Pics.java new file mode 100644 index 00000000..62acc383 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/hacks/Pics.java @@ -0,0 +1,191 @@ +package com.nighthawk.csa.hacks; + +import java.awt.Color; +import java.awt.image.BufferedImage; +import java.awt.Image; +import java.awt.Graphics2D; + +import java.io.File; +import java.io.FileWriter; +import java.io.IOException; +import java.io.PrintWriter; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.Paths; + +import javax.imageio.stream.ImageOutputStream; +import javax.imageio.stream.ImageInputStream; +import javax.imageio.metadata.IIOMetadata; +import javax.imageio.IIOImage; +import javax.imageio.ImageIO; +import javax.imageio.ImageWriteParam; +import javax.imageio.ImageWriter; +import javax.imageio.ImageReader; +import javax.imageio.ImageTypeSpecifier; + +public class Pics { + private final String inDir = System.getProperty("user.dir")+ "/images/"; // location of images + private final String outDir = System.getProperty("user.dir") + "/images/tmp/"; // location of created files + private String inFile; + private String resizedFile; + private String asciiFile; + private String ext; // extension of file + private long bytes; + private int width; + private int height; + + // Constructor obtains attributes of picture + public Pics(String name, String ext) { + this.ext = ext; + this.inFile = this.inDir + name + "." + ext; + this.resizedFile = this.outDir + name + "." + ext; + this.asciiFile = this.outDir + name + ".txt"; + this.setStats(); + } + + public void printStats(String msg) { + System.out.println(msg + ": " + this.bytes + " " + this.width + "x" + this.height + " " + this.inFile); + } + + // Buffered image contains attributes, namely width and height + public void setStats() { + BufferedImage img; + try { + Path path = Paths.get(this.inFile); + this.bytes = Files.size(path); + img = ImageIO.read(new File(this.inFile)); + this.width = img.getWidth(); + this.height = img.getHeight(); + } catch (IOException e) { + } + } + + public static BufferedImage convertToBufferedImage(Image img) { + + if (img instanceof BufferedImage) { + return (BufferedImage) img; + } + + // Create a buffered image with transparency + BufferedImage bi = new BufferedImage( + img.getWidth(null), img.getHeight(null), + BufferedImage.TYPE_INT_ARGB); + + Graphics2D graphics2D = bi.createGraphics(); + graphics2D.drawImage(img, 0, 0, null); + graphics2D.dispose(); + + return bi; + } + + public void resize(int scale) { + BufferedImage img = null; + Image resizedImg = null; + + int width = (int) (this.width * (scale/100.0) + 0.5); + int height = (int) (this.height * (scale/100.0) + 0.5); + + try { + // read an image to BufferedImage for processing + img = ImageIO.read(new File(this.inFile)); // set buffer of image data + // create a new BufferedImage for drawing + resizedImg = img.getScaledInstance(width, height, Image.SCALE_SMOOTH); + } catch (IOException e) { + return; + } + + try { + ImageIO.write(convertToBufferedImage(resizedImg), this.ext, new File(resizedFile)); + } catch (IOException e) { + return; + } + + this.inFile = this.resizedFile; // use scaled file vs original file in Class + this.setStats(); + } + + public void convertToAscii() { + BufferedImage img = null; + PrintWriter asciiPrt = null; + FileWriter asciiWrt = null; + + try { + File file = new File(this.asciiFile); + Files.deleteIfExists(file.toPath()); + } catch (IOException e) { + System.out.println("Delete File error: " + e); + } + + try { + asciiPrt = new PrintWriter(asciiWrt = new FileWriter(this.asciiFile, true)); + } catch (IOException e) { + System.out.println("ASCII out file create error: " + e); + } + + try { + img = ImageIO.read(new File(this.inFile)); + } catch (IOException e) { + } + + System.out.println(); + for (int i = 0; i < img.getHeight(); i++) { + for (int j = 0; j < img.getWidth(); j++) { + Color col = new Color(img.getRGB(j, i)); + double pixVal = (((col.getRed() * 0.30) + (col.getBlue() * 0.59) + (col + .getGreen() * 0.11))); + try { + asciiPrt.print(asciiChar(pixVal)); + asciiPrt.flush(); + asciiWrt.flush(); + } catch (Exception ex) { + } + System.out.print(asciiChar(pixVal)); + } + try { + asciiPrt.println(""); + asciiPrt.flush(); + asciiWrt.flush(); + } catch (Exception ex) { + } + System.out.println(); + } + } + + public String asciiChar(double g) { + String str = " "; + if (g >= 240) { + str = " "; + } else if (g >= 210) { + str = "."; + } else if (g >= 190) { + str = "*"; + } else if (g >= 170) { + str = "+"; + } else if (g >= 120) { + str = "^"; + } else if (g >= 110) { + str = "&"; + } else if (g >= 80) { + str = "8"; + } else if (g >= 60) { + str = "#"; + } else { + str = "@"; + } + return str; + } + + public static void main(String[] args) throws IOException { + Pics monaLisa = new Pics("MonaLisa", "png"); + monaLisa.printStats("Original"); + monaLisa.resize(33); + monaLisa.printStats("Scaled"); + monaLisa.convertToAscii(); + + Pics pumpkin = new Pics("pumpkin", "png"); + pumpkin.printStats("Original"); + pumpkin.resize(33); + pumpkin.printStats("Scaled"); + pumpkin.convertToAscii(); + } +} diff --git a/src/main/java/com/nighthawk/csa/hacks/Sorts.java b/src/main/java/com/nighthawk/csa/hacks/Sorts.java new file mode 100644 index 00000000..15ac5945 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/hacks/Sorts.java @@ -0,0 +1,51 @@ +package com.nighthawk.csa.hacks; + +import java.time.Duration; +import java.time.Instant; +import java.util.ArrayList; +import java.util.Comparator; + +public class Sorts { + private final ArrayList data = new ArrayList<>(); + private final Duration timeElapsed; + + public Sorts(int size) { + Instant start = Instant.now(); // time capture -- start + // build an array + for (int i = 0; i < size; i++) { + data.add((int)(Math.random() * (size+1))); + } + // use Inheritance and Polymorphism to replace data.sort with your own algorithm + data.sort(Comparator.naturalOrder()); + Instant end = Instant.now(); // time capture -- end + this.timeElapsed = Duration.between(start, end); + } + + public ArrayList getData() { + return data; + } + + public int getTimeElapsed() { + return timeElapsed.getNano(); + } + + + public static void main(String[] args) { + int sum=0, time=0, TIMES=12, SIZE=5000; + + for(int i=0; i< TIMES; i++) { + Sorts s = new Sorts(SIZE); + for(int j = 0; j { - -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/model/SQL/FamilySqlRepository.java b/src/main/java/com/nighthawk/csa/model/SQL/FamilySqlRepository.java deleted file mode 100644 index 1fa496d0..00000000 --- a/src/main/java/com/nighthawk/csa/model/SQL/FamilySqlRepository.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.nighthawk.csa.model.SQL; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/* -This class has an instance of Java Persistence API (JPA) --- @Autowired annotation. Allows Spring to resolve and inject collaborating beans into our bean. --- Spring Data JPA will generate a proxy instance --- Below are the CRUD methods that we can use with our database -*/ -@Service -@Transactional -public class FamilySqlRepository { - - @Autowired - private FamilyJpaRepository jpa; - - public List listAll() { - return jpa.findAll(); - } - - public void save(Family family) { - jpa.save(family); - } - - public Family get(long id) { - return jpa.findById(id).get(); - } - - public void delete(long id) { - jpa.deleteById(id); - } -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/model/SQL/Person.java b/src/main/java/com/nighthawk/csa/model/SQL/Person.java deleted file mode 100644 index 181aa55d..00000000 --- a/src/main/java/com/nighthawk/csa/model/SQL/Person.java +++ /dev/null @@ -1,60 +0,0 @@ -package com.nighthawk.csa.model.SQL; - -import lombok.*; -import org.springframework.format.annotation.DateTimeFormat; - -import javax.persistence.*; -import javax.validation.constraints.*; -import java.time.LocalDate; -import java.time.Period; -import java.time.ZoneId; -import java.util.Date; - -/* -Person is a POJO, Plain Old Java Object. -First set of annotations add functionality to POJO ---- @Setter @Getter @ToString @NoArgsConstructor @RequiredArgsConstructor -The last annotation connect to database ---- @Entity - */ -@Setter -@Getter -@ToString -@NoArgsConstructor -@RequiredArgsConstructor -@Entity -public class Person { - @Id - @GeneratedValue(strategy = GenerationType.AUTO) - private Long id; - - @NotEmpty - @Size(min=5) - @Email - private String email; - - /* - @NonNull: Places this in @RequiredArgsConstructor - @Size(min=2, max=30): Allows names between 2 and 30 characters long. - */ - @NonNull - @Size(min = 2, max = 30, message = "Name (2 to 30 chars)") - private String name; - - @DateTimeFormat(pattern = "yyyy-MM-dd") - private Date dob; - - /* Initializer used when setting data from an API */ - public Person(String email, String name, Date dob) { - this.email = email; - this.name = name; - this.dob = dob; - } - - /* A custom getter to return age from dob calculation */ - public int getAge() { - LocalDate birthDay = this.dob.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); - return Period.between(birthDay, LocalDate.now()).getYears(); - } - -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/model/SQL/PersonJpaRepository.java b/src/main/java/com/nighthawk/csa/model/SQL/PersonJpaRepository.java deleted file mode 100644 index fdb6505e..00000000 --- a/src/main/java/com/nighthawk/csa/model/SQL/PersonJpaRepository.java +++ /dev/null @@ -1,13 +0,0 @@ -package com.nighthawk.csa.model.SQL; - -import org.springframework.data.jpa.repository.JpaRepository; - -/* -Extends the JpaRepository interface from Spring Data JPA. --- Java Persistent API (JPA) - Hibernate: map, store, update and retrieve data --- JpaRepository defines standard CRUD methods --- Via JPA the developer can retrieve data from relational databases to Java objects and vice versa. - */ -public interface PersonJpaRepository extends JpaRepository { - -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/model/SQL/PersonSqlRepository.java b/src/main/java/com/nighthawk/csa/model/SQL/PersonSqlRepository.java deleted file mode 100644 index 15428704..00000000 --- a/src/main/java/com/nighthawk/csa/model/SQL/PersonSqlRepository.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.nighthawk.csa.model.SQL; - -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import java.util.List; - -/* -This class has an instance of Java Persistence API (JPA) --- @Autowired annotation. Allows Spring to resolve and inject collaborating beans into our bean. --- Spring Data JPA will generate a proxy instance --- Below are some CRUD methods that we can use with our database -*/ -@Service -@Transactional -public class PersonSqlRepository { - - @Autowired - private PersonJpaRepository jpa; - - public ListlistAll() { - return jpa.findAll(); - } - - public void save(Person person) { - jpa.save(person); - } - - public Person get(long id) { - return jpa.findById(id).get(); - } - - public void delete(long id) { - jpa.deleteById(id); - } -} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/dataOps/DataOps.md b/src/main/java/com/nighthawk/csa/mvc/dataOps/DataOps.md new file mode 100644 index 00000000..b95df04f --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/dataOps/DataOps.md @@ -0,0 +1,36 @@ +# Data Ops with Spring/Java + +### Overview +This lab assists with PBL and CB. The backend includes many College Board algorithms including usage of Statics and Sorts. Beyond College Board the backend includes and implementation of Linked Lists which is a fundamental structure for any College CompSci class. + + +### CB Topics +* Static Variables [CB 5.7 V1](https://apclassroom.collegeboard.org/8/home?apd=2gde84qri5&unit=5), [V2](https://apclassroom.collegeboard.org/8/home?apd=2gde84qri5&unit=5) +* Inheritance Hierarchies [CB 9.5 V2](https://apclassroom.collegeboard.org/8/home?apd=wkp1dtdkz8&unit=9) +* Polymorphism [CB 9.6 V1](https://apclassroom.collegeboard.org/8/home?apd=pp1jhg3pvb&unit=9) +* Sorting [CB 10.2 Merge Sort V1](https://apclassroom.collegeboard.org/8/home?apd=14ybgme7em&unit=10), [V2](https://apclassroom.collegeboard.org/8/home?apd=yrqb7lfza1&unit=10) + + +### Other Topics +* Enums [W3Schools](https://www.w3schools.com/java/java_enums.asp), [FrontEndBackEnd](https://frontbackend.com/thymeleaf/using-enums-in-thymeleaf) +* the Object Class [GeeksforGeeks](https://www.geeksforgeeks.org/object-class-in-java/) +* Spring Boot Basics [Jet Brains](https://www.jetbrains.com/idea/guide/tutorials/your-first-spring-application/creating-spring-boot-application/) +* Inheritance [W3Schools](https://www.w3schools.in/java-tutorial/inheritance/) +* Abstract Class and Methods [Tutorial Point](https://www.tutorialspoint.com/java/java_abstraction.htm) +* Linked Lists (Circular) [Tutorial Point](https://www.tutorialspoint.com/data_structures_algorithms/linked_list_algorithms.htm) + + +### Mini-lab or PBL requirements +1. Build section into your Scrum Team project or individual section for execution. +2. Build abstract Class and have multiple derivative classes (extend) with Override on method(s). +3. Have default data that loads and displays on Web page +4. Interact with data on Web to Filter result using Check Box and Radio Controls. Add something unique like Animal noises. +5. Change my sort to merge sort algorithm as shown in CB in videos. + + +### Mini-lab or PBL-lab binary. Make your own Data Ops/Class and initialize it. Point criteria follows... +* Use of toString(), Static, Sort +* Use of a Data Structure to hold Objects of your Class or Abstract class, better if it is a POJO. +* Web UI and visuals to interact with data +* Check Boxes, Radio Buttons +* Console testers of component parts of system. diff --git a/src/main/java/com/nighthawk/csa/algorithm/DataOpsController.java b/src/main/java/com/nighthawk/csa/mvc/dataOps/DataOpsController.java similarity index 67% rename from src/main/java/com/nighthawk/csa/algorithm/DataOpsController.java rename to src/main/java/com/nighthawk/csa/mvc/dataOps/DataOpsController.java index a03bf59f..3c52eecb 100644 --- a/src/main/java/com/nighthawk/csa/algorithm/DataOpsController.java +++ b/src/main/java/com/nighthawk/csa/mvc/dataOps/DataOpsController.java @@ -1,11 +1,11 @@ -package com.nighthawk.csa.algorithm; +package com.nighthawk.csa.mvc.dataOps; -import com.nighthawk.csa.consoleUI.ConsoleMethods; -import com.nighthawk.csa.algorithm.genericDataModel.Alphabet; -import com.nighthawk.csa.algorithm.genericDataModel.Animal; -import com.nighthawk.csa.algorithm.genericDataModel.Cupcakes; +import com.nighthawk.csa.utility.ConsoleMethods; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Alphabet; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Animal; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Cupcakes; -import com.nighthawk.csa.model.linkedlists.CircleQueue; +import com.nighthawk.csa.utility.LinkedLists.CircleQueue; import lombok.Getter; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; @@ -17,18 +17,20 @@ import java.util.List; /** - * Circle Queue Driver takes a list of Objects and puts them into a Queue + * Circle Queue Driver and Controller takes a list of Objects and puts them into a Queue * @author John Mortensen * */ @Getter @Controller // HTTP requests are handled as a controller, using the @Controller annotation public class DataOpsController { + //persistent circle queue data private CircleQueue queue; // circle queue object private int count; // number of objects in circle queue - //control variables for UI checkboxes and radios - private boolean animal; - private Animal.KeyType animalKey; + + //persistent control variables for UI checkboxes and radios + private boolean animal; //checkbox + private Animal.KeyType animalKey; //enum radio button private boolean cake; private Cupcakes.KeyType cakeKey; private boolean alpha; @@ -44,6 +46,8 @@ public DataOpsController() queue = new CircleQueue(); } + /****** Circle Queue Methods *******/ + /* * Add any array of objects to the queue */ @@ -88,40 +92,46 @@ public List getCQList() return log; } + /****** Control Methods *******/ + /* - GET request,, parameters are passed within the URI + GET request... setup circle queue and pass variables via login.addAttribute */ - @GetMapping("/data") + @GetMapping("/mvc/dataops") public String data(Model model) { - - //initialize data + //initialize database this.count = 0; this.queue = new CircleQueue(); - //application specific inits - //title defaults + + //set default order for data + Animal.setOrder(this.animalKey); + Cupcakes.setOrder(this.cakeKey); + Alphabet.setOrder(this.alphaKey); + + //radio button defaults this.animalKey = Animal.KeyType.title; - Animal.key = this.animalKey; this.cakeKey = Cupcakes.KeyType.title; - Cupcakes.key = this.cakeKey; this.alphaKey = Alphabet.KeyType.title; - Alphabet.key = this.alphaKey; - //control options + + //checkbox defaults this.animal = true; this.cake = true; this.alpha = true; - //load data + + //load circle queue this.addCQueue(Animal.animalData()); this.addCQueue(Cupcakes.cupCakeData()); this.addCQueue(Alphabet.alphabetData()); - //data is not sorted, queue order (FIFO) is default - model.addAttribute("ctl", this); - return "algorithm/data"; //HTML render default condition + + //circle queue is not sorted on initial load, circle queue order FIFO + model.addAttribute("this", this); + return "mvc/dataops"; //HTML render } /* - GET request,, parameters are passed within the URI + POST request... update circle queue based off of user check box and radio selections */ - @PostMapping("/data") + @PostMapping("/mvc/dataops") public String dataFilter( @RequestParam(value = "animal", required = false) String animal, @RequestParam(value = "animalKey") Animal.KeyType animalKey, @@ -131,15 +141,15 @@ public String dataFilter( @RequestParam(value = "alphaKey", required = false) Alphabet.KeyType alphaKey, Model model) { - //re-init data according to check boxes selected + //re-init circle queue according to check boxes selected count = 0; queue = new CircleQueue(); - //for each category rebuild data, set presentation and data defaults + //for each category rebuild circle queue, set presentation and data defaults if (animal != null) { - this.addCQueue(Animal.animalData()); //adding Animal data to queue - this.animal = true; //persistent selection from check box selection - this.animalKey = animalKey; //persistent enum update from radio button selection - Animal.key = this.animalKey; //toString configure for sort order + this.addCQueue(Animal.animalData()); //adding Animal database to queue + this.animal = true; //selection from check box + this.animalKey = animalKey; //enum selection from radio button + Animal.setOrder(this.animalKey); } else { this.animal = false; } @@ -147,7 +157,7 @@ public String dataFilter( this.addCQueue(Cupcakes.cupCakeData()); this.cake = true; this.cakeKey = cakeKey; - Cupcakes.key = this.cakeKey; + Cupcakes.setOrder(this.cakeKey); } else { this.cake = false; } @@ -155,17 +165,19 @@ public String dataFilter( this.addCQueue(Alphabet.alphabetData()); this.alpha = true; this.alphaKey = alphaKey; - Alphabet.key = this.alphaKey; + Alphabet.setOrder(this.alphaKey); } else { this.alpha = false; } - //sort data according to selected options + //sort database according to selected options this.queue.insertionSort(); //render with options - model.addAttribute("ctl", this); - return "algorithm/data"; + model.addAttribute("this", this); + return "mvc/dataops"; } + /****** Console Methods *******/ + /* * Show key objects/properties of circle queue */ @@ -190,35 +202,32 @@ public static void main(String[] args) //queue DataOpsController trial = new DataOpsController(); - //add different types of objects to the same opaque queue + //add different types of objects to the same queue trial.addCQueue(Animal.animalData()); trial.addCQueue(Cupcakes.cupCakeData()); trial.addCQueue(Alphabet.alphabetData()); + //display queue objects in queue order - ConsoleMethods.println("Add order (all data)"); + ConsoleMethods.println("Add order (all database)"); trial.printCQueue(); //sort queue objects by specific element within the object and display in sort order - Animal.key = Animal.KeyType.name; - Cupcakes.key = Cupcakes.KeyType.frosting; - Alphabet.key = Alphabet.KeyType.letter; + Animal.setOrder(Animal.KeyType.name); + Cupcakes.setOrder(Cupcakes.KeyType.flavor); + Alphabet.setOrder(Alphabet.KeyType.letter); trial.queue.insertionSort(); ConsoleMethods.println("Sorted order (key only)"); trial.printCQueue(); //display queue objects, changing output but not sort - Animal.key = Animal.KeyType.title; - Cupcakes.key = Cupcakes.KeyType.title; - Alphabet.key = Alphabet.KeyType.title; - ConsoleMethods.println("Retain sorted order (all data)"); - trial.printCQueue(); - trial.queue.insertionSort(); - //display queue objects, changing sort order - ConsoleMethods.println("Order by data type (all data)"); + Animal.setOrder(Animal.KeyType.title); + Cupcakes.setOrder(Cupcakes.KeyType.title); + Alphabet.setOrder(Alphabet.KeyType.title); + ConsoleMethods.println("Retain sorted order (show all data)"); trial.printCQueue(); //delete queue objects - ConsoleMethods.println("Delete from front (all data)"); + ConsoleMethods.println("Delete from front (all database)"); trial.deleteCQueue(); } diff --git a/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Alphabet.java b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Alphabet.java new file mode 100644 index 00000000..8707428d --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Alphabet.java @@ -0,0 +1,72 @@ +package com.nighthawk.csa.mvc.dataOps.genericDataModel; + +public class Alphabet extends Generics { + // Class data + public static KeyTypes key = KeyType.title; // static initializer + public static void setOrder(KeyTypes key) {Alphabet.key = key;} + public enum KeyType implements KeyTypes {title, letter} + private static final int size = 26; // constant used in data initialization + + // Instance data + private final char letter; + + /* + * single letter object + */ + public Alphabet(char letter) + { + this.setType("Alphabet"); + this.letter = letter; + } + + /* 'Generics' requires getKey to help enforce KeyTypes usage */ + @Override + protected KeyTypes getKey() { return Alphabet.key; } + + /* 'Generics' requires toString override + * toString provides data based off of Static Key setting + */ + @Override + public String toString() + { + String output=""; + if (KeyType.letter.equals(this.getKey())) { + output += this.letter; + } else { + output += super.getType() + ": " + this.letter; + } + return output; + } + + // Test data initializer for upper case Alphabet + public static Alphabet[] alphabetData() + { + Alphabet[] alphabet = new Alphabet[Alphabet.size]; + for (int i = 0; i < Alphabet.size; i++) + { + alphabet[i] = new Alphabet( (char)('A' + i) ); + } + return alphabet; + } + + /* + * main to test Animal class + */ + public static void main(String[] args) + { + // Inheritance Hierarchy + Alphabet[] objs = alphabetData(); + + // print with title + Alphabet.setOrder(KeyType.title); + Generics.print(objs); + + // print letter only + Alphabet.setOrder(KeyType.letter); + Generics.print(objs); + } + +} + + + \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Animal.java b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Animal.java new file mode 100644 index 00000000..deb96791 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Animal.java @@ -0,0 +1,82 @@ +package com.nighthawk.csa.mvc.dataOps.genericDataModel; + +/* + * Animal class extends Generics and defines abstract methods + */ +public class Animal extends Generics { + // Class data + public static KeyTypes key = KeyType.title; // static initializer + public static void setOrder(KeyTypes key) { Animal.key = key; } + public enum KeyType implements KeyTypes {title, name, age, color} + + // Instance data + private final String name; + private final int age; + private final String color; + + /* constructor + * + */ + public Animal(String name, int age, String color) + { + super.setType("Animal"); + this.name = name; + this.age = age; + this.color = color; + } + + /* 'Generics' requires getKey to help enforce KeyTypes usage */ + @Override + protected KeyTypes getKey() { return Animal.key; } + + /* 'Generics' requires toString override + * toString provides data based off of Static Key setting + */ + @Override + public String toString() + { + String output=""; + if (KeyType.name.equals(this.getKey())) { + output += this.name; + } else if (KeyType.age.equals(this.getKey())) { + output += "00" + this.age; + output = output.substring(output.length() - 2); + } else if (KeyType.color.equals(this.getKey())) { + output += this.color; + } else { + output += super.getType() + ": " + this.name + ", " + this.color + ", " + this.age; + } + return output; + + } + + // Test data initializer + public static Animal[] animalData() { + return new Animal[]{ + new Animal("Lion", 8, "Gold"), + new Animal("Pig", 3, "Pink"), + new Animal("Robin", 7, "Red"), + new Animal("Cat", 10, "Black"), + new Animal("Kitty", 1, "Calico"), + new Animal("Dog", 14, "Brown") + }; + } + + /* main to test Animal class + * + */ + public static void main(String[] args) + { + // Inheritance Hierarchy + Animal[] objs = animalData(); + + // print with title + Animal.setOrder(KeyType.title); + Generics.print(objs); + + // print name only + Animal.setOrder(KeyType.name); + Generics.print(objs); + } + +} diff --git a/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Cupcakes.java b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Cupcakes.java new file mode 100644 index 00000000..c620bf4c --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Cupcakes.java @@ -0,0 +1,75 @@ +package com.nighthawk.csa.mvc.dataOps.genericDataModel; + +public class Cupcakes extends Generics { + // Class data + public static KeyTypes key = KeyType.title; // static initializer + public static void setOrder(KeyTypes key) {Cupcakes.key = key;} + public enum KeyType implements KeyTypes {title, flavor, frosting, sprinkles} + + // Instance data + private final String frosting; + private final int sprinkles; + private final String flavor; + + // Constructor + Cupcakes(String frosting, int sprinkles, String flavor) + { + this.setType("Cupcakes"); + this.frosting = frosting; + this.sprinkles = sprinkles; + this.flavor = flavor; + } + + /* 'Generics' requires getKey to help enforce KeyTypes usage */ + @Override + protected KeyTypes getKey() { return Cupcakes.key; } + + /* 'Generics' requires toString override + * toString provides data based off of Static Key setting + */ + @Override + public String toString() { + String output=""; + if (KeyType.flavor.equals(this.getKey())) { + output += this.flavor; + } else if (KeyType.frosting.equals(this.getKey())) { + output += this.frosting; + } else if (KeyType.sprinkles.equals(this.getKey())) { + output += "00" + this.sprinkles; + output = output.substring(output.length() - 2); + } else { + output = super.getType() + ": " + this.flavor + ", " + this.frosting + ", " + this.sprinkles; + } + return output; + } + + // Test data initializer + public static Cupcakes[] cupCakeData() { + return new Cupcakes[]{ + new Cupcakes("Red", 4, "Red Velvet"), + new Cupcakes("Orange", 5, "Orange"), + new Cupcakes("Yellow", 6, "Lemon"), + new Cupcakes("Green", 7, "Apple"), + new Cupcakes("Blue", 8, "Blueberry"), + new Cupcakes("Purple", 9, "Blackberry"), + new Cupcakes("Pink", 10, "Strawberry"), + new Cupcakes("Tan", 11, "Vanilla"), + new Cupcakes("Brown", 12, "Chocolate"), + }; + } + + public static void main(String[] args) + { + // Inheritance Hierarchy + Cupcakes[] objs = cupCakeData(); + + // print with title + Cupcakes.setOrder(KeyType.title); + Generics.print(objs); + + // print flavor only + Cupcakes.setOrder(KeyType.flavor); + Generics.print(objs); + } + +} diff --git a/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Generics.java b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Generics.java new file mode 100644 index 00000000..696adf0b --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/dataOps/genericDataModel/Generics.java @@ -0,0 +1,46 @@ +package com.nighthawk.csa.mvc.dataOps.genericDataModel; + +import com.nighthawk.csa.utility.ConsoleMethods; +import lombok.Getter; +import lombok.Setter; + +/* This is wrapper class... + Objective would be to push more functionality into this Class to enforce consistent definition + */ +@Getter +@Setter +public abstract class Generics { + public final String masterType = "Generic"; + private String type; // extender should define themself + + // generic enumerated interface + public interface KeyTypes { + String name(); + } + protected abstract KeyTypes getKey(); // this method helps force usage of KeyTypes + + // this method is used to establish key order + public abstract String toString(); + + // static print method used by extended classes + public static void print(Generics[] objs) { + // print 'Object' properties + ConsoleMethods.println(objs.getClass() + " " + objs.length); + + // print 'Generics' properties + if (objs.length > 0) { + Generics obj = objs[0]; // Look at properties of 1st element + ConsoleMethods.println( + obj.getMasterType() + + ":" + obj.getType() + + " listed by " + + obj.getKey()); + } + + // print 'Object' + for(Object o : objs) + ConsoleMethods.println(o); + + ConsoleMethods.println(); + } +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/database/ModelInit.java b/src/main/java/com/nighthawk/csa/mvc/database/ModelInit.java new file mode 100644 index 00000000..7db0cd36 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/ModelInit.java @@ -0,0 +1,40 @@ +package com.nighthawk.csa.mvc.database; + +import com.nighthawk.csa.mvc.database.note.NoteJpaRepository; +import com.nighthawk.csa.mvc.database.role.Role; +import com.nighthawk.csa.mvc.database.role.RoleJpaRepository; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.CommandLineRunner; +import org.springframework.context.annotation.Bean; +import org.springframework.stereotype.Component; + +@Component // Scans Application for ModelInit Bean, this detects CommandLineRunner +public class ModelInit { + // Inject repositories + @Autowired NoteJpaRepository noteJpaRepository; + @Autowired RoleJpaRepository roleJpaRepository; + @Autowired ModelRepository modelRepository; + + @Bean + CommandLineRunner run() { // The run() method will be executed after the application starts + return args -> { + // Fail safe data validations + + // make sure Role database is populated with defaults + String[] roles = {"ROLE_STUDENT", "ROLE_TEACHER", "ROLE_ADMIN", "ROLE_TESTER"}; + for (String role : roles) { + if (roleJpaRepository.findByName(role) == null) + roleJpaRepository.save(new Role(null, role)); + } + + // make sure every record added has a Default encrypted password and ROLE_STUDENT + modelRepository.defaults("123querty", "ROLE_STUDENT"); + + // make sure privileged roles exist for Teacher + modelRepository.addRoleToPerson("jmort1021@gmail.com", "ROLE_TEACHER"); + modelRepository.addRoleToPerson("jmort1021@gmail.com", "ROLE_ADMIN"); + + + }; + } +} diff --git a/src/main/java/com/nighthawk/csa/mvc/database/ModelRepository.java b/src/main/java/com/nighthawk/csa/mvc/database/ModelRepository.java new file mode 100644 index 00000000..66234fda --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/ModelRepository.java @@ -0,0 +1,190 @@ +package com.nighthawk.csa.mvc.database; + +import com.nighthawk.csa.mvc.database.person.Person; +import com.nighthawk.csa.mvc.database.person.PersonJpaRepository; +import com.nighthawk.csa.mvc.database.role.Role; +import com.nighthawk.csa.mvc.database.role.RoleJpaRepository; +import com.nighthawk.csa.mvc.database.scrum.Scrum; +import com.nighthawk.csa.mvc.database.scrum.ScrumJpaRepository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.context.annotation.Bean; +import org.springframework.security.core.authority.SimpleGrantedAuthority; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.core.userdetails.UsernameNotFoundException; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + +/* +This class has an instance of Java Persistence API (JPA) +-- @Autowired annotation. Allows Spring to resolve and inject collaborating beans into our bean. +-- Spring Data JPA will generate a proxy instance +-- Below are some CRUD methods that we can use with our database +*/ +@Service +@Transactional +public class ModelRepository implements UserDetailsService { // "implements" ties ModelRepo to Spring Security + // Encapsulate many object into a single Bean (Person, Roles, and Scrum) + @Autowired // Inject PersonJpaRepository + private PersonJpaRepository personJpaRepository; + @Autowired // Inject RoleJpaRepository + private RoleJpaRepository roleJpaRepository; + @Autowired // Inject RoleJpaRepository + private ScrumJpaRepository scrumJpaRepository; + + // Setup Password style for Database storing and lookup + @Autowired // Inject PasswordEncoder + private PasswordEncoder passwordEncoder; + @Bean // Sets up password encoding style + PasswordEncoder passwordEncoder(){ + return new BCryptPasswordEncoder(); + } + + /* UserDetailsService Overrides and maps Person & Roles POJO into Spring Security */ + @Override + public org.springframework.security.core.userdetails.UserDetails loadUserByUsername(String email) throws UsernameNotFoundException { + Person person = personJpaRepository.findByEmail(email); // setting variable user equal to the method finding the username in the database + if(person==null){ + throw new UsernameNotFoundException("User not found in database"); + } + Collection authorities = new ArrayList<>(); + person.getRoles().forEach(role -> { //loop through roles + authorities.add(new SimpleGrantedAuthority(role.getName())); //create a SimpleGrantedAuthority by passed in role, adding it all to the authorities list, list of roles gets past in for spring security + }); + return new org.springframework.security.core.userdetails.User(person.getEmail(), person.getPassword(), authorities); + } + + + /* Person Section */ + + public ListlistAll() { + return personJpaRepository.findAllByOrderByNameAsc(); + } + + // custom query to find anything containing term in name or email ignoring case + public ListlistLike(String term) { + return personJpaRepository.findByNameContainingIgnoreCaseOrEmailContainingIgnoreCase(term, term); + } + + // custom query to find anything containing term in name or email ignoring case + public ListlistLikeNative(String term) { + String like_term = String.format("%%%s%%",term); // Like required % rappers + return personJpaRepository.findByLikeTermNative(like_term); + } + + public void save(Person person) { + person.setPassword(passwordEncoder.encode(person.getPassword())); + personJpaRepository.save(person); + } + + public Person get(long id) { + return (personJpaRepository.findById(id).isPresent()) + ? personJpaRepository.findById(id).get() + : null; + } + + public Person getByEmail(String email) { + return (personJpaRepository.findByEmail(email)); + } + + public void delete(long id) { + deleteScrumMember(id); // make sure ID is no longer present in SCRUM Teams + personJpaRepository.deleteById(id); + } + + public void defaults(String password, String roleName) { + for (Person person: listAll()) { + if (person.getPassword() == null || person.getPassword().isEmpty() || person.getPassword().isBlank()) { + person.setPassword(passwordEncoder.encode(password)); + } + if (person.getRoles().isEmpty()) { + Role role = roleJpaRepository.findByName(roleName); + if (role != null) { // verify role + person.getRoles().add(role); + } + } + } + } + + + /* Roles Section */ + + public void saveRole(Role role) { + Role roleObj = roleJpaRepository.findByName(role.getName()); + if (roleObj == null) { // only add if it is not found + roleJpaRepository.save(role); + } + } + + public ListlistAllRoles() { + return roleJpaRepository.findAll(); + } + + public Role findRole(String roleName) { + return roleJpaRepository.findByName(roleName); + } + + public void addRoleToPerson(String email, String roleName) { // by passing in the two strings you are giving the user that certain role + Person person = personJpaRepository.findByEmail(email); + if (person != null) { // verify person + Role role = roleJpaRepository.findByName(roleName); + if (role != null) { // verify role + boolean addRole = true; + for (Role roleObj : person.getRoles()) { // only add if user is missing role + if (roleObj.getName().equals(roleName)) { + addRole = false; + break; + } + } + if (addRole) person.getRoles().add(role); // everything is valid for adding role + } + } + } + + + /* Scrum Section */ + + public void saveScrum(Scrum scrum) { + scrumJpaRepository.save(scrum); + } + + public List listAllScrums() { + return scrumJpaRepository.findAllByOrderByNameAsc(); + } + + public Scrum getScrum(long id) { + return (scrumJpaRepository.findById(id).isPresent()) + ? scrumJpaRepository.findById(id).get() + : null; + } + + public void deleteScrum(long id) { + scrumJpaRepository.deleteById(id); + } + + private boolean is_deletedScrum(Person p, long id) { + return (p != null && p.getId() == id ); + } + + public void deleteScrumMember(long id) { + List scrum_list = scrumJpaRepository.findAll(); + for (Scrum scrum: scrum_list) { + boolean changed = false; + if (is_deletedScrum(scrum.getPrimary(), id)) {scrum.setPrimary(null); changed = true;} + if (is_deletedScrum(scrum.getMember1(), id)) {scrum.setMember1(null); changed = true;} + if (is_deletedScrum(scrum.getMember2(), id)) {scrum.setMember2(null); changed = true;} + if (is_deletedScrum(scrum.getMember3(), id)) {scrum.setMember3(null); changed = true;} + if (is_deletedScrum(scrum.getMember4(), id)) {scrum.setMember4(null); changed = true;} + if (changed) { + scrumJpaRepository.save(scrum);} + } + + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/database/note/Note.java b/src/main/java/com/nighthawk/csa/mvc/database/note/Note.java new file mode 100644 index 00000000..bee47837 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/note/Note.java @@ -0,0 +1,25 @@ +package com.nighthawk.csa.mvc.database.note; + +import com.nighthawk.csa.mvc.database.person.Person; +import lombok.*; + +import javax.persistence.*; +import javax.validation.constraints.NotNull; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +public class Note { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @ManyToOne + @JoinColumn(name="person_id") + private Person person; + + @NotNull + @Column(columnDefinition="TEXT") + private String text; +} diff --git a/src/main/java/com/nighthawk/csa/mvc/database/note/NoteJpaRepository.java b/src/main/java/com/nighthawk/csa/mvc/database/note/NoteJpaRepository.java new file mode 100644 index 00000000..0ff0a828 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/note/NoteJpaRepository.java @@ -0,0 +1,11 @@ +package com.nighthawk.csa.mvc.database.note; + +import com.nighthawk.csa.mvc.database.person.Person; +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +public interface NoteJpaRepository extends JpaRepository { + List findAllByPerson(Person p); +} + diff --git a/src/main/java/com/nighthawk/csa/mvc/database/note/NoteViewController.java b/src/main/java/com/nighthawk/csa/mvc/database/note/NoteViewController.java new file mode 100644 index 00000000..73ceafd5 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/note/NoteViewController.java @@ -0,0 +1,68 @@ +package com.nighthawk.csa.mvc.database.note; + +import com.nighthawk.csa.mvc.database.ModelRepository; +import com.nighthawk.csa.mvc.database.person.Person; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; + +import org.commonmark.node.Node; +import org.commonmark.parser.Parser; +import org.commonmark.renderer.html.HtmlRenderer; + +import javax.validation.Valid; +import java.util.List; + +@Controller +public class NoteViewController { + // Autowired enables Control to connect HTML and POJO Object to database easily for CRUD + @Autowired + private ModelRepository modelRepository; + + @Autowired + private NoteJpaRepository noteRepository; + + public static String convertMarkdownToHTML(String markdown) { + Parser parser = Parser.builder().build(); + Node document = parser.parse(markdown); + HtmlRenderer htmlRenderer = HtmlRenderer.builder().build(); + return htmlRenderer.render(document); + } + + @GetMapping("/database/notes/{id}") + public String notes(@PathVariable("id") Long id, Model model) { + Person person = modelRepository.get(id); + List notes = noteRepository.findAllByPerson(person); + Note note = new Note(); + note.setPerson(person); + + for (Note n : notes) + n.setText(convertMarkdownToHTML(n.getText())); + + model.addAttribute("person", person); + model.addAttribute("notes", notes); + model.addAttribute("note", note); + return "mvc/database/notes"; + } + + @PostMapping("/database/notes") + public String notesAdd(@Valid Note note, BindingResult bindingResult) { + // back to person ID on redirect + String redirect = "redirect:/database/notes/"+note.getPerson().getId(); + + // database errors + if (bindingResult.hasErrors()) { + return redirect; + } + + // note is saved and person ID is pre-set + noteRepository.save(note); + + // Redirect to next step + return redirect; + } +} diff --git a/src/main/java/com/nighthawk/csa/mvc/database/person/Person.java b/src/main/java/com/nighthawk/csa/mvc/database/person/Person.java new file mode 100644 index 00000000..8a700974 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/person/Person.java @@ -0,0 +1,71 @@ +package com.nighthawk.csa.mvc.database.person; + +import com.nighthawk.csa.mvc.database.role.Role; +import org.springframework.format.annotation.DateTimeFormat; +import lombok.*; + +import javax.persistence.*; +import javax.validation.constraints.*; +import java.time.LocalDate; +import java.time.Period; +import java.time.ZoneId; +import java.util.*; + +import static javax.persistence.FetchType.EAGER; + +/* +Person is a POJO, Plain Old Java Object. +First set of annotations add functionality to POJO +--- @Setter @Getter @ToString @NoArgsConstructor @RequiredArgsConstructor +The last annotation connect to database +--- @Entity + */ +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +public class Person { + // automatic unique identifier for Person record + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + // email, password, roles are key to login and authentication + @NotEmpty + @Size(min=5) + @Column(unique=true) + @Email + private String email; + + @NotEmpty + private String password; + + @ManyToMany(fetch = EAGER) + private Collection roles = new ArrayList<>(); + + // @NonNull: Places this in @RequiredArgsConstructor + @NonNull + @Size(min = 2, max = 30, message = "Name (2 to 30 chars)") + private String name; + + @DateTimeFormat(pattern = "yyyy-MM-dd") + private Date dob; + + // Initializer used when setting database from an API + public Person(String email, String password, String name, Date dob, Role role) { + this.email = email; + this.password = password; + this.name = name; + this.dob = dob; + this.roles.add(role); + } + + // A custom getter to return age from dob calculation + public int getAge() { + if (this.dob != null) { + LocalDate birthDay = this.dob.toInstant().atZone(ZoneId.systemDefault()).toLocalDate(); + return Period.between(birthDay, LocalDate.now()).getYears(); } + return -1; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/database/person/PersonApiController.java b/src/main/java/com/nighthawk/csa/mvc/database/person/PersonApiController.java new file mode 100644 index 00000000..03427d25 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/person/PersonApiController.java @@ -0,0 +1,87 @@ +package com.nighthawk.csa.mvc.database.person; + +import com.nighthawk.csa.mvc.database.ModelRepository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.web.bind.annotation.*; + + +import java.util.*; + +import java.text.SimpleDateFormat; + +@RestController +@RequestMapping("/api/person") +public class PersonApiController { + /* + #### RESTful API #### + Resource: https://spring.io/guides/gs/rest-service/ + */ + + // Autowired enables Control to connect HTML and POJO Object to database easily for CRUD + @Autowired + private ModelRepository repository; + + /* + GET List of People + */ + @GetMapping("/all") + public ResponseEntity> getPeople() { + return new ResponseEntity<>( repository.listAll(), HttpStatus.OK); + } + + /* + GET individual Person using ID + */ + @GetMapping("/{id}") + public ResponseEntity getPerson(@PathVariable long id) { + return new ResponseEntity<>( repository.get(id), HttpStatus.OK); + } + + /* + DELETE individual Person using ID + */ + @DeleteMapping("/delete/{id}") + public ResponseEntity deletePerson(@PathVariable long id) { + repository.delete(id); + return new ResponseEntity<>( ""+ id +" deleted", HttpStatus.OK); + } + + /* + POST Aa record by Requesting Parameters from URI + */ + @PostMapping( "/post") + public ResponseEntity postPerson(@RequestParam("email") String email, + @RequestParam("password") String password, + @RequestParam("name") String name, + @RequestParam("dob") String dobString) { + Date dob; + try { + dob = new SimpleDateFormat("MM-dd-yyyy").parse(dobString); + } catch (Exception e) { + return new ResponseEntity<>(dobString +" error; try MM-dd-yyyy", HttpStatus.BAD_REQUEST); + } + // A person object WITHOUT ID will create a new record with default roles as student + Person person = new Person(email, password, name, dob, repository.findRole("ROLE_STUDENT") ); + repository.save(person); + return new ResponseEntity<>(email +" is created successfully", HttpStatus.CREATED); + } + + /* + The personSearch API looks across database for partial match to term (k,v) passed by RequestEntity body + */ + @PostMapping(value = "/search", produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity personSearch(@RequestBody final Map map) { + // extract term from RequestEntity + String term = (String) map.get("term"); + + // custom JPA query to filter on term + List list = repository.listLikeNative(term); + + // return resulting list and status, error checking should be added + return new ResponseEntity<>(list, HttpStatus.OK); + } +} diff --git a/src/main/java/com/nighthawk/csa/mvc/database/person/PersonJpaRepository.java b/src/main/java/com/nighthawk/csa/mvc/database/person/PersonJpaRepository.java new file mode 100644 index 00000000..662cf0eb --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/person/PersonJpaRepository.java @@ -0,0 +1,34 @@ +package com.nighthawk.csa.mvc.database.person; + +import org.springframework.data.jpa.repository.JpaRepository; +import org.springframework.data.jpa.repository.Query; + +import java.util.List; + +/* +Extends the JpaRepository interface from Spring Data JPA. +-- Java Persistent API (JPA) - Hibernate: map, store, update and retrieve database +-- JpaRepository defines standard CRUD methods +-- Via JPA the developer can retrieve database from relational databases to Java objects and vice versa. + */ +public interface PersonJpaRepository extends JpaRepository { + Person findByEmail(String email); + + List findAllByOrderByNameAsc(); + + // JPA query, findBy does JPA magic with "Name", "Containing", "Or", "Email", "IgnoreCase" + List findByNameContainingIgnoreCaseOrEmailContainingIgnoreCase(String name, String email); + /* Custom JPA query articles, there are articles that show custom SQL as well + https://springframework.guru/spring-data-jpa-query/ + https://docs.spring.io/spring-data/jpa/docs/current/reference/html/#jpa.query-methods + */ + + // Custom JPA query + @Query( + value = "SELECT * FROM Person p WHERE p.name LIKE ?1 or p.email LIKE ?1", + nativeQuery = true) + List findByLikeTermNative(String term); + /* + https://www.baeldung.com/spring-data-jpa-query + */ +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/database/person/PersonViewController.java b/src/main/java/com/nighthawk/csa/mvc/database/person/PersonViewController.java new file mode 100644 index 00000000..f63550df --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/person/PersonViewController.java @@ -0,0 +1,84 @@ +package com.nighthawk.csa.mvc.database.person; + +import com.nighthawk.csa.mvc.database.ModelRepository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.*; + +import javax.validation.Valid; +import java.util.List; + +// Built using article: https://docs.spring.io/spring-framework/docs/3.2.x/spring-framework-reference/html/mvc.html +// or similar: https://asbnotebook.com/2020/04/11/spring-boot-thymeleaf-form-validation-example/ +@Controller +public class PersonViewController { + // Autowired enables Control to connect HTML and POJO Object to database easily for CRUD + @Autowired + private ModelRepository repository; + + @GetMapping("/database/person") + public String person(Model model) { + List list = repository.listAll(); + model.addAttribute("list", list); + return "mvc/database/person"; + } + + /* The HTML template Forms and PersonForm attributes are bound + @return - template for person form + @param - Person Class + */ + @GetMapping("/database/personcreate") + public String personAdd(Person person) { + return "mvc/database/personcreate"; + } + + /* Gathers the attributes filled out in the form, tests for and retrieves validation error + @param - Person object with @Valid + @param - BindingResult object + */ + @PostMapping("/database/personcreate") + public String personSave(@Valid Person person, BindingResult bindingResult) { + // Validation of Decorated PersonForm attributes + if (bindingResult.hasErrors()) { + return "mvc/database/personcreate"; + } + repository.save(person); + repository.addRoleToPerson(person.getEmail(), "ROLE_STUDENT"); + // Redirect to next step + return "redirect:/database/person"; + } + + @GetMapping("/database/personupdate/{id}") + public String personUpdate(@PathVariable("id") int id, Model model) { + model.addAttribute("person", repository.get(id)); + return "mvc/database/personupdate"; + } + + @PostMapping("/database/personupdate") + public String personUpdateSave(@Valid Person person, BindingResult bindingResult) { + // Validation of Decorated PersonForm attributes + if (bindingResult.hasErrors()) { + return "mvc/database/personupdate"; + } + repository.save(person); + repository.addRoleToPerson(person.getEmail(), "ROLE_STUDENT"); + + // Redirect to next step + return "redirect:/database/person"; + } + + @GetMapping("/database/persondelete/{id}") + public String personDelete(@PathVariable("id") long id) { + repository.delete(id); + return "redirect:/database/person"; + } + + @GetMapping("/database/person/search") + public String person() { + return "mvc/database/person_search"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/database/role/Role.java b/src/main/java/com/nighthawk/csa/mvc/database/role/Role.java new file mode 100644 index 00000000..da6727bc --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/role/Role.java @@ -0,0 +1,20 @@ +package com.nighthawk.csa.mvc.database.role; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +public class Role { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + @Column(unique=true) + private String name; +} diff --git a/src/main/java/com/nighthawk/csa/mvc/database/role/RoleJpaRepository.java b/src/main/java/com/nighthawk/csa/mvc/database/role/RoleJpaRepository.java new file mode 100644 index 00000000..180a323b --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/role/RoleJpaRepository.java @@ -0,0 +1,9 @@ +package com.nighthawk.csa.mvc.database.role; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface RoleJpaRepository extends JpaRepository { + Role findByName(String name); +} + + diff --git a/src/main/java/com/nighthawk/csa/model/SQL/Family.java b/src/main/java/com/nighthawk/csa/mvc/database/scrum/Scrum.java similarity index 59% rename from src/main/java/com/nighthawk/csa/model/SQL/Family.java rename to src/main/java/com/nighthawk/csa/mvc/database/scrum/Scrum.java index 1d824810..12454e8c 100644 --- a/src/main/java/com/nighthawk/csa/model/SQL/Family.java +++ b/src/main/java/com/nighthawk/csa/mvc/database/scrum/Scrum.java @@ -1,7 +1,8 @@ -package com.nighthawk.csa.model.SQL; +package com.nighthawk.csa.mvc.database.scrum; // https://projectlombok.org/features/all +import com.nighthawk.csa.mvc.database.person.Person; import lombok.*; import javax.persistence.*; @@ -10,12 +11,11 @@ /* Family Information Class */ +@Data @NoArgsConstructor -@Getter -@Setter -@ToString +@AllArgsConstructor @Entity -public class Family { +public class Scrum { @Id @GeneratedValue(strategy = GenerationType.AUTO) private Long id; @@ -28,11 +28,23 @@ public class Family { a ManyToOne always contains a foreign key from the source object's table a OneToOne relationship the foreign key may either be in the source object's table or the target object's table. */ - @ManyToOne + @OneToOne @JoinColumn(name = "primary_id") //foreign key is stored in table - public Person primary; + private Person primary; - @ManyToOne - @JoinColumn(name = "spouse_id") - public Person spouse; + @OneToOne + @JoinColumn(name = "member1_id") + private Person member1; + + @OneToOne + @JoinColumn(name = "member2_id") + private Person member2; + + @OneToOne + @JoinColumn(name = "member3_id") + private Person member3; + + @OneToOne + @JoinColumn(name = "member4_id") + public Person member4; } diff --git a/src/main/java/com/nighthawk/csa/mvc/database/scrum/ScrumJpaRepository.java b/src/main/java/com/nighthawk/csa/mvc/database/scrum/ScrumJpaRepository.java new file mode 100644 index 00000000..ad2fdaf4 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/scrum/ScrumJpaRepository.java @@ -0,0 +1,15 @@ +package com.nighthawk.csa.mvc.database.scrum; + +import org.springframework.data.jpa.repository.JpaRepository; + +import java.util.List; + +/* +Extends the JpaRepository interface from Spring Data JPA. +-- Java Persistent API (JPA) - Hibernate: map, store, update and retrieve database +-- JpaRepository defines standard CRUD methods +-- Via JPA the developer can retrieve database from relational databases to Java objects and vice versa. + */ +public interface ScrumJpaRepository extends JpaRepository { + List findAllByOrderByNameAsc(); +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/database/scrum/ScrumViewController.java b/src/main/java/com/nighthawk/csa/mvc/database/scrum/ScrumViewController.java new file mode 100644 index 00000000..91fd1ff0 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/database/scrum/ScrumViewController.java @@ -0,0 +1,69 @@ +package com.nighthawk.csa.mvc.database.scrum; + +import com.nighthawk.csa.mvc.database.ModelRepository; + +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.validation.BindingResult; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.servlet.mvc.support.RedirectAttributes; + +import javax.validation.Valid; + +// Built using video: https://www.youtube.com/watch?v=ctwRpskAeIU +@Controller +public class ScrumViewController { + + @Autowired + private ModelRepository modelRepository; + + + @GetMapping("/database/scrum") + public String scrumTeam(Model model) { + model.addAttribute("list", modelRepository.listAllScrums()); + return "mvc/database/scrum"; + } + + /* The HTML template Forms and Model attributes are bound + @return - Template for form + @param - Class for form + */ + @GetMapping("/database/scrum_create") + public String scrumTeamCreate(Model model) { + model.addAttribute("scrum", new Scrum()); + model.addAttribute("listPersons", modelRepository.listAll()); + return "mvc/database/scrum_form"; + } + + @GetMapping("/database/scrum_update/{id}") + public String scrumTeamUpdate(@PathVariable("id") int id, Model model) { + model.addAttribute("id", id); //passed to support using one form + model.addAttribute("scrum", modelRepository.getScrum(id)); + model.addAttribute("listPersons", modelRepository.listAll()); + return "mvc/database/scrum_form"; + } + + /* Gathers the attributes filled out in the form, tests for and retrieves validation error + @param - object with @Valid + @param - BindingResult object + */ + @PostMapping("/database/scrum_save") + public String saveData(@Valid Scrum scrum, BindingResult bindingResult, RedirectAttributes redirectAttributes) { + // Validation of Family attributes, validation of nested object supported + if (bindingResult.hasErrors()) { + return "mvc/database/scrum_form"; + } + // Redirect to next step + modelRepository.saveScrum(scrum); + return "redirect:/database/scrum"; + } + + @GetMapping("/database/scrum_delete/{id}") + public String scrumDelete(@PathVariable("id") long id) { + modelRepository.deleteScrum(id); + return "redirect:/database/scrum"; + } +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/algorithm/fibonacciModel/_Fibonacci.java b/src/main/java/com/nighthawk/csa/mvc/fibonacci/FibAbstractModel.java similarity index 73% rename from src/main/java/com/nighthawk/csa/algorithm/fibonacciModel/_Fibonacci.java rename to src/main/java/com/nighthawk/csa/mvc/fibonacci/FibAbstractModel.java index ef488c1b..29f451fc 100644 --- a/src/main/java/com/nighthawk/csa/algorithm/fibonacciModel/_Fibonacci.java +++ b/src/main/java/com/nighthawk/csa/mvc/fibonacci/FibAbstractModel.java @@ -1,6 +1,6 @@ -package com.nighthawk.csa.algorithm.fibonacciModel; +package com.nighthawk.csa.mvc.fibonacci; -import com.nighthawk.csa.consoleUI.ConsoleMethods; +import com.nighthawk.csa.utility.ConsoleMethods; import java.time.Duration; import java.time.Instant; @@ -10,12 +10,12 @@ import lombok.Getter; /* - _Fibonacci class contains generalized logic to capture and analyze a Fibonacci sequence. + _Fibonacci class contains generalized logic to capture and analyze a fibonacci sequence. _Fibonacci is an "abstract" class, meaning it can't be initialized directly The "_" in name is used to push this "Parent" Class to top of package file listing. */ @Getter // this will enable standard Getters on attributes in Class in form "getName" where "name" is attribute -public abstract class _Fibonacci { +public abstract class FibAbstractModel { int size; String name; int hashID; @@ -27,7 +27,7 @@ public abstract class _Fibonacci { Zero parameter constructor uses Telescoping technique to allow setting of the required value nth @param: none */ - public _Fibonacci() { + public FibAbstractModel() { this( 20); } @@ -35,12 +35,12 @@ public _Fibonacci() { Construct the nth fibonacci number @param: nth number, the value is constrained to 92 because of overflow in a long */ - public _Fibonacci(int nth) { + public FibAbstractModel(int nth) { this.size = nth; this.list = new ArrayList<>(); this.hashID = 0; this.hash = new HashMap<>(); - //initialize fibonacci and time algorithm + //initialize fibonacci and time mvc Instant start = Instant.now(); // time capture -- start this.init(); Instant end = Instant.now(); // time capture -- end @@ -48,13 +48,13 @@ public _Fibonacci(int nth) { } /* - Method is abstract as init() requires extender to define their own Fibonacci algorithm + Method is abstract as init() requires extender to define their own fibonacci mvc Method is protected as it is only authorized to someone who extends the class */ protected abstract void init(); /* - Number is added to Fibonacci sequence, current state of "list" is added to hash for hashID "num" + Number is added to fibonacci sequence, current state of "list" is added to hash for hashID "num" */ public void setData(long num) { list.add(num); @@ -69,14 +69,14 @@ public int getTimeElapsed() { } /* - Custom Getter to return last element in Fibonacci sequence + Custom Getter to return last element in fibonacci sequence */ public long getNth() { return list.get(size - 1); } /* - Custom Getter to return last Fibonacci sequence in HashMap + Custom Getter to return last fibonacci sequence in HashMap */ public Object getNthSeq(int i) { return hash.get(i); @@ -88,11 +88,11 @@ public Object getNthSeq(int i) { public void print() { ConsoleMethods.println("Init method = " + this.name); ConsoleMethods.println("Init time = " + this.getTimeElapsed()); - ConsoleMethods.println("Fibonacci Number " + this.size + " = " + this.getNth()); - ConsoleMethods.println("Fibonacci List = " + this.getList()); - ConsoleMethods.println("Fibonacci Hashmap = " + this.getHash()); + ConsoleMethods.println("fibonacci Number " + this.size + " = " + this.getNth()); + ConsoleMethods.println("fibonacci List = " + this.getList()); + ConsoleMethods.println("fibonacci Hashmap = " + this.getHash()); for (int i=0 ; i fibInit(int nth) { - //Fibonacci objects created with different initializers - List<_Fibonacci> fibList = new ArrayList<>(); - fibList.add(new FibFor(nth)); - fibList.add(new FibWhile(nth)); - fibList.add(new FibRecurse(nth)); - fibList.add(new FibStream(nth)); + public List fibInit(int nth) { + //fibonacci objects created with different initializers + List fibList = new ArrayList<>(); + fibList.add(new FibForModel(nth)); + fibList.add(new FibWhileModel(nth)); + fibList.add(new FibRecurseModel(nth)); + fibList.add(new FibStreamModel(nth)); return fibList; } // GET request,, parameters are passed within the URI - @GetMapping("/fib") + @GetMapping("/mvc/fibonacci") public String fib(@RequestParam(name="fibseq", required=false, defaultValue="2") String fibseq, Model model) { //nth is fibonacci request int nth = Integer.parseInt(fibseq); @@ -32,16 +31,16 @@ public String fib(@RequestParam(name="fibseq", required=false, defaultValue="2" //MODEL attributes are passed back html model.addAttribute("fibList", fibInit(nth)); - return "algorithm/fib"; //HTML render fibonacci results + return "mvc/fibonacci"; //HTML render fibonacci results } // Console UI is run out of the same Controller public static void main(String[] args) { - int nth = 20; //!!!make dynamic using consoleUI inputInt!!! 92 is max for long + int nth = 20; //!!!make dynamic using utility inputInt!!! 92 is max for long - List<_Fibonacci> fibList = new FibonacciController().fibInit(nth); - for (_Fibonacci fibonacci : fibList) + List fibList = new _FibController().fibInit(nth); + for (FibAbstractModel fibonacci : fibList) fibonacci.print(); //Console output fibonacci results } } \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/security/MvcConfig.java b/src/main/java/com/nighthawk/csa/mvc/security/MvcConfig.java new file mode 100644 index 00000000..347c0f47 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/security/MvcConfig.java @@ -0,0 +1,24 @@ +package com.nighthawk.csa.mvc.security; + +import org.springframework.context.annotation.*; +import org.springframework.web.servlet.config.annotation.*; + +@Configuration +public class MvcConfig implements WebMvcConfigurer { + + // set up your own index + @Override + public void addViewControllers(ViewControllerRegistry registry) { + registry.addViewController("/login").setViewName("login"); + } + + /* map path and location for "uploads" outside of application resources + ... creates a directory outside "static" folder, "file:volumes/uploads" + ... CRITICAL, without this uploaded file will not be loaded/displayed by frontend + */ + @Override + public void addResourceHandlers(final ResourceHandlerRegistry registry) { + registry.addResourceHandler("/volumes/uploads/**").addResourceLocations("file:volumes/uploads/"); + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/security/SecurityConfig.java b/src/main/java/com/nighthawk/csa/mvc/security/SecurityConfig.java new file mode 100644 index 00000000..eadb7837 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/security/SecurityConfig.java @@ -0,0 +1,59 @@ +package com.nighthawk.csa.mvc.security; + +import lombok.RequiredArgsConstructor; +import org.springframework.context.annotation.Configuration; +import org.springframework.security.config.annotation.authentication.builders.AuthenticationManagerBuilder; +import org.springframework.security.config.annotation.web.builders.HttpSecurity; +import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity; +import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter; +import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.web.util.matcher.AntPathRequestMatcher; + +import static org.springframework.http.HttpMethod.*; + +@Configuration +@EnableWebSecurity +@RequiredArgsConstructor //RequiredArgsConstructor makes the line below be able to pass that variable in on the fly +public class SecurityConfig extends WebSecurityConfigurerAdapter { + private final UserDetailsService userDetailsService; //constructor that gets past in below + private final BCryptPasswordEncoder bCryptPasswordEncoder; //password encoder from spring + + @Override + protected void configure(AuthenticationManagerBuilder auth) throws Exception { + auth.userDetailsService(userDetailsService).passwordEncoder(bCryptPasswordEncoder); // + } + + @Override + protected void configure(HttpSecurity http) throws Exception { + /* security rules ... + ... initial implementation is focused on protecting database information + ... "DELETE" is primary concern in authority rules, ADMIN only + ... "POST", actions desire STUDENT role + */ + http + .authorizeRequests() + .antMatchers(POST, "/api/person/post/**").hasAnyAuthority("ROLE_STUDENT") + .antMatchers(DELETE, "/api/person/delete/**").hasAnyAuthority("ROLE_ADMIN") + .antMatchers("/database/personupdate/**").hasAnyAuthority("ROLE_STUDENT") + .antMatchers("/database/persondelete/**").hasAnyAuthority("ROLE_ADMIN") + .antMatchers( "/api/person/**").permitAll() + .antMatchers( "/api/refresh/token/**").permitAll() + .antMatchers("/", "/starters/**", "/frontend/**", "/mvc/**", "/database/person/**", "/database/personcreate", "/database/scrum/**", "/course/**").permitAll() + .antMatchers("/resources/**", "/static/**", "/images/**", "/scss/**").permitAll() + .antMatchers("/volumes/uploads/**").permitAll() + .anyRequest().authenticated() + .and() + .formLogin() + .loginPage("/login") + .permitAll() + .and() + .logout() + .logoutRequestMatcher(new AntPathRequestMatcher("/logout")) + .logoutSuccessUrl("/database/person") + .permitAll() + ; + // Cross-Site Request Forgery needs to be disabled to allow activation of JS Fetch URIs + http.csrf().disable(); + } +} diff --git a/src/main/java/com/nighthawk/csa/mvc/stringOps/StringOps.md b/src/main/java/com/nighthawk/csa/mvc/stringOps/StringOps.md new file mode 100644 index 00000000..36579fb7 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/stringOps/StringOps.md @@ -0,0 +1,31 @@ +# StringOps with Spring/Java/JavaScript + +### Overview +This lab/challenge is intended to build on concepts from PBL and CB. Items #1-#4 are intended to start as an in class challenge, individual and/or team points can be applied to the week score as credit or extrac credit. This challenge will require using topics that "string" together concepts from the 1st half of the year. If you don't + +# Pull code and analyze. Get started on Activities for Credit/Extra Credit. Work as a Team, think of design and work split before coding. +1. **Hack** Find a user input sequence that causes an unhandled error condition (ie 500). Trap and handle the error condition in logical manner, aka same as other errors. +1. **Hack** Model method (with the managed String Sequence and a split delimiter return a List of Strings on each change). Add a tester method and incorporate into "model" tester +1. **Hack** Controller add a "split" action (given the action "split" and a delimter " or ," invoke model method to solve. Activity, add a new "split" event, get it to work between "control" and "model" and incorporate into the "control" tester. +1. **Hack** Add FrontEnd code for "split" use case, this should be considered as a result that is updated like the String Sequence on each update. Activity, add split delimiter as input ( or comma), perhaps you could smart calculate based off of input, consider placement and design of input and results so it seems logical. + +# Further Study Options +To show resolute mindset, engineer could/should study topicss that add to their tool chest. Enhancing or making complementary FRQ with technologies listed and shown in this code would help Team and Student receive higher scores. + +### Control Topics +* Java Switch Statements +* RequestEntity, ResponseEntity +* Control tester (static methods) +### Model Topics +* Java String Methods +* Java List, ArrayList +* College Board CSA FRQ2 +* Model tester (static methods) +### View Topics +* Thymeleaf work with Java Objects +* JavaScript API fetch, request and response + +### Future PBL and Mini-lab Ideas +1. Build StringOps into your Scrum Team project and/or individual project, be sure to highlight a portion for the FRQ2 solutions. +1. Establish plan for Team or individuals to complete MVC solution each week, perhaps on rotation in Scrum Board. Quality that was returned to Teacher on FRQ2 the first time needs to improve, particularly to be considered qulity ( A or B ). +1. String Ops could be used to build a messaging system between discrete systems, in a true *LightSequence GradShow* demonstration a series of commands or binary bits could be used to play the show. In the case of an Inventors List, such a sequence could be used to look up and iterate through a series page updates and provide an *Inventors show*. The inventors could be looked up through database records or APIs. In either case, validation could be done on Adminstration screen, followed by a play action. diff --git a/src/main/java/com/nighthawk/csa/mvc/stringOps/StringSeqController.java b/src/main/java/com/nighthawk/csa/mvc/stringOps/StringSeqController.java new file mode 100644 index 00000000..d8d54391 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/stringOps/StringSeqController.java @@ -0,0 +1,143 @@ +package com.nighthawk.csa.mvc.stringOps; + +import com.nighthawk.csa.utility.FunMath; +import org.json.simple.JSONObject; +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.http.ResponseEntity; +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestMethod; +import org.springframework.web.bind.annotation.RequestParam; + +import java.util.HashMap; +import java.util.Map; + +@Controller // HTTP requests are handled as a controller, using the @Controller annotation +public class StringSeqController { + // stringOps object + StringSeqModel string_ops = null; + + // Getter to transform string_ops object to JSON + public JSONObject getBody() { + Map body = new HashMap<>(); + body.put("data", string_ops.toString()); + body.put("title", string_ops.getTitle()); + body.put("status", string_ops.getStatus()); + body.put("events", string_ops.getEvents()); + return new JSONObject(body); + } + + public void stringEvent(Map map) { + // Get string action + String action = (String) map.get("action"); + + // Update string_ops based off of action + switch (action) { + case "new": // new sequence + String title = (String) map.get("title"); + //avoid condition of an empty title + if (title == null || title.length() == 0) + title = string_ops.getTitle(); + //create new object + this.string_ops = new StringSeqModel(); + this.string_ops.newStringSeq(title); + break; + + case "init": // init or update string sequence + String init = (String) map.get("new_sequence"); + this.string_ops.setStringSeq(init); + break; + + case "append": // update string + String add = (String) map.get("append_segment"); + this.string_ops.appendSegment(add); + break; + + case "insert": // insert segment at location + String ins = (String) map.get("insert_segment"); + int index = Integer.parseInt( (String) map.get("insert_location") ); + string_ops.insertSegmentAt(ins, index); + break; + + case "swap": // swap segment "out" for segment "in" + String out = (String) map.get("out_segment"); + String in = (String) map.get("in_segment"); + string_ops.swapSegment(out, in); + break; + + default: + // noop + } + } + + // String initial method + @GetMapping("/mvc/stringops") + public String strings(@RequestParam(name="sequence", required=false, defaultValue="") String sequence, Model model) { + //Set default database randomly + if ( FunMath.random(0,1) == 0) + string_ops = inventorList(); + else + string_ops = StringSeqModel.frg2Simulation(); + model.addAttribute("object", string_ops); + return "mvc/stringops"; //HTML render fibonacci results + } + + // Starting a new sequence + @RequestMapping(value = "/api/mvc/stringops/", method = RequestMethod.POST, produces = MediaType.APPLICATION_JSON_VALUE) + public ResponseEntity stringsNew(@RequestBody final Map map) { + // process string sequence action(s) + stringEvent(map); + + // create JSON object of string sequence resulting database and metadata + JSONObject body = this.getBody(); + + // send ResponseEntity body and status message + return new ResponseEntity<>(body, HttpStatus.OK); + } + + // Inventor List + public static StringSeqModel inventorList() { + // String initializer test + StringSeqController seqObject = new StringSeqController(); + Map map = new HashMap<>(); + + // new object and set a title + map.put("action", "new"); + map.put("title", "StringsController Inventor List"); + seqObject.stringEvent(map); + + // new test + map.put("action", "init"); + map.put("new_sequence", "Albert Einstein, Thomas Edison, Marie Curie"); + seqObject.stringEvent(map); + + // update test + map.put("action", "append"); + map.put("append_segment", ", Benjamin Franklin"); + seqObject.stringEvent(map); + + // insert test + map.put("action", "insert"); + map.put("insert_segment", "Alexander Graham Bell, "); + map.put("insert_location", "0" ); + seqObject.stringEvent(map); + + // swap test + map.put("action", "swap"); + map.put("out_segment", "Thomas Edison"); + map.put("in_segment", "Nikola Tesla"); + seqObject.stringEvent(map); + + return seqObject.string_ops; + } + + // Class tester + public static void main(String[] args) { + StringSeqModel inventors = inventorList(); + inventors.printHistory(); + } +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/stringOps/StringSeqModel.java b/src/main/java/com/nighthawk/csa/mvc/stringOps/StringSeqModel.java new file mode 100644 index 00000000..4fe091c5 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/stringOps/StringSeqModel.java @@ -0,0 +1,188 @@ +package com.nighthawk.csa.mvc.stringOps; + +import java.util.ArrayList; +import java.util.List; + +public class StringSeqModel { + private String stringSeq = null; + private String title = "none"; + private String status = "none"; + private final List events; + + // Zero argument Constructor + public StringSeqModel() { + this.events = new ArrayList<>(); + } + + // Getters + public String getTitle() { return this.title; } + public String getStatus() { return this.status; } + public List getEvents() { return this.events; } + + + // Setter to add and Event to Events + public void addEvent(String event) { + this.status = event; + this.events.add(event); + } + + // Setters + public void setTitle(String title) { this.title = title; } + public void setStatus(String status) { this.status = status; } + + // Set new string sequence properties + public void newStringSeq(String title) { + this.setTitle(title); + this.addEvent( "Construct '" + title + "' new object" ); + } + + // Set/Init string sequence + public void setStringSeq(String stringSeq) { + if (stringSeq.length() == 0) { + this.setStatus("Set string sequence failed: empty"); + } else if ( (this.stringSeq != null) && (stringSeq.compareTo(this.stringSeq) == 0) ) { + this.setStatus("Set string sequence failed: no change"); + } else { + this.addEvent( + (this.stringSeq == null) // ternary operator usage to consider null string + ? "Set string sequence '" + stringSeq + "'" + : "Update string sequence from '" + this.stringSeq + "' to: '" + stringSeq +"'" + ); + // replace new sequence over existing sequence in object + this.stringSeq = stringSeq; + } + } + + // Append "in" segment to end of string sequence + public void appendSegment(String in) { + if ((in.length() == 0) ) { + this.setStatus("Append string segment failed: empty"); + } else { + this.addEvent("Append to '" + + this.stringSeq + + "' segment: '" + + in + "'" + ); + + // create a gap to insert segment + this.setStringSeq( + this.stringSeq + + in + ); + } + } + + // Insert "in" segment at "position" + public void insertSegmentAt(String in, int index) { + if ( (in.length() == 0) ) { + this.setStatus("Insert string segment failed: empty"); + } else if (index > this.stringSeq.length()) { + this.setStatus("Insert index failed: out of bounds"); + } else { + this.addEvent("Insert into '" + + this.stringSeq + + "' new segment: '" + + in + + "' at index " + + index + ); + // create a gap to insert segment + this.setStringSeq( + this.stringSeq.substring(0, index) + + in + + this.stringSeq.substring(index) // single argument includes 'till end of string + ); + } + } + + // Swap "out" segment with "in" segment + public void swapSegment(String out, String in) { + if (out.length() == 0) { + this.setStatus("Swap segment failed: 'out' segment is empty"); + } else if ( out.compareTo(in) == 0 ) { + this.setStatus("Swap segment failed: 'out' and 'in' are equal"); + } else if ( !this.stringSeq.contains(out) ) { + this.setStatus("Swap segment failed: 'out' segment not found within string sequence"); + } else { + this.addEvent("Swap '" + this.stringSeq + + "' old segment '" + out + + "' with new segment '" + in + "'" + ); + + // find gap for out segment + int index1 = this.stringSeq.indexOf(out); + int index2 = index1 + out.length(); + + // build front part and back part of new segemtn + String front = this.stringSeq.substring(0, index1); + String back = this.stringSeq.substring(index2); // single argument includes 'till end of string + + // concatenate "in" between front and back parts of original + this.setStringSeq( + front + + in + + back + ); + } + } + + // stringOps object reference will return value of sequence attribute + @Override + public String toString() { + return this.stringSeq; + } + + // Console output helper method + public void printHistory() { + System.out.println(this.title); + System.out.println("Current sequence: " + this); + System.out.println("Last action: " + this.status); + System.out.println(); + + System.out.println("Change History ..."); + for (String event: this.getEvents()) + System.out.println(event); + } + + // FRQ2 simulation + public static StringSeqModel frg2Simulation() { + // Test 0 construct gradShow object + StringSeqModel gradShow = new StringSeqModel(); + gradShow.addEvent("Test (a): construct gradShow object"); + gradShow.newStringSeq("stringOps FRQ 2 gradShow LightSequence"); + + // Test1 set light sequence + gradShow.addEvent("Test (b): set light sequence"); + gradShow.setStringSeq("0101 0101 0101"); + + // Test2 change upload of object + gradShow.addEvent("Test (c): update light sequence"); + gradShow.setStringSeq("0011 0011 0011"); + + // Test3 insert into upload of object + gradShow.addEvent("Test (d): insert segment into light sequence at position"); + gradShow.insertSegmentAt("1111 1111", 4); + + // Test4 replacing segment with light sequence. + gradShow.addEvent("Test (f): remove segment from front, end, and middle of light sequence"); + gradShow.setStringSeq("1100000111"); + gradShow.swapSegment("11", ""); + gradShow.setStringSeq("0000011"); + gradShow.swapSegment("11", ""); + gradShow.setStringSeq("1100000111"); + gradShow.swapSegment("00", ""); + + // History of events + return gradShow; + } + + // Class tester + public static void main(String[] args) { + // FRQ2 result simulation using stringOps Class + StringSeqModel gradShow = StringSeqModel.frg2Simulation(); + + // History of events + gradShow.printHistory(); + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/typingGame/typingAPI.java b/src/main/java/com/nighthawk/csa/mvc/typingGame/typingAPI.java new file mode 100644 index 00000000..34e3c645 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/typingGame/typingAPI.java @@ -0,0 +1,24 @@ +package com.nighthawk.csa.mvc.typingGame; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.ResponseBody; + +@Controller +class TypingAPI { + @GetMapping("/mvc/gettext") + @ResponseBody + public String getText() { + // hard coded text for now + String[] texts = { + "public class Main {\n\tpublic static void main(String[] args) {\n\t\tSystem.out.println(\"Hello World\");\n\t}\n}", + "if (20 > 18) {\n\tSystem.out.println(\"20 is greater than 18\");\n}", + "for (int i = 0; i < 5; i++) {\n\tSystem.out.println(i);\n}", + "int i = 0;\nwhile (i < 5) {\n\tSystem.out.println(i);\n\ti++;\n}", + "int i = 0;\ndo {\n\tSystem.out.println(i);\n\ti++;\n} while (i < 5);", + "String[] cars = {\"Volvo\", \"BMW\", \"Ford\", \"Mazda\"};\ncars[0] = \"Opel\";\nSystem.out.println(cars[0]);\nSystem.out.println(cars.length);" }; + int randomNumber = (int) (Math.random() * texts.length); + + return texts[randomNumber]; + } +} diff --git a/src/main/java/com/nighthawk/csa/mvc/typingGame/typingController.java b/src/main/java/com/nighthawk/csa/mvc/typingGame/typingController.java new file mode 100644 index 00000000..1950cf04 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/typingGame/typingController.java @@ -0,0 +1,14 @@ +package com.nighthawk.csa.mvc.typingGame; + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +@Controller +public class typingController { + + @GetMapping("/mvc/typing") + public String typing() { + return "mvc/typing"; + } + +} diff --git a/src/main/java/com/nighthawk/csa/mvc/upload/Upload.java b/src/main/java/com/nighthawk/csa/mvc/upload/Upload.java new file mode 100644 index 00000000..35aed357 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/upload/Upload.java @@ -0,0 +1,23 @@ +package com.nighthawk.csa.mvc.upload; + +import lombok.AllArgsConstructor; +import lombok.Data; +import lombok.NoArgsConstructor; + +import javax.persistence.*; + +@Data +@NoArgsConstructor +@AllArgsConstructor +@Entity +public class Upload { + @Id + @GeneratedValue(strategy = GenerationType.AUTO) + private Long id; + + private String file; + + private String type; + + private Long size; +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/mvc/upload/UploadController.java b/src/main/java/com/nighthawk/csa/mvc/upload/UploadController.java new file mode 100644 index 00000000..52070bcc --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/upload/UploadController.java @@ -0,0 +1,93 @@ +package com.nighthawk.csa.mvc.upload; + + +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestParam; + +import org.springframework.beans.factory.annotation.Autowired; + +import org.springframework.ui.Model; +import org.springframework.web.multipart.MultipartFile; + +import java.util.List; +import java.io.File; +import java.io.FileOutputStream; +import java.io.BufferedOutputStream; +import java.io.IOException; + +/* UploadController +To upload dynamic image there are many considerations. Here are highlights: + +Step 1: Create a directory outside "static" folder and "limit" size +... i. ) MvcConfig.java is used to addResourceHandlers, SecurityConfig exception if using Spring Security +... ii.) MainWebAppInitializer.java sets limits on upload size + +Step 2: Upload files in media directory +... i. ) see "uploads" below and handling of filepath and web path +... ii. ) see "Files.write" or "stream.write" below as options in writing file to server + +Step 3: Implement Frontend +... i. ) upload.html uses Form with enctype="multipart/form-data" +... ii ) MultipartFile is used below to extract data and metadata from upload action +... iii ) upload.html image tag requires preprocessor Thymeleaf syntax: + */ +@Controller +public class UploadController { + @Autowired + private UploadRepository repo; + + // user action page: upload controls and displays a history of images + @GetMapping("/mvc/upload") + public String mvcUpload(Model model) { + List files = repo.findAll(); // extract image history + + model.addAttribute("files", files); + return "mvc/upload"; + } + + // uploader page: filesystem and database management of uploaded image + @PostMapping("/mvc/uploader") + public String mvcUploader(@RequestParam("filename") MultipartFile formFile, Model modelMap) { + /* The static directory is loaded at startup. UploadING images or makING changes to any files or + folders under the static folder will not reflect as ApplicationContext is already initialized. */ + String filePath = "volumes/uploads/"; // thus, uploads defined outside of static for dynamic updates + String webPath = "/" + filePath; // webPath + + // A database table, using Upload POJO, is remembers location of upload and associated metadata + Upload repoFile = new Upload(); + repoFile.setFile(webPath + formFile.getOriginalFilename()); + repoFile.setType(formFile.getContentType()); + repoFile.setSize(formFile.getSize()); + + // try/catch is in place, but error handling is not implemented (returns without alerts) + try { + // Creating the directory to store file + File dir = new File( filePath ); + if (!dir.exists()) + dir.mkdirs(); + + // Create the file on server + byte[] bytes = formFile.getBytes(); + + // File write alternatives (going with Stream for now as in theory it would be non-blocking) + String path = filePath + formFile.getOriginalFilename(); + File serverFile = new File( path ); + BufferedOutputStream stream = new BufferedOutputStream( + new FileOutputStream(serverFile)); + stream.write(bytes); + stream.close(); + + // JPA save + repo.save(repoFile); + + } catch (IOException e) { + e.printStackTrace(); // app stays alive, errors go to run console, /var/log/syslog + } + + // Redirect back to action page + return "redirect:/mvc/upload"; + } + +} diff --git a/src/main/java/com/nighthawk/csa/mvc/upload/UploadRepository.java b/src/main/java/com/nighthawk/csa/mvc/upload/UploadRepository.java new file mode 100644 index 00000000..ef1aa6ae --- /dev/null +++ b/src/main/java/com/nighthawk/csa/mvc/upload/UploadRepository.java @@ -0,0 +1,7 @@ +package com.nighthawk.csa.mvc.upload; + +import org.springframework.data.jpa.repository.JpaRepository; + +public interface UploadRepository extends JpaRepository { +} + diff --git a/src/main/java/com/nighthawk/csa/starters/Covid19APIController.java b/src/main/java/com/nighthawk/csa/starters/Covid19APIController.java new file mode 100644 index 00000000..372217e3 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/starters/Covid19APIController.java @@ -0,0 +1,54 @@ +package com.nighthawk.csa.starters; + +import org.json.simple.parser.ParseException; +import org.springframework.stereotype.Controller; +import org.springframework.web.bind.annotation.GetMapping; + +import org.springframework.ui.Model; +import com.fasterxml.jackson.databind.ObjectMapper; +import java.util.HashMap; + +import org.json.simple.JSONObject; +import org.json.simple.parser.JSONParser; + +import java.io.IOException; +import java.net.URI; +import java.net.http.HttpClient; +import java.net.http.HttpRequest; +import java.net.http.HttpResponse; + +@Controller +public class Covid19APIController { + + // GET request, no parameters + @GetMapping("/starters/covid19") + public String covid19(Model model) throws IOException, InterruptedException, ParseException { + //online link https://rapidapi.com/spamakashrajtech/api/corona-virus-world-and-india-data/ + + //rapid api setup: + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create("https://corona-virus-world-and-india-data.p.rapidapi.com/api")) + .header("x-rapidapi-key", "dec069b877msh0d9d0827664078cp1a18fajsn2afac35ae063") + .header("x-rapidapi-host", "corona-virus-world-and-india-data.p.rapidapi.com") + .method("GET", HttpRequest.BodyPublishers.noBody()) + .build(); + //rapid api call + HttpResponse response = HttpClient.newHttpClient().send(request, HttpResponse.BodyHandlers.ofString()); + + //alternative #1: convert response.body() to java hash map + var map = new ObjectMapper().readValue(response.body(), HashMap.class); + + //alternative #2: convert response.body() to JSON object + Object obj = new JSONParser().parse(response.body()); + JSONObject jo = (JSONObject) obj; + + //pass stats to view + model.addAttribute("map", map); + model.addAttribute("jo", jo); + model.addAttribute("world_map", map.get("world_total")); //illustrative of map get + model.addAttribute("world_jo", jo.get("world_total")); //illustrative of jo get + + return "starters/covid19"; + } + +} diff --git a/src/main/java/com/nighthawk/csa/starters/GreetController.java b/src/main/java/com/nighthawk/csa/starters/GreetController.java new file mode 100644 index 00000000..084e0fb9 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/starters/GreetController.java @@ -0,0 +1,19 @@ +package com.nighthawk.csa.starters; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestParam; + +@Controller // HTTP requests are handled as a controller, using the @Controller annotation +public class GreetController { + + @GetMapping("/starters/greet") + // CONTROLLER handles GET request for /greeting, maps it to greeting() and does variable bindings + public String greeting(@RequestParam(name = "name", required = false, defaultValue = "World") String name, Model model) { + // @RequestParam handles required and default values, name and database are class variables, database looking like JSON + model.addAttribute("name", name); // MODEL is passed to html + return "starters/greet"; // returns HTML VIEW (greeting) + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/starters/image/ImageController.java b/src/main/java/com/nighthawk/csa/starters/image/ImageController.java new file mode 100644 index 00000000..065e413b --- /dev/null +++ b/src/main/java/com/nighthawk/csa/starters/image/ImageController.java @@ -0,0 +1,48 @@ +package com.nighthawk.csa.starters.image; + +import org.springframework.stereotype.Controller; +import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.GetMapping; + +import java.util.ArrayList; +import java.util.List; + +@Controller // HTTP requests are handled as a controller, using the @Controller annotation +public class ImageController { + + @GetMapping("/starters/image") + public String image(Model model) { + //String web_server = "http://localhost:8080/"; + String web_server = "https://csa.nighthawkcodingsociety.com"; + List lii = new ArrayList<>(); + + String file0 = "/images/Mona_Lisa.png"; + lii.add(new ImageInfo(file0, web_server+file0, 12)); + lii.get(0).read_image(); + + String file1 = "/images/bulb_on.gif"; + lii.add(new ImageInfo(file1, web_server+file1, 2)); + lii.get(1).read_image(); + + String file2 = "/images/bulb_off.png"; + lii.add(new ImageInfo(file2, web_server+file2, 7)); + lii.get(2).read_image(); + + model.addAttribute("lii", lii); + return "starters/image"; + } + + @GetMapping("/starters/grayscale") + public String image_grayscale(Model model) { + //String web_server = "http://localhost:8080/"; + String web_server = "https://csa.nighthawkcodingsociety.com"; + List lii = new ArrayList<>(); + + String file0 = "/images/Mona_Lisa.png"; + lii.add(new ImageInfo(file0, web_server+file0, 12)); + String str = lii.get(0).grayscale(); + model.addAttribute("str", str); + return "starters/image_grayscale"; + } + +} \ No newline at end of file diff --git a/src/main/java/com/nighthawk/csa/model/starters/ImageInfo.java b/src/main/java/com/nighthawk/csa/starters/image/ImageInfo.java similarity index 94% rename from src/main/java/com/nighthawk/csa/model/starters/ImageInfo.java rename to src/main/java/com/nighthawk/csa/starters/image/ImageInfo.java index 432a738a..86d272b3 100644 --- a/src/main/java/com/nighthawk/csa/model/starters/ImageInfo.java +++ b/src/main/java/com/nighthawk/csa/starters/image/ImageInfo.java @@ -1,13 +1,10 @@ -package com.nighthawk.csa.model.starters; +package com.nighthawk.csa.starters.image; import lombok.Getter; import org.apache.tomcat.util.codec.binary.Base64; -import org.apache.tomcat.util.codec.binary.StringUtils; import java.awt.image.DataBufferByte; -import java.awt.image.WritableRaster; import java.io.*; -import java.net.MalformedURLException; import java.net.URL; import java.awt.Color; import java.awt.image.BufferedImage; @@ -66,7 +63,7 @@ public String grayscale() { byte[] pixels = image_to_pixels(img); // See method definition int[] pixels_int = grayscale(pixels); String base64 = pixels_to_base64(img.getWidth(), img.getHeight(), pixels_int); - return "data:image/jpg;base64,"+base64; + return "database:image/jpg;base64,"+base64; } catch (IOException e) { e.printStackTrace(); } @@ -135,7 +132,7 @@ public String pixels_to_base64(int width, int height, int[] pixels) throws IOExc /** - building ARGB data + building ARGB database An int is 4 bytes Alpha in byte 4, red in byte 3, green in byte 2, blue in byte 1 */ @@ -184,13 +181,6 @@ public String getBinary(int row, int col) { String.format("%8s", Integer.toBinaryString(rgb_matrix[h][w][2])).replace(' ', '0') ; } - public String[] convert_to_ascii(){ - int[][] gs = this.to_grayscale(); - int[][] scaled_gs = this.scale(gs); - //return this.to_ascii_array(scaled_gs); - return new String[1]; - } - public int[][] to_grayscale(){ // grey scale is calculated to average of pixel int[][] gs = new int[height][width]; diff --git a/src/main/java/com/nighthawk/csa/consoleUI/ConsoleMethods.java b/src/main/java/com/nighthawk/csa/utility/ConsoleMethods.java similarity index 96% rename from src/main/java/com/nighthawk/csa/consoleUI/ConsoleMethods.java rename to src/main/java/com/nighthawk/csa/utility/ConsoleMethods.java index 86e81f41..cbb0dc2e 100644 --- a/src/main/java/com/nighthawk/csa/consoleUI/ConsoleMethods.java +++ b/src/main/java/com/nighthawk/csa/utility/ConsoleMethods.java @@ -1,8 +1,8 @@ -package com.nighthawk.csa.consoleUI; +package com.nighthawk.csa.utility; public class ConsoleMethods { - //Method to make sure no data is available in the + //Method to make sure no database is available in the //input stream private static void inputFlush() { try { diff --git a/src/main/java/com/nighthawk/csa/utility/FunMath.java b/src/main/java/com/nighthawk/csa/utility/FunMath.java new file mode 100644 index 00000000..1fa2be42 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/utility/FunMath.java @@ -0,0 +1,80 @@ +package com.nighthawk.csa.utility; + +import java.util.ArrayList; +import java.util.List; + +/* Static FunMath Algorithms */ +public class FunMath { + /* Convert num into a list of digits of the specified base + num: an integer + base: binary, octal, decimal, hexadecimal + @return: a list containing the series of digits of specified base + */ + static public List baseConvert(int num, int base) { + List num_list = new ArrayList<>(); // what is List versus ArrayList? Which one is Abstract? + do { + num_list.add(0, num % base); // what does this do? explain boxing and unboxing + num /= base; // what does this do? + } while (num > 0); // why did I put this on the end + + return num_list; + } + + /* Recursion mvc that does the summation of series of integers up to n + num: an integer + @return: an integer containing summation total + */ + static public int sumUp(int n) { + return n == 0 ? 0 : n + sumUp(n - 1); // what is this called? hint TO. + } + + /* Random mvc that finds a number in low to high range (inclusive) + low: integer + high: integer + @return: an integer containing random number + */ + static public int random(int low, int high) { + int multiplier = (high - low) + 1; // multiplier is one plus difference as int cast truncates + return (int) (Math.random() * multiplier) + low; // plus low establishes floor + } + + /* FunMath Tester + */ + public static void main(String[] args) { + System.out.println("Sum Up testing for 3, 4, 5, 6, 7"); + System.out.println(sumUp(3)); + System.out.println(sumUp(4)); + System.out.println(sumUp(5)); + System.out.println(sumUp(6)); + System.out.println(sumUp(7)); + + System.out.println("Base 2 to array for 0, 255, 256"); + System.out.println(baseConvert(0,2)); + System.out.println(baseConvert(255,2)); + System.out.println(baseConvert(256,2)); + + System.out.println("Base 8 to array for 0, 255, 256"); + System.out.println(baseConvert(0,28)); + System.out.println(baseConvert(255,8)); + System.out.println(baseConvert(256,8)); + + System.out.println("Base 10 to array for 0, 255, 256"); + System.out.println(baseConvert(0,10)); + System.out.println(baseConvert(255,10)); + System.out.println(baseConvert(256,10)); + + System.out.println("Base 16 to array for 0, 255, 256"); + System.out.println(baseConvert(0,16)); + System.out.println(baseConvert(255,16)); + System.out.println(baseConvert(256,16)); + + System.out.println("Random between 0,1, 10 times"); + for (int i = 0; i < 10; i++) + System.out.print( random(0,1) ); + + System.out.println("\nRandom between 1,8, 20 times"); + for (int i = 0; i < 20; i++) + System.out.print( random(1,8) ); + } +} + diff --git a/src/main/java/com/nighthawk/csa/model/linkedlists/CircleQueue.java b/src/main/java/com/nighthawk/csa/utility/LinkedLists/CircleQueue.java similarity index 94% rename from src/main/java/com/nighthawk/csa/model/linkedlists/CircleQueue.java rename to src/main/java/com/nighthawk/csa/utility/LinkedLists/CircleQueue.java index b6c8347f..a6df2826 100644 --- a/src/main/java/com/nighthawk/csa/model/linkedlists/CircleQueue.java +++ b/src/main/java/com/nighthawk/csa/utility/LinkedLists/CircleQueue.java @@ -1,6 +1,4 @@ -package com.nighthawk.csa.model.linkedlists; - -import java.util.*; +package com.nighthawk.csa.utility.LinkedLists; /** * Implementation of Queue, using LinkedList (previous and next). @@ -15,8 +13,7 @@ public class CircleQueue private LinkedList currentNode; /** - * Constructor for the SinglyLinkedList object - * Generates an empty list. + * Constructor generates an empty list. */ public CircleQueue() { @@ -100,7 +97,7 @@ public void setPrevious() /** * Add a new object at the end of the Queue, * - * @param opaqueObject is the data to be inserted in the Queue object. + * @param opaqueObject is the database to be inserted in the Queue object. */ public void add(Object opaqueObject) { @@ -156,7 +153,7 @@ public String toString() LinkedList node = headNode; // start from the head while (node != null) { - queueToString.append("(").append(node.getObject()).append(")"); // append the data to output string + queueToString.append("(").append(node.getObject()).append(")"); // append the database to output string node = node.getNext(); // go to next node if (node != null) queueToString.append(", "); diff --git a/src/main/java/com/nighthawk/csa/model/linkedlists/LinkedList.java b/src/main/java/com/nighthawk/csa/utility/LinkedLists/LinkedList.java similarity index 90% rename from src/main/java/com/nighthawk/csa/model/linkedlists/LinkedList.java rename to src/main/java/com/nighthawk/csa/utility/LinkedLists/LinkedList.java index 395583fe..3d7c12f2 100644 --- a/src/main/java/com/nighthawk/csa/model/linkedlists/LinkedList.java +++ b/src/main/java/com/nighthawk/csa/utility/LinkedLists/LinkedList.java @@ -1,6 +1,6 @@ -package com.nighthawk.csa.model.linkedlists; +package com.nighthawk.csa.utility.LinkedLists; /** - * Implementation of a Linked List with an Object reference as data; forward and backward links point to adjacent Nodes. + * Implementation of a Linked List with an Object reference as database; forward and backward links point to adjacent Nodes. * */ @@ -18,9 +18,9 @@ public class LinkedList */ public LinkedList(Object opaqueObject, LinkedList node) { - setObject(opaqueObject); - setPrevNode(node); - setNextNode(null); + this.setObject(opaqueObject); + this.setPrevNode(node); + this.setNextNode(null); } /** diff --git a/src/main/java/com/nighthawk/csa/model/linkedlists/Stack.java b/src/main/java/com/nighthawk/csa/utility/LinkedLists/Stack.java similarity index 88% rename from src/main/java/com/nighthawk/csa/model/linkedlists/Stack.java rename to src/main/java/com/nighthawk/csa/utility/LinkedLists/Stack.java index d7cbee78..48abbdb2 100644 --- a/src/main/java/com/nighthawk/csa/model/linkedlists/Stack.java +++ b/src/main/java/com/nighthawk/csa/utility/LinkedLists/Stack.java @@ -1,6 +1,5 @@ -package com.nighthawk.csa.model.linkedlists; +package com.nighthawk.csa.utility.LinkedLists; -import java.util.*; /** * Implementation of Stack, using LinkedList (previous only). @@ -26,12 +25,10 @@ public Stack() * * @return the current objects value in Stack. */ - public Object getObject() + public Object peek() { if (lifo == null) - { - throw new NoSuchElementException(); - } + return null; else return lifo.getObject(); } @@ -39,7 +36,7 @@ public Object getObject() /** * Inserts a new object at the top of this Stack, * - * @param value is the data to be inserted at the top of the Stack. + * @param value is the database to be inserted at the top of the Stack. */ public void push(Object value) { @@ -78,7 +75,7 @@ public String toString() LinkedList node = lifo; // start from the back while (node != null) { - stackToString.append(node.getObject()); // append the data to output string + stackToString.append(node.getObject()); // append the database to output string node = node.getPrevious(); // go to previous node if (node != null) stackToString.append(", "); diff --git a/src/main/java/com/nighthawk/csa/model/linkedlists/StackDriver.java b/src/main/java/com/nighthawk/csa/utility/LinkedLists/StackDriver.java similarity index 80% rename from src/main/java/com/nighthawk/csa/model/linkedlists/StackDriver.java rename to src/main/java/com/nighthawk/csa/utility/LinkedLists/StackDriver.java index d9108301..0df105d4 100644 --- a/src/main/java/com/nighthawk/csa/model/linkedlists/StackDriver.java +++ b/src/main/java/com/nighthawk/csa/utility/LinkedLists/StackDriver.java @@ -1,10 +1,10 @@ -package com.nighthawk.csa.model.linkedlists; +package com.nighthawk.csa.utility.LinkedLists; -import com.nighthawk.csa.consoleUI.ConsoleMethods; -import com.nighthawk.csa.algorithm.genericDataModel.Alphabet; -import com.nighthawk.csa.algorithm.genericDataModel.Animal; -import com.nighthawk.csa.algorithm.genericDataModel.Cupcakes; +import com.nighthawk.csa.utility.ConsoleMethods; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Alphabet; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Animal; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Cupcakes; /** * Stack Driver takes a list of Objects and puts them onto the Stack @@ -33,7 +33,7 @@ public void pushStack(Object[] objects) for (Object o : objects) { stack.push(o); - ConsoleMethods.println("Push: " + stack.getObject() + " " + stack); + ConsoleMethods.println("Push: " + stack.peek() + " " + stack); this.count++; } ConsoleMethods.println(); @@ -43,7 +43,7 @@ public void pushStack(Object[] objects) public void showStack() { ConsoleMethods.println("Size: " + count); - ConsoleMethods.println("Top Element: " + stack.getObject()); + ConsoleMethods.println("Top Element: " + stack.peek()); ConsoleMethods.println("Full Stack: " + stack); ConsoleMethods.println(); } diff --git a/src/main/java/com/nighthawk/csa/utility/LinkedLists2/LinkedList.java b/src/main/java/com/nighthawk/csa/utility/LinkedLists2/LinkedList.java new file mode 100644 index 00000000..b9263a87 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/utility/LinkedLists2/LinkedList.java @@ -0,0 +1,98 @@ +package com.nighthawk.csa.utility.LinkedLists2; +/** + * Implementation of a Double Linked List; forward and backward links point to adjacent Nodes. + * + */ + +public class LinkedList +{ + private T data; + private LinkedList prevNode, nextNode; + + /** + * Constructs a new element + * + * @param data, data of object + * @param node, previous node + */ + public LinkedList(T data, LinkedList node) + { + this.setData(data); + this.setPrevNode(node); + this.setNextNode(null); + } + + /** + * Clone an object, + * + * @param node object to clone + */ + public LinkedList(LinkedList node) + { + this.setData(node.data); + this.setPrevNode(node.prevNode); + this.setNextNode(node.nextNode); + } + + /** + * Setter for T data in DoubleLinkedNode object + * + * @param data, update data of object + */ + public void setData(T data) + { + this.data = data; + } + + /** + * Returns T data for this element + * + * @return data associated with object + */ + public T getData() + { + return this.data; + } + + /** + * Setter for prevNode in DoubleLinkedNode object + * + * @param node, prevNode to current Object + */ + public void setPrevNode(LinkedList node) + { + this.prevNode = node; + } + + /** + * Setter for nextNode in DoubleLinkedNode object + * + * @param node, nextNode to current Object + */ + public void setNextNode(LinkedList node) + { + this.nextNode = node; + } + + + /** + * Returns reference to previous object in list + * + * @return the previous object in the list + */ + public LinkedList getPrevious() + { + return this.prevNode; + } + + /** + * Returns reference to next object in list + * + * @return the next object in the list + */ + public LinkedList getNext() + { + return this.nextNode; + } + +} diff --git a/src/main/java/com/nighthawk/csa/utility/LinkedLists2/Queue.java b/src/main/java/com/nighthawk/csa/utility/LinkedLists2/Queue.java new file mode 100644 index 00000000..5bd9181c --- /dev/null +++ b/src/main/java/com/nighthawk/csa/utility/LinkedLists2/Queue.java @@ -0,0 +1,267 @@ +package com.nighthawk.csa.utility.LinkedLists2; + +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Alphabet; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Animal; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Cupcakes; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Generics; + +import java.util.Iterator; + +/** + * Queue: custom implementation + * @author John Mortensen + * + * 1. Uses custom LinkedList of Generic type T + * 2. Implements Iterable + * 3. "has a" LinkedList for head and tail + */ +public class Queue implements Iterable { + LinkedList head = null, tail = null; + + /** + * Add a new object at the end of the Queue, + * + * @param data, is the data to be inserted in the Queue. + */ + public void add(T data) { + // add new object to end of Queue + LinkedList tail = new LinkedList<>(data, null); + + if (this.head == null) // initial condition + this.head = this.tail = tail; + else { // nodes in queue + this.tail.setNextNode(tail); // current tail points to new tail + this.tail = tail; // update tail + } + } + + /** + * Returns the data of head. + * + * @return data, the dequeued data + */ + public T delete() { + T data = this.peek(); + if (this.tail != null) { // initial condition + this.head = this.head.getNext(); // current tail points to new tail + if (this.head != null) { + this.head.setPrevNode(tail); + } + } + return data; + } + + /** + * Returns the data of head. + * + * @return this.head.getData(), the head data in Queue. + */ + public T peek() { + return this.head.getData(); + } + + /** + * Returns the head object. + * + * @return this.head, the head object in Queue. + */ + public LinkedList getHead() { + return this.head; + } + + /** + * Returns the tail object. + * + * @return this.tail, the last object in Queue + */ + public LinkedList getTail() { + return this.tail; + } + + /** + * Returns the iterator object. + * + * @return this, instance of object + */ + public Iterator iterator() { + return new QueueIterator<>(this); + } +} + +/** + * Queue Iterator + * + * 1. "has a" current reference in Queue + * 2. supports iterable required methods for next that returns a data object + */ +class QueueIterator implements Iterator { + LinkedList current; // current element in iteration + + // Returns the head of the list + public QueueIterator(Queue q) { + current = q.getHead(); + } + + // hasNext informs if next element exists + public boolean hasNext() { + return current != null; + } + + // next returns data object and advances to next position in queue + public T next() { + T data = current.getData(); + current = current.getNext(); + return data; + } +} + +/** + * Queue Manager + * 1. "has a" Queue + * 2. support management of Queue tasks (aka: titling, adding a list, printing) + */ +class QueueManager { + // queue data + static public boolean DEBUG = false; + private final String name; // name of queue + private long count = 0; // number of objects in queue + private final Queue queue = new Queue<>(); // queue object + + /** + * Queue constructor + * Title with empty queue + */ + public QueueManager(String name) { + this.name = name; + } + + /** + * Queue constructor + * Title with series of Arrays of Objects + */ + @SafeVarargs + public QueueManager(String name, T[]... seriesOfObjects) { + this.name = name; + this.addList(seriesOfObjects); + } + + /** + * Queue constructor + * Title with empty queue + */ + public long size() { + return count; + } + + /** + * Add a list of objects to queue + */ + @SafeVarargs + public final void addList(T[]... seriesOfObjects) { + for (T[] objects: seriesOfObjects) + for (T data : objects) { + this.add(data); + } + } + + /** + * Delete or dequeue all objects + */ + public void deleteList() { + while (this.queue.getHead() != null) { + this.delete(); + } + } + + /** + * Add an object to queue + */ + public void add(T data) { + this.queue.add(data); + this.count++; + if (DEBUG) { + System.out.println("Enqueued data: " + data); + printQueue(); + } + } + + /** + * Remove an object from the queue + */ + public T delete() { + T data = this.queue.delete(); + this.count--; + if (DEBUG) { + System.out.println("Dequeued data: " + data); + printQueue(); + } + return data; + } + + /** + * Print objects from queue + */ + public void printQueue() { + System.out.print(this.name + " count: " + this.size()); + System.out.print(", data: "); + if (this.queue.getHead() == null) { + System.out.println( "null"); + } else { + for (Object o : this.queue) + System.out.print(o + " "); + System.out.println(); + } + } +} + +/** + * Driver Class + * Tests queue with string, integers, and mixes of Classes and types + */ +class QueueTester { + public static void main(String[] args) + { + // Create iterable Queue of Words + QueueManager.DEBUG = false; + String[] words = new String[] { "seven", "slimy", "snakes", "sallying", "slowly", "slithered", "southward"}; + QueueManager qWords = new QueueManager<>("Words", words ); + qWords.printQueue(); + qWords.deleteList(); + + // Create iterable Queue of Integers + QueueManager.DEBUG = false; + Object[] numbers = new Integer[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + QueueManager qNums = new QueueManager<>("Integers", numbers ); + qNums.printQueue(); + qNums.deleteList(); + + // Create iterable Queue of NCS Generics + QueueManager.DEBUG = false; + Animal.setOrder(Animal.KeyType.name); + Alphabet.setOrder(Alphabet.KeyType.letter); + Cupcakes.setOrder(Cupcakes.KeyType.flavor); + // Illustrates use of a series of repeating arguments + QueueManager qGenerics = new QueueManager<>("Custom Generics", + Alphabet.alphabetData(), + Animal.animalData(), + Cupcakes.cupCakeData() + ); + qGenerics.printQueue(); + qGenerics.deleteList(); + + // Create iterable Queue of Mixed types of data + QueueManager.DEBUG = false; + QueueManager qMix = new QueueManager<>("Mixed"); + qMix.add("Start"); + qMix.addList( + words, + numbers, + Alphabet.alphabetData(), + Animal.animalData(), + Cupcakes.cupCakeData() + ); + qMix.add("End"); + qMix.printQueue(); + qMix.deleteList(); + } +} diff --git a/src/main/java/com/nighthawk/csa/utility/LinkedLists2/Stack.java b/src/main/java/com/nighthawk/csa/utility/LinkedLists2/Stack.java new file mode 100644 index 00000000..cc2b7239 --- /dev/null +++ b/src/main/java/com/nighthawk/csa/utility/LinkedLists2/Stack.java @@ -0,0 +1,191 @@ +package com.nighthawk.csa.utility.LinkedLists2; + +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Alphabet; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Animal; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Cupcakes; +import com.nighthawk.csa.mvc.dataOps.genericDataModel.Generics; +import com.nighthawk.csa.utility.ConsoleMethods; + +/** + * Stack: custom implementation + * @author John Mortensen + * + * 1. Uses custom LinkedList of Generic type T + * 2. "has a" LinkedList for Last In First Out (LIFO) object + * + */ +public class Stack +{ + private LinkedList lifo = null; // last in first out Object of stack + + /** + * Returns the current (LIFO) objects data. + * + * @return the current data in Stack. + */ + public T peek() + { + if (lifo == null) + return null; + else + return lifo.getData(); + } + + /** + * Inserts a new data object at the top of this Stack, + * + * @param data to be inserted at the top of the Stack. + */ + public void push(T data) + { + // note the order that things happen: + // the new object becomes current and gets a value + // current lifo is parameter, it is assigned as previous node in lifo + lifo = new LinkedList<>(data, lifo); + } + + /** + * Removes the top element in the Stack. + * + * @return the popped data from the Stack. + */ + public T pop() + { + T data = null; // empty condition + if (lifo != null) { + data = lifo.getData(); + lifo = lifo.getPrevious(); // stack is overwritten with next item + } + return data; // pop always returns data of element popped + } + + /** + * Returns a string representation of this Stack, + * polymorphic nature of toString overrides of standard System.out.print behavior + * + * @return string representation of data within Stack + */ + public String toString() + { + StringBuilder stackToString = new StringBuilder("["); + + LinkedList node = lifo; // start from the back + while (node != null) + { + stackToString.append(node.getData()); // append the database to output string + node = node.getPrevious(); // go to previous node + if (node != null) + stackToString.append(", "); + } // loop 'till you reach the beginning + stackToString.append("]"); + return stackToString.toString(); + } + + +} + +/** + * Stack Manager + * 1. "has a" Stack + * 2. support management of Stack tasks (aka: titling, adding a list, emptying, printing) + * + */ +class StackDriver { + static public boolean DEBUG = false; + private String title; + private final Stack stack = new Stack<>(); // stack object + private int count; + + /** + * Stack constructor + * + * @param title name associated with stack + * @param seriesOfObjects data to be inserted into stack + */ + @SafeVarargs + public StackDriver(String title, T[]... seriesOfObjects) { + this.title = title; + this.addList(seriesOfObjects); + } + + /** + * Add a series of data object to the Stack + * + * @param seriesOfObjects data to be inserted into stack + */ + @SafeVarargs + public final void addList(T[]... seriesOfObjects) + { + if (DEBUG) ConsoleMethods.println("Add " + title); + for (T[] objects: seriesOfObjects) + for (T data : objects) { + this.stack.push(data); + this.count++; + if (DEBUG) ConsoleMethods.println("Push: " + this.stack.peek() + " " + this.stack); + } + if (DEBUG) ConsoleMethods.println(); + } + + /** + * Empty or remove all data objects from the Stack + * + */ + public void emptyStack() + { + if (DEBUG) ConsoleMethods.println("Delete " + title); + while (this.stack.peek() != null) { + T data = this.stack.pop(); + if (DEBUG) ConsoleMethods.println("Pop: " + data + " " + stack); + } + if (DEBUG) ConsoleMethods.println(); + } + + /** + * Print analytics from the Stack + * + */ + public void printStack() + { + ConsoleMethods.println("Size: " + count); + ConsoleMethods.println("Top Element: " + stack.peek()); + ConsoleMethods.println("Full Stack: " + stack); + ConsoleMethods.println(); + } + +} + +class Main { + /** + * Test Stack functionality using different types of Objects + * + */ + public static void main(String[] args) { + // Create Stack of Words + StackDriver.DEBUG = false; + String[] words = new String[]{"seven", "slimy", "snakes", "sallying", "slowly", "slithered", "southward"}; + StackDriver sWords = new StackDriver<>("Words", words); + sWords.printStack(); + sWords.emptyStack(); + + // Create Stack of Integers + StackDriver.DEBUG = false; + Object[] numbers = new Integer[] { 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; + StackDriver sNums = new StackDriver<>("Integers", numbers ); + sNums.printStack(); + sNums.emptyStack(); + + // Create iterable Queue of NCS Generics + StackDriver.DEBUG = false; + Animal.setOrder(Animal.KeyType.name); + Alphabet.setOrder(Alphabet.KeyType.letter); + Cupcakes.setOrder(Cupcakes.KeyType.flavor); + // Illustrates use of a series of arrays + StackDriver sGenerics = new StackDriver<>("My Generics", + Alphabet.alphabetData(), + Animal.animalData(), + Cupcakes.cupCakeData() + ); + sGenerics.printStack(); + sGenerics.emptyStack(); + } +} diff --git a/src/main/resources/application.properties b/src/main/resources/application.properties index 6458015b..9a65abfd 100644 --- a/src/main/resources/application.properties +++ b/src/main/resources/application.properties @@ -1,8 +1,12 @@ server.error.whitelabel.enabled=false -spring.jpa.database-platform=com.nighthawk.csa.model.SQL.SQLDialect +spring.jpa.database-platform=com.nighthawk.csa.SQLDialect spring.jpa.hibernate.ddl-auto=update -spring.datasource.url = jdbc:sqlite:sqlite.db +spring.jpa.show-sql=false +spring.jpa.properties.hibernate.format_sql=false +spring.jpa.open-in-view=false + +spring.datasource.url = jdbc:sqlite:volumes/sqlite.db spring.datasource.driver-class-name = org.sqlite.JDBC spring.datasource.username = admin @@ -10,3 +14,4 @@ spring.datasource.password = admin logging.level.root=WARN +server.port=8078 \ No newline at end of file diff --git a/src/main/resources/static/images/APCompSciA.webp b/src/main/resources/static/images/APCompSciA.webp new file mode 100644 index 00000000..107d1b32 Binary files /dev/null and b/src/main/resources/static/images/APCompSciA.webp differ diff --git a/src/main/resources/static/images/Filtering.png b/src/main/resources/static/images/Filtering.png new file mode 100644 index 00000000..df07f92c Binary files /dev/null and b/src/main/resources/static/images/Filtering.png differ diff --git a/src/main/resources/static/images/Sorting.png b/src/main/resources/static/images/Sorting.png new file mode 100644 index 00000000..4fa8fa50 Binary files /dev/null and b/src/main/resources/static/images/Sorting.png differ diff --git a/src/main/resources/static/images/csaweights.png b/src/main/resources/static/images/csaweights.png new file mode 100644 index 00000000..cc7dd82a Binary files /dev/null and b/src/main/resources/static/images/csaweights.png differ diff --git a/src/main/resources/static/images/linkedlist.png b/src/main/resources/static/images/linkedlist.png new file mode 100644 index 00000000..028e9b9d Binary files /dev/null and b/src/main/resources/static/images/linkedlist.png differ diff --git a/src/main/resources/static/images/nope.jpg b/src/main/resources/static/images/nope.jpg new file mode 100644 index 00000000..7d91aab9 Binary files /dev/null and b/src/main/resources/static/images/nope.jpg differ diff --git a/src/main/resources/static/images/objects.png b/src/main/resources/static/images/objects.png new file mode 100644 index 00000000..a997aad3 Binary files /dev/null and b/src/main/resources/static/images/objects.png differ diff --git a/src/main/resources/static/images/queue.png b/src/main/resources/static/images/queue.png new file mode 100644 index 00000000..35124a67 Binary files /dev/null and b/src/main/resources/static/images/queue.png differ diff --git a/src/main/resources/static/images/stack.png b/src/main/resources/static/images/stack.png new file mode 100644 index 00000000..335366f5 Binary files /dev/null and b/src/main/resources/static/images/stack.png differ diff --git a/src/main/resources/static/images/string_methods.png b/src/main/resources/static/images/string_methods.png new file mode 100644 index 00000000..d430c401 Binary files /dev/null and b/src/main/resources/static/images/string_methods.png differ diff --git a/src/main/resources/static/scss/custom.css b/src/main/resources/static/scss/custom.css new file mode 100644 index 00000000..d89b4220 --- /dev/null +++ b/src/main/resources/static/scss/custom.css @@ -0,0 +1,20118 @@ +@charset "UTF-8"; +/* For design in bootstrap look at: + Colors and Text: https://getbootstrap.com/docs/5.0/utilities/colors/ + Background: https://getbootstrap.com/docs/5.0/utilities/background/ + +Key Colors +$blue: #0d6efd; +$indigo: #6610f2; +$purple: #6f42c1; +$pink: #d63384; +$red: #dc3545; +$orange: #fd7e14; +$yellow: #ffc107; +$green: #198754; +$teal: #20c997; +$cyan: #0dcaf0; +$gray-100: #f8f9fa; +$gray-600: #6c757d; +$gray-900: #212529; + +Key Colors map to ... +$primary: $blue; +$secondary: $gray-600; +$success: $green; +$info: $cyan; +$warning: $yellow; +$danger: $red; +$light: $gray-100; +$dark: $gray-900; + +Key colors are are mapped to words we use in HTML (text-primary, text-dark, bg-primary, bg-dark) +$theme-colors: ( + "primary": $primary, + "secondary": $secondary, + "success": $success, + "info": $info, + "warning": $warning, + "danger": $danger, + "light": $light, + "dark": $dark +); + +*/ +/*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ +:root { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #a1a9bd; + --bs-secondary: #5B9D82; + --bs-success: #198754; + --bs-info: #0dcaf0; + --bs-warning: #ffc107; + --bs-danger: #dc3545; + --bs-light: #f8f9fa; + --bs-dark: #212529; + --bs-primary-rgb: 161, 169, 189; + --bs-secondary-rgb: 91, 157, 130; + --bs-success-rgb: 25, 135, 84; + --bs-info-rgb: 13, 202, 240; + --bs-warning-rgb: 255, 193, 7; + --bs-danger-rgb: 220, 53, 69; + --bs-light-rgb: 248, 249, 250; + --bs-dark-rgb: 33, 37, 41; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 207, 216, 220; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-bg: #cfd8dc; +} + +*, +*::before, +*::after { + box-sizing: border-box; +} + +@media (prefers-reduced-motion: no-preference) { + :root { + scroll-behavior: smooth; + } +} + +body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} + +hr { + margin: 1rem 0; + color: inherit; + background-color: currentColor; + border: 0; + opacity: 0.25; +} + +hr:not([size]) { + height: 1px; +} + +.dark-mode h6, .dark-mode .h6, .dark-mode h5, .dark-mode .h5, .dark-mode h4, .dark-mode .h4, .dark-mode h3, .dark-mode .h3, .dark-mode h2, .dark-mode .h2, .dark-mode h1, .dark-mode .h1, h6, .h6, h5, .h5, h4, .h4, h3, .h3, h2, .h2, h1, .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} + +h1, .dark-mode .h1, .h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + h1, .dark-mode .h1, .h1 { + font-size: 2.5rem; + } +} + +h2, .dark-mode .h2, .h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + h2, .dark-mode .h2, .h2 { + font-size: 2rem; + } +} + +h3, .dark-mode .h3, .h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + h3, .dark-mode .h3, .h3 { + font-size: 1.75rem; + } +} + +h4, .dark-mode .h4, .h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + h4, .dark-mode .h4, .h4 { + font-size: 1.5rem; + } +} + +h5, .dark-mode .h5, .h5 { + font-size: 1.25rem; +} + +h6, .dark-mode .h6, .h6 { + font-size: 1rem; +} + +p { + margin-top: 0; + margin-bottom: 1rem; +} + +abbr[title], +abbr[data-bs-original-title] { + text-decoration: underline dotted; + cursor: help; + text-decoration-skip-ink: none; +} + +address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} + +ol, +ul { + padding-left: 2rem; +} + +ol, +ul, +dl { + margin-top: 0; + margin-bottom: 1rem; +} + +ol ol, +ul ul, +ol ul, +ul ol { + margin-bottom: 0; +} + +dt { + font-weight: 700; +} + +dd { + margin-bottom: 0.5rem; + margin-left: 0; +} + +blockquote { + margin: 0 0 1rem; +} + +b, +strong { + font-weight: bolder; +} + +small, .dark-mode .small, .small { + font-size: 0.875em; +} + +mark, .dark-mode .mark, .mark { + padding: 0.2em; + background-color: #fcf8e3; +} + +sub, +sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +a { + color: #a1a9bd; + text-decoration: underline; +} +a:hover { + color: #818797; +} + +a:not([href]):not([class]), a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} + +pre, +code, +kbd, +samp { + font-family: var(--bs-font-monospace); + font-size: 1em; + direction: ltr /* rtl:ignore */; + unicode-bidi: bidi-override; +} + +pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} + +code { + font-size: 0.875em; + color: #d63384; + word-wrap: break-word; +} +a > code { + color: inherit; +} + +kbd { + padding: 0.2rem 0.4rem; + font-size: 0.875em; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; +} +kbd kbd { + padding: 0; + font-size: 1em; + font-weight: 700; +} + +figure { + margin: 0 0 1rem; +} + +img, +svg { + vertical-align: middle; +} + +table { + caption-side: bottom; + border-collapse: collapse; +} + +caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: #6c757d; + text-align: left; +} + +th { + text-align: inherit; + text-align: -webkit-match-parent; +} + +thead, +tbody, +tfoot, +tr, +td, +th { + border-color: inherit; + border-style: solid; + border-width: 0; +} + +label { + display: inline-block; +} + +button { + border-radius: 0; +} + +button:focus:not(:focus-visible) { + outline: 0; +} + +input, +button, +select, +optgroup, +textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} + +button, +select { + text-transform: none; +} + +[role=button] { + cursor: pointer; +} + +select { + word-wrap: normal; +} +select:disabled { + opacity: 1; +} + +[list]::-webkit-calendar-picker-indicator { + display: none; +} + +button, +[type=button], +[type=reset], +[type=submit] { + -webkit-appearance: button; +} +button:not(:disabled), +[type=button]:not(:disabled), +[type=reset]:not(:disabled), +[type=submit]:not(:disabled) { + cursor: pointer; +} + +::-moz-focus-inner { + padding: 0; + border-style: none; +} + +textarea { + resize: vertical; +} + +fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} + +legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + legend { + font-size: 1.5rem; + } +} +legend + * { + clear: left; +} + +::-webkit-datetime-edit-fields-wrapper, +::-webkit-datetime-edit-text, +::-webkit-datetime-edit-minute, +::-webkit-datetime-edit-hour-field, +::-webkit-datetime-edit-day-field, +::-webkit-datetime-edit-month-field, +::-webkit-datetime-edit-year-field { + padding: 0; +} + +::-webkit-inner-spin-button { + height: auto; +} + +[type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} + +/* rtl:raw: +[type="tel"], +[type="url"], +[type="email"], +[type="number"] { + direction: ltr; +} +*/ +::-webkit-search-decoration { + -webkit-appearance: none; +} + +::-webkit-color-swatch-wrapper { + padding: 0; +} + +::file-selector-button { + font: inherit; +} + +::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} + +output { + display: inline-block; +} + +iframe { + border: 0; +} + +summary { + display: list-item; + cursor: pointer; +} + +progress { + vertical-align: baseline; +} + +[hidden] { + display: none !important; +} + +.lead { + font-size: 1.25rem; + font-weight: 300; +} + +.display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-1 { + font-size: 5rem; + } +} + +.display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-2 { + font-size: 4.5rem; + } +} + +.display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-3 { + font-size: 4rem; + } +} + +.display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-4 { + font-size: 3.5rem; + } +} + +.display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-5 { + font-size: 3rem; + } +} + +.display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .display-6 { + font-size: 2.5rem; + } +} + +.list-unstyled { + padding-left: 0; + list-style: none; +} + +.list-inline { + padding-left: 0; + list-style: none; +} + +.list-inline-item { + display: inline-block; +} +.list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} + +.initialism { + font-size: 0.875em; + text-transform: uppercase; +} + +.blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.blockquote > :last-child { + margin-bottom: 0; +} + +.blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} +.blockquote-footer::before { + content: "— "; +} + +.img-fluid { + max-width: 100%; + height: auto; +} + +.img-thumbnail { + padding: 0.25rem; + background-color: #cfd8dc; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; +} + +.figure { + display: inline-block; +} + +.figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} + +.figure-caption { + font-size: 0.875em; + color: #6c757d; +} + +.container, +.container-fluid, +.dark-mode .container-xxl, +.dark-mode .container-xl, +.dark-mode .container-lg, +.dark-mode .container-md, +.dark-mode .container-sm, +.container-xxl, +.container-xl, +.container-lg, +.container-md, +.container-sm { + width: 100%; + padding-right: var(--bs-gutter-x, 0.75rem); + padding-left: var(--bs-gutter-x, 0.75rem); + margin-right: auto; + margin-left: auto; +} + +@media (min-width: 576px) { + .dark-mode .container-sm, .dark-mode .container, .container-sm, .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container, .container-md, .container-sm, .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .dark-mode .container-lg, .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container, .container-lg, .container-md, .container-sm, .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .dark-mode .container-xl, .dark-mode .container-lg, .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .dark-mode .container-xxl, .dark-mode .container-xl, .dark-mode .container-lg, .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container, .container-xxl, .container-xl, .container-lg, .container-md, .container-sm, .container { + max-width: 1320px; + } +} +.row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} + +.col { + flex: 1 0 0%; +} + +.row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} + +.row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} + +.row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} + +.row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} + +.row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} + +.row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} + +.row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} + +.col-auto { + flex: 0 0 auto; + width: auto; +} + +.col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} + +.col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} + +.col-3 { + flex: 0 0 auto; + width: 25%; +} + +.col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} + +.col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} + +.col-6 { + flex: 0 0 auto; + width: 50%; +} + +.col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} + +.col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} + +.col-9 { + flex: 0 0 auto; + width: 75%; +} + +.col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} + +.col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} + +.col-12 { + flex: 0 0 auto; + width: 100%; +} + +.offset-1 { + margin-left: 8.33333333%; +} + +.offset-2 { + margin-left: 16.66666667%; +} + +.offset-3 { + margin-left: 25%; +} + +.offset-4 { + margin-left: 33.33333333%; +} + +.offset-5 { + margin-left: 41.66666667%; +} + +.offset-6 { + margin-left: 50%; +} + +.offset-7 { + margin-left: 58.33333333%; +} + +.offset-8 { + margin-left: 66.66666667%; +} + +.offset-9 { + margin-left: 75%; +} + +.offset-10 { + margin-left: 83.33333333%; +} + +.offset-11 { + margin-left: 91.66666667%; +} + +.g-0, +.gx-0 { + --bs-gutter-x: 0; +} + +.g-0, +.gy-0 { + --bs-gutter-y: 0; +} + +.g-1, +.gx-1 { + --bs-gutter-x: 0.25rem; +} + +.g-1, +.gy-1 { + --bs-gutter-y: 0.25rem; +} + +.g-2, +.gx-2 { + --bs-gutter-x: 0.5rem; +} + +.g-2, +.gy-2 { + --bs-gutter-y: 0.5rem; +} + +.g-3, +.gx-3 { + --bs-gutter-x: 1rem; +} + +.g-3, +.gy-3 { + --bs-gutter-y: 1rem; +} + +.g-4, +.gx-4 { + --bs-gutter-x: 1.5rem; +} + +.g-4, +.gy-4 { + --bs-gutter-y: 1.5rem; +} + +.g-5, +.gx-5 { + --bs-gutter-x: 3rem; +} + +.g-5, +.gy-5 { + --bs-gutter-y: 3rem; +} + +@media (min-width: 576px) { + .col-sm { + flex: 1 0 0%; + } + + .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + + .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-sm-0 { + margin-left: 0; + } + + .offset-sm-1 { + margin-left: 8.33333333%; + } + + .offset-sm-2 { + margin-left: 16.66666667%; + } + + .offset-sm-3 { + margin-left: 25%; + } + + .offset-sm-4 { + margin-left: 33.33333333%; + } + + .offset-sm-5 { + margin-left: 41.66666667%; + } + + .offset-sm-6 { + margin-left: 50%; + } + + .offset-sm-7 { + margin-left: 58.33333333%; + } + + .offset-sm-8 { + margin-left: 66.66666667%; + } + + .offset-sm-9 { + margin-left: 75%; + } + + .offset-sm-10 { + margin-left: 83.33333333%; + } + + .offset-sm-11 { + margin-left: 91.66666667%; + } + + .g-sm-0, +.gx-sm-0 { + --bs-gutter-x: 0; + } + + .g-sm-0, +.gy-sm-0 { + --bs-gutter-y: 0; + } + + .g-sm-1, +.gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + + .g-sm-1, +.gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + + .g-sm-2, +.gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + + .g-sm-2, +.gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + + .g-sm-3, +.gx-sm-3 { + --bs-gutter-x: 1rem; + } + + .g-sm-3, +.gy-sm-3 { + --bs-gutter-y: 1rem; + } + + .g-sm-4, +.gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + + .g-sm-4, +.gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + + .g-sm-5, +.gx-sm-5 { + --bs-gutter-x: 3rem; + } + + .g-sm-5, +.gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .col-md { + flex: 1 0 0%; + } + + .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-md-auto { + flex: 0 0 auto; + width: auto; + } + + .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-md-0 { + margin-left: 0; + } + + .offset-md-1 { + margin-left: 8.33333333%; + } + + .offset-md-2 { + margin-left: 16.66666667%; + } + + .offset-md-3 { + margin-left: 25%; + } + + .offset-md-4 { + margin-left: 33.33333333%; + } + + .offset-md-5 { + margin-left: 41.66666667%; + } + + .offset-md-6 { + margin-left: 50%; + } + + .offset-md-7 { + margin-left: 58.33333333%; + } + + .offset-md-8 { + margin-left: 66.66666667%; + } + + .offset-md-9 { + margin-left: 75%; + } + + .offset-md-10 { + margin-left: 83.33333333%; + } + + .offset-md-11 { + margin-left: 91.66666667%; + } + + .g-md-0, +.gx-md-0 { + --bs-gutter-x: 0; + } + + .g-md-0, +.gy-md-0 { + --bs-gutter-y: 0; + } + + .g-md-1, +.gx-md-1 { + --bs-gutter-x: 0.25rem; + } + + .g-md-1, +.gy-md-1 { + --bs-gutter-y: 0.25rem; + } + + .g-md-2, +.gx-md-2 { + --bs-gutter-x: 0.5rem; + } + + .g-md-2, +.gy-md-2 { + --bs-gutter-y: 0.5rem; + } + + .g-md-3, +.gx-md-3 { + --bs-gutter-x: 1rem; + } + + .g-md-3, +.gy-md-3 { + --bs-gutter-y: 1rem; + } + + .g-md-4, +.gx-md-4 { + --bs-gutter-x: 1.5rem; + } + + .g-md-4, +.gy-md-4 { + --bs-gutter-y: 1.5rem; + } + + .g-md-5, +.gx-md-5 { + --bs-gutter-x: 3rem; + } + + .g-md-5, +.gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .col-lg { + flex: 1 0 0%; + } + + .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + + .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-lg-0 { + margin-left: 0; + } + + .offset-lg-1 { + margin-left: 8.33333333%; + } + + .offset-lg-2 { + margin-left: 16.66666667%; + } + + .offset-lg-3 { + margin-left: 25%; + } + + .offset-lg-4 { + margin-left: 33.33333333%; + } + + .offset-lg-5 { + margin-left: 41.66666667%; + } + + .offset-lg-6 { + margin-left: 50%; + } + + .offset-lg-7 { + margin-left: 58.33333333%; + } + + .offset-lg-8 { + margin-left: 66.66666667%; + } + + .offset-lg-9 { + margin-left: 75%; + } + + .offset-lg-10 { + margin-left: 83.33333333%; + } + + .offset-lg-11 { + margin-left: 91.66666667%; + } + + .g-lg-0, +.gx-lg-0 { + --bs-gutter-x: 0; + } + + .g-lg-0, +.gy-lg-0 { + --bs-gutter-y: 0; + } + + .g-lg-1, +.gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + + .g-lg-1, +.gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + + .g-lg-2, +.gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + + .g-lg-2, +.gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + + .g-lg-3, +.gx-lg-3 { + --bs-gutter-x: 1rem; + } + + .g-lg-3, +.gy-lg-3 { + --bs-gutter-y: 1rem; + } + + .g-lg-4, +.gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + + .g-lg-4, +.gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + + .g-lg-5, +.gx-lg-5 { + --bs-gutter-x: 3rem; + } + + .g-lg-5, +.gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .col-xl { + flex: 1 0 0%; + } + + .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + + .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-xl-0 { + margin-left: 0; + } + + .offset-xl-1 { + margin-left: 8.33333333%; + } + + .offset-xl-2 { + margin-left: 16.66666667%; + } + + .offset-xl-3 { + margin-left: 25%; + } + + .offset-xl-4 { + margin-left: 33.33333333%; + } + + .offset-xl-5 { + margin-left: 41.66666667%; + } + + .offset-xl-6 { + margin-left: 50%; + } + + .offset-xl-7 { + margin-left: 58.33333333%; + } + + .offset-xl-8 { + margin-left: 66.66666667%; + } + + .offset-xl-9 { + margin-left: 75%; + } + + .offset-xl-10 { + margin-left: 83.33333333%; + } + + .offset-xl-11 { + margin-left: 91.66666667%; + } + + .g-xl-0, +.gx-xl-0 { + --bs-gutter-x: 0; + } + + .g-xl-0, +.gy-xl-0 { + --bs-gutter-y: 0; + } + + .g-xl-1, +.gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + + .g-xl-1, +.gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + + .g-xl-2, +.gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + + .g-xl-2, +.gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + + .g-xl-3, +.gx-xl-3 { + --bs-gutter-x: 1rem; + } + + .g-xl-3, +.gy-xl-3 { + --bs-gutter-y: 1rem; + } + + .g-xl-4, +.gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + + .g-xl-4, +.gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + + .g-xl-5, +.gx-xl-5 { + --bs-gutter-x: 3rem; + } + + .g-xl-5, +.gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .col-xxl { + flex: 1 0 0%; + } + + .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + + .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + + .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + + .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + + .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + + .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + + .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + + .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + + .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + + .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + + .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + + .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + + .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + + .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + + .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + + .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + + .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + + .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + + .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + + .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + + .offset-xxl-0 { + margin-left: 0; + } + + .offset-xxl-1 { + margin-left: 8.33333333%; + } + + .offset-xxl-2 { + margin-left: 16.66666667%; + } + + .offset-xxl-3 { + margin-left: 25%; + } + + .offset-xxl-4 { + margin-left: 33.33333333%; + } + + .offset-xxl-5 { + margin-left: 41.66666667%; + } + + .offset-xxl-6 { + margin-left: 50%; + } + + .offset-xxl-7 { + margin-left: 58.33333333%; + } + + .offset-xxl-8 { + margin-left: 66.66666667%; + } + + .offset-xxl-9 { + margin-left: 75%; + } + + .offset-xxl-10 { + margin-left: 83.33333333%; + } + + .offset-xxl-11 { + margin-left: 91.66666667%; + } + + .g-xxl-0, +.gx-xxl-0 { + --bs-gutter-x: 0; + } + + .g-xxl-0, +.gy-xxl-0 { + --bs-gutter-y: 0; + } + + .g-xxl-1, +.gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + + .g-xxl-1, +.gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + + .g-xxl-2, +.gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + + .g-xxl-2, +.gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + + .g-xxl-3, +.gx-xxl-3 { + --bs-gutter-x: 1rem; + } + + .g-xxl-3, +.gy-xxl-3 { + --bs-gutter-y: 1rem; + } + + .g-xxl-4, +.gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + + .g-xxl-4, +.gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + + .g-xxl-5, +.gx-xxl-5 { + --bs-gutter-x: 3rem; + } + + .g-xxl-5, +.gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.table { + --bs-table-bg: transparent; + --bs-table-accent-bg: transparent; + --bs-table-striped-color: #212529; + --bs-table-striped-bg: rgba(0, 0, 0, 0.05); + --bs-table-active-color: #212529; + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: #212529; + --bs-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + color: #212529; + vertical-align: top; + border-color: #dee2e6; +} +.table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + background-color: var(--bs-table-bg); + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} +.table > tbody { + vertical-align: inherit; +} +.table > thead { + vertical-align: bottom; +} +.table > :not(:first-child) { + border-top: 2px solid currentColor; +} + +.caption-top { + caption-side: top; +} + +.table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} + +.table-bordered > :not(caption) > * { + border-width: 1px 0; +} +.table-bordered > :not(caption) > * > * { + border-width: 0 1px; +} + +.table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.table-borderless > :not(:first-child) { + border-top-width: 0; +} + +.table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} + +.table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} + +.table-hover > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} + +.table-primary { + --bs-table-bg: #eceef2; + --bs-table-striped-bg: #e0e2e6; + --bs-table-striped-color: #000; + --bs-table-active-bg: #d4d6da; + --bs-table-active-color: #000; + --bs-table-hover-bg: #dadce0; + --bs-table-hover-color: #000; + color: #000; + border-color: #d4d6da; +} + +.table-secondary { + --bs-table-bg: #deebe6; + --bs-table-striped-bg: #d3dfdb; + --bs-table-striped-color: #000; + --bs-table-active-bg: #c8d4cf; + --bs-table-active-color: #000; + --bs-table-hover-bg: #cdd9d5; + --bs-table-hover-color: #000; + color: #000; + border-color: #c8d4cf; +} + +.table-success { + --bs-table-bg: #d1e7dd; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: #000; + border-color: #bcd0c7; +} + +.table-info { + --bs-table-bg: #cff4fc; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: #000; + border-color: #badce3; +} + +.table-warning { + --bs-table-bg: #fff3cd; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: #000; + border-color: #e6dbb9; +} + +.table-danger { + --bs-table-bg: #f8d7da; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: #000; + border-color: #dfc2c4; +} + +.table-light { + --bs-table-bg: #f8f9fa; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: #000; + border-color: #dfe0e1; +} + +.table-dark { + --bs-table-bg: #212529; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: #fff; + border-color: #373b3e; +} + +.table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} + +@media (max-width: 575.98px) { + .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.form-label { + margin-bottom: 0.5rem; +} + +.col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} + +.col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; +} + +.col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; +} + +.form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: #6c757d; +} + +.form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #cfd8dc; + background-clip: padding-box; + border: 1px solid #ced4da; + appearance: none; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control { + transition: none; + } +} +.form-control[type=file] { + overflow: hidden; +} +.form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control:focus { + color: #212529; + background-color: #cfd8dc; + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.form-control::-webkit-date-and-time-value { + height: 1.5em; +} +.form-control::placeholder { + color: #6c757d; + opacity: 1; +} +.form-control:disabled, .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} +.form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::file-selector-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: #dde0e3; +} +.form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-control::-webkit-file-upload-button { + transition: none; + } +} +.form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: #dde0e3; +} + +.form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} +.form-control-plaintext.form-control-sm, .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} + +.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} +.form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + margin-inline-end: 0.5rem; +} +.form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + margin-inline-end: 0.5rem; +} + +.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} +.form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + margin-inline-end: 1rem; +} +.form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + margin-inline-end: 1rem; +} + +textarea.form-control { + min-height: calc(1.5em + 0.75rem + 2px); +} +textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); +} +textarea.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); +} + +.form-control-color { + width: 3rem; + height: auto; + padding: 0.375rem; +} +.form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.form-control-color::-moz-color-swatch { + height: 1.5em; + border-radius: 0.25rem; +} +.form-control-color::-webkit-color-swatch { + height: 1.5em; + border-radius: 0.25rem; +} + +.form-select { + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + -moz-padding-start: calc(0.75rem - 3px); + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #cfd8dc; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-select { + transition: none; + } +} +.form-select:focus { + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.form-select[multiple], .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.form-select:disabled { + background-color: #e9ecef; +} +.form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #212529; +} + +.form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.form-check .form-check-input { + float: left; + margin-left: -1.5em; +} + +.form-check-input { + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + background-color: #cfd8dc; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid rgba(0, 0, 0, 0.25); + appearance: none; + color-adjust: exact; +} +.form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.form-check-input[type=radio] { + border-radius: 50%; +} +.form-check-input:active { + filter: brightness(90%); +} +.form-check-input:focus { + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.form-check-input:checked { + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.form-check-input:checked[type=checkbox] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e"); +} +.form-check-input:checked[type=radio] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"); +} +.form-check-input[type=checkbox]:indeterminate { + background-color: #a1a9bd; + border-color: #a1a9bd; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"); +} +.form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.form-check-input[disabled] ~ .form-check-label, .form-check-input:disabled ~ .form-check-label { + opacity: 0.5; +} + +.form-switch { + padding-left: 2.5em; +} +.form-switch .form-check-input { + width: 2em; + margin-left: -2.5em; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-switch .form-check-input { + transition: none; + } +} +.form-switch .form-check-input:focus { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23d0d4de'/%3e%3c/svg%3e"); +} +.form-switch .form-check-input:checked { + background-position: right center; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"); +} + +.form-check-inline { + display: inline-block; + margin-right: 1rem; +} + +.btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.btn-check[disabled] + .btn, .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} + +.form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + appearance: none; +} +.form-range:focus { + outline: 0; +} +.form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #cfd8dc, 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #cfd8dc, 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.form-range::-moz-focus-outer { + border: 0; +} +.form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #a1a9bd; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-webkit-slider-thumb { + transition: none; + } +} +.form-range::-webkit-slider-thumb:active { + background-color: #e3e5eb; +} +.form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #a1a9bd; + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .form-range::-moz-range-thumb { + transition: none; + } +} +.form-range::-moz-range-thumb:active { + background-color: #e3e5eb; +} +.form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.form-range:disabled { + pointer-events: none; +} +.form-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} +.form-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} + +.form-floating { + position: relative; +} +.form-floating > .form-control, +.form-floating > .form-select { + height: calc(3.5rem + 2px); + line-height: 1.25; +} +.form-floating > label { + position: absolute; + top: 0; + left: 0; + height: 100%; + padding: 1rem 0.75rem; + pointer-events: none; + border: 1px solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .form-floating > label { + transition: none; + } +} +.form-floating > .form-control { + padding: 1rem 0.75rem; +} +.form-floating > .form-control::placeholder { + color: transparent; +} +.form-floating > .form-control:focus, .form-floating > .form-control:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.form-floating > .form-control:focus ~ label, +.form-floating > .form-control:not(:placeholder-shown) ~ label, +.form-floating > .form-select ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.form-floating > .form-control:-webkit-autofill ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} + +.input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.input-group > .form-control, +.input-group > .form-select { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.input-group > .form-control:focus, +.input-group > .form-select:focus { + z-index: 3; +} +.input-group .btn { + position: relative; + z-index: 2; +} +.input-group .btn:focus { + z-index: 3; +} + +.input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} + +.input-group-lg > .form-control, +.input-group-lg > .form-select, +.input-group-lg > .input-group-text, +.input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.input-group-sm > .form-control, +.input-group-sm > .form-select, +.input-group-sm > .input-group-text, +.input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.input-group-lg > .form-select, +.input-group-sm > .form-select { + padding-right: 3rem; +} + +.input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu), +.input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu), +.input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #198754; +} + +.valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(25, 135, 84, 0.9); + border-radius: 0.25rem; +} + +.was-validated :valid ~ .valid-feedback, +.was-validated :valid ~ .valid-tooltip, +.is-valid ~ .valid-feedback, +.is-valid ~ .valid-tooltip { + display: block; +} + +.was-validated .form-control:valid, .form-control.is-valid { + border-color: #198754; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:valid:focus, .form-control.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated textarea.form-control:valid, textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:valid, .form-select.is-valid { + border-color: #198754; +} +.was-validated .form-select:valid:not([multiple]):not([size]), .was-validated .form-select:valid:not([multiple])[size="1"], .form-select.is-valid:not([multiple]):not([size]), .form-select.is-valid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:valid:focus, .form-select.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} + +.was-validated .form-check-input:valid, .form-check-input.is-valid { + border-color: #198754; +} +.was-validated .form-check-input:valid:checked, .form-check-input.is-valid:checked { + background-color: #198754; +} +.was-validated .form-check-input:valid:focus, .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} +.was-validated .form-check-input:valid ~ .form-check-label, .form-check-input.is-valid ~ .form-check-label { + color: #198754; +} + +.form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group .form-control:valid, .input-group .form-control.is-valid, +.was-validated .input-group .form-select:valid, +.input-group .form-select.is-valid { + z-index: 1; +} +.was-validated .input-group .form-control:valid:focus, .input-group .form-control.is-valid:focus, +.was-validated .input-group .form-select:valid:focus, +.input-group .form-select.is-valid:focus { + z-index: 3; +} + +.invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #dc3545; +} + +.invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.25rem; +} + +.was-validated :invalid ~ .invalid-feedback, +.was-validated :invalid ~ .invalid-tooltip, +.is-invalid ~ .invalid-feedback, +.is-invalid ~ .invalid-tooltip { + display: block; +} + +.was-validated .form-control:invalid, .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-control:invalid:focus, .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated textarea.form-control:invalid, textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} + +.was-validated .form-select:invalid, .form-select.is-invalid { + border-color: #dc3545; +} +.was-validated .form-select:invalid:not([multiple]):not([size]), .was-validated .form-select:invalid:not([multiple])[size="1"], .form-select.is-invalid:not([multiple]):not([size]), .form-select.is-invalid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .form-select:invalid:focus, .form-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} + +.was-validated .form-check-input:invalid, .form-check-input.is-invalid { + border-color: #dc3545; +} +.was-validated .form-check-input:invalid:checked, .form-check-input.is-invalid:checked { + background-color: #dc3545; +} +.was-validated .form-check-input:invalid:focus, .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} +.was-validated .form-check-input:invalid ~ .form-check-label, .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} + +.form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} + +.was-validated .input-group .form-control:invalid, .input-group .form-control.is-invalid, +.was-validated .input-group .form-select:invalid, +.input-group .form-select.is-invalid { + z-index: 2; +} +.was-validated .input-group .form-control:invalid:focus, .input-group .form-control.is-invalid:focus, +.was-validated .input-group .form-select:invalid:focus, +.input-group .form-select.is-invalid:focus { + z-index: 3; +} + +.btn { + display: inline-block; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .btn { + transition: none; + } +} +.btn:hover { + color: #212529; +} +.btn-check:focus + .btn, .btn:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.btn:disabled, .btn.disabled, fieldset:disabled .btn { + pointer-events: none; + opacity: 0.65; +} + +.btn-primary { + color: #000; + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.btn-primary:hover { + color: #000; + background-color: #afb6c7; + border-color: #aab2c4; +} +.btn-check:focus + .btn-primary, .btn-primary:focus { + color: #000; + background-color: #afb6c7; + border-color: #aab2c4; + box-shadow: 0 0 0 0.25rem rgba(137, 144, 161, 0.5); +} +.btn-check:checked + .btn-primary, .btn-check:active + .btn-primary, .btn-primary:active, .btn-primary.active, .show > .btn-primary.dropdown-toggle { + color: #000; + background-color: #b4baca; + border-color: #aab2c4; +} +.btn-check:checked + .btn-primary:focus, .btn-check:active + .btn-primary:focus, .btn-primary:active:focus, .btn-primary.active:focus, .show > .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(137, 144, 161, 0.5); +} +.btn-primary:disabled, .btn-primary.disabled { + color: #000; + background-color: #a1a9bd; + border-color: #a1a9bd; +} + +.btn-secondary { + color: #000; + background-color: #5B9D82; + border-color: #5B9D82; +} +.btn-secondary:hover { + color: #000; + background-color: #74ac95; + border-color: #6ba78f; +} +.btn-check:focus + .btn-secondary, .btn-secondary:focus { + color: #000; + background-color: #74ac95; + border-color: #6ba78f; + box-shadow: 0 0 0 0.25rem rgba(77, 133, 111, 0.5); +} +.btn-check:checked + .btn-secondary, .btn-check:active + .btn-secondary, .btn-secondary:active, .btn-secondary.active, .show > .btn-secondary.dropdown-toggle { + color: #000; + background-color: #7cb19b; + border-color: #6ba78f; +} +.btn-check:checked + .btn-secondary:focus, .btn-check:active + .btn-secondary:focus, .btn-secondary:active:focus, .btn-secondary.active:focus, .show > .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(77, 133, 111, 0.5); +} +.btn-secondary:disabled, .btn-secondary.disabled { + color: #000; + background-color: #5B9D82; + border-color: #5B9D82; +} + +.btn-success { + color: #fff; + background-color: #198754; + border-color: #198754; +} +.btn-success:hover { + color: #fff; + background-color: #157347; + border-color: #146c43; +} +.btn-check:focus + .btn-success, .btn-success:focus { + color: #fff; + background-color: #157347; + border-color: #146c43; + box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); +} +.btn-check:checked + .btn-success, .btn-check:active + .btn-success, .btn-success:active, .btn-success.active, .show > .btn-success.dropdown-toggle { + color: #fff; + background-color: #146c43; + border-color: #13653f; +} +.btn-check:checked + .btn-success:focus, .btn-check:active + .btn-success:focus, .btn-success:active:focus, .btn-success.active:focus, .show > .btn-success.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(60, 153, 110, 0.5); +} +.btn-success:disabled, .btn-success.disabled { + color: #fff; + background-color: #198754; + border-color: #198754; +} + +.btn-info { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-info:hover { + color: #000; + background-color: #31d2f2; + border-color: #25cff2; +} +.btn-check:focus + .btn-info, .btn-info:focus { + color: #000; + background-color: #31d2f2; + border-color: #25cff2; + box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); +} +.btn-check:checked + .btn-info, .btn-check:active + .btn-info, .btn-info:active, .btn-info.active, .show > .btn-info.dropdown-toggle { + color: #000; + background-color: #3dd5f3; + border-color: #25cff2; +} +.btn-check:checked + .btn-info:focus, .btn-check:active + .btn-info:focus, .btn-info:active:focus, .btn-info.active:focus, .show > .btn-info.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(11, 172, 204, 0.5); +} +.btn-info:disabled, .btn-info.disabled { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} + +.btn-warning { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} +.btn-warning:hover { + color: #000; + background-color: #ffca2c; + border-color: #ffc720; +} +.btn-check:focus + .btn-warning, .btn-warning:focus { + color: #000; + background-color: #ffca2c; + border-color: #ffc720; + box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); +} +.btn-check:checked + .btn-warning, .btn-check:active + .btn-warning, .btn-warning:active, .btn-warning.active, .show > .btn-warning.dropdown-toggle { + color: #000; + background-color: #ffcd39; + border-color: #ffc720; +} +.btn-check:checked + .btn-warning:focus, .btn-check:active + .btn-warning:focus, .btn-warning:active:focus, .btn-warning.active:focus, .show > .btn-warning.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(217, 164, 6, 0.5); +} +.btn-warning:disabled, .btn-warning.disabled { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} + +.btn-danger { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} +.btn-danger:hover { + color: #fff; + background-color: #bb2d3b; + border-color: #b02a37; +} +.btn-check:focus + .btn-danger, .btn-danger:focus { + color: #fff; + background-color: #bb2d3b; + border-color: #b02a37; + box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); +} +.btn-check:checked + .btn-danger, .btn-check:active + .btn-danger, .btn-danger:active, .btn-danger.active, .show > .btn-danger.dropdown-toggle { + color: #fff; + background-color: #b02a37; + border-color: #a52834; +} +.btn-check:checked + .btn-danger:focus, .btn-check:active + .btn-danger:focus, .btn-danger:active:focus, .btn-danger.active:focus, .show > .btn-danger.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(225, 83, 97, 0.5); +} +.btn-danger:disabled, .btn-danger.disabled { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} + +.btn-light { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-light:hover { + color: #000; + background-color: #f9fafb; + border-color: #f9fafb; +} +.btn-check:focus + .btn-light, .btn-light:focus { + color: #000; + background-color: #f9fafb; + border-color: #f9fafb; + box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); +} +.btn-check:checked + .btn-light, .btn-check:active + .btn-light, .btn-light:active, .btn-light.active, .show > .btn-light.dropdown-toggle { + color: #000; + background-color: #f9fafb; + border-color: #f9fafb; +} +.btn-check:checked + .btn-light:focus, .btn-check:active + .btn-light:focus, .btn-light:active:focus, .btn-light.active:focus, .show > .btn-light.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(211, 212, 213, 0.5); +} +.btn-light:disabled, .btn-light.disabled { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} + +.btn-dark { + color: #fff; + background-color: #212529; + border-color: #212529; +} +.btn-dark:hover { + color: #fff; + background-color: #1c1f23; + border-color: #1a1e21; +} +.btn-check:focus + .btn-dark, .btn-dark:focus { + color: #fff; + background-color: #1c1f23; + border-color: #1a1e21; + box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); +} +.btn-check:checked + .btn-dark, .btn-check:active + .btn-dark, .btn-dark:active, .btn-dark.active, .show > .btn-dark.dropdown-toggle { + color: #fff; + background-color: #1a1e21; + border-color: #191c1f; +} +.btn-check:checked + .btn-dark:focus, .btn-check:active + .btn-dark:focus, .btn-dark:active:focus, .btn-dark.active:focus, .show > .btn-dark.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(66, 70, 73, 0.5); +} +.btn-dark:disabled, .btn-dark.disabled { + color: #fff; + background-color: #212529; + border-color: #212529; +} + +.btn-outline-primary { + color: #a1a9bd; + border-color: #a1a9bd; +} +.btn-outline-primary:hover { + color: #000; + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.btn-check:focus + .btn-outline-primary, .btn-outline-primary:focus { + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.5); +} +.btn-check:checked + .btn-outline-primary, .btn-check:active + .btn-outline-primary, .btn-outline-primary:active, .btn-outline-primary.active, .btn-outline-primary.dropdown-toggle.show { + color: #000; + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.btn-check:checked + .btn-outline-primary:focus, .btn-check:active + .btn-outline-primary:focus, .btn-outline-primary:active:focus, .btn-outline-primary.active:focus, .btn-outline-primary.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.5); +} +.btn-outline-primary:disabled, .btn-outline-primary.disabled { + color: #a1a9bd; + background-color: transparent; +} + +.btn-outline-secondary { + color: #5B9D82; + border-color: #5B9D82; +} +.btn-outline-secondary:hover { + color: #000; + background-color: #5B9D82; + border-color: #5B9D82; +} +.btn-check:focus + .btn-outline-secondary, .btn-outline-secondary:focus { + box-shadow: 0 0 0 0.25rem rgba(91, 157, 130, 0.5); +} +.btn-check:checked + .btn-outline-secondary, .btn-check:active + .btn-outline-secondary, .btn-outline-secondary:active, .btn-outline-secondary.active, .btn-outline-secondary.dropdown-toggle.show { + color: #000; + background-color: #5B9D82; + border-color: #5B9D82; +} +.btn-check:checked + .btn-outline-secondary:focus, .btn-check:active + .btn-outline-secondary:focus, .btn-outline-secondary:active:focus, .btn-outline-secondary.active:focus, .btn-outline-secondary.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(91, 157, 130, 0.5); +} +.btn-outline-secondary:disabled, .btn-outline-secondary.disabled { + color: #5B9D82; + background-color: transparent; +} + +.btn-outline-success { + color: #198754; + border-color: #198754; +} +.btn-outline-success:hover { + color: #fff; + background-color: #198754; + border-color: #198754; +} +.btn-check:focus + .btn-outline-success, .btn-outline-success:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5); +} +.btn-check:checked + .btn-outline-success, .btn-check:active + .btn-outline-success, .btn-outline-success:active, .btn-outline-success.active, .btn-outline-success.dropdown-toggle.show { + color: #fff; + background-color: #198754; + border-color: #198754; +} +.btn-check:checked + .btn-outline-success:focus, .btn-check:active + .btn-outline-success:focus, .btn-outline-success:active:focus, .btn-outline-success.active:focus, .btn-outline-success.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.5); +} +.btn-outline-success:disabled, .btn-outline-success.disabled { + color: #198754; + background-color: transparent; +} + +.btn-outline-info { + color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-outline-info:hover { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-check:focus + .btn-outline-info, .btn-outline-info:focus { + box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5); +} +.btn-check:checked + .btn-outline-info, .btn-check:active + .btn-outline-info, .btn-outline-info:active, .btn-outline-info.active, .btn-outline-info.dropdown-toggle.show { + color: #000; + background-color: #0dcaf0; + border-color: #0dcaf0; +} +.btn-check:checked + .btn-outline-info:focus, .btn-check:active + .btn-outline-info:focus, .btn-outline-info:active:focus, .btn-outline-info.active:focus, .btn-outline-info.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(13, 202, 240, 0.5); +} +.btn-outline-info:disabled, .btn-outline-info.disabled { + color: #0dcaf0; + background-color: transparent; +} + +.btn-outline-warning { + color: #ffc107; + border-color: #ffc107; +} +.btn-outline-warning:hover { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} +.btn-check:focus + .btn-outline-warning, .btn-outline-warning:focus { + box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5); +} +.btn-check:checked + .btn-outline-warning, .btn-check:active + .btn-outline-warning, .btn-outline-warning:active, .btn-outline-warning.active, .btn-outline-warning.dropdown-toggle.show { + color: #000; + background-color: #ffc107; + border-color: #ffc107; +} +.btn-check:checked + .btn-outline-warning:focus, .btn-check:active + .btn-outline-warning:focus, .btn-outline-warning:active:focus, .btn-outline-warning.active:focus, .btn-outline-warning.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(255, 193, 7, 0.5); +} +.btn-outline-warning:disabled, .btn-outline-warning.disabled { + color: #ffc107; + background-color: transparent; +} + +.btn-outline-danger { + color: #dc3545; + border-color: #dc3545; +} +.btn-outline-danger:hover { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} +.btn-check:focus + .btn-outline-danger, .btn-outline-danger:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5); +} +.btn-check:checked + .btn-outline-danger, .btn-check:active + .btn-outline-danger, .btn-outline-danger:active, .btn-outline-danger.active, .btn-outline-danger.dropdown-toggle.show { + color: #fff; + background-color: #dc3545; + border-color: #dc3545; +} +.btn-check:checked + .btn-outline-danger:focus, .btn-check:active + .btn-outline-danger:focus, .btn-outline-danger:active:focus, .btn-outline-danger.active:focus, .btn-outline-danger.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.5); +} +.btn-outline-danger:disabled, .btn-outline-danger.disabled { + color: #dc3545; + background-color: transparent; +} + +.btn-outline-light { + color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-outline-light:hover { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-check:focus + .btn-outline-light, .btn-outline-light:focus { + box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5); +} +.btn-check:checked + .btn-outline-light, .btn-check:active + .btn-outline-light, .btn-outline-light:active, .btn-outline-light.active, .btn-outline-light.dropdown-toggle.show { + color: #000; + background-color: #f8f9fa; + border-color: #f8f9fa; +} +.btn-check:checked + .btn-outline-light:focus, .btn-check:active + .btn-outline-light:focus, .btn-outline-light:active:focus, .btn-outline-light.active:focus, .btn-outline-light.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(248, 249, 250, 0.5); +} +.btn-outline-light:disabled, .btn-outline-light.disabled { + color: #f8f9fa; + background-color: transparent; +} + +.btn-outline-dark { + color: #212529; + border-color: #212529; +} +.btn-outline-dark:hover { + color: #fff; + background-color: #212529; + border-color: #212529; +} +.btn-check:focus + .btn-outline-dark, .btn-outline-dark:focus { + box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5); +} +.btn-check:checked + .btn-outline-dark, .btn-check:active + .btn-outline-dark, .btn-outline-dark:active, .btn-outline-dark.active, .btn-outline-dark.dropdown-toggle.show { + color: #fff; + background-color: #212529; + border-color: #212529; +} +.btn-check:checked + .btn-outline-dark:focus, .btn-check:active + .btn-outline-dark:focus, .btn-outline-dark:active:focus, .btn-outline-dark.active:focus, .btn-outline-dark.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(33, 37, 41, 0.5); +} +.btn-outline-dark:disabled, .btn-outline-dark.disabled { + color: #212529; + background-color: transparent; +} + +.btn-link { + font-weight: 400; + color: #a1a9bd; + text-decoration: underline; +} +.btn-link:hover { + color: #818797; +} +.btn-link:disabled, .btn-link.disabled { + color: #6c757d; +} + +.btn-lg, .dark-mode .btn-group-lg > .btn, .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} + +.btn-sm, .dark-mode .btn-group-sm > .btn, .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} + +.fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .fade { + transition: none; + } +} +.fade:not(.show) { + opacity: 0; +} + +.collapse:not(.show) { + display: none; +} + +.collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing { + transition: none; + } +} +.collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .collapsing.collapse-horizontal { + transition: none; + } +} + +.dropup, +.dropend, +.dropdown, +.dropstart { + position: relative; +} + +.dropdown-toggle { + white-space: nowrap; +} +.dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropdown-menu { + position: absolute; + z-index: 1000; + display: none; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} +.dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: 0.125rem; +} + +.dropdown-menu-start { + --bs-position: start; +} +.dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} + +.dropdown-menu-end { + --bs-position: end; +} +.dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} + +@media (min-width: 576px) { + .dropdown-menu-sm-start { + --bs-position: start; + } + .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-sm-end { + --bs-position: end; + } + .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dropdown-menu-md-start { + --bs-position: start; + } + .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-md-end { + --bs-position: end; + } + .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dropdown-menu-lg-start { + --bs-position: start; + } + .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-lg-end { + --bs-position: end; + } + .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dropdown-menu-xl-start { + --bs-position: start; + } + .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-xl-end { + --bs-position: end; + } + .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dropdown-menu-xxl-start { + --bs-position: start; + } + .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + + .dropdown-menu-xxl-end { + --bs-position: end; + } + .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} +.dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dropup .dropdown-toggle:empty::after { + margin-left: 0; +} + +.dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} +.dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropend .dropdown-toggle::after { + vertical-align: 0; +} + +.dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} +.dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dropstart .dropdown-toggle::after { + display: none; +} +.dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dropstart .dropdown-toggle::before { + vertical-align: 0; +} + +.dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid rgba(0, 0, 0, 0.15); +} + +.dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; +} +.dropdown-item:hover, .dropdown-item:focus { + color: #1e2125; + background-color: #e9ecef; +} +.dropdown-item.active, .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #a1a9bd; +} +.dropdown-item.disabled, .dropdown-item:disabled { + color: #adb5bd; + pointer-events: none; + background-color: transparent; +} + +.dropdown-menu.show { + display: block; +} + +.dropdown-header { + display: block; + padding: 0.5rem 1rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} + +.dropdown-item-text { + display: block; + padding: 0.25rem 1rem; + color: #212529; +} + +.dropdown-menu-dark { + color: #dee2e6; + background-color: #343a40; + border-color: rgba(0, 0, 0, 0.15); +} +.dropdown-menu-dark .dropdown-item { + color: #dee2e6; +} +.dropdown-menu-dark .dropdown-item:hover, .dropdown-menu-dark .dropdown-item:focus { + color: #fff; + background-color: rgba(255, 255, 255, 0.15); +} +.dropdown-menu-dark .dropdown-item.active, .dropdown-menu-dark .dropdown-item:active { + color: #fff; + background-color: #a1a9bd; +} +.dropdown-menu-dark .dropdown-item.disabled, .dropdown-menu-dark .dropdown-item:disabled { + color: #adb5bd; +} +.dropdown-menu-dark .dropdown-divider { + border-color: rgba(0, 0, 0, 0.15); +} +.dropdown-menu-dark .dropdown-item-text { + color: #dee2e6; +} +.dropdown-menu-dark .dropdown-header { + color: #adb5bd; +} + +.btn-group, +.btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.btn-group > .btn, +.btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.btn-group > .btn-check:checked + .btn, +.btn-group > .btn-check:focus + .btn, +.btn-group > .btn:hover, +.btn-group > .btn:focus, +.btn-group > .btn:active, +.btn-group > .btn.active, +.btn-group-vertical > .btn-check:checked + .btn, +.btn-group-vertical > .btn-check:focus + .btn, +.btn-group-vertical > .btn:hover, +.btn-group-vertical > .btn:focus, +.btn-group-vertical > .btn:active, +.btn-group-vertical > .btn.active { + z-index: 1; +} + +.btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.btn-toolbar .input-group { + width: auto; +} + +.btn-group > .btn:not(:first-child), +.btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} +.btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.btn-group > .btn:nth-child(n+3), +.btn-group > :not(.btn-check) + .btn, +.btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} + +.dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dropdown-toggle-split::after, .dropup .dropdown-toggle-split::after, .dropend .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dropdown-toggle-split::before { + margin-right: 0; +} + +.btn-sm + .dropdown-toggle-split, .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} + +.btn-lg + .dropdown-toggle-split, .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} + +.btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.btn-group-vertical > .btn, +.btn-group-vertical > .btn-group { + width: 100%; +} +.btn-group-vertical > .btn:not(:first-child), +.btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} +.btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.btn-group-vertical > .btn ~ .btn, +.btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} + +.nav-link { + display: block; + padding: 0.5rem 1rem; + color: #a1a9bd; + text-decoration: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .nav-link { + transition: none; + } +} +.nav-link:hover, .nav-link:focus { + color: #818797; +} +.nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; +} + +.nav-tabs { + border-bottom: 1px solid #dee2e6; +} +.nav-tabs .nav-link { + margin-bottom: -1px; + background: none; + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.nav-tabs .nav-link:hover, .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; + isolation: isolate; +} +.nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} +.nav-tabs .nav-link.active, +.nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #cfd8dc; + border-color: #dee2e6 #dee2e6 #cfd8dc; +} +.nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} + +.nav-pills .nav-link { + background: none; + border: 0; + border-radius: 0.25rem; +} +.nav-pills .nav-link.active, +.nav-pills .show > .nav-link { + color: #fff; + background-color: #a1a9bd; +} + +.nav-fill > .nav-link, +.nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} + +.nav-justified > .nav-link, +.nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} + +.nav-fill .nav-item .nav-link, +.nav-justified .nav-item .nav-link { + width: 100%; +} + +.tab-content > .tab-pane { + display: none; +} +.tab-content > .active { + display: block; +} + +.navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.dark-mode .navbar > .container, +.dark-mode .navbar > .container-fluid, .navbar > .container, +.navbar > .container-fluid, +.dark-mode .navbar > .container-xxl, +.dark-mode .navbar > .container-xl, +.dark-mode .navbar > .container-lg, +.dark-mode .navbar > .container-md, +.dark-mode .navbar > .container-sm, +.navbar > .container-sm, +.navbar > .container-md, +.navbar > .container-lg, +.navbar > .container-xl, +.navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.navbar-brand { + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + text-decoration: none; + white-space: nowrap; +} +.navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} +.navbar-nav .dropdown-menu { + position: static; +} + +.navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} + +.navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} + +.navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; + transition: box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .navbar-toggler { + transition: none; + } +} +.navbar-toggler:hover { + text-decoration: none; +} +.navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 0.25rem; +} + +.navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} + +.navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} + +@media (min-width: 576px) { + .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-sm .navbar-toggler { + display: none; + } + .navbar-expand-sm .offcanvas-header { + display: none; + } + .navbar-expand-sm .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-sm .offcanvas-top, +.navbar-expand-sm .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-md .navbar-toggler { + display: none; + } + .navbar-expand-md .offcanvas-header { + display: none; + } + .navbar-expand-md .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-md .offcanvas-top, +.navbar-expand-md .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-lg .navbar-toggler { + display: none; + } + .navbar-expand-lg .offcanvas-header { + display: none; + } + .navbar-expand-lg .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-lg .offcanvas-top, +.navbar-expand-lg .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xl .navbar-toggler { + display: none; + } + .navbar-expand-xl .offcanvas-header { + display: none; + } + .navbar-expand-xl .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-xl .offcanvas-top, +.navbar-expand-xl .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .navbar-expand-xxl .navbar-toggler { + display: none; + } + .navbar-expand-xxl .offcanvas-header { + display: none; + } + .navbar-expand-xxl .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .navbar-expand-xxl .offcanvas-top, +.navbar-expand-xxl .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .navbar-expand-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.navbar-expand .navbar-nav { + flex-direction: row; +} +.navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} +.navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.navbar-expand .navbar-toggler { + display: none; +} +.navbar-expand .offcanvas-header { + display: none; +} +.navbar-expand .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; +} +.navbar-expand .offcanvas-top, +.navbar-expand .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; +} +.navbar-expand .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} + +.navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-brand:hover, .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.55); +} +.navbar-light .navbar-nav .nav-link:hover, .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} +.navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} +.navbar-light .navbar-nav .show > .nav-link, +.navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} +.navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.55); + border-color: rgba(0, 0, 0, 0.1); +} +.navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.55); +} +.navbar-light .navbar-text a, +.navbar-light .navbar-text a:hover, +.navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} + +.navbar-dark .navbar-brand { + color: #fff; +} +.navbar-dark .navbar-brand:hover, .navbar-dark .navbar-brand:focus { + color: #fff; +} +.navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.55); +} +.navbar-dark .navbar-nav .nav-link:hover, .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} +.navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} +.navbar-dark .navbar-nav .show > .nav-link, +.navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} +.navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.55); + border-color: rgba(255, 255, 255, 0.1); +} +.navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.55); +} +.navbar-dark .navbar-text a, +.navbar-dark .navbar-text a:hover, +.navbar-dark .navbar-text a:focus { + color: #fff; +} + +.card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} +.card > hr { + margin-right: 0; + margin-left: 0; +} +.card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} +.card > .card-header + .list-group, +.card > .list-group + .card-footer { + border-top: 0; +} + +.card-body { + flex: 1 1 auto; + padding: 1rem 1rem; +} + +.card-title { + margin-bottom: 0.5rem; +} + +.card-subtitle { + margin-top: -0.25rem; + margin-bottom: 0; +} + +.card-text:last-child { + margin-bottom: 0; +} + +.card-link + .card-link { + margin-left: 1rem; +} + +.card-header { + padding: 0.5rem 1rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} +.card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} + +.card-footer { + padding: 0.5rem 1rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} +.card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} + +.card-header-tabs { + margin-right: -0.5rem; + margin-bottom: -0.5rem; + margin-left: -0.5rem; + border-bottom: 0; +} +.card-header-tabs .nav-link.active { + background-color: #fff; + border-bottom-color: #fff; +} + +.card-header-pills { + margin-right: -0.5rem; + margin-left: -0.5rem; +} + +.card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1rem; + border-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-top, +.card-img-bottom { + width: 100%; +} + +.card-img, +.card-img-top { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} + +.card-img, +.card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} + +.card-group > .card { + margin-bottom: 0.75rem; +} +@media (min-width: 576px) { + .card-group { + display: flex; + flex-flow: row wrap; + } + .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-top, +.card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .card-group > .card:not(:last-child) .card-img-bottom, +.card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-top, +.card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .card-group > .card:not(:first-child) .card-img-bottom, +.card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} + +.accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: 1rem 1.25rem; + font-size: 1rem; + color: #212529; + text-align: left; + background-color: #cfd8dc; + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .accordion-button { + transition: none; + } +} +.accordion-button:not(.collapsed) { + color: #9198aa; + background-color: #f6f6f8; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125); +} +.accordion-button:not(.collapsed)::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239198aa'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + transform: rotate(-180deg); +} +.accordion-button::after { + flex-shrink: 0; + width: 1.25rem; + height: 1.25rem; + margin-left: auto; + content: ""; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-size: 1.25rem; + transition: transform 0.2s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .accordion-button::after { + transition: none; + } +} +.accordion-button:hover { + z-index: 2; +} +.accordion-button:focus { + z-index: 3; + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} + +.accordion-header { + margin-bottom: 0; +} + +.accordion-item { + background-color: #cfd8dc; + border: 1px solid rgba(0, 0, 0, 0.125); +} +.accordion-item:first-of-type { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.accordion-item:first-of-type .accordion-button { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.accordion-item:not(:first-of-type) { + border-top: 0; +} +.accordion-item:last-of-type { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} +.accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} + +.accordion-body { + padding: 1rem 1.25rem; +} + +.accordion-flush .accordion-collapse { + border-width: 0; +} +.accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.accordion-flush .accordion-item:first-child { + border-top: 0; +} +.accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.accordion-flush .accordion-item .accordion-button { + border-radius: 0; +} + +.breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0 0; + margin-bottom: 1rem; + list-style: none; +} + +.breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} +.breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: 0.5rem; + color: #6c757d; + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.breadcrumb-item.active { + color: #6c757d; +} + +.pagination { + display: flex; + padding-left: 0; + list-style: none; +} + +.page-link { + position: relative; + display: block; + color: #a1a9bd; + text-decoration: none; + background-color: #fff; + border: 1px solid #dee2e6; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .page-link { + transition: none; + } +} +.page-link:hover { + z-index: 2; + color: #818797; + background-color: #e9ecef; + border-color: #dee2e6; +} +.page-link:focus { + z-index: 3; + color: #818797; + background-color: #e9ecef; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} + +.page-item:not(:first-child) .page-link { + margin-left: -1px; +} +.page-item.active .page-link { + z-index: 3; + color: #fff; + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + background-color: #fff; + border-color: #dee2e6; +} + +.page-link { + padding: 0.375rem 0.75rem; +} + +.page-item:first-child .page-link { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} + +.pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; +} +.pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} +.pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} + +.pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; +} +.pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} +.pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} + +.badge { + display: inline-block; + padding: 0.35em 0.65em; + font-size: 0.75em; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; +} +.badge:empty { + display: none; +} + +.btn .badge { + position: relative; + top: -1px; +} + +.alert { + position: relative; + padding: 1rem 1rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} + +.alert-heading { + color: inherit; +} + +.alert-link { + font-weight: 700; +} + +.alert-dismissible { + padding-right: 3rem; +} +.alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} + +.alert-primary { + color: #616571; + background-color: #eceef2; + border-color: #e3e5eb; +} +.alert-primary .alert-link { + color: #4e515a; +} + +.alert-secondary { + color: #375e4e; + background-color: #deebe6; + border-color: #cee2da; +} +.alert-secondary .alert-link { + color: #2c4b3e; +} + +.alert-success { + color: #0f5132; + background-color: #d1e7dd; + border-color: #badbcc; +} +.alert-success .alert-link { + color: #0c4128; +} + +.alert-info { + color: #055160; + background-color: #cff4fc; + border-color: #b6effb; +} +.alert-info .alert-link { + color: #04414d; +} + +.alert-warning { + color: #664d03; + background-color: #fff3cd; + border-color: #ffecb5; +} +.alert-warning .alert-link { + color: #523e02; +} + +.alert-danger { + color: #842029; + background-color: #f8d7da; + border-color: #f5c2c7; +} +.alert-danger .alert-link { + color: #6a1a21; +} + +.alert-light { + color: #636464; + background-color: #fefefe; + border-color: #fdfdfe; +} +.alert-light .alert-link { + color: #4f5050; +} + +.alert-dark { + color: #141619; + background-color: #d3d3d4; + border-color: #bcbebf; +} +.alert-dark .alert-link { + color: #101214; +} + +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; +} + +.progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #a1a9bd; + transition: width 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar { + transition: none; + } +} + +.progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} + +.progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .progress-bar-animated { + animation: none; + } +} + +.list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: 0.25rem; +} + +.list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.list-group-numbered > li::before { + content: counters(section, ".") ". "; + counter-increment: section; +} + +.list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} +.list-group-item-action:hover, .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} +.list-group-item-action:active { + color: #212529; + background-color: #e9ecef; +} + +.list-group-item { + position: relative; + display: block; + padding: 0.5rem 1rem; + color: #212529; + text-decoration: none; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} +.list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.list-group-item.disabled, .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; +} +.list-group-item.active { + z-index: 2; + color: #fff; + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.list-group-item + .list-group-item { + border-top-width: 0; +} +.list-group-item + .list-group-item.active { + margin-top: -1px; + border-top-width: 1px; +} + +.list-group-horizontal { + flex-direction: row; +} +.list-group-horizontal > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; +} +.list-group-horizontal > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; +} +.list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; +} +.list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; +} + +@media (min-width: 576px) { + .list-group-horizontal-sm { + flex-direction: row; + } + .list-group-horizontal-sm > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-sm > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 768px) { + .list-group-horizontal-md { + flex-direction: row; + } + .list-group-horizontal-md > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-md > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 992px) { + .list-group-horizontal-lg { + flex-direction: row; + } + .list-group-horizontal-lg > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-lg > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 1200px) { + .list-group-horizontal-xl { + flex-direction: row; + } + .list-group-horizontal-xl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 1400px) { + .list-group-horizontal-xxl { + flex-direction: row; + } + .list-group-horizontal-xxl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +.list-group-flush { + border-radius: 0; +} +.list-group-flush > .list-group-item { + border-width: 0 0 1px; +} +.list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} + +.list-group-item-primary { + color: #616571; + background-color: #eceef2; +} +.list-group-item-primary.list-group-item-action:hover, .list-group-item-primary.list-group-item-action:focus { + color: #616571; + background-color: #d4d6da; +} +.list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #616571; + border-color: #616571; +} + +.list-group-item-secondary { + color: #375e4e; + background-color: #deebe6; +} +.list-group-item-secondary.list-group-item-action:hover, .list-group-item-secondary.list-group-item-action:focus { + color: #375e4e; + background-color: #c8d4cf; +} +.list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #375e4e; + border-color: #375e4e; +} + +.list-group-item-success { + color: #0f5132; + background-color: #d1e7dd; +} +.list-group-item-success.list-group-item-action:hover, .list-group-item-success.list-group-item-action:focus { + color: #0f5132; + background-color: #bcd0c7; +} +.list-group-item-success.list-group-item-action.active { + color: #fff; + background-color: #0f5132; + border-color: #0f5132; +} + +.list-group-item-info { + color: #055160; + background-color: #cff4fc; +} +.list-group-item-info.list-group-item-action:hover, .list-group-item-info.list-group-item-action:focus { + color: #055160; + background-color: #badce3; +} +.list-group-item-info.list-group-item-action.active { + color: #fff; + background-color: #055160; + border-color: #055160; +} + +.list-group-item-warning { + color: #664d03; + background-color: #fff3cd; +} +.list-group-item-warning.list-group-item-action:hover, .list-group-item-warning.list-group-item-action:focus { + color: #664d03; + background-color: #e6dbb9; +} +.list-group-item-warning.list-group-item-action.active { + color: #fff; + background-color: #664d03; + border-color: #664d03; +} + +.list-group-item-danger { + color: #842029; + background-color: #f8d7da; +} +.list-group-item-danger.list-group-item-action:hover, .list-group-item-danger.list-group-item-action:focus { + color: #842029; + background-color: #dfc2c4; +} +.list-group-item-danger.list-group-item-action.active { + color: #fff; + background-color: #842029; + border-color: #842029; +} + +.list-group-item-light { + color: #636464; + background-color: #fefefe; +} +.list-group-item-light.list-group-item-action:hover, .list-group-item-light.list-group-item-action:focus { + color: #636464; + background-color: #e5e5e5; +} +.list-group-item-light.list-group-item-action.active { + color: #fff; + background-color: #636464; + border-color: #636464; +} + +.list-group-item-dark { + color: #141619; + background-color: #d3d3d4; +} +.list-group-item-dark.list-group-item-action:hover, .list-group-item-dark.list-group-item-action:focus { + color: #141619; + background-color: #bebebf; +} +.list-group-item-dark.list-group-item-action.active { + color: #fff; + background-color: #141619; + border-color: #141619; +} + +.btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: #000; + background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; + border: 0; + border-radius: 0.25rem; + opacity: 0.5; +} +.btn-close:hover { + color: #000; + text-decoration: none; + opacity: 0.75; +} +.btn-close:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); + opacity: 1; +} +.btn-close:disabled, .btn-close.disabled { + pointer-events: none; + user-select: none; + opacity: 0.25; +} + +.btn-close-white { + filter: invert(1) grayscale(100%) brightness(200%); +} + +.toast { + width: 350px; + max-width: 100%; + font-size: 0.875rem; + pointer-events: auto; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} +.toast.showing { + opacity: 0; +} +.toast:not(.show) { + display: none; +} + +.toast-container { + width: max-content; + max-width: 100%; + pointer-events: none; +} +.toast-container > :not(:last-child) { + margin-bottom: 0.75rem; +} + +.toast-header { + display: flex; + align-items: center; + padding: 0.5rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.toast-header .btn-close { + margin-right: -0.375rem; + margin-left: 0.75rem; +} + +.toast-body { + padding: 0.75rem; + word-wrap: break-word; +} + +.modal { + position: fixed; + top: 0; + left: 0; + z-index: 1055; + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} + +.modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} +.modal.fade .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .modal-dialog { + transition: none; + } +} +.modal.show .modal-dialog { + transform: none; +} +.modal.modal-static .modal-dialog { + transform: scale(1.02); +} + +.modal-dialog-scrollable { + height: calc(100% - 1rem); +} +.modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.modal-dialog-scrollable .modal-body { + overflow-y: auto; +} + +.modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem); +} + +.modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} + +.modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + width: 100vw; + height: 100vh; + background-color: #000; +} +.modal-backdrop.fade { + opacity: 0; +} +.modal-backdrop.show { + opacity: 0.5; +} + +.modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} +.modal-header .btn-close { + padding: 0.5rem 0.5rem; + margin: -0.5rem -0.5rem -0.5rem auto; +} + +.modal-title { + margin-bottom: 0; + line-height: 1.5; +} + +.modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; +} + +.modal-footer { + display: flex; + flex-wrap: wrap; + flex-shrink: 0; + align-items: center; + justify-content: flex-end; + padding: 0.75rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: calc(0.3rem - 1px); + border-bottom-left-radius: calc(0.3rem - 1px); +} +.modal-footer > * { + margin: 0.25rem; +} + +@media (min-width: 576px) { + .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + + .modal-dialog-scrollable { + height: calc(100% - 3.5rem); + } + + .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + + .modal-sm { + max-width: 300px; + } +} +@media (min-width: 992px) { + .modal-lg, +.modal-xl { + max-width: 800px; + } +} +@media (min-width: 1200px) { + .modal-xl { + max-width: 1140px; + } +} +.modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.modal-fullscreen .modal-header { + border-radius: 0; +} +.modal-fullscreen .modal-body { + overflow-y: auto; +} +.modal-fullscreen .modal-footer { + border-radius: 0; +} + +@media (max-width: 575.98px) { + .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 767.98px) { + .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-md-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 991.98px) { + .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 1199.98px) { + .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 1399.98px) { + .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-header { + border-radius: 0; + } + .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } + .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } +} +.tooltip { + position: absolute; + z-index: 1080; + display: block; + margin: 0; + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} +.tooltip.show { + opacity: 0.9; +} +.tooltip .tooltip-arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} +.tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-tooltip-top, .dark-mode .bs-tooltip-auto[data-popper-placement^=top], .bs-tooltip-auto[data-popper-placement^=top] { + padding: 0.4rem 0; +} +.bs-tooltip-top .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: 0; +} +.bs-tooltip-top .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} + +.bs-tooltip-end, .dark-mode .bs-tooltip-auto[data-popper-placement^=right], .bs-tooltip-auto[data-popper-placement^=right] { + padding: 0 0.4rem; +} +.bs-tooltip-end .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} +.bs-tooltip-end .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} + +.bs-tooltip-bottom, .dark-mode .bs-tooltip-auto[data-popper-placement^=bottom], .bs-tooltip-auto[data-popper-placement^=bottom] { + padding: 0.4rem 0; +} +.bs-tooltip-bottom .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: 0; +} +.bs-tooltip-bottom .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} + +.bs-tooltip-start, .dark-mode .bs-tooltip-auto[data-popper-placement^=left], .bs-tooltip-auto[data-popper-placement^=left] { + padding: 0 0.4rem; +} +.bs-tooltip-start .tooltip-arrow, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} +.bs-tooltip-start .tooltip-arrow::before, .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} + +.tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} + +.popover { + position: absolute; + top: 0; + left: 0 /* rtl:ignore */; + z-index: 1070; + display: block; + max-width: 276px; + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} +.popover .popover-arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; +} +.popover .popover-arrow::before, .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} + +.bs-popover-top > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=top] > .popover-arrow, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-0.5rem - 1px); +} +.bs-popover-top > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-top > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} + +.bs-popover-end > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=right] > .popover-arrow, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; +} +.bs-popover-end > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-end > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} + +.bs-popover-bottom > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-0.5rem - 1px); +} +.bs-popover-bottom > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-bottom > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} +.bs-popover-bottom .popover-header::before, .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f0f0f0; +} + +.bs-popover-start > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=left] > .popover-arrow, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; +} +.bs-popover-start > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} +.bs-popover-start > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after, .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} + +.popover-header { + padding: 0.5rem 1rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f0f0f0; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} +.popover-header:empty { + display: none; +} + +.popover-body { + padding: 1rem 1rem; + color: #212529; +} + +.carousel { + position: relative; +} + +.carousel.pointer-event { + touch-action: pan-y; +} + +.carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.carousel-inner::after { + display: block; + clear: both; + content: ""; +} + +.carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .carousel-item { + transition: none; + } +} + +.carousel-item.active, +.carousel-item-next, +.carousel-item-prev { + display: block; +} + +/* rtl:begin:ignore */ +.carousel-item-next:not(.carousel-item-start), +.active.carousel-item-end { + transform: translateX(100%); +} + +.carousel-item-prev:not(.carousel-item-end), +.active.carousel-item-start { + transform: translateX(-100%); +} + +/* rtl:end:ignore */ +.carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.carousel-fade .carousel-item.active, +.carousel-fade .carousel-item-next.carousel-item-start, +.carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .carousel-fade .active.carousel-item-start, +.carousel-fade .active.carousel-item-end { + transition: none; + } +} + +.carousel-control-prev, +.carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-control-prev, +.carousel-control-next { + transition: none; + } +} +.carousel-control-prev:hover, .carousel-control-prev:focus, +.carousel-control-next:hover, +.carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} + +.carousel-control-prev { + left: 0; +} + +.carousel-control-next { + right: 0; +} + +.carousel-control-prev-icon, +.carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} + +/* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] +} */ +.carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} + +.carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} + +.carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} +.carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .carousel-indicators [data-bs-target] { + transition: none; + } +} +.carousel-indicators .active { + opacity: 1; +} + +.carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} + +.carousel-dark .carousel-control-prev-icon, +.carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.carousel-dark .carousel-caption { + color: #000; +} + +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: -0.125em; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + animation: 0.75s linear infinite spinner-border; +} + +.spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} + +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: -0.125em; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + animation: 0.75s linear infinite spinner-grow; +} + +.spinner-grow-sm { + width: 1rem; + height: 1rem; +} + +@media (prefers-reduced-motion: reduce) { + .spinner-border, +.spinner-grow { + animation-duration: 1.5s; + } +} +.offcanvas { + position: fixed; + bottom: 0; + z-index: 1045; + display: flex; + flex-direction: column; + max-width: 100%; + visibility: hidden; + background-color: #fff; + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .offcanvas { + transition: none; + } +} + +.offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.offcanvas-backdrop.fade { + opacity: 0; +} +.offcanvas-backdrop.show { + opacity: 0.5; +} + +.offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 1rem; +} +.offcanvas-header .btn-close { + padding: 0.5rem 0.5rem; + margin-top: -0.5rem; + margin-right: -0.5rem; + margin-bottom: -0.5rem; +} + +.offcanvas-title { + margin-bottom: 0; + line-height: 1.5; +} + +.offcanvas-body { + flex-grow: 1; + padding: 1rem 1rem; + overflow-y: auto; +} + +.offcanvas-start { + top: 0; + left: 0; + width: 400px; + border-right: 1px solid rgba(0, 0, 0, 0.2); + transform: translateX(-100%); +} + +.offcanvas-end { + top: 0; + right: 0; + width: 400px; + border-left: 1px solid rgba(0, 0, 0, 0.2); + transform: translateX(100%); +} + +.offcanvas-top { + top: 0; + right: 0; + left: 0; + height: 30vh; + max-height: 100%; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + transform: translateY(-100%); +} + +.offcanvas-bottom { + right: 0; + left: 0; + height: 30vh; + max-height: 100%; + border-top: 1px solid rgba(0, 0, 0, 0.2); + transform: translateY(100%); +} + +.offcanvas.show { + transform: none; +} + +.placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentColor; + opacity: 0.5; +} +.placeholder.btn::before { + display: inline-block; + content: ""; +} + +.placeholder-xs { + min-height: 0.6em; +} + +.placeholder-sm { + min-height: 0.8em; +} + +.placeholder-lg { + min-height: 1.2em; +} + +.placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} + +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.placeholder-wave { + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} + +@keyframes placeholder-wave { + 100% { + mask-position: -200% 0%; + } +} +.clearfix::after { + display: block; + clear: both; + content: ""; +} + +.link-primary { + color: #a1a9bd; +} +.link-primary:hover, .link-primary:focus { + color: #b4baca; +} + +.link-secondary { + color: #5B9D82; +} +.link-secondary:hover, .link-secondary:focus { + color: #7cb19b; +} + +.link-success { + color: #198754; +} +.link-success:hover, .link-success:focus { + color: #146c43; +} + +.link-info { + color: #0dcaf0; +} +.link-info:hover, .link-info:focus { + color: #3dd5f3; +} + +.link-warning { + color: #ffc107; +} +.link-warning:hover, .link-warning:focus { + color: #ffcd39; +} + +.link-danger { + color: #dc3545; +} +.link-danger:hover, .link-danger:focus { + color: #b02a37; +} + +.link-light { + color: #f8f9fa; +} +.link-light:hover, .link-light:focus { + color: #f9fafb; +} + +.link-dark { + color: #212529; +} +.link-dark:hover, .link-dark:focus { + color: #1a1e21; +} + +.ratio { + position: relative; + width: 100%; +} +.ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} + +.ratio-1x1 { + --bs-aspect-ratio: 100%; +} + +.ratio-4x3 { + --bs-aspect-ratio: 75%; +} + +.ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} + +.ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} + +.fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} + +.fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} + +.sticky-top { + position: sticky; + top: 0; + z-index: 1020; +} + +@media (min-width: 576px) { + .sticky-sm-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .sticky-md-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .sticky-lg-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .sticky-xxl-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +.hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} + +.vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} + +.visually-hidden, +.visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} + +.stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} + +.text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} + +.vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentColor; + opacity: 0.25; +} + +.align-baseline { + vertical-align: baseline !important; +} + +.align-top { + vertical-align: top !important; +} + +.align-middle { + vertical-align: middle !important; +} + +.align-bottom { + vertical-align: bottom !important; +} + +.align-text-bottom { + vertical-align: text-bottom !important; +} + +.align-text-top { + vertical-align: text-top !important; +} + +.float-start { + float: left !important; +} + +.float-end { + float: right !important; +} + +.float-none { + float: none !important; +} + +.opacity-0 { + opacity: 0 !important; +} + +.opacity-25 { + opacity: 0.25 !important; +} + +.opacity-50 { + opacity: 0.5 !important; +} + +.opacity-75 { + opacity: 0.75 !important; +} + +.opacity-100 { + opacity: 1 !important; +} + +.overflow-auto { + overflow: auto !important; +} + +.overflow-hidden { + overflow: hidden !important; +} + +.overflow-visible { + overflow: visible !important; +} + +.overflow-scroll { + overflow: scroll !important; +} + +.d-inline { + display: inline !important; +} + +.d-inline-block { + display: inline-block !important; +} + +.d-block { + display: block !important; +} + +.d-grid { + display: grid !important; +} + +.d-table { + display: table !important; +} + +.d-table-row { + display: table-row !important; +} + +.d-table-cell { + display: table-cell !important; +} + +.d-flex { + display: flex !important; +} + +.d-inline-flex { + display: inline-flex !important; +} + +.d-none { + display: none !important; +} + +.shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} + +.shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} + +.shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} + +.shadow-none { + box-shadow: none !important; +} + +.position-static { + position: static !important; +} + +.position-relative { + position: relative !important; +} + +.position-absolute { + position: absolute !important; +} + +.position-fixed { + position: fixed !important; +} + +.position-sticky { + position: sticky !important; +} + +.top-0 { + top: 0 !important; +} + +.top-50 { + top: 50% !important; +} + +.top-100 { + top: 100% !important; +} + +.bottom-0 { + bottom: 0 !important; +} + +.bottom-50 { + bottom: 50% !important; +} + +.bottom-100 { + bottom: 100% !important; +} + +.start-0 { + left: 0 !important; +} + +.start-50 { + left: 50% !important; +} + +.start-100 { + left: 100% !important; +} + +.end-0 { + right: 0 !important; +} + +.end-50 { + right: 50% !important; +} + +.end-100 { + right: 100% !important; +} + +.translate-middle { + transform: translate(-50%, -50%) !important; +} + +.translate-middle-x { + transform: translateX(-50%) !important; +} + +.translate-middle-y { + transform: translateY(-50%) !important; +} + +.border { + border: 1px solid #dee2e6 !important; +} + +.border-0 { + border: 0 !important; +} + +.border-top { + border-top: 1px solid #dee2e6 !important; +} + +.border-top-0 { + border-top: 0 !important; +} + +.border-end { + border-right: 1px solid #dee2e6 !important; +} + +.border-end-0 { + border-right: 0 !important; +} + +.border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} + +.border-bottom-0 { + border-bottom: 0 !important; +} + +.border-start { + border-left: 1px solid #dee2e6 !important; +} + +.border-start-0 { + border-left: 0 !important; +} + +.border-primary { + border-color: #a1a9bd !important; +} + +.border-secondary { + border-color: #5B9D82 !important; +} + +.border-success { + border-color: #198754 !important; +} + +.border-info { + border-color: #0dcaf0 !important; +} + +.border-warning { + border-color: #ffc107 !important; +} + +.border-danger { + border-color: #dc3545 !important; +} + +.border-light { + border-color: #f8f9fa !important; +} + +.border-dark { + border-color: #212529 !important; +} + +.border-white { + border-color: #fff !important; +} + +.border-1 { + border-width: 1px !important; +} + +.border-2 { + border-width: 2px !important; +} + +.border-3 { + border-width: 3px !important; +} + +.border-4 { + border-width: 4px !important; +} + +.border-5 { + border-width: 5px !important; +} + +.w-25 { + width: 25% !important; +} + +.w-50 { + width: 50% !important; +} + +.w-75 { + width: 75% !important; +} + +.w-100 { + width: 100% !important; +} + +.w-auto { + width: auto !important; +} + +.mw-100 { + max-width: 100% !important; +} + +.vw-100 { + width: 100vw !important; +} + +.min-vw-100 { + min-width: 100vw !important; +} + +.h-25 { + height: 25% !important; +} + +.h-50 { + height: 50% !important; +} + +.h-75 { + height: 75% !important; +} + +.h-100 { + height: 100% !important; +} + +.h-auto { + height: auto !important; +} + +.mh-100 { + max-height: 100% !important; +} + +.vh-100 { + height: 100vh !important; +} + +.min-vh-100 { + min-height: 100vh !important; +} + +.flex-fill { + flex: 1 1 auto !important; +} + +.flex-row { + flex-direction: row !important; +} + +.flex-column { + flex-direction: column !important; +} + +.flex-row-reverse { + flex-direction: row-reverse !important; +} + +.flex-column-reverse { + flex-direction: column-reverse !important; +} + +.flex-grow-0 { + flex-grow: 0 !important; +} + +.flex-grow-1 { + flex-grow: 1 !important; +} + +.flex-shrink-0 { + flex-shrink: 0 !important; +} + +.flex-shrink-1 { + flex-shrink: 1 !important; +} + +.flex-wrap { + flex-wrap: wrap !important; +} + +.flex-nowrap { + flex-wrap: nowrap !important; +} + +.flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} + +.gap-0 { + gap: 0 !important; +} + +.gap-1 { + gap: 0.25rem !important; +} + +.gap-2 { + gap: 0.5rem !important; +} + +.gap-3 { + gap: 1rem !important; +} + +.gap-4 { + gap: 1.5rem !important; +} + +.gap-5 { + gap: 3rem !important; +} + +.justify-content-start { + justify-content: flex-start !important; +} + +.justify-content-end { + justify-content: flex-end !important; +} + +.justify-content-center { + justify-content: center !important; +} + +.justify-content-between { + justify-content: space-between !important; +} + +.justify-content-around { + justify-content: space-around !important; +} + +.justify-content-evenly { + justify-content: space-evenly !important; +} + +.align-items-start { + align-items: flex-start !important; +} + +.align-items-end { + align-items: flex-end !important; +} + +.align-items-center { + align-items: center !important; +} + +.align-items-baseline { + align-items: baseline !important; +} + +.align-items-stretch { + align-items: stretch !important; +} + +.align-content-start { + align-content: flex-start !important; +} + +.align-content-end { + align-content: flex-end !important; +} + +.align-content-center { + align-content: center !important; +} + +.align-content-between { + align-content: space-between !important; +} + +.align-content-around { + align-content: space-around !important; +} + +.align-content-stretch { + align-content: stretch !important; +} + +.align-self-auto { + align-self: auto !important; +} + +.align-self-start { + align-self: flex-start !important; +} + +.align-self-end { + align-self: flex-end !important; +} + +.align-self-center { + align-self: center !important; +} + +.align-self-baseline { + align-self: baseline !important; +} + +.align-self-stretch { + align-self: stretch !important; +} + +.order-first { + order: -1 !important; +} + +.order-0 { + order: 0 !important; +} + +.order-1 { + order: 1 !important; +} + +.order-2 { + order: 2 !important; +} + +.order-3 { + order: 3 !important; +} + +.order-4 { + order: 4 !important; +} + +.order-5 { + order: 5 !important; +} + +.order-last { + order: 6 !important; +} + +.m-0 { + margin: 0 !important; +} + +.m-1 { + margin: 0.25rem !important; +} + +.m-2 { + margin: 0.5rem !important; +} + +.m-3 { + margin: 1rem !important; +} + +.m-4 { + margin: 1.5rem !important; +} + +.m-5 { + margin: 3rem !important; +} + +.m-auto { + margin: auto !important; +} + +.mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} + +.mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} + +.mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} + +.mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} + +.mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} + +.mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} + +.mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} + +.my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} + +.my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} + +.my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} + +.my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} + +.my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} + +.my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} + +.my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} + +.mt-0 { + margin-top: 0 !important; +} + +.mt-1 { + margin-top: 0.25rem !important; +} + +.mt-2 { + margin-top: 0.5rem !important; +} + +.mt-3 { + margin-top: 1rem !important; +} + +.mt-4 { + margin-top: 1.5rem !important; +} + +.mt-5 { + margin-top: 3rem !important; +} + +.mt-auto { + margin-top: auto !important; +} + +.me-0 { + margin-right: 0 !important; +} + +.me-1 { + margin-right: 0.25rem !important; +} + +.me-2 { + margin-right: 0.5rem !important; +} + +.me-3 { + margin-right: 1rem !important; +} + +.me-4 { + margin-right: 1.5rem !important; +} + +.me-5 { + margin-right: 3rem !important; +} + +.me-auto { + margin-right: auto !important; +} + +.mb-0 { + margin-bottom: 0 !important; +} + +.mb-1 { + margin-bottom: 0.25rem !important; +} + +.mb-2 { + margin-bottom: 0.5rem !important; +} + +.mb-3 { + margin-bottom: 1rem !important; +} + +.mb-4 { + margin-bottom: 1.5rem !important; +} + +.mb-5 { + margin-bottom: 3rem !important; +} + +.mb-auto { + margin-bottom: auto !important; +} + +.ms-0 { + margin-left: 0 !important; +} + +.ms-1 { + margin-left: 0.25rem !important; +} + +.ms-2 { + margin-left: 0.5rem !important; +} + +.ms-3 { + margin-left: 1rem !important; +} + +.ms-4 { + margin-left: 1.5rem !important; +} + +.ms-5 { + margin-left: 3rem !important; +} + +.ms-auto { + margin-left: auto !important; +} + +.p-0 { + padding: 0 !important; +} + +.p-1 { + padding: 0.25rem !important; +} + +.p-2 { + padding: 0.5rem !important; +} + +.p-3 { + padding: 1rem !important; +} + +.p-4 { + padding: 1.5rem !important; +} + +.p-5 { + padding: 3rem !important; +} + +.px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} + +.px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} + +.px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} + +.px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} + +.px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} + +.px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} + +.py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} + +.py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} + +.py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} + +.py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} + +.py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} + +.py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} + +.pt-0 { + padding-top: 0 !important; +} + +.pt-1 { + padding-top: 0.25rem !important; +} + +.pt-2 { + padding-top: 0.5rem !important; +} + +.pt-3 { + padding-top: 1rem !important; +} + +.pt-4 { + padding-top: 1.5rem !important; +} + +.pt-5 { + padding-top: 3rem !important; +} + +.pe-0 { + padding-right: 0 !important; +} + +.pe-1 { + padding-right: 0.25rem !important; +} + +.pe-2 { + padding-right: 0.5rem !important; +} + +.pe-3 { + padding-right: 1rem !important; +} + +.pe-4 { + padding-right: 1.5rem !important; +} + +.pe-5 { + padding-right: 3rem !important; +} + +.pb-0 { + padding-bottom: 0 !important; +} + +.pb-1 { + padding-bottom: 0.25rem !important; +} + +.pb-2 { + padding-bottom: 0.5rem !important; +} + +.pb-3 { + padding-bottom: 1rem !important; +} + +.pb-4 { + padding-bottom: 1.5rem !important; +} + +.pb-5 { + padding-bottom: 3rem !important; +} + +.ps-0 { + padding-left: 0 !important; +} + +.ps-1 { + padding-left: 0.25rem !important; +} + +.ps-2 { + padding-left: 0.5rem !important; +} + +.ps-3 { + padding-left: 1rem !important; +} + +.ps-4 { + padding-left: 1.5rem !important; +} + +.ps-5 { + padding-left: 3rem !important; +} + +.font-monospace { + font-family: var(--bs-font-monospace) !important; +} + +.fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} + +.fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} + +.fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} + +.fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} + +.fs-5 { + font-size: 1.25rem !important; +} + +.fs-6 { + font-size: 1rem !important; +} + +.fst-italic { + font-style: italic !important; +} + +.fst-normal { + font-style: normal !important; +} + +.fw-light { + font-weight: 300 !important; +} + +.fw-lighter { + font-weight: lighter !important; +} + +.fw-normal { + font-weight: 400 !important; +} + +.fw-bold { + font-weight: 700 !important; +} + +.fw-bolder { + font-weight: bolder !important; +} + +.lh-1 { + line-height: 1 !important; +} + +.lh-sm { + line-height: 1.25 !important; +} + +.lh-base { + line-height: 1.5 !important; +} + +.lh-lg { + line-height: 2 !important; +} + +.text-start { + text-align: left !important; +} + +.text-end { + text-align: right !important; +} + +.text-center { + text-align: center !important; +} + +.text-decoration-none { + text-decoration: none !important; +} + +.text-decoration-underline { + text-decoration: underline !important; +} + +.text-decoration-line-through { + text-decoration: line-through !important; +} + +.text-lowercase { + text-transform: lowercase !important; +} + +.text-uppercase { + text-transform: uppercase !important; +} + +.text-capitalize { + text-transform: capitalize !important; +} + +.text-wrap { + white-space: normal !important; +} + +.text-nowrap { + white-space: nowrap !important; +} + +/* rtl:begin:remove */ +.text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} + +/* rtl:end:remove */ +.text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} + +.text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} + +.text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} + +.text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} + +.text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} + +.text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} + +.text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} + +.text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} + +.text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} + +.text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} + +.text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} + +.text-muted { + --bs-text-opacity: 1; + color: #6c757d !important; +} + +.text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} + +.text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} + +.text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} + +.text-opacity-25 { + --bs-text-opacity: 0.25; +} + +.text-opacity-50 { + --bs-text-opacity: 0.5; +} + +.text-opacity-75 { + --bs-text-opacity: 0.75; +} + +.text-opacity-100 { + --bs-text-opacity: 1; +} + +.bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} + +.bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} + +.bg-opacity-10 { + --bs-bg-opacity: 0.1; +} + +.bg-opacity-25 { + --bs-bg-opacity: 0.25; +} + +.bg-opacity-50 { + --bs-bg-opacity: 0.5; +} + +.bg-opacity-75 { + --bs-bg-opacity: 0.75; +} + +.bg-opacity-100 { + --bs-bg-opacity: 1; +} + +.bg-gradient { + background-image: var(--bs-gradient) !important; +} + +.user-select-all { + user-select: all !important; +} + +.user-select-auto { + user-select: auto !important; +} + +.user-select-none { + user-select: none !important; +} + +.pe-none { + pointer-events: none !important; +} + +.pe-auto { + pointer-events: auto !important; +} + +.rounded { + border-radius: 0.25rem !important; +} + +.rounded-0 { + border-radius: 0 !important; +} + +.rounded-1 { + border-radius: 0.2rem !important; +} + +.rounded-2 { + border-radius: 0.25rem !important; +} + +.rounded-3 { + border-radius: 0.3rem !important; +} + +.rounded-circle { + border-radius: 50% !important; +} + +.rounded-pill { + border-radius: 50rem !important; +} + +.rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} + +.rounded-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} + +.rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} + +.rounded-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; +} + +.visible { + visibility: visible !important; +} + +.invisible { + visibility: hidden !important; +} + +@media (min-width: 576px) { + .float-sm-start { + float: left !important; + } + + .float-sm-end { + float: right !important; + } + + .float-sm-none { + float: none !important; + } + + .d-sm-inline { + display: inline !important; + } + + .d-sm-inline-block { + display: inline-block !important; + } + + .d-sm-block { + display: block !important; + } + + .d-sm-grid { + display: grid !important; + } + + .d-sm-table { + display: table !important; + } + + .d-sm-table-row { + display: table-row !important; + } + + .d-sm-table-cell { + display: table-cell !important; + } + + .d-sm-flex { + display: flex !important; + } + + .d-sm-inline-flex { + display: inline-flex !important; + } + + .d-sm-none { + display: none !important; + } + + .flex-sm-fill { + flex: 1 1 auto !important; + } + + .flex-sm-row { + flex-direction: row !important; + } + + .flex-sm-column { + flex-direction: column !important; + } + + .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-sm-grow-0 { + flex-grow: 0 !important; + } + + .flex-sm-grow-1 { + flex-grow: 1 !important; + } + + .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-sm-wrap { + flex-wrap: wrap !important; + } + + .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + + .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-sm-0 { + gap: 0 !important; + } + + .gap-sm-1 { + gap: 0.25rem !important; + } + + .gap-sm-2 { + gap: 0.5rem !important; + } + + .gap-sm-3 { + gap: 1rem !important; + } + + .gap-sm-4 { + gap: 1.5rem !important; + } + + .gap-sm-5 { + gap: 3rem !important; + } + + .justify-content-sm-start { + justify-content: flex-start !important; + } + + .justify-content-sm-end { + justify-content: flex-end !important; + } + + .justify-content-sm-center { + justify-content: center !important; + } + + .justify-content-sm-between { + justify-content: space-between !important; + } + + .justify-content-sm-around { + justify-content: space-around !important; + } + + .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + + .align-items-sm-start { + align-items: flex-start !important; + } + + .align-items-sm-end { + align-items: flex-end !important; + } + + .align-items-sm-center { + align-items: center !important; + } + + .align-items-sm-baseline { + align-items: baseline !important; + } + + .align-items-sm-stretch { + align-items: stretch !important; + } + + .align-content-sm-start { + align-content: flex-start !important; + } + + .align-content-sm-end { + align-content: flex-end !important; + } + + .align-content-sm-center { + align-content: center !important; + } + + .align-content-sm-between { + align-content: space-between !important; + } + + .align-content-sm-around { + align-content: space-around !important; + } + + .align-content-sm-stretch { + align-content: stretch !important; + } + + .align-self-sm-auto { + align-self: auto !important; + } + + .align-self-sm-start { + align-self: flex-start !important; + } + + .align-self-sm-end { + align-self: flex-end !important; + } + + .align-self-sm-center { + align-self: center !important; + } + + .align-self-sm-baseline { + align-self: baseline !important; + } + + .align-self-sm-stretch { + align-self: stretch !important; + } + + .order-sm-first { + order: -1 !important; + } + + .order-sm-0 { + order: 0 !important; + } + + .order-sm-1 { + order: 1 !important; + } + + .order-sm-2 { + order: 2 !important; + } + + .order-sm-3 { + order: 3 !important; + } + + .order-sm-4 { + order: 4 !important; + } + + .order-sm-5 { + order: 5 !important; + } + + .order-sm-last { + order: 6 !important; + } + + .m-sm-0 { + margin: 0 !important; + } + + .m-sm-1 { + margin: 0.25rem !important; + } + + .m-sm-2 { + margin: 0.5rem !important; + } + + .m-sm-3 { + margin: 1rem !important; + } + + .m-sm-4 { + margin: 1.5rem !important; + } + + .m-sm-5 { + margin: 3rem !important; + } + + .m-sm-auto { + margin: auto !important; + } + + .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-sm-0 { + margin-top: 0 !important; + } + + .mt-sm-1 { + margin-top: 0.25rem !important; + } + + .mt-sm-2 { + margin-top: 0.5rem !important; + } + + .mt-sm-3 { + margin-top: 1rem !important; + } + + .mt-sm-4 { + margin-top: 1.5rem !important; + } + + .mt-sm-5 { + margin-top: 3rem !important; + } + + .mt-sm-auto { + margin-top: auto !important; + } + + .me-sm-0 { + margin-right: 0 !important; + } + + .me-sm-1 { + margin-right: 0.25rem !important; + } + + .me-sm-2 { + margin-right: 0.5rem !important; + } + + .me-sm-3 { + margin-right: 1rem !important; + } + + .me-sm-4 { + margin-right: 1.5rem !important; + } + + .me-sm-5 { + margin-right: 3rem !important; + } + + .me-sm-auto { + margin-right: auto !important; + } + + .mb-sm-0 { + margin-bottom: 0 !important; + } + + .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + + .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + + .mb-sm-3 { + margin-bottom: 1rem !important; + } + + .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + + .mb-sm-5 { + margin-bottom: 3rem !important; + } + + .mb-sm-auto { + margin-bottom: auto !important; + } + + .ms-sm-0 { + margin-left: 0 !important; + } + + .ms-sm-1 { + margin-left: 0.25rem !important; + } + + .ms-sm-2 { + margin-left: 0.5rem !important; + } + + .ms-sm-3 { + margin-left: 1rem !important; + } + + .ms-sm-4 { + margin-left: 1.5rem !important; + } + + .ms-sm-5 { + margin-left: 3rem !important; + } + + .ms-sm-auto { + margin-left: auto !important; + } + + .p-sm-0 { + padding: 0 !important; + } + + .p-sm-1 { + padding: 0.25rem !important; + } + + .p-sm-2 { + padding: 0.5rem !important; + } + + .p-sm-3 { + padding: 1rem !important; + } + + .p-sm-4 { + padding: 1.5rem !important; + } + + .p-sm-5 { + padding: 3rem !important; + } + + .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-sm-0 { + padding-top: 0 !important; + } + + .pt-sm-1 { + padding-top: 0.25rem !important; + } + + .pt-sm-2 { + padding-top: 0.5rem !important; + } + + .pt-sm-3 { + padding-top: 1rem !important; + } + + .pt-sm-4 { + padding-top: 1.5rem !important; + } + + .pt-sm-5 { + padding-top: 3rem !important; + } + + .pe-sm-0 { + padding-right: 0 !important; + } + + .pe-sm-1 { + padding-right: 0.25rem !important; + } + + .pe-sm-2 { + padding-right: 0.5rem !important; + } + + .pe-sm-3 { + padding-right: 1rem !important; + } + + .pe-sm-4 { + padding-right: 1.5rem !important; + } + + .pe-sm-5 { + padding-right: 3rem !important; + } + + .pb-sm-0 { + padding-bottom: 0 !important; + } + + .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + + .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + + .pb-sm-3 { + padding-bottom: 1rem !important; + } + + .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + + .pb-sm-5 { + padding-bottom: 3rem !important; + } + + .ps-sm-0 { + padding-left: 0 !important; + } + + .ps-sm-1 { + padding-left: 0.25rem !important; + } + + .ps-sm-2 { + padding-left: 0.5rem !important; + } + + .ps-sm-3 { + padding-left: 1rem !important; + } + + .ps-sm-4 { + padding-left: 1.5rem !important; + } + + .ps-sm-5 { + padding-left: 3rem !important; + } + + .text-sm-start { + text-align: left !important; + } + + .text-sm-end { + text-align: right !important; + } + + .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .float-md-start { + float: left !important; + } + + .float-md-end { + float: right !important; + } + + .float-md-none { + float: none !important; + } + + .d-md-inline { + display: inline !important; + } + + .d-md-inline-block { + display: inline-block !important; + } + + .d-md-block { + display: block !important; + } + + .d-md-grid { + display: grid !important; + } + + .d-md-table { + display: table !important; + } + + .d-md-table-row { + display: table-row !important; + } + + .d-md-table-cell { + display: table-cell !important; + } + + .d-md-flex { + display: flex !important; + } + + .d-md-inline-flex { + display: inline-flex !important; + } + + .d-md-none { + display: none !important; + } + + .flex-md-fill { + flex: 1 1 auto !important; + } + + .flex-md-row { + flex-direction: row !important; + } + + .flex-md-column { + flex-direction: column !important; + } + + .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-md-grow-0 { + flex-grow: 0 !important; + } + + .flex-md-grow-1 { + flex-grow: 1 !important; + } + + .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-md-wrap { + flex-wrap: wrap !important; + } + + .flex-md-nowrap { + flex-wrap: nowrap !important; + } + + .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-md-0 { + gap: 0 !important; + } + + .gap-md-1 { + gap: 0.25rem !important; + } + + .gap-md-2 { + gap: 0.5rem !important; + } + + .gap-md-3 { + gap: 1rem !important; + } + + .gap-md-4 { + gap: 1.5rem !important; + } + + .gap-md-5 { + gap: 3rem !important; + } + + .justify-content-md-start { + justify-content: flex-start !important; + } + + .justify-content-md-end { + justify-content: flex-end !important; + } + + .justify-content-md-center { + justify-content: center !important; + } + + .justify-content-md-between { + justify-content: space-between !important; + } + + .justify-content-md-around { + justify-content: space-around !important; + } + + .justify-content-md-evenly { + justify-content: space-evenly !important; + } + + .align-items-md-start { + align-items: flex-start !important; + } + + .align-items-md-end { + align-items: flex-end !important; + } + + .align-items-md-center { + align-items: center !important; + } + + .align-items-md-baseline { + align-items: baseline !important; + } + + .align-items-md-stretch { + align-items: stretch !important; + } + + .align-content-md-start { + align-content: flex-start !important; + } + + .align-content-md-end { + align-content: flex-end !important; + } + + .align-content-md-center { + align-content: center !important; + } + + .align-content-md-between { + align-content: space-between !important; + } + + .align-content-md-around { + align-content: space-around !important; + } + + .align-content-md-stretch { + align-content: stretch !important; + } + + .align-self-md-auto { + align-self: auto !important; + } + + .align-self-md-start { + align-self: flex-start !important; + } + + .align-self-md-end { + align-self: flex-end !important; + } + + .align-self-md-center { + align-self: center !important; + } + + .align-self-md-baseline { + align-self: baseline !important; + } + + .align-self-md-stretch { + align-self: stretch !important; + } + + .order-md-first { + order: -1 !important; + } + + .order-md-0 { + order: 0 !important; + } + + .order-md-1 { + order: 1 !important; + } + + .order-md-2 { + order: 2 !important; + } + + .order-md-3 { + order: 3 !important; + } + + .order-md-4 { + order: 4 !important; + } + + .order-md-5 { + order: 5 !important; + } + + .order-md-last { + order: 6 !important; + } + + .m-md-0 { + margin: 0 !important; + } + + .m-md-1 { + margin: 0.25rem !important; + } + + .m-md-2 { + margin: 0.5rem !important; + } + + .m-md-3 { + margin: 1rem !important; + } + + .m-md-4 { + margin: 1.5rem !important; + } + + .m-md-5 { + margin: 3rem !important; + } + + .m-md-auto { + margin: auto !important; + } + + .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-md-0 { + margin-top: 0 !important; + } + + .mt-md-1 { + margin-top: 0.25rem !important; + } + + .mt-md-2 { + margin-top: 0.5rem !important; + } + + .mt-md-3 { + margin-top: 1rem !important; + } + + .mt-md-4 { + margin-top: 1.5rem !important; + } + + .mt-md-5 { + margin-top: 3rem !important; + } + + .mt-md-auto { + margin-top: auto !important; + } + + .me-md-0 { + margin-right: 0 !important; + } + + .me-md-1 { + margin-right: 0.25rem !important; + } + + .me-md-2 { + margin-right: 0.5rem !important; + } + + .me-md-3 { + margin-right: 1rem !important; + } + + .me-md-4 { + margin-right: 1.5rem !important; + } + + .me-md-5 { + margin-right: 3rem !important; + } + + .me-md-auto { + margin-right: auto !important; + } + + .mb-md-0 { + margin-bottom: 0 !important; + } + + .mb-md-1 { + margin-bottom: 0.25rem !important; + } + + .mb-md-2 { + margin-bottom: 0.5rem !important; + } + + .mb-md-3 { + margin-bottom: 1rem !important; + } + + .mb-md-4 { + margin-bottom: 1.5rem !important; + } + + .mb-md-5 { + margin-bottom: 3rem !important; + } + + .mb-md-auto { + margin-bottom: auto !important; + } + + .ms-md-0 { + margin-left: 0 !important; + } + + .ms-md-1 { + margin-left: 0.25rem !important; + } + + .ms-md-2 { + margin-left: 0.5rem !important; + } + + .ms-md-3 { + margin-left: 1rem !important; + } + + .ms-md-4 { + margin-left: 1.5rem !important; + } + + .ms-md-5 { + margin-left: 3rem !important; + } + + .ms-md-auto { + margin-left: auto !important; + } + + .p-md-0 { + padding: 0 !important; + } + + .p-md-1 { + padding: 0.25rem !important; + } + + .p-md-2 { + padding: 0.5rem !important; + } + + .p-md-3 { + padding: 1rem !important; + } + + .p-md-4 { + padding: 1.5rem !important; + } + + .p-md-5 { + padding: 3rem !important; + } + + .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-md-0 { + padding-top: 0 !important; + } + + .pt-md-1 { + padding-top: 0.25rem !important; + } + + .pt-md-2 { + padding-top: 0.5rem !important; + } + + .pt-md-3 { + padding-top: 1rem !important; + } + + .pt-md-4 { + padding-top: 1.5rem !important; + } + + .pt-md-5 { + padding-top: 3rem !important; + } + + .pe-md-0 { + padding-right: 0 !important; + } + + .pe-md-1 { + padding-right: 0.25rem !important; + } + + .pe-md-2 { + padding-right: 0.5rem !important; + } + + .pe-md-3 { + padding-right: 1rem !important; + } + + .pe-md-4 { + padding-right: 1.5rem !important; + } + + .pe-md-5 { + padding-right: 3rem !important; + } + + .pb-md-0 { + padding-bottom: 0 !important; + } + + .pb-md-1 { + padding-bottom: 0.25rem !important; + } + + .pb-md-2 { + padding-bottom: 0.5rem !important; + } + + .pb-md-3 { + padding-bottom: 1rem !important; + } + + .pb-md-4 { + padding-bottom: 1.5rem !important; + } + + .pb-md-5 { + padding-bottom: 3rem !important; + } + + .ps-md-0 { + padding-left: 0 !important; + } + + .ps-md-1 { + padding-left: 0.25rem !important; + } + + .ps-md-2 { + padding-left: 0.5rem !important; + } + + .ps-md-3 { + padding-left: 1rem !important; + } + + .ps-md-4 { + padding-left: 1.5rem !important; + } + + .ps-md-5 { + padding-left: 3rem !important; + } + + .text-md-start { + text-align: left !important; + } + + .text-md-end { + text-align: right !important; + } + + .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .float-lg-start { + float: left !important; + } + + .float-lg-end { + float: right !important; + } + + .float-lg-none { + float: none !important; + } + + .d-lg-inline { + display: inline !important; + } + + .d-lg-inline-block { + display: inline-block !important; + } + + .d-lg-block { + display: block !important; + } + + .d-lg-grid { + display: grid !important; + } + + .d-lg-table { + display: table !important; + } + + .d-lg-table-row { + display: table-row !important; + } + + .d-lg-table-cell { + display: table-cell !important; + } + + .d-lg-flex { + display: flex !important; + } + + .d-lg-inline-flex { + display: inline-flex !important; + } + + .d-lg-none { + display: none !important; + } + + .flex-lg-fill { + flex: 1 1 auto !important; + } + + .flex-lg-row { + flex-direction: row !important; + } + + .flex-lg-column { + flex-direction: column !important; + } + + .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-lg-grow-0 { + flex-grow: 0 !important; + } + + .flex-lg-grow-1 { + flex-grow: 1 !important; + } + + .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-lg-wrap { + flex-wrap: wrap !important; + } + + .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + + .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-lg-0 { + gap: 0 !important; + } + + .gap-lg-1 { + gap: 0.25rem !important; + } + + .gap-lg-2 { + gap: 0.5rem !important; + } + + .gap-lg-3 { + gap: 1rem !important; + } + + .gap-lg-4 { + gap: 1.5rem !important; + } + + .gap-lg-5 { + gap: 3rem !important; + } + + .justify-content-lg-start { + justify-content: flex-start !important; + } + + .justify-content-lg-end { + justify-content: flex-end !important; + } + + .justify-content-lg-center { + justify-content: center !important; + } + + .justify-content-lg-between { + justify-content: space-between !important; + } + + .justify-content-lg-around { + justify-content: space-around !important; + } + + .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + + .align-items-lg-start { + align-items: flex-start !important; + } + + .align-items-lg-end { + align-items: flex-end !important; + } + + .align-items-lg-center { + align-items: center !important; + } + + .align-items-lg-baseline { + align-items: baseline !important; + } + + .align-items-lg-stretch { + align-items: stretch !important; + } + + .align-content-lg-start { + align-content: flex-start !important; + } + + .align-content-lg-end { + align-content: flex-end !important; + } + + .align-content-lg-center { + align-content: center !important; + } + + .align-content-lg-between { + align-content: space-between !important; + } + + .align-content-lg-around { + align-content: space-around !important; + } + + .align-content-lg-stretch { + align-content: stretch !important; + } + + .align-self-lg-auto { + align-self: auto !important; + } + + .align-self-lg-start { + align-self: flex-start !important; + } + + .align-self-lg-end { + align-self: flex-end !important; + } + + .align-self-lg-center { + align-self: center !important; + } + + .align-self-lg-baseline { + align-self: baseline !important; + } + + .align-self-lg-stretch { + align-self: stretch !important; + } + + .order-lg-first { + order: -1 !important; + } + + .order-lg-0 { + order: 0 !important; + } + + .order-lg-1 { + order: 1 !important; + } + + .order-lg-2 { + order: 2 !important; + } + + .order-lg-3 { + order: 3 !important; + } + + .order-lg-4 { + order: 4 !important; + } + + .order-lg-5 { + order: 5 !important; + } + + .order-lg-last { + order: 6 !important; + } + + .m-lg-0 { + margin: 0 !important; + } + + .m-lg-1 { + margin: 0.25rem !important; + } + + .m-lg-2 { + margin: 0.5rem !important; + } + + .m-lg-3 { + margin: 1rem !important; + } + + .m-lg-4 { + margin: 1.5rem !important; + } + + .m-lg-5 { + margin: 3rem !important; + } + + .m-lg-auto { + margin: auto !important; + } + + .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-lg-0 { + margin-top: 0 !important; + } + + .mt-lg-1 { + margin-top: 0.25rem !important; + } + + .mt-lg-2 { + margin-top: 0.5rem !important; + } + + .mt-lg-3 { + margin-top: 1rem !important; + } + + .mt-lg-4 { + margin-top: 1.5rem !important; + } + + .mt-lg-5 { + margin-top: 3rem !important; + } + + .mt-lg-auto { + margin-top: auto !important; + } + + .me-lg-0 { + margin-right: 0 !important; + } + + .me-lg-1 { + margin-right: 0.25rem !important; + } + + .me-lg-2 { + margin-right: 0.5rem !important; + } + + .me-lg-3 { + margin-right: 1rem !important; + } + + .me-lg-4 { + margin-right: 1.5rem !important; + } + + .me-lg-5 { + margin-right: 3rem !important; + } + + .me-lg-auto { + margin-right: auto !important; + } + + .mb-lg-0 { + margin-bottom: 0 !important; + } + + .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + + .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + + .mb-lg-3 { + margin-bottom: 1rem !important; + } + + .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + + .mb-lg-5 { + margin-bottom: 3rem !important; + } + + .mb-lg-auto { + margin-bottom: auto !important; + } + + .ms-lg-0 { + margin-left: 0 !important; + } + + .ms-lg-1 { + margin-left: 0.25rem !important; + } + + .ms-lg-2 { + margin-left: 0.5rem !important; + } + + .ms-lg-3 { + margin-left: 1rem !important; + } + + .ms-lg-4 { + margin-left: 1.5rem !important; + } + + .ms-lg-5 { + margin-left: 3rem !important; + } + + .ms-lg-auto { + margin-left: auto !important; + } + + .p-lg-0 { + padding: 0 !important; + } + + .p-lg-1 { + padding: 0.25rem !important; + } + + .p-lg-2 { + padding: 0.5rem !important; + } + + .p-lg-3 { + padding: 1rem !important; + } + + .p-lg-4 { + padding: 1.5rem !important; + } + + .p-lg-5 { + padding: 3rem !important; + } + + .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-lg-0 { + padding-top: 0 !important; + } + + .pt-lg-1 { + padding-top: 0.25rem !important; + } + + .pt-lg-2 { + padding-top: 0.5rem !important; + } + + .pt-lg-3 { + padding-top: 1rem !important; + } + + .pt-lg-4 { + padding-top: 1.5rem !important; + } + + .pt-lg-5 { + padding-top: 3rem !important; + } + + .pe-lg-0 { + padding-right: 0 !important; + } + + .pe-lg-1 { + padding-right: 0.25rem !important; + } + + .pe-lg-2 { + padding-right: 0.5rem !important; + } + + .pe-lg-3 { + padding-right: 1rem !important; + } + + .pe-lg-4 { + padding-right: 1.5rem !important; + } + + .pe-lg-5 { + padding-right: 3rem !important; + } + + .pb-lg-0 { + padding-bottom: 0 !important; + } + + .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + + .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + + .pb-lg-3 { + padding-bottom: 1rem !important; + } + + .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + + .pb-lg-5 { + padding-bottom: 3rem !important; + } + + .ps-lg-0 { + padding-left: 0 !important; + } + + .ps-lg-1 { + padding-left: 0.25rem !important; + } + + .ps-lg-2 { + padding-left: 0.5rem !important; + } + + .ps-lg-3 { + padding-left: 1rem !important; + } + + .ps-lg-4 { + padding-left: 1.5rem !important; + } + + .ps-lg-5 { + padding-left: 3rem !important; + } + + .text-lg-start { + text-align: left !important; + } + + .text-lg-end { + text-align: right !important; + } + + .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .float-xl-start { + float: left !important; + } + + .float-xl-end { + float: right !important; + } + + .float-xl-none { + float: none !important; + } + + .d-xl-inline { + display: inline !important; + } + + .d-xl-inline-block { + display: inline-block !important; + } + + .d-xl-block { + display: block !important; + } + + .d-xl-grid { + display: grid !important; + } + + .d-xl-table { + display: table !important; + } + + .d-xl-table-row { + display: table-row !important; + } + + .d-xl-table-cell { + display: table-cell !important; + } + + .d-xl-flex { + display: flex !important; + } + + .d-xl-inline-flex { + display: inline-flex !important; + } + + .d-xl-none { + display: none !important; + } + + .flex-xl-fill { + flex: 1 1 auto !important; + } + + .flex-xl-row { + flex-direction: row !important; + } + + .flex-xl-column { + flex-direction: column !important; + } + + .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-xl-grow-0 { + flex-grow: 0 !important; + } + + .flex-xl-grow-1 { + flex-grow: 1 !important; + } + + .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-xl-wrap { + flex-wrap: wrap !important; + } + + .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + + .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-xl-0 { + gap: 0 !important; + } + + .gap-xl-1 { + gap: 0.25rem !important; + } + + .gap-xl-2 { + gap: 0.5rem !important; + } + + .gap-xl-3 { + gap: 1rem !important; + } + + .gap-xl-4 { + gap: 1.5rem !important; + } + + .gap-xl-5 { + gap: 3rem !important; + } + + .justify-content-xl-start { + justify-content: flex-start !important; + } + + .justify-content-xl-end { + justify-content: flex-end !important; + } + + .justify-content-xl-center { + justify-content: center !important; + } + + .justify-content-xl-between { + justify-content: space-between !important; + } + + .justify-content-xl-around { + justify-content: space-around !important; + } + + .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + + .align-items-xl-start { + align-items: flex-start !important; + } + + .align-items-xl-end { + align-items: flex-end !important; + } + + .align-items-xl-center { + align-items: center !important; + } + + .align-items-xl-baseline { + align-items: baseline !important; + } + + .align-items-xl-stretch { + align-items: stretch !important; + } + + .align-content-xl-start { + align-content: flex-start !important; + } + + .align-content-xl-end { + align-content: flex-end !important; + } + + .align-content-xl-center { + align-content: center !important; + } + + .align-content-xl-between { + align-content: space-between !important; + } + + .align-content-xl-around { + align-content: space-around !important; + } + + .align-content-xl-stretch { + align-content: stretch !important; + } + + .align-self-xl-auto { + align-self: auto !important; + } + + .align-self-xl-start { + align-self: flex-start !important; + } + + .align-self-xl-end { + align-self: flex-end !important; + } + + .align-self-xl-center { + align-self: center !important; + } + + .align-self-xl-baseline { + align-self: baseline !important; + } + + .align-self-xl-stretch { + align-self: stretch !important; + } + + .order-xl-first { + order: -1 !important; + } + + .order-xl-0 { + order: 0 !important; + } + + .order-xl-1 { + order: 1 !important; + } + + .order-xl-2 { + order: 2 !important; + } + + .order-xl-3 { + order: 3 !important; + } + + .order-xl-4 { + order: 4 !important; + } + + .order-xl-5 { + order: 5 !important; + } + + .order-xl-last { + order: 6 !important; + } + + .m-xl-0 { + margin: 0 !important; + } + + .m-xl-1 { + margin: 0.25rem !important; + } + + .m-xl-2 { + margin: 0.5rem !important; + } + + .m-xl-3 { + margin: 1rem !important; + } + + .m-xl-4 { + margin: 1.5rem !important; + } + + .m-xl-5 { + margin: 3rem !important; + } + + .m-xl-auto { + margin: auto !important; + } + + .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-xl-0 { + margin-top: 0 !important; + } + + .mt-xl-1 { + margin-top: 0.25rem !important; + } + + .mt-xl-2 { + margin-top: 0.5rem !important; + } + + .mt-xl-3 { + margin-top: 1rem !important; + } + + .mt-xl-4 { + margin-top: 1.5rem !important; + } + + .mt-xl-5 { + margin-top: 3rem !important; + } + + .mt-xl-auto { + margin-top: auto !important; + } + + .me-xl-0 { + margin-right: 0 !important; + } + + .me-xl-1 { + margin-right: 0.25rem !important; + } + + .me-xl-2 { + margin-right: 0.5rem !important; + } + + .me-xl-3 { + margin-right: 1rem !important; + } + + .me-xl-4 { + margin-right: 1.5rem !important; + } + + .me-xl-5 { + margin-right: 3rem !important; + } + + .me-xl-auto { + margin-right: auto !important; + } + + .mb-xl-0 { + margin-bottom: 0 !important; + } + + .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + + .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + + .mb-xl-3 { + margin-bottom: 1rem !important; + } + + .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + + .mb-xl-5 { + margin-bottom: 3rem !important; + } + + .mb-xl-auto { + margin-bottom: auto !important; + } + + .ms-xl-0 { + margin-left: 0 !important; + } + + .ms-xl-1 { + margin-left: 0.25rem !important; + } + + .ms-xl-2 { + margin-left: 0.5rem !important; + } + + .ms-xl-3 { + margin-left: 1rem !important; + } + + .ms-xl-4 { + margin-left: 1.5rem !important; + } + + .ms-xl-5 { + margin-left: 3rem !important; + } + + .ms-xl-auto { + margin-left: auto !important; + } + + .p-xl-0 { + padding: 0 !important; + } + + .p-xl-1 { + padding: 0.25rem !important; + } + + .p-xl-2 { + padding: 0.5rem !important; + } + + .p-xl-3 { + padding: 1rem !important; + } + + .p-xl-4 { + padding: 1.5rem !important; + } + + .p-xl-5 { + padding: 3rem !important; + } + + .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-xl-0 { + padding-top: 0 !important; + } + + .pt-xl-1 { + padding-top: 0.25rem !important; + } + + .pt-xl-2 { + padding-top: 0.5rem !important; + } + + .pt-xl-3 { + padding-top: 1rem !important; + } + + .pt-xl-4 { + padding-top: 1.5rem !important; + } + + .pt-xl-5 { + padding-top: 3rem !important; + } + + .pe-xl-0 { + padding-right: 0 !important; + } + + .pe-xl-1 { + padding-right: 0.25rem !important; + } + + .pe-xl-2 { + padding-right: 0.5rem !important; + } + + .pe-xl-3 { + padding-right: 1rem !important; + } + + .pe-xl-4 { + padding-right: 1.5rem !important; + } + + .pe-xl-5 { + padding-right: 3rem !important; + } + + .pb-xl-0 { + padding-bottom: 0 !important; + } + + .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + + .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + + .pb-xl-3 { + padding-bottom: 1rem !important; + } + + .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + + .pb-xl-5 { + padding-bottom: 3rem !important; + } + + .ps-xl-0 { + padding-left: 0 !important; + } + + .ps-xl-1 { + padding-left: 0.25rem !important; + } + + .ps-xl-2 { + padding-left: 0.5rem !important; + } + + .ps-xl-3 { + padding-left: 1rem !important; + } + + .ps-xl-4 { + padding-left: 1.5rem !important; + } + + .ps-xl-5 { + padding-left: 3rem !important; + } + + .text-xl-start { + text-align: left !important; + } + + .text-xl-end { + text-align: right !important; + } + + .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .float-xxl-start { + float: left !important; + } + + .float-xxl-end { + float: right !important; + } + + .float-xxl-none { + float: none !important; + } + + .d-xxl-inline { + display: inline !important; + } + + .d-xxl-inline-block { + display: inline-block !important; + } + + .d-xxl-block { + display: block !important; + } + + .d-xxl-grid { + display: grid !important; + } + + .d-xxl-table { + display: table !important; + } + + .d-xxl-table-row { + display: table-row !important; + } + + .d-xxl-table-cell { + display: table-cell !important; + } + + .d-xxl-flex { + display: flex !important; + } + + .d-xxl-inline-flex { + display: inline-flex !important; + } + + .d-xxl-none { + display: none !important; + } + + .flex-xxl-fill { + flex: 1 1 auto !important; + } + + .flex-xxl-row { + flex-direction: row !important; + } + + .flex-xxl-column { + flex-direction: column !important; + } + + .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + + .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + + .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + + .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + + .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + + .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + + .flex-xxl-wrap { + flex-wrap: wrap !important; + } + + .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + + .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + + .gap-xxl-0 { + gap: 0 !important; + } + + .gap-xxl-1 { + gap: 0.25rem !important; + } + + .gap-xxl-2 { + gap: 0.5rem !important; + } + + .gap-xxl-3 { + gap: 1rem !important; + } + + .gap-xxl-4 { + gap: 1.5rem !important; + } + + .gap-xxl-5 { + gap: 3rem !important; + } + + .justify-content-xxl-start { + justify-content: flex-start !important; + } + + .justify-content-xxl-end { + justify-content: flex-end !important; + } + + .justify-content-xxl-center { + justify-content: center !important; + } + + .justify-content-xxl-between { + justify-content: space-between !important; + } + + .justify-content-xxl-around { + justify-content: space-around !important; + } + + .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + + .align-items-xxl-start { + align-items: flex-start !important; + } + + .align-items-xxl-end { + align-items: flex-end !important; + } + + .align-items-xxl-center { + align-items: center !important; + } + + .align-items-xxl-baseline { + align-items: baseline !important; + } + + .align-items-xxl-stretch { + align-items: stretch !important; + } + + .align-content-xxl-start { + align-content: flex-start !important; + } + + .align-content-xxl-end { + align-content: flex-end !important; + } + + .align-content-xxl-center { + align-content: center !important; + } + + .align-content-xxl-between { + align-content: space-between !important; + } + + .align-content-xxl-around { + align-content: space-around !important; + } + + .align-content-xxl-stretch { + align-content: stretch !important; + } + + .align-self-xxl-auto { + align-self: auto !important; + } + + .align-self-xxl-start { + align-self: flex-start !important; + } + + .align-self-xxl-end { + align-self: flex-end !important; + } + + .align-self-xxl-center { + align-self: center !important; + } + + .align-self-xxl-baseline { + align-self: baseline !important; + } + + .align-self-xxl-stretch { + align-self: stretch !important; + } + + .order-xxl-first { + order: -1 !important; + } + + .order-xxl-0 { + order: 0 !important; + } + + .order-xxl-1 { + order: 1 !important; + } + + .order-xxl-2 { + order: 2 !important; + } + + .order-xxl-3 { + order: 3 !important; + } + + .order-xxl-4 { + order: 4 !important; + } + + .order-xxl-5 { + order: 5 !important; + } + + .order-xxl-last { + order: 6 !important; + } + + .m-xxl-0 { + margin: 0 !important; + } + + .m-xxl-1 { + margin: 0.25rem !important; + } + + .m-xxl-2 { + margin: 0.5rem !important; + } + + .m-xxl-3 { + margin: 1rem !important; + } + + .m-xxl-4 { + margin: 1.5rem !important; + } + + .m-xxl-5 { + margin: 3rem !important; + } + + .m-xxl-auto { + margin: auto !important; + } + + .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + + .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + + .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + + .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + + .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + + .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + + .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + + .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + + .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + + .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + + .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + + .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + + .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + + .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + + .mt-xxl-0 { + margin-top: 0 !important; + } + + .mt-xxl-1 { + margin-top: 0.25rem !important; + } + + .mt-xxl-2 { + margin-top: 0.5rem !important; + } + + .mt-xxl-3 { + margin-top: 1rem !important; + } + + .mt-xxl-4 { + margin-top: 1.5rem !important; + } + + .mt-xxl-5 { + margin-top: 3rem !important; + } + + .mt-xxl-auto { + margin-top: auto !important; + } + + .me-xxl-0 { + margin-right: 0 !important; + } + + .me-xxl-1 { + margin-right: 0.25rem !important; + } + + .me-xxl-2 { + margin-right: 0.5rem !important; + } + + .me-xxl-3 { + margin-right: 1rem !important; + } + + .me-xxl-4 { + margin-right: 1.5rem !important; + } + + .me-xxl-5 { + margin-right: 3rem !important; + } + + .me-xxl-auto { + margin-right: auto !important; + } + + .mb-xxl-0 { + margin-bottom: 0 !important; + } + + .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + + .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + + .mb-xxl-3 { + margin-bottom: 1rem !important; + } + + .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + + .mb-xxl-5 { + margin-bottom: 3rem !important; + } + + .mb-xxl-auto { + margin-bottom: auto !important; + } + + .ms-xxl-0 { + margin-left: 0 !important; + } + + .ms-xxl-1 { + margin-left: 0.25rem !important; + } + + .ms-xxl-2 { + margin-left: 0.5rem !important; + } + + .ms-xxl-3 { + margin-left: 1rem !important; + } + + .ms-xxl-4 { + margin-left: 1.5rem !important; + } + + .ms-xxl-5 { + margin-left: 3rem !important; + } + + .ms-xxl-auto { + margin-left: auto !important; + } + + .p-xxl-0 { + padding: 0 !important; + } + + .p-xxl-1 { + padding: 0.25rem !important; + } + + .p-xxl-2 { + padding: 0.5rem !important; + } + + .p-xxl-3 { + padding: 1rem !important; + } + + .p-xxl-4 { + padding: 1.5rem !important; + } + + .p-xxl-5 { + padding: 3rem !important; + } + + .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + + .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + + .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + + .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + + .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + + .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + + .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + + .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + + .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + + .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + + .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + + .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + + .pt-xxl-0 { + padding-top: 0 !important; + } + + .pt-xxl-1 { + padding-top: 0.25rem !important; + } + + .pt-xxl-2 { + padding-top: 0.5rem !important; + } + + .pt-xxl-3 { + padding-top: 1rem !important; + } + + .pt-xxl-4 { + padding-top: 1.5rem !important; + } + + .pt-xxl-5 { + padding-top: 3rem !important; + } + + .pe-xxl-0 { + padding-right: 0 !important; + } + + .pe-xxl-1 { + padding-right: 0.25rem !important; + } + + .pe-xxl-2 { + padding-right: 0.5rem !important; + } + + .pe-xxl-3 { + padding-right: 1rem !important; + } + + .pe-xxl-4 { + padding-right: 1.5rem !important; + } + + .pe-xxl-5 { + padding-right: 3rem !important; + } + + .pb-xxl-0 { + padding-bottom: 0 !important; + } + + .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + + .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + + .pb-xxl-3 { + padding-bottom: 1rem !important; + } + + .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + + .pb-xxl-5 { + padding-bottom: 3rem !important; + } + + .ps-xxl-0 { + padding-left: 0 !important; + } + + .ps-xxl-1 { + padding-left: 0.25rem !important; + } + + .ps-xxl-2 { + padding-left: 0.5rem !important; + } + + .ps-xxl-3 { + padding-left: 1rem !important; + } + + .ps-xxl-4 { + padding-left: 1.5rem !important; + } + + .ps-xxl-5 { + padding-left: 3rem !important; + } + + .text-xxl-start { + text-align: left !important; + } + + .text-xxl-end { + text-align: right !important; + } + + .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .fs-1 { + font-size: 2.5rem !important; + } + + .fs-2 { + font-size: 2rem !important; + } + + .fs-3 { + font-size: 1.75rem !important; + } + + .fs-4 { + font-size: 1.5rem !important; + } +} +@media print { + .d-print-inline { + display: inline !important; + } + + .d-print-inline-block { + display: inline-block !important; + } + + .d-print-block { + display: block !important; + } + + .d-print-grid { + display: grid !important; + } + + .d-print-table { + display: table !important; + } + + .d-print-table-row { + display: table-row !important; + } + + .d-print-table-cell { + display: table-cell !important; + } + + .d-print-flex { + display: flex !important; + } + + .d-print-inline-flex { + display: inline-flex !important; + } + + .d-print-none { + display: none !important; + } +} +html, body { + background-image: var(--bs-gradient); + background-color: var(--bs-body-bg); +} + +.dark-mode { + /* redefine theme colors */ + /* set background values */ + --bs-body-bg: #455a64; + /* redefine theme color variables */ + --bs-primary: #5c7ba8; + --bs-secondary: #146c43; + /* redefine theme theme-colors-rgb variables */ + --bs-primary-rgb: 92, 123, 168; + --bs-secondary-rgb: 20, 108, 67; + /*! + * Bootstrap v5.1.3 (https://getbootstrap.com/) + * Copyright 2011-2021 The Bootstrap Authors + * Copyright 2011-2021 Twitter, Inc. + * Licensed under MIT (https://github.com/twbs/bootstrap/blob/main/LICENSE) + */ + /* rtl:raw: + [type="tel"], + [type="url"], + [type="email"], + [type="number"] { + direction: ltr; + } + */ + /* rtl:begin:ignore */ + /* rtl:end:ignore */ + /* rtl:options: { + "autoRename": true, + "stringMap":[ { + "name" : "prev-next", + "search" : "prev", + "replace" : "next" + } ] + } */ + /* rtl:begin:remove */ + /* rtl:end:remove */ +} +.dark-mode :root { + --bs-blue: #0d6efd; + --bs-indigo: #6610f2; + --bs-purple: #6f42c1; + --bs-pink: #d63384; + --bs-red: #dc3545; + --bs-orange: #fd7e14; + --bs-yellow: #ffc107; + --bs-green: #198754; + --bs-teal: #20c997; + --bs-cyan: #0dcaf0; + --bs-white: #fff; + --bs-gray: #6c757d; + --bs-gray-dark: #343a40; + --bs-gray-100: #f8f9fa; + --bs-gray-200: #e9ecef; + --bs-gray-300: #dee2e6; + --bs-gray-400: #ced4da; + --bs-gray-500: #adb5bd; + --bs-gray-600: #6c757d; + --bs-gray-700: #495057; + --bs-gray-800: #343a40; + --bs-gray-900: #212529; + --bs-primary: #5c7ba8; + --bs-secondary: #146c43; + --bs-primary-rgb: 92, 123, 168; + --bs-secondary-rgb: 20, 108, 67; + --bs-white-rgb: 255, 255, 255; + --bs-black-rgb: 0, 0, 0; + --bs-body-color-rgb: 33, 37, 41; + --bs-body-bg-rgb: 69, 90, 100; + --bs-font-sans-serif: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "Liberation Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"; + --bs-font-monospace: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace; + --bs-gradient: linear-gradient(180deg, rgba(255, 255, 255, 0.15), rgba(255, 255, 255, 0)); + --bs-body-font-family: var(--bs-font-sans-serif); + --bs-body-font-size: 1rem; + --bs-body-font-weight: 400; + --bs-body-line-height: 1.5; + --bs-body-color: #212529; + --bs-body-bg: #455a64; +} +.dark-mode *, +.dark-mode *::before, +.dark-mode *::after { + box-sizing: border-box; +} +@media (prefers-reduced-motion: no-preference) { + .dark-mode :root { + scroll-behavior: smooth; + } +} +.dark-mode body { + margin: 0; + font-family: var(--bs-body-font-family); + font-size: var(--bs-body-font-size); + font-weight: var(--bs-body-font-weight); + line-height: var(--bs-body-line-height); + color: var(--bs-body-color); + text-align: var(--bs-body-text-align); + background-color: var(--bs-body-bg); + -webkit-text-size-adjust: 100%; + -webkit-tap-highlight-color: rgba(0, 0, 0, 0); +} +.dark-mode hr { + margin: 1rem 0; + color: inherit; + background-color: currentColor; + border: 0; + opacity: 0.25; +} +.dark-mode hr:not([size]) { + height: 1px; +} +.dark-mode h6, .dark-mode .h6, .dark-mode h5, .dark-mode .h5, .dark-mode h4, .dark-mode .h4, .dark-mode h3, .dark-mode .h3, .dark-mode h2, .dark-mode .h2, .dark-mode h1, .dark-mode .h1 { + margin-top: 0; + margin-bottom: 0.5rem; + font-weight: 500; + line-height: 1.2; +} +.dark-mode h1, .dark-mode .h1 { + font-size: calc(1.375rem + 1.5vw); +} +@media (min-width: 1200px) { + .dark-mode h1, .dark-mode .h1 { + font-size: 2.5rem; + } +} +.dark-mode h2, .dark-mode .h2 { + font-size: calc(1.325rem + 0.9vw); +} +@media (min-width: 1200px) { + .dark-mode h2, .dark-mode .h2 { + font-size: 2rem; + } +} +.dark-mode h3, .dark-mode .h3 { + font-size: calc(1.3rem + 0.6vw); +} +@media (min-width: 1200px) { + .dark-mode h3, .dark-mode .h3 { + font-size: 1.75rem; + } +} +.dark-mode h4, .dark-mode .h4 { + font-size: calc(1.275rem + 0.3vw); +} +@media (min-width: 1200px) { + .dark-mode h4, .dark-mode .h4 { + font-size: 1.5rem; + } +} +.dark-mode h5, .dark-mode .h5 { + font-size: 1.25rem; +} +.dark-mode h6, .dark-mode .h6 { + font-size: 1rem; +} +.dark-mode p { + margin-top: 0; + margin-bottom: 1rem; +} +.dark-mode abbr[title], +.dark-mode abbr[data-bs-original-title] { + text-decoration: underline dotted; + cursor: help; + text-decoration-skip-ink: none; +} +.dark-mode address { + margin-bottom: 1rem; + font-style: normal; + line-height: inherit; +} +.dark-mode ol, +.dark-mode ul { + padding-left: 2rem; +} +.dark-mode ol, +.dark-mode ul, +.dark-mode dl { + margin-top: 0; + margin-bottom: 1rem; +} +.dark-mode ol ol, +.dark-mode ul ul, +.dark-mode ol ul, +.dark-mode ul ol { + margin-bottom: 0; +} +.dark-mode dt { + font-weight: 700; +} +.dark-mode dd { + margin-bottom: 0.5rem; + margin-left: 0; +} +.dark-mode blockquote { + margin: 0 0 1rem; +} +.dark-mode b, +.dark-mode strong { + font-weight: bolder; +} +.dark-mode small, .dark-mode .small { + font-size: 0.875em; +} +.dark-mode mark, .dark-mode .mark { + padding: 0.2em; + background-color: #fcf8e3; +} +.dark-mode sub, +.dark-mode sup { + position: relative; + font-size: 0.75em; + line-height: 0; + vertical-align: baseline; +} +.dark-mode sub { + bottom: -0.25em; +} +.dark-mode sup { + top: -0.5em; +} +.dark-mode a { + color: #a1a9bd; + text-decoration: underline; +} +.dark-mode a:hover { + color: #818797; +} +.dark-mode a:not([href]):not([class]), .dark-mode a:not([href]):not([class]):hover { + color: inherit; + text-decoration: none; +} +.dark-mode pre, +.dark-mode code, +.dark-mode kbd, +.dark-mode samp { + font-family: var(--bs-font-monospace); + font-size: 1em; + direction: ltr /* rtl:ignore */; + unicode-bidi: bidi-override; +} +.dark-mode pre { + display: block; + margin-top: 0; + margin-bottom: 1rem; + overflow: auto; + font-size: 0.875em; +} +.dark-mode pre code { + font-size: inherit; + color: inherit; + word-break: normal; +} +.dark-mode code { + font-size: 0.875em; + color: #d63384; + word-wrap: break-word; +} +a > .dark-mode code { + color: inherit; +} +.dark-mode kbd { + padding: 0.2rem 0.4rem; + font-size: 0.875em; + color: #fff; + background-color: #212529; + border-radius: 0.2rem; +} +.dark-mode kbd kbd { + padding: 0; + font-size: 1em; + font-weight: 700; +} +.dark-mode figure { + margin: 0 0 1rem; +} +.dark-mode img, +.dark-mode svg { + vertical-align: middle; +} +.dark-mode table { + caption-side: bottom; + border-collapse: collapse; +} +.dark-mode caption { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + color: #6c757d; + text-align: left; +} +.dark-mode th { + text-align: inherit; + text-align: -webkit-match-parent; +} +.dark-mode thead, +.dark-mode tbody, +.dark-mode tfoot, +.dark-mode tr, +.dark-mode td, +.dark-mode th { + border-color: inherit; + border-style: solid; + border-width: 0; +} +.dark-mode label { + display: inline-block; +} +.dark-mode button { + border-radius: 0; +} +.dark-mode button:focus:not(:focus-visible) { + outline: 0; +} +.dark-mode input, +.dark-mode button, +.dark-mode select, +.dark-mode optgroup, +.dark-mode textarea { + margin: 0; + font-family: inherit; + font-size: inherit; + line-height: inherit; +} +.dark-mode button, +.dark-mode select { + text-transform: none; +} +.dark-mode [role=button] { + cursor: pointer; +} +.dark-mode select { + word-wrap: normal; +} +.dark-mode select:disabled { + opacity: 1; +} +.dark-mode [list]::-webkit-calendar-picker-indicator { + display: none; +} +.dark-mode button, +.dark-mode [type=button], +.dark-mode [type=reset], +.dark-mode [type=submit] { + -webkit-appearance: button; +} +.dark-mode button:not(:disabled), +.dark-mode [type=button]:not(:disabled), +.dark-mode [type=reset]:not(:disabled), +.dark-mode [type=submit]:not(:disabled) { + cursor: pointer; +} +.dark-mode ::-moz-focus-inner { + padding: 0; + border-style: none; +} +.dark-mode textarea { + resize: vertical; +} +.dark-mode fieldset { + min-width: 0; + padding: 0; + margin: 0; + border: 0; +} +.dark-mode legend { + float: left; + width: 100%; + padding: 0; + margin-bottom: 0.5rem; + font-size: calc(1.275rem + 0.3vw); + line-height: inherit; +} +@media (min-width: 1200px) { + .dark-mode legend { + font-size: 1.5rem; + } +} +.dark-mode legend + * { + clear: left; +} +.dark-mode ::-webkit-datetime-edit-fields-wrapper, +.dark-mode ::-webkit-datetime-edit-text, +.dark-mode ::-webkit-datetime-edit-minute, +.dark-mode ::-webkit-datetime-edit-hour-field, +.dark-mode ::-webkit-datetime-edit-day-field, +.dark-mode ::-webkit-datetime-edit-month-field, +.dark-mode ::-webkit-datetime-edit-year-field { + padding: 0; +} +.dark-mode ::-webkit-inner-spin-button { + height: auto; +} +.dark-mode [type=search] { + outline-offset: -2px; + -webkit-appearance: textfield; +} +.dark-mode ::-webkit-search-decoration { + -webkit-appearance: none; +} +.dark-mode ::-webkit-color-swatch-wrapper { + padding: 0; +} +.dark-mode ::file-selector-button { + font: inherit; +} +.dark-mode ::-webkit-file-upload-button { + font: inherit; + -webkit-appearance: button; +} +.dark-mode output { + display: inline-block; +} +.dark-mode iframe { + border: 0; +} +.dark-mode summary { + display: list-item; + cursor: pointer; +} +.dark-mode progress { + vertical-align: baseline; +} +.dark-mode [hidden] { + display: none !important; +} +.dark-mode .lead { + font-size: 1.25rem; + font-weight: 300; +} +.dark-mode .display-1 { + font-size: calc(1.625rem + 4.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .dark-mode .display-1 { + font-size: 5rem; + } +} +.dark-mode .display-2 { + font-size: calc(1.575rem + 3.9vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .dark-mode .display-2 { + font-size: 4.5rem; + } +} +.dark-mode .display-3 { + font-size: calc(1.525rem + 3.3vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .dark-mode .display-3 { + font-size: 4rem; + } +} +.dark-mode .display-4 { + font-size: calc(1.475rem + 2.7vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .dark-mode .display-4 { + font-size: 3.5rem; + } +} +.dark-mode .display-5 { + font-size: calc(1.425rem + 2.1vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .dark-mode .display-5 { + font-size: 3rem; + } +} +.dark-mode .display-6 { + font-size: calc(1.375rem + 1.5vw); + font-weight: 300; + line-height: 1.2; +} +@media (min-width: 1200px) { + .dark-mode .display-6 { + font-size: 2.5rem; + } +} +.dark-mode .list-unstyled { + padding-left: 0; + list-style: none; +} +.dark-mode .list-inline { + padding-left: 0; + list-style: none; +} +.dark-mode .list-inline-item { + display: inline-block; +} +.dark-mode .list-inline-item:not(:last-child) { + margin-right: 0.5rem; +} +.dark-mode .initialism { + font-size: 0.875em; + text-transform: uppercase; +} +.dark-mode .blockquote { + margin-bottom: 1rem; + font-size: 1.25rem; +} +.dark-mode .blockquote > :last-child { + margin-bottom: 0; +} +.dark-mode .blockquote-footer { + margin-top: -1rem; + margin-bottom: 1rem; + font-size: 0.875em; + color: #6c757d; +} +.dark-mode .blockquote-footer::before { + content: "— "; +} +.dark-mode .img-fluid { + max-width: 100%; + height: auto; +} +.dark-mode .img-thumbnail { + padding: 0.25rem; + background-color: #cfd8dc; + border: 1px solid #dee2e6; + border-radius: 0.25rem; + max-width: 100%; + height: auto; +} +.dark-mode .figure { + display: inline-block; +} +.dark-mode .figure-img { + margin-bottom: 0.5rem; + line-height: 1; +} +.dark-mode .figure-caption { + font-size: 0.875em; + color: #6c757d; +} +.dark-mode .container, +.dark-mode .container-fluid, +.dark-mode .container-xxl, +.dark-mode .container-xl, +.dark-mode .container-lg, +.dark-mode .container-md, +.dark-mode .container-sm { + width: 100%; + padding-right: var(--bs-gutter-x, 0.75rem); + padding-left: var(--bs-gutter-x, 0.75rem); + margin-right: auto; + margin-left: auto; +} +@media (min-width: 576px) { + .dark-mode .container-sm, .dark-mode .container { + max-width: 540px; + } +} +@media (min-width: 768px) { + .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container { + max-width: 720px; + } +} +@media (min-width: 992px) { + .dark-mode .container-lg, .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container { + max-width: 960px; + } +} +@media (min-width: 1200px) { + .dark-mode .container-xl, .dark-mode .container-lg, .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container { + max-width: 1140px; + } +} +@media (min-width: 1400px) { + .dark-mode .container-xxl, .dark-mode .container-xl, .dark-mode .container-lg, .dark-mode .container-md, .dark-mode .container-sm, .dark-mode .container { + max-width: 1320px; + } +} +.dark-mode .row { + --bs-gutter-x: 1.5rem; + --bs-gutter-y: 0; + display: flex; + flex-wrap: wrap; + margin-top: calc(-1 * var(--bs-gutter-y)); + margin-right: calc(-0.5 * var(--bs-gutter-x)); + margin-left: calc(-0.5 * var(--bs-gutter-x)); +} +.dark-mode .row > * { + flex-shrink: 0; + width: 100%; + max-width: 100%; + padding-right: calc(var(--bs-gutter-x) * 0.5); + padding-left: calc(var(--bs-gutter-x) * 0.5); + margin-top: var(--bs-gutter-y); +} +.dark-mode .col { + flex: 1 0 0%; +} +.dark-mode .row-cols-auto > * { + flex: 0 0 auto; + width: auto; +} +.dark-mode .row-cols-1 > * { + flex: 0 0 auto; + width: 100%; +} +.dark-mode .row-cols-2 > * { + flex: 0 0 auto; + width: 50%; +} +.dark-mode .row-cols-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; +} +.dark-mode .row-cols-4 > * { + flex: 0 0 auto; + width: 25%; +} +.dark-mode .row-cols-5 > * { + flex: 0 0 auto; + width: 20%; +} +.dark-mode .row-cols-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; +} +.dark-mode .col-auto { + flex: 0 0 auto; + width: auto; +} +.dark-mode .col-1 { + flex: 0 0 auto; + width: 8.33333333%; +} +.dark-mode .col-2 { + flex: 0 0 auto; + width: 16.66666667%; +} +.dark-mode .col-3 { + flex: 0 0 auto; + width: 25%; +} +.dark-mode .col-4 { + flex: 0 0 auto; + width: 33.33333333%; +} +.dark-mode .col-5 { + flex: 0 0 auto; + width: 41.66666667%; +} +.dark-mode .col-6 { + flex: 0 0 auto; + width: 50%; +} +.dark-mode .col-7 { + flex: 0 0 auto; + width: 58.33333333%; +} +.dark-mode .col-8 { + flex: 0 0 auto; + width: 66.66666667%; +} +.dark-mode .col-9 { + flex: 0 0 auto; + width: 75%; +} +.dark-mode .col-10 { + flex: 0 0 auto; + width: 83.33333333%; +} +.dark-mode .col-11 { + flex: 0 0 auto; + width: 91.66666667%; +} +.dark-mode .col-12 { + flex: 0 0 auto; + width: 100%; +} +.dark-mode .offset-1 { + margin-left: 8.33333333%; +} +.dark-mode .offset-2 { + margin-left: 16.66666667%; +} +.dark-mode .offset-3 { + margin-left: 25%; +} +.dark-mode .offset-4 { + margin-left: 33.33333333%; +} +.dark-mode .offset-5 { + margin-left: 41.66666667%; +} +.dark-mode .offset-6 { + margin-left: 50%; +} +.dark-mode .offset-7 { + margin-left: 58.33333333%; +} +.dark-mode .offset-8 { + margin-left: 66.66666667%; +} +.dark-mode .offset-9 { + margin-left: 75%; +} +.dark-mode .offset-10 { + margin-left: 83.33333333%; +} +.dark-mode .offset-11 { + margin-left: 91.66666667%; +} +.dark-mode .g-0, +.dark-mode .gx-0 { + --bs-gutter-x: 0; +} +.dark-mode .g-0, +.dark-mode .gy-0 { + --bs-gutter-y: 0; +} +.dark-mode .g-1, +.dark-mode .gx-1 { + --bs-gutter-x: 0.25rem; +} +.dark-mode .g-1, +.dark-mode .gy-1 { + --bs-gutter-y: 0.25rem; +} +.dark-mode .g-2, +.dark-mode .gx-2 { + --bs-gutter-x: 0.5rem; +} +.dark-mode .g-2, +.dark-mode .gy-2 { + --bs-gutter-y: 0.5rem; +} +.dark-mode .g-3, +.dark-mode .gx-3 { + --bs-gutter-x: 1rem; +} +.dark-mode .g-3, +.dark-mode .gy-3 { + --bs-gutter-y: 1rem; +} +.dark-mode .g-4, +.dark-mode .gx-4 { + --bs-gutter-x: 1.5rem; +} +.dark-mode .g-4, +.dark-mode .gy-4 { + --bs-gutter-y: 1.5rem; +} +.dark-mode .g-5, +.dark-mode .gx-5 { + --bs-gutter-x: 3rem; +} +.dark-mode .g-5, +.dark-mode .gy-5 { + --bs-gutter-y: 3rem; +} +@media (min-width: 576px) { + .dark-mode .col-sm { + flex: 1 0 0%; + } + .dark-mode .row-cols-sm-auto > * { + flex: 0 0 auto; + width: auto; + } + .dark-mode .row-cols-sm-1 > * { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .row-cols-sm-2 > * { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .row-cols-sm-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .dark-mode .row-cols-sm-4 > * { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .row-cols-sm-5 > * { + flex: 0 0 auto; + width: 20%; + } + .dark-mode .row-cols-sm-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .dark-mode .col-sm-auto { + flex: 0 0 auto; + width: auto; + } + .dark-mode .col-sm-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .dark-mode .col-sm-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .dark-mode .col-sm-3 { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .col-sm-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .dark-mode .col-sm-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .dark-mode .col-sm-6 { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .col-sm-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .dark-mode .col-sm-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .dark-mode .col-sm-9 { + flex: 0 0 auto; + width: 75%; + } + .dark-mode .col-sm-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .dark-mode .col-sm-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .dark-mode .col-sm-12 { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .offset-sm-0 { + margin-left: 0; + } + .dark-mode .offset-sm-1 { + margin-left: 8.33333333%; + } + .dark-mode .offset-sm-2 { + margin-left: 16.66666667%; + } + .dark-mode .offset-sm-3 { + margin-left: 25%; + } + .dark-mode .offset-sm-4 { + margin-left: 33.33333333%; + } + .dark-mode .offset-sm-5 { + margin-left: 41.66666667%; + } + .dark-mode .offset-sm-6 { + margin-left: 50%; + } + .dark-mode .offset-sm-7 { + margin-left: 58.33333333%; + } + .dark-mode .offset-sm-8 { + margin-left: 66.66666667%; + } + .dark-mode .offset-sm-9 { + margin-left: 75%; + } + .dark-mode .offset-sm-10 { + margin-left: 83.33333333%; + } + .dark-mode .offset-sm-11 { + margin-left: 91.66666667%; + } + .dark-mode .g-sm-0, +.dark-mode .gx-sm-0 { + --bs-gutter-x: 0; + } + .dark-mode .g-sm-0, +.dark-mode .gy-sm-0 { + --bs-gutter-y: 0; + } + .dark-mode .g-sm-1, +.dark-mode .gx-sm-1 { + --bs-gutter-x: 0.25rem; + } + .dark-mode .g-sm-1, +.dark-mode .gy-sm-1 { + --bs-gutter-y: 0.25rem; + } + .dark-mode .g-sm-2, +.dark-mode .gx-sm-2 { + --bs-gutter-x: 0.5rem; + } + .dark-mode .g-sm-2, +.dark-mode .gy-sm-2 { + --bs-gutter-y: 0.5rem; + } + .dark-mode .g-sm-3, +.dark-mode .gx-sm-3 { + --bs-gutter-x: 1rem; + } + .dark-mode .g-sm-3, +.dark-mode .gy-sm-3 { + --bs-gutter-y: 1rem; + } + .dark-mode .g-sm-4, +.dark-mode .gx-sm-4 { + --bs-gutter-x: 1.5rem; + } + .dark-mode .g-sm-4, +.dark-mode .gy-sm-4 { + --bs-gutter-y: 1.5rem; + } + .dark-mode .g-sm-5, +.dark-mode .gx-sm-5 { + --bs-gutter-x: 3rem; + } + .dark-mode .g-sm-5, +.dark-mode .gy-sm-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 768px) { + .dark-mode .col-md { + flex: 1 0 0%; + } + .dark-mode .row-cols-md-auto > * { + flex: 0 0 auto; + width: auto; + } + .dark-mode .row-cols-md-1 > * { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .row-cols-md-2 > * { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .row-cols-md-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .dark-mode .row-cols-md-4 > * { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .row-cols-md-5 > * { + flex: 0 0 auto; + width: 20%; + } + .dark-mode .row-cols-md-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .dark-mode .col-md-auto { + flex: 0 0 auto; + width: auto; + } + .dark-mode .col-md-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .dark-mode .col-md-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .dark-mode .col-md-3 { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .col-md-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .dark-mode .col-md-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .dark-mode .col-md-6 { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .col-md-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .dark-mode .col-md-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .dark-mode .col-md-9 { + flex: 0 0 auto; + width: 75%; + } + .dark-mode .col-md-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .dark-mode .col-md-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .dark-mode .col-md-12 { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .offset-md-0 { + margin-left: 0; + } + .dark-mode .offset-md-1 { + margin-left: 8.33333333%; + } + .dark-mode .offset-md-2 { + margin-left: 16.66666667%; + } + .dark-mode .offset-md-3 { + margin-left: 25%; + } + .dark-mode .offset-md-4 { + margin-left: 33.33333333%; + } + .dark-mode .offset-md-5 { + margin-left: 41.66666667%; + } + .dark-mode .offset-md-6 { + margin-left: 50%; + } + .dark-mode .offset-md-7 { + margin-left: 58.33333333%; + } + .dark-mode .offset-md-8 { + margin-left: 66.66666667%; + } + .dark-mode .offset-md-9 { + margin-left: 75%; + } + .dark-mode .offset-md-10 { + margin-left: 83.33333333%; + } + .dark-mode .offset-md-11 { + margin-left: 91.66666667%; + } + .dark-mode .g-md-0, +.dark-mode .gx-md-0 { + --bs-gutter-x: 0; + } + .dark-mode .g-md-0, +.dark-mode .gy-md-0 { + --bs-gutter-y: 0; + } + .dark-mode .g-md-1, +.dark-mode .gx-md-1 { + --bs-gutter-x: 0.25rem; + } + .dark-mode .g-md-1, +.dark-mode .gy-md-1 { + --bs-gutter-y: 0.25rem; + } + .dark-mode .g-md-2, +.dark-mode .gx-md-2 { + --bs-gutter-x: 0.5rem; + } + .dark-mode .g-md-2, +.dark-mode .gy-md-2 { + --bs-gutter-y: 0.5rem; + } + .dark-mode .g-md-3, +.dark-mode .gx-md-3 { + --bs-gutter-x: 1rem; + } + .dark-mode .g-md-3, +.dark-mode .gy-md-3 { + --bs-gutter-y: 1rem; + } + .dark-mode .g-md-4, +.dark-mode .gx-md-4 { + --bs-gutter-x: 1.5rem; + } + .dark-mode .g-md-4, +.dark-mode .gy-md-4 { + --bs-gutter-y: 1.5rem; + } + .dark-mode .g-md-5, +.dark-mode .gx-md-5 { + --bs-gutter-x: 3rem; + } + .dark-mode .g-md-5, +.dark-mode .gy-md-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 992px) { + .dark-mode .col-lg { + flex: 1 0 0%; + } + .dark-mode .row-cols-lg-auto > * { + flex: 0 0 auto; + width: auto; + } + .dark-mode .row-cols-lg-1 > * { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .row-cols-lg-2 > * { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .row-cols-lg-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .dark-mode .row-cols-lg-4 > * { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .row-cols-lg-5 > * { + flex: 0 0 auto; + width: 20%; + } + .dark-mode .row-cols-lg-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .dark-mode .col-lg-auto { + flex: 0 0 auto; + width: auto; + } + .dark-mode .col-lg-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .dark-mode .col-lg-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .dark-mode .col-lg-3 { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .col-lg-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .dark-mode .col-lg-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .dark-mode .col-lg-6 { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .col-lg-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .dark-mode .col-lg-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .dark-mode .col-lg-9 { + flex: 0 0 auto; + width: 75%; + } + .dark-mode .col-lg-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .dark-mode .col-lg-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .dark-mode .col-lg-12 { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .offset-lg-0 { + margin-left: 0; + } + .dark-mode .offset-lg-1 { + margin-left: 8.33333333%; + } + .dark-mode .offset-lg-2 { + margin-left: 16.66666667%; + } + .dark-mode .offset-lg-3 { + margin-left: 25%; + } + .dark-mode .offset-lg-4 { + margin-left: 33.33333333%; + } + .dark-mode .offset-lg-5 { + margin-left: 41.66666667%; + } + .dark-mode .offset-lg-6 { + margin-left: 50%; + } + .dark-mode .offset-lg-7 { + margin-left: 58.33333333%; + } + .dark-mode .offset-lg-8 { + margin-left: 66.66666667%; + } + .dark-mode .offset-lg-9 { + margin-left: 75%; + } + .dark-mode .offset-lg-10 { + margin-left: 83.33333333%; + } + .dark-mode .offset-lg-11 { + margin-left: 91.66666667%; + } + .dark-mode .g-lg-0, +.dark-mode .gx-lg-0 { + --bs-gutter-x: 0; + } + .dark-mode .g-lg-0, +.dark-mode .gy-lg-0 { + --bs-gutter-y: 0; + } + .dark-mode .g-lg-1, +.dark-mode .gx-lg-1 { + --bs-gutter-x: 0.25rem; + } + .dark-mode .g-lg-1, +.dark-mode .gy-lg-1 { + --bs-gutter-y: 0.25rem; + } + .dark-mode .g-lg-2, +.dark-mode .gx-lg-2 { + --bs-gutter-x: 0.5rem; + } + .dark-mode .g-lg-2, +.dark-mode .gy-lg-2 { + --bs-gutter-y: 0.5rem; + } + .dark-mode .g-lg-3, +.dark-mode .gx-lg-3 { + --bs-gutter-x: 1rem; + } + .dark-mode .g-lg-3, +.dark-mode .gy-lg-3 { + --bs-gutter-y: 1rem; + } + .dark-mode .g-lg-4, +.dark-mode .gx-lg-4 { + --bs-gutter-x: 1.5rem; + } + .dark-mode .g-lg-4, +.dark-mode .gy-lg-4 { + --bs-gutter-y: 1.5rem; + } + .dark-mode .g-lg-5, +.dark-mode .gx-lg-5 { + --bs-gutter-x: 3rem; + } + .dark-mode .g-lg-5, +.dark-mode .gy-lg-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1200px) { + .dark-mode .col-xl { + flex: 1 0 0%; + } + .dark-mode .row-cols-xl-auto > * { + flex: 0 0 auto; + width: auto; + } + .dark-mode .row-cols-xl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .row-cols-xl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .row-cols-xl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .dark-mode .row-cols-xl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .row-cols-xl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .dark-mode .row-cols-xl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .dark-mode .col-xl-auto { + flex: 0 0 auto; + width: auto; + } + .dark-mode .col-xl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .dark-mode .col-xl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .dark-mode .col-xl-3 { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .col-xl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .dark-mode .col-xl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .dark-mode .col-xl-6 { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .col-xl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .dark-mode .col-xl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .dark-mode .col-xl-9 { + flex: 0 0 auto; + width: 75%; + } + .dark-mode .col-xl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .dark-mode .col-xl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .dark-mode .col-xl-12 { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .offset-xl-0 { + margin-left: 0; + } + .dark-mode .offset-xl-1 { + margin-left: 8.33333333%; + } + .dark-mode .offset-xl-2 { + margin-left: 16.66666667%; + } + .dark-mode .offset-xl-3 { + margin-left: 25%; + } + .dark-mode .offset-xl-4 { + margin-left: 33.33333333%; + } + .dark-mode .offset-xl-5 { + margin-left: 41.66666667%; + } + .dark-mode .offset-xl-6 { + margin-left: 50%; + } + .dark-mode .offset-xl-7 { + margin-left: 58.33333333%; + } + .dark-mode .offset-xl-8 { + margin-left: 66.66666667%; + } + .dark-mode .offset-xl-9 { + margin-left: 75%; + } + .dark-mode .offset-xl-10 { + margin-left: 83.33333333%; + } + .dark-mode .offset-xl-11 { + margin-left: 91.66666667%; + } + .dark-mode .g-xl-0, +.dark-mode .gx-xl-0 { + --bs-gutter-x: 0; + } + .dark-mode .g-xl-0, +.dark-mode .gy-xl-0 { + --bs-gutter-y: 0; + } + .dark-mode .g-xl-1, +.dark-mode .gx-xl-1 { + --bs-gutter-x: 0.25rem; + } + .dark-mode .g-xl-1, +.dark-mode .gy-xl-1 { + --bs-gutter-y: 0.25rem; + } + .dark-mode .g-xl-2, +.dark-mode .gx-xl-2 { + --bs-gutter-x: 0.5rem; + } + .dark-mode .g-xl-2, +.dark-mode .gy-xl-2 { + --bs-gutter-y: 0.5rem; + } + .dark-mode .g-xl-3, +.dark-mode .gx-xl-3 { + --bs-gutter-x: 1rem; + } + .dark-mode .g-xl-3, +.dark-mode .gy-xl-3 { + --bs-gutter-y: 1rem; + } + .dark-mode .g-xl-4, +.dark-mode .gx-xl-4 { + --bs-gutter-x: 1.5rem; + } + .dark-mode .g-xl-4, +.dark-mode .gy-xl-4 { + --bs-gutter-y: 1.5rem; + } + .dark-mode .g-xl-5, +.dark-mode .gx-xl-5 { + --bs-gutter-x: 3rem; + } + .dark-mode .g-xl-5, +.dark-mode .gy-xl-5 { + --bs-gutter-y: 3rem; + } +} +@media (min-width: 1400px) { + .dark-mode .col-xxl { + flex: 1 0 0%; + } + .dark-mode .row-cols-xxl-auto > * { + flex: 0 0 auto; + width: auto; + } + .dark-mode .row-cols-xxl-1 > * { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .row-cols-xxl-2 > * { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .row-cols-xxl-3 > * { + flex: 0 0 auto; + width: 33.3333333333%; + } + .dark-mode .row-cols-xxl-4 > * { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .row-cols-xxl-5 > * { + flex: 0 0 auto; + width: 20%; + } + .dark-mode .row-cols-xxl-6 > * { + flex: 0 0 auto; + width: 16.6666666667%; + } + .dark-mode .col-xxl-auto { + flex: 0 0 auto; + width: auto; + } + .dark-mode .col-xxl-1 { + flex: 0 0 auto; + width: 8.33333333%; + } + .dark-mode .col-xxl-2 { + flex: 0 0 auto; + width: 16.66666667%; + } + .dark-mode .col-xxl-3 { + flex: 0 0 auto; + width: 25%; + } + .dark-mode .col-xxl-4 { + flex: 0 0 auto; + width: 33.33333333%; + } + .dark-mode .col-xxl-5 { + flex: 0 0 auto; + width: 41.66666667%; + } + .dark-mode .col-xxl-6 { + flex: 0 0 auto; + width: 50%; + } + .dark-mode .col-xxl-7 { + flex: 0 0 auto; + width: 58.33333333%; + } + .dark-mode .col-xxl-8 { + flex: 0 0 auto; + width: 66.66666667%; + } + .dark-mode .col-xxl-9 { + flex: 0 0 auto; + width: 75%; + } + .dark-mode .col-xxl-10 { + flex: 0 0 auto; + width: 83.33333333%; + } + .dark-mode .col-xxl-11 { + flex: 0 0 auto; + width: 91.66666667%; + } + .dark-mode .col-xxl-12 { + flex: 0 0 auto; + width: 100%; + } + .dark-mode .offset-xxl-0 { + margin-left: 0; + } + .dark-mode .offset-xxl-1 { + margin-left: 8.33333333%; + } + .dark-mode .offset-xxl-2 { + margin-left: 16.66666667%; + } + .dark-mode .offset-xxl-3 { + margin-left: 25%; + } + .dark-mode .offset-xxl-4 { + margin-left: 33.33333333%; + } + .dark-mode .offset-xxl-5 { + margin-left: 41.66666667%; + } + .dark-mode .offset-xxl-6 { + margin-left: 50%; + } + .dark-mode .offset-xxl-7 { + margin-left: 58.33333333%; + } + .dark-mode .offset-xxl-8 { + margin-left: 66.66666667%; + } + .dark-mode .offset-xxl-9 { + margin-left: 75%; + } + .dark-mode .offset-xxl-10 { + margin-left: 83.33333333%; + } + .dark-mode .offset-xxl-11 { + margin-left: 91.66666667%; + } + .dark-mode .g-xxl-0, +.dark-mode .gx-xxl-0 { + --bs-gutter-x: 0; + } + .dark-mode .g-xxl-0, +.dark-mode .gy-xxl-0 { + --bs-gutter-y: 0; + } + .dark-mode .g-xxl-1, +.dark-mode .gx-xxl-1 { + --bs-gutter-x: 0.25rem; + } + .dark-mode .g-xxl-1, +.dark-mode .gy-xxl-1 { + --bs-gutter-y: 0.25rem; + } + .dark-mode .g-xxl-2, +.dark-mode .gx-xxl-2 { + --bs-gutter-x: 0.5rem; + } + .dark-mode .g-xxl-2, +.dark-mode .gy-xxl-2 { + --bs-gutter-y: 0.5rem; + } + .dark-mode .g-xxl-3, +.dark-mode .gx-xxl-3 { + --bs-gutter-x: 1rem; + } + .dark-mode .g-xxl-3, +.dark-mode .gy-xxl-3 { + --bs-gutter-y: 1rem; + } + .dark-mode .g-xxl-4, +.dark-mode .gx-xxl-4 { + --bs-gutter-x: 1.5rem; + } + .dark-mode .g-xxl-4, +.dark-mode .gy-xxl-4 { + --bs-gutter-y: 1.5rem; + } + .dark-mode .g-xxl-5, +.dark-mode .gx-xxl-5 { + --bs-gutter-x: 3rem; + } + .dark-mode .g-xxl-5, +.dark-mode .gy-xxl-5 { + --bs-gutter-y: 3rem; + } +} +.dark-mode .table { + --bs-table-bg: transparent; + --bs-table-accent-bg: transparent; + --bs-table-striped-color: #212529; + --bs-table-striped-bg: rgba(0, 0, 0, 0.05); + --bs-table-active-color: #212529; + --bs-table-active-bg: rgba(0, 0, 0, 0.1); + --bs-table-hover-color: #212529; + --bs-table-hover-bg: rgba(0, 0, 0, 0.075); + width: 100%; + margin-bottom: 1rem; + color: #212529; + vertical-align: top; + border-color: #dee2e6; +} +.dark-mode .table > :not(caption) > * > * { + padding: 0.5rem 0.5rem; + background-color: var(--bs-table-bg); + border-bottom-width: 1px; + box-shadow: inset 0 0 0 9999px var(--bs-table-accent-bg); +} +.dark-mode .table > tbody { + vertical-align: inherit; +} +.dark-mode .table > thead { + vertical-align: bottom; +} +.dark-mode .table > :not(:first-child) { + border-top: 2px solid currentColor; +} +.dark-mode .caption-top { + caption-side: top; +} +.dark-mode .table-sm > :not(caption) > * > * { + padding: 0.25rem 0.25rem; +} +.dark-mode .table-bordered > :not(caption) > * { + border-width: 1px 0; +} +.dark-mode .table-bordered > :not(caption) > * > * { + border-width: 0 1px; +} +.dark-mode .table-borderless > :not(caption) > * > * { + border-bottom-width: 0; +} +.dark-mode .table-borderless > :not(:first-child) { + border-top-width: 0; +} +.dark-mode .table-striped > tbody > tr:nth-of-type(odd) > * { + --bs-table-accent-bg: var(--bs-table-striped-bg); + color: var(--bs-table-striped-color); +} +.dark-mode .table-active { + --bs-table-accent-bg: var(--bs-table-active-bg); + color: var(--bs-table-active-color); +} +.dark-mode .table-hover > tbody > tr:hover > * { + --bs-table-accent-bg: var(--bs-table-hover-bg); + color: var(--bs-table-hover-color); +} +.dark-mode .table-primary { + --bs-table-bg: #eceef2; + --bs-table-striped-bg: #e0e2e6; + --bs-table-striped-color: #000; + --bs-table-active-bg: #d4d6da; + --bs-table-active-color: #000; + --bs-table-hover-bg: #dadce0; + --bs-table-hover-color: #000; + color: #000; + border-color: #d4d6da; +} +.dark-mode .table-secondary { + --bs-table-bg: #deebe6; + --bs-table-striped-bg: #d3dfdb; + --bs-table-striped-color: #000; + --bs-table-active-bg: #c8d4cf; + --bs-table-active-color: #000; + --bs-table-hover-bg: #cdd9d5; + --bs-table-hover-color: #000; + color: #000; + border-color: #c8d4cf; +} +.dark-mode .table-success { + --bs-table-bg: #d1e7dd; + --bs-table-striped-bg: #c7dbd2; + --bs-table-striped-color: #000; + --bs-table-active-bg: #bcd0c7; + --bs-table-active-color: #000; + --bs-table-hover-bg: #c1d6cc; + --bs-table-hover-color: #000; + color: #000; + border-color: #bcd0c7; +} +.dark-mode .table-info { + --bs-table-bg: #cff4fc; + --bs-table-striped-bg: #c5e8ef; + --bs-table-striped-color: #000; + --bs-table-active-bg: #badce3; + --bs-table-active-color: #000; + --bs-table-hover-bg: #bfe2e9; + --bs-table-hover-color: #000; + color: #000; + border-color: #badce3; +} +.dark-mode .table-warning { + --bs-table-bg: #fff3cd; + --bs-table-striped-bg: #f2e7c3; + --bs-table-striped-color: #000; + --bs-table-active-bg: #e6dbb9; + --bs-table-active-color: #000; + --bs-table-hover-bg: #ece1be; + --bs-table-hover-color: #000; + color: #000; + border-color: #e6dbb9; +} +.dark-mode .table-danger { + --bs-table-bg: #f8d7da; + --bs-table-striped-bg: #eccccf; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfc2c4; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5c7ca; + --bs-table-hover-color: #000; + color: #000; + border-color: #dfc2c4; +} +.dark-mode .table-light { + --bs-table-bg: #f8f9fa; + --bs-table-striped-bg: #ecedee; + --bs-table-striped-color: #000; + --bs-table-active-bg: #dfe0e1; + --bs-table-active-color: #000; + --bs-table-hover-bg: #e5e6e7; + --bs-table-hover-color: #000; + color: #000; + border-color: #dfe0e1; +} +.dark-mode .table-dark { + --bs-table-bg: #212529; + --bs-table-striped-bg: #2c3034; + --bs-table-striped-color: #fff; + --bs-table-active-bg: #373b3e; + --bs-table-active-color: #fff; + --bs-table-hover-bg: #323539; + --bs-table-hover-color: #fff; + color: #fff; + border-color: #373b3e; +} +.dark-mode .table-responsive { + overflow-x: auto; + -webkit-overflow-scrolling: touch; +} +@media (max-width: 575.98px) { + .dark-mode .table-responsive-sm { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 767.98px) { + .dark-mode .table-responsive-md { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 991.98px) { + .dark-mode .table-responsive-lg { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1199.98px) { + .dark-mode .table-responsive-xl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +@media (max-width: 1399.98px) { + .dark-mode .table-responsive-xxl { + overflow-x: auto; + -webkit-overflow-scrolling: touch; + } +} +.dark-mode .form-label { + margin-bottom: 0.5rem; +} +.dark-mode .col-form-label { + padding-top: calc(0.375rem + 1px); + padding-bottom: calc(0.375rem + 1px); + margin-bottom: 0; + font-size: inherit; + line-height: 1.5; +} +.dark-mode .col-form-label-lg { + padding-top: calc(0.5rem + 1px); + padding-bottom: calc(0.5rem + 1px); + font-size: 1.25rem; +} +.dark-mode .col-form-label-sm { + padding-top: calc(0.25rem + 1px); + padding-bottom: calc(0.25rem + 1px); + font-size: 0.875rem; +} +.dark-mode .form-text { + margin-top: 0.25rem; + font-size: 0.875em; + color: #6c757d; +} +.dark-mode .form-control { + display: block; + width: 100%; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #cfd8dc; + background-clip: padding-box; + border: 1px solid #ced4da; + appearance: none; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-control { + transition: none; + } +} +.dark-mode .form-control[type=file] { + overflow: hidden; +} +.dark-mode .form-control[type=file]:not(:disabled):not([readonly]) { + cursor: pointer; +} +.dark-mode .form-control:focus { + color: #212529; + background-color: #cfd8dc; + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .form-control::-webkit-date-and-time-value { + height: 1.5em; +} +.dark-mode .form-control::placeholder { + color: #6c757d; + opacity: 1; +} +.dark-mode .form-control:disabled, .dark-mode .form-control[readonly] { + background-color: #e9ecef; + opacity: 1; +} +.dark-mode .form-control::file-selector-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + background-image: var(--bs-gradient); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-control::file-selector-button { + transition: none; + } +} +.dark-mode .form-control:hover:not(:disabled):not([readonly])::file-selector-button { + background-color: #dde0e3; +} +.dark-mode .form-control::-webkit-file-upload-button { + padding: 0.375rem 0.75rem; + margin: -0.375rem -0.75rem; + margin-inline-end: 0.75rem; + color: #212529; + background-color: #e9ecef; + background-image: var(--bs-gradient); + pointer-events: none; + border-color: inherit; + border-style: solid; + border-width: 0; + border-inline-end-width: 1px; + border-radius: 0; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-control::-webkit-file-upload-button { + transition: none; + } +} +.dark-mode .form-control:hover:not(:disabled):not([readonly])::-webkit-file-upload-button { + background-color: #dde0e3; +} +.dark-mode .form-control-plaintext { + display: block; + width: 100%; + padding: 0.375rem 0; + margin-bottom: 0; + line-height: 1.5; + color: #212529; + background-color: transparent; + border: solid transparent; + border-width: 1px 0; +} +.dark-mode .form-control-plaintext.form-control-sm, .dark-mode .form-control-plaintext.form-control-lg { + padding-right: 0; + padding-left: 0; +} +.dark-mode .form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} +.dark-mode .form-control-sm::file-selector-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + margin-inline-end: 0.5rem; +} +.dark-mode .form-control-sm::-webkit-file-upload-button { + padding: 0.25rem 0.5rem; + margin: -0.25rem -0.5rem; + margin-inline-end: 0.5rem; +} +.dark-mode .form-control-lg { + min-height: calc(1.5em + 1rem + 2px); + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} +.dark-mode .form-control-lg::file-selector-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + margin-inline-end: 1rem; +} +.dark-mode .form-control-lg::-webkit-file-upload-button { + padding: 0.5rem 1rem; + margin: -0.5rem -1rem; + margin-inline-end: 1rem; +} +.dark-mode textarea.form-control { + min-height: calc(1.5em + 0.75rem + 2px); +} +.dark-mode textarea.form-control-sm { + min-height: calc(1.5em + 0.5rem + 2px); +} +.dark-mode textarea.form-control-lg { + min-height: calc(1.5em + 1rem + 2px); +} +.dark-mode .form-control-color { + width: 3rem; + height: auto; + padding: 0.375rem; +} +.dark-mode .form-control-color:not(:disabled):not([readonly]) { + cursor: pointer; +} +.dark-mode .form-control-color::-moz-color-swatch { + height: 1.5em; + border-radius: 0.25rem; +} +.dark-mode .form-control-color::-webkit-color-swatch { + height: 1.5em; + border-radius: 0.25rem; +} +.dark-mode .form-select { + display: block; + width: 100%; + padding: 0.375rem 2.25rem 0.375rem 0.75rem; + -moz-padding-start: calc(0.75rem - 3px); + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + background-color: #cfd8dc; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right 0.75rem center; + background-size: 16px 12px; + border: 1px solid #ced4da; + border-radius: 0.25rem; + transition: border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-select { + transition: none; + } +} +.dark-mode .form-select:focus { + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .form-select[multiple], .dark-mode .form-select[size]:not([size="1"]) { + padding-right: 0.75rem; + background-image: none; +} +.dark-mode .form-select:disabled { + background-color: #e9ecef; +} +.dark-mode .form-select:-moz-focusring { + color: transparent; + text-shadow: 0 0 0 #212529; +} +.dark-mode .form-select-sm { + padding-top: 0.25rem; + padding-bottom: 0.25rem; + padding-left: 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} +.dark-mode .form-select-lg { + padding-top: 0.5rem; + padding-bottom: 0.5rem; + padding-left: 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} +.dark-mode .form-check { + display: block; + min-height: 1.5rem; + padding-left: 1.5em; + margin-bottom: 0.125rem; +} +.dark-mode .form-check .form-check-input { + float: left; + margin-left: -1.5em; +} +.dark-mode .form-check-input { + width: 1em; + height: 1em; + margin-top: 0.25em; + vertical-align: top; + background-color: #cfd8dc; + background-repeat: no-repeat; + background-position: center; + background-size: contain; + border: 1px solid rgba(0, 0, 0, 0.25); + appearance: none; + color-adjust: exact; +} +.dark-mode .form-check-input[type=checkbox] { + border-radius: 0.25em; +} +.dark-mode .form-check-input[type=radio] { + border-radius: 50%; +} +.dark-mode .form-check-input:active { + filter: brightness(90%); +} +.dark-mode .form-check-input:focus { + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .form-check-input:checked { + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.dark-mode .form-check-input:checked[type=checkbox] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10l3 3l6-6'/%3e%3c/svg%3e"), var(--bs-gradient); +} +.dark-mode .form-check-input:checked[type=radio] { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='2' fill='%23fff'/%3e%3c/svg%3e"), var(--bs-gradient); +} +.dark-mode .form-check-input[type=checkbox]:indeterminate { + background-color: #a1a9bd; + border-color: #a1a9bd; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20'%3e%3cpath fill='none' stroke='%23fff' stroke-linecap='round' stroke-linejoin='round' stroke-width='3' d='M6 10h8'/%3e%3c/svg%3e"), var(--bs-gradient); +} +.dark-mode .form-check-input:disabled { + pointer-events: none; + filter: none; + opacity: 0.5; +} +.dark-mode .form-check-input[disabled] ~ .form-check-label, .dark-mode .form-check-input:disabled ~ .form-check-label { + opacity: 0.5; +} +.dark-mode .form-switch { + padding-left: 2.5em; +} +.dark-mode .form-switch .form-check-input { + width: 2em; + margin-left: -2.5em; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='rgba%280, 0, 0, 0.25%29'/%3e%3c/svg%3e"); + background-position: left center; + border-radius: 2em; + transition: background-position 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-switch .form-check-input { + transition: none; + } +} +.dark-mode .form-switch .form-check-input:focus { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23d0d4de'/%3e%3c/svg%3e"); +} +.dark-mode .form-switch .form-check-input:checked { + background-position: right center; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='-4 -4 8 8'%3e%3ccircle r='3' fill='%23fff'/%3e%3c/svg%3e"), var(--bs-gradient); +} +.dark-mode .form-check-inline { + display: inline-block; + margin-right: 1rem; +} +.dark-mode .btn-check { + position: absolute; + clip: rect(0, 0, 0, 0); + pointer-events: none; +} +.dark-mode .btn-check[disabled] + .btn, .dark-mode .btn-check:disabled + .btn { + pointer-events: none; + filter: none; + opacity: 0.65; +} +.dark-mode .form-range { + width: 100%; + height: 1.5rem; + padding: 0; + background-color: transparent; + appearance: none; +} +.dark-mode .form-range:focus { + outline: 0; +} +.dark-mode .form-range:focus::-webkit-slider-thumb { + box-shadow: 0 0 0 1px #cfd8dc, 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .form-range:focus::-moz-range-thumb { + box-shadow: 0 0 0 1px #cfd8dc, 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .form-range::-moz-focus-outer { + border: 0; +} +.dark-mode .form-range::-webkit-slider-thumb { + width: 1rem; + height: 1rem; + margin-top: -0.25rem; + background-color: #a1a9bd; + background-image: var(--bs-gradient); + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-range::-webkit-slider-thumb { + transition: none; + } +} +.dark-mode .form-range::-webkit-slider-thumb:active { + background-color: #e3e5eb; + background-image: var(--bs-gradient); +} +.dark-mode .form-range::-webkit-slider-runnable-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.dark-mode .form-range::-moz-range-thumb { + width: 1rem; + height: 1rem; + background-color: #a1a9bd; + background-image: var(--bs-gradient); + border: 0; + border-radius: 1rem; + transition: background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; + appearance: none; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-range::-moz-range-thumb { + transition: none; + } +} +.dark-mode .form-range::-moz-range-thumb:active { + background-color: #e3e5eb; + background-image: var(--bs-gradient); +} +.dark-mode .form-range::-moz-range-track { + width: 100%; + height: 0.5rem; + color: transparent; + cursor: pointer; + background-color: #dee2e6; + border-color: transparent; + border-radius: 1rem; +} +.dark-mode .form-range:disabled { + pointer-events: none; +} +.dark-mode .form-range:disabled::-webkit-slider-thumb { + background-color: #adb5bd; +} +.dark-mode .form-range:disabled::-moz-range-thumb { + background-color: #adb5bd; +} +.dark-mode .form-floating { + position: relative; +} +.dark-mode .form-floating > .form-control, +.dark-mode .form-floating > .form-select { + height: calc(3.5rem + 2px); + line-height: 1.25; +} +.dark-mode .form-floating > label { + position: absolute; + top: 0; + left: 0; + height: 100%; + padding: 1rem 0.75rem; + pointer-events: none; + border: 1px solid transparent; + transform-origin: 0 0; + transition: opacity 0.1s ease-in-out, transform 0.1s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .form-floating > label { + transition: none; + } +} +.dark-mode .form-floating > .form-control { + padding: 1rem 0.75rem; +} +.dark-mode .form-floating > .form-control::placeholder { + color: transparent; +} +.dark-mode .form-floating > .form-control:focus, .dark-mode .form-floating > .form-control:not(:placeholder-shown) { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.dark-mode .form-floating > .form-control:-webkit-autofill { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.dark-mode .form-floating > .form-select { + padding-top: 1.625rem; + padding-bottom: 0.625rem; +} +.dark-mode .form-floating > .form-control:focus ~ label, +.dark-mode .form-floating > .form-control:not(:placeholder-shown) ~ label, +.dark-mode .form-floating > .form-select ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.dark-mode .form-floating > .form-control:-webkit-autofill ~ label { + opacity: 0.65; + transform: scale(0.85) translateY(-0.5rem) translateX(0.15rem); +} +.dark-mode .input-group { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: stretch; + width: 100%; +} +.dark-mode .input-group > .form-control, +.dark-mode .input-group > .form-select { + position: relative; + flex: 1 1 auto; + width: 1%; + min-width: 0; +} +.dark-mode .input-group > .form-control:focus, +.dark-mode .input-group > .form-select:focus { + z-index: 3; +} +.dark-mode .input-group .btn { + position: relative; + z-index: 2; +} +.dark-mode .input-group .btn:focus { + z-index: 3; +} +.dark-mode .input-group-text { + display: flex; + align-items: center; + padding: 0.375rem 0.75rem; + font-size: 1rem; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + white-space: nowrap; + background-color: #e9ecef; + border: 1px solid #ced4da; + border-radius: 0.25rem; +} +.dark-mode .input-group-lg > .form-control, +.dark-mode .input-group-lg > .form-select, +.dark-mode .input-group-lg > .input-group-text, +.dark-mode .input-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} +.dark-mode .input-group-sm > .form-control, +.dark-mode .input-group-sm > .form-select, +.dark-mode .input-group-sm > .input-group-text, +.dark-mode .input-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} +.dark-mode .input-group-lg > .form-select, +.dark-mode .input-group-sm > .form-select { + padding-right: 3rem; +} +.dark-mode .input-group:not(.has-validation) > :not(:last-child):not(.dropdown-toggle):not(.dropdown-menu), +.dark-mode .input-group:not(.has-validation) > .dropdown-toggle:nth-last-child(n+3) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.dark-mode .input-group.has-validation > :nth-last-child(n+3):not(.dropdown-toggle):not(.dropdown-menu), +.dark-mode .input-group.has-validation > .dropdown-toggle:nth-last-child(n+4) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.dark-mode .input-group > :not(:first-child):not(.dropdown-menu):not(.valid-tooltip):not(.valid-feedback):not(.invalid-tooltip):not(.invalid-feedback) { + margin-left: -1px; + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.dark-mode .valid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #198754; +} +.dark-mode .valid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(25, 135, 84, 0.9); + border-radius: 0.25rem; +} +.was-validated .dark-mode:valid ~ .valid-feedback, +.was-validated .dark-mode:valid ~ .valid-tooltip, .dark-mode.is-valid ~ .valid-feedback, +.dark-mode.is-valid ~ .valid-tooltip { + display: block; +} +.was-validated .dark-mode .form-control:valid, .dark-mode .form-control.is-valid { + border-color: #198754; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .dark-mode .form-control:valid:focus, .dark-mode .form-control.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} +.was-validated .dark-mode textarea.form-control:valid, .dark-mode textarea.form-control.is-valid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} +.was-validated .dark-mode .form-select:valid, .dark-mode .form-select.is-valid { + border-color: #198754; +} +.was-validated .dark-mode .form-select:valid:not([multiple]):not([size]), .was-validated .dark-mode .form-select:valid:not([multiple])[size="1"], .dark-mode .form-select.is-valid:not([multiple]):not([size]), .dark-mode .form-select.is-valid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 8'%3e%3cpath fill='%23198754' d='M2.3 6.73L.6 4.53c-.4-1.04.46-1.4 1.1-.8l1.1 1.4 3.4-3.8c.6-.63 1.6-.27 1.2.7l-4 4.6c-.43.5-.8.4-1.1.1z'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .dark-mode .form-select:valid:focus, .dark-mode .form-select.is-valid:focus { + border-color: #198754; + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} +.was-validated .dark-mode .form-check-input:valid, .dark-mode .form-check-input.is-valid { + border-color: #198754; +} +.was-validated .dark-mode .form-check-input:valid:checked, .dark-mode .form-check-input.is-valid:checked { + background-color: #198754; +} +.was-validated .dark-mode .form-check-input:valid:focus, .dark-mode .form-check-input.is-valid:focus { + box-shadow: 0 0 0 0.25rem rgba(25, 135, 84, 0.25); +} +.was-validated .dark-mode .form-check-input:valid ~ .form-check-label, .dark-mode .form-check-input.is-valid ~ .form-check-label { + color: #198754; +} +.dark-mode .form-check-inline .form-check-input ~ .valid-feedback { + margin-left: 0.5em; +} +.was-validated .dark-mode .input-group .form-control:valid, .dark-mode .input-group .form-control.is-valid, +.was-validated .dark-mode .input-group .form-select:valid, +.dark-mode .input-group .form-select.is-valid { + z-index: 1; +} +.was-validated .dark-mode .input-group .form-control:valid:focus, .dark-mode .input-group .form-control.is-valid:focus, +.was-validated .dark-mode .input-group .form-select:valid:focus, +.dark-mode .input-group .form-select.is-valid:focus { + z-index: 3; +} +.dark-mode .invalid-feedback { + display: none; + width: 100%; + margin-top: 0.25rem; + font-size: 0.875em; + color: #dc3545; +} +.dark-mode .invalid-tooltip { + position: absolute; + top: 100%; + z-index: 5; + display: none; + max-width: 100%; + padding: 0.25rem 0.5rem; + margin-top: 0.1rem; + font-size: 0.875rem; + color: #fff; + background-color: rgba(220, 53, 69, 0.9); + border-radius: 0.25rem; +} +.was-validated .dark-mode:invalid ~ .invalid-feedback, +.was-validated .dark-mode:invalid ~ .invalid-tooltip, .dark-mode.is-invalid ~ .invalid-feedback, +.dark-mode.is-invalid ~ .invalid-tooltip { + display: block; +} +.was-validated .dark-mode .form-control:invalid, .dark-mode .form-control.is-invalid { + border-color: #dc3545; + padding-right: calc(1.5em + 0.75rem); + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-position: right calc(0.375em + 0.1875rem) center; + background-size: calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .dark-mode .form-control:invalid:focus, .dark-mode .form-control.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} +.was-validated .dark-mode textarea.form-control:invalid, .dark-mode textarea.form-control.is-invalid { + padding-right: calc(1.5em + 0.75rem); + background-position: top calc(0.375em + 0.1875rem) right calc(0.375em + 0.1875rem); +} +.was-validated .dark-mode .form-select:invalid, .dark-mode .form-select.is-invalid { + border-color: #dc3545; +} +.was-validated .dark-mode .form-select:invalid:not([multiple]):not([size]), .was-validated .dark-mode .form-select:invalid:not([multiple])[size="1"], .dark-mode .form-select.is-invalid:not([multiple]):not([size]), .dark-mode .form-select.is-invalid:not([multiple])[size="1"] { + padding-right: 4.125rem; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='M2 5l6 6 6-6'/%3e%3c/svg%3e"), url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12' width='12' height='12' fill='none' stroke='%23dc3545'%3e%3ccircle cx='6' cy='6' r='4.5'/%3e%3cpath stroke-linejoin='round' d='M5.8 3.6h.4L6 6.5z'/%3e%3ccircle cx='6' cy='8.2' r='.6' fill='%23dc3545' stroke='none'/%3e%3c/svg%3e"); + background-position: right 0.75rem center, center right 2.25rem; + background-size: 16px 12px, calc(0.75em + 0.375rem) calc(0.75em + 0.375rem); +} +.was-validated .dark-mode .form-select:invalid:focus, .dark-mode .form-select.is-invalid:focus { + border-color: #dc3545; + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} +.was-validated .dark-mode .form-check-input:invalid, .dark-mode .form-check-input.is-invalid { + border-color: #dc3545; +} +.was-validated .dark-mode .form-check-input:invalid:checked, .dark-mode .form-check-input.is-invalid:checked { + background-color: #dc3545; +} +.was-validated .dark-mode .form-check-input:invalid:focus, .dark-mode .form-check-input.is-invalid:focus { + box-shadow: 0 0 0 0.25rem rgba(220, 53, 69, 0.25); +} +.was-validated .dark-mode .form-check-input:invalid ~ .form-check-label, .dark-mode .form-check-input.is-invalid ~ .form-check-label { + color: #dc3545; +} +.dark-mode .form-check-inline .form-check-input ~ .invalid-feedback { + margin-left: 0.5em; +} +.was-validated .dark-mode .input-group .form-control:invalid, .dark-mode .input-group .form-control.is-invalid, +.was-validated .dark-mode .input-group .form-select:invalid, +.dark-mode .input-group .form-select.is-invalid { + z-index: 2; +} +.was-validated .dark-mode .input-group .form-control:invalid:focus, .dark-mode .input-group .form-control.is-invalid:focus, +.was-validated .dark-mode .input-group .form-select:invalid:focus, +.dark-mode .input-group .form-select.is-invalid:focus { + z-index: 3; +} +.dark-mode .btn { + display: inline-block; + font-weight: 400; + line-height: 1.5; + color: #212529; + text-align: center; + text-decoration: none; + vertical-align: middle; + cursor: pointer; + user-select: none; + background-color: transparent; + border: 1px solid transparent; + padding: 0.375rem 0.75rem; + font-size: 1rem; + border-radius: 0.25rem; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .btn { + transition: none; + } +} +.dark-mode .btn:hover { + color: #212529; +} +.btn-check:focus + .dark-mode .btn, .dark-mode .btn:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .btn:disabled, .dark-mode .btn.disabled, fieldset:disabled .dark-mode .btn { + pointer-events: none; + opacity: 0.65; +} +.dark-mode .btn-primary { + color: #000; + background-color: #5c7ba8; + background-image: var(--bs-gradient); + border-color: #5c7ba8; +} +.dark-mode .btn-primary:hover { + color: #000; + background-color: #748fb5; + background-image: var(--bs-gradient); + border-color: #6c88b1; +} +.btn-check:focus + .dark-mode .btn-primary, .dark-mode .btn-primary:focus { + color: #000; + background-color: #748fb5; + background-image: var(--bs-gradient); + border-color: #6c88b1; + box-shadow: 0 0 0 0.25rem rgba(78, 105, 143, 0.5); +} +.btn-check:checked + .dark-mode .btn-primary, .btn-check:active + .dark-mode .btn-primary, .dark-mode .btn-primary:active, .dark-mode .btn-primary.active, .show > .dark-mode .btn-primary.dropdown-toggle { + color: #000; + background-color: #7d95b9; + background-image: none; + border-color: #6c88b1; +} +.btn-check:checked + .dark-mode .btn-primary:focus, .btn-check:active + .dark-mode .btn-primary:focus, .dark-mode .btn-primary:active:focus, .dark-mode .btn-primary.active:focus, .show > .dark-mode .btn-primary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(78, 105, 143, 0.5); +} +.dark-mode .btn-primary:disabled, .dark-mode .btn-primary.disabled { + color: #000; + background-color: #5c7ba8; + background-image: none; + border-color: #5c7ba8; +} +.dark-mode .btn-secondary { + color: #fff; + background-color: #146c43; + background-image: var(--bs-gradient); + border-color: #146c43; +} +.dark-mode .btn-secondary:hover { + color: #fff; + background-color: #115c39; + background-image: var(--bs-gradient); + border-color: #105636; +} +.btn-check:focus + .dark-mode .btn-secondary, .dark-mode .btn-secondary:focus { + color: #fff; + background-color: #115c39; + background-image: var(--bs-gradient); + border-color: #105636; + box-shadow: 0 0 0 0.25rem rgba(55, 130, 95, 0.5); +} +.btn-check:checked + .dark-mode .btn-secondary, .btn-check:active + .dark-mode .btn-secondary, .dark-mode .btn-secondary:active, .dark-mode .btn-secondary.active, .show > .dark-mode .btn-secondary.dropdown-toggle { + color: #fff; + background-color: #105636; + background-image: none; + border-color: #0f5132; +} +.btn-check:checked + .dark-mode .btn-secondary:focus, .btn-check:active + .dark-mode .btn-secondary:focus, .dark-mode .btn-secondary:active:focus, .dark-mode .btn-secondary.active:focus, .show > .dark-mode .btn-secondary.dropdown-toggle:focus { + box-shadow: 0 0 0 0.25rem rgba(55, 130, 95, 0.5); +} +.dark-mode .btn-secondary:disabled, .dark-mode .btn-secondary.disabled { + color: #fff; + background-color: #146c43; + background-image: none; + border-color: #146c43; +} +.dark-mode .btn-outline-primary { + color: #5c7ba8; + border-color: #5c7ba8; +} +.dark-mode .btn-outline-primary:hover { + color: #000; + background-color: #5c7ba8; + border-color: #5c7ba8; +} +.btn-check:focus + .dark-mode .btn-outline-primary, .dark-mode .btn-outline-primary:focus { + box-shadow: 0 0 0 0.25rem rgba(92, 123, 168, 0.5); +} +.btn-check:checked + .dark-mode .btn-outline-primary, .btn-check:active + .dark-mode .btn-outline-primary, .dark-mode .btn-outline-primary:active, .dark-mode .btn-outline-primary.active, .dark-mode .btn-outline-primary.dropdown-toggle.show { + color: #000; + background-color: #5c7ba8; + border-color: #5c7ba8; +} +.btn-check:checked + .dark-mode .btn-outline-primary:focus, .btn-check:active + .dark-mode .btn-outline-primary:focus, .dark-mode .btn-outline-primary:active:focus, .dark-mode .btn-outline-primary.active:focus, .dark-mode .btn-outline-primary.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(92, 123, 168, 0.5); +} +.dark-mode .btn-outline-primary:disabled, .dark-mode .btn-outline-primary.disabled { + color: #5c7ba8; + background-color: transparent; +} +.dark-mode .btn-outline-secondary { + color: #146c43; + border-color: #146c43; +} +.dark-mode .btn-outline-secondary:hover { + color: #fff; + background-color: #146c43; + border-color: #146c43; +} +.btn-check:focus + .dark-mode .btn-outline-secondary, .dark-mode .btn-outline-secondary:focus { + box-shadow: 0 0 0 0.25rem rgba(20, 108, 67, 0.5); +} +.btn-check:checked + .dark-mode .btn-outline-secondary, .btn-check:active + .dark-mode .btn-outline-secondary, .dark-mode .btn-outline-secondary:active, .dark-mode .btn-outline-secondary.active, .dark-mode .btn-outline-secondary.dropdown-toggle.show { + color: #fff; + background-color: #146c43; + border-color: #146c43; +} +.btn-check:checked + .dark-mode .btn-outline-secondary:focus, .btn-check:active + .dark-mode .btn-outline-secondary:focus, .dark-mode .btn-outline-secondary:active:focus, .dark-mode .btn-outline-secondary.active:focus, .dark-mode .btn-outline-secondary.dropdown-toggle.show:focus { + box-shadow: 0 0 0 0.25rem rgba(20, 108, 67, 0.5); +} +.dark-mode .btn-outline-secondary:disabled, .dark-mode .btn-outline-secondary.disabled { + color: #146c43; + background-color: transparent; +} +.dark-mode .btn-link { + font-weight: 400; + color: #a1a9bd; + text-decoration: underline; +} +.dark-mode .btn-link:hover { + color: #818797; +} +.dark-mode .btn-link:disabled, .dark-mode .btn-link.disabled { + color: #6c757d; +} +.dark-mode .btn-lg, .dark-mode .btn-group-lg > .btn { + padding: 0.5rem 1rem; + font-size: 1.25rem; + border-radius: 0.3rem; +} +.dark-mode .btn-sm, .dark-mode .btn-group-sm > .btn { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; + border-radius: 0.2rem; +} +.dark-mode .fade { + transition: opacity 0.15s linear; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .fade { + transition: none; + } +} +.dark-mode .fade:not(.show) { + opacity: 0; +} +.dark-mode .collapse:not(.show) { + display: none; +} +.dark-mode .collapsing { + height: 0; + overflow: hidden; + transition: height 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .collapsing { + transition: none; + } +} +.dark-mode .collapsing.collapse-horizontal { + width: 0; + height: auto; + transition: width 0.35s ease; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .collapsing.collapse-horizontal { + transition: none; + } +} +.dark-mode .dropup, +.dark-mode .dropend, +.dark-mode .dropdown, +.dark-mode .dropstart { + position: relative; +} +.dark-mode .dropdown-toggle { + white-space: nowrap; +} +.dark-mode .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid; + border-right: 0.3em solid transparent; + border-bottom: 0; + border-left: 0.3em solid transparent; +} +.dark-mode .dropdown-toggle:empty::after { + margin-left: 0; +} +.dark-mode .dropdown-menu { + position: absolute; + z-index: 1000; + display: none; + min-width: 10rem; + padding: 0.5rem 0; + margin: 0; + font-size: 1rem; + color: #212529; + text-align: left; + list-style: none; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} +.dark-mode .dropdown-menu[data-bs-popper] { + top: 100%; + left: 0; + margin-top: 0.125rem; +} +.dark-mode .dropdown-menu-start { + --bs-position: start; +} +.dark-mode .dropdown-menu-start[data-bs-popper] { + right: auto; + left: 0; +} +.dark-mode .dropdown-menu-end { + --bs-position: end; +} +.dark-mode .dropdown-menu-end[data-bs-popper] { + right: 0; + left: auto; +} +@media (min-width: 576px) { + .dark-mode .dropdown-menu-sm-start { + --bs-position: start; + } + .dark-mode .dropdown-menu-sm-start[data-bs-popper] { + right: auto; + left: 0; + } + .dark-mode .dropdown-menu-sm-end { + --bs-position: end; + } + .dark-mode .dropdown-menu-sm-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 768px) { + .dark-mode .dropdown-menu-md-start { + --bs-position: start; + } + .dark-mode .dropdown-menu-md-start[data-bs-popper] { + right: auto; + left: 0; + } + .dark-mode .dropdown-menu-md-end { + --bs-position: end; + } + .dark-mode .dropdown-menu-md-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 992px) { + .dark-mode .dropdown-menu-lg-start { + --bs-position: start; + } + .dark-mode .dropdown-menu-lg-start[data-bs-popper] { + right: auto; + left: 0; + } + .dark-mode .dropdown-menu-lg-end { + --bs-position: end; + } + .dark-mode .dropdown-menu-lg-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1200px) { + .dark-mode .dropdown-menu-xl-start { + --bs-position: start; + } + .dark-mode .dropdown-menu-xl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dark-mode .dropdown-menu-xl-end { + --bs-position: end; + } + .dark-mode .dropdown-menu-xl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +@media (min-width: 1400px) { + .dark-mode .dropdown-menu-xxl-start { + --bs-position: start; + } + .dark-mode .dropdown-menu-xxl-start[data-bs-popper] { + right: auto; + left: 0; + } + .dark-mode .dropdown-menu-xxl-end { + --bs-position: end; + } + .dark-mode .dropdown-menu-xxl-end[data-bs-popper] { + right: 0; + left: auto; + } +} +.dark-mode .dropup .dropdown-menu[data-bs-popper] { + top: auto; + bottom: 100%; + margin-top: 0; + margin-bottom: 0.125rem; +} +.dark-mode .dropup .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0; + border-right: 0.3em solid transparent; + border-bottom: 0.3em solid; + border-left: 0.3em solid transparent; +} +.dark-mode .dropup .dropdown-toggle:empty::after { + margin-left: 0; +} +.dark-mode .dropend .dropdown-menu[data-bs-popper] { + top: 0; + right: auto; + left: 100%; + margin-top: 0; + margin-left: 0.125rem; +} +.dark-mode .dropend .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0; + border-bottom: 0.3em solid transparent; + border-left: 0.3em solid; +} +.dark-mode .dropend .dropdown-toggle:empty::after { + margin-left: 0; +} +.dark-mode .dropend .dropdown-toggle::after { + vertical-align: 0; +} +.dark-mode .dropstart .dropdown-menu[data-bs-popper] { + top: 0; + right: 100%; + left: auto; + margin-top: 0; + margin-right: 0.125rem; +} +.dark-mode .dropstart .dropdown-toggle::after { + display: inline-block; + margin-left: 0.255em; + vertical-align: 0.255em; + content: ""; +} +.dark-mode .dropstart .dropdown-toggle::after { + display: none; +} +.dark-mode .dropstart .dropdown-toggle::before { + display: inline-block; + margin-right: 0.255em; + vertical-align: 0.255em; + content: ""; + border-top: 0.3em solid transparent; + border-right: 0.3em solid; + border-bottom: 0.3em solid transparent; +} +.dark-mode .dropstart .dropdown-toggle:empty::after { + margin-left: 0; +} +.dark-mode .dropstart .dropdown-toggle::before { + vertical-align: 0; +} +.dark-mode .dropdown-divider { + height: 0; + margin: 0.5rem 0; + overflow: hidden; + border-top: 1px solid rgba(0, 0, 0, 0.15); +} +.dark-mode .dropdown-item { + display: block; + width: 100%; + padding: 0.25rem 1rem; + clear: both; + font-weight: 400; + color: #212529; + text-align: inherit; + text-decoration: none; + white-space: nowrap; + background-color: transparent; + border: 0; +} +.dark-mode .dropdown-item:hover, .dark-mode .dropdown-item:focus { + color: #1e2125; + background-color: #e9ecef; + background-image: var(--bs-gradient); +} +.dark-mode .dropdown-item.active, .dark-mode .dropdown-item:active { + color: #fff; + text-decoration: none; + background-color: #a1a9bd; + background-image: var(--bs-gradient); +} +.dark-mode .dropdown-item.disabled, .dark-mode .dropdown-item:disabled { + color: #adb5bd; + pointer-events: none; + background-color: transparent; + background-image: none; +} +.dark-mode .dropdown-menu.show { + display: block; +} +.dark-mode .dropdown-header { + display: block; + padding: 0.5rem 1rem; + margin-bottom: 0; + font-size: 0.875rem; + color: #6c757d; + white-space: nowrap; +} +.dark-mode .dropdown-item-text { + display: block; + padding: 0.25rem 1rem; + color: #212529; +} +.dark-mode .dropdown-menu-dark { + color: #dee2e6; + background-color: #343a40; + border-color: rgba(0, 0, 0, 0.15); +} +.dark-mode .dropdown-menu-dark .dropdown-item { + color: #dee2e6; +} +.dark-mode .dropdown-menu-dark .dropdown-item:hover, .dark-mode .dropdown-menu-dark .dropdown-item:focus { + color: #fff; + background-color: rgba(255, 255, 255, 0.15); + background-image: var(--bs-gradient); +} +.dark-mode .dropdown-menu-dark .dropdown-item.active, .dark-mode .dropdown-menu-dark .dropdown-item:active { + color: #fff; + background-color: #a1a9bd; + background-image: var(--bs-gradient); +} +.dark-mode .dropdown-menu-dark .dropdown-item.disabled, .dark-mode .dropdown-menu-dark .dropdown-item:disabled { + color: #adb5bd; +} +.dark-mode .dropdown-menu-dark .dropdown-divider { + border-color: rgba(0, 0, 0, 0.15); +} +.dark-mode .dropdown-menu-dark .dropdown-item-text { + color: #dee2e6; +} +.dark-mode .dropdown-menu-dark .dropdown-header { + color: #adb5bd; +} +.dark-mode .btn-group, +.dark-mode .btn-group-vertical { + position: relative; + display: inline-flex; + vertical-align: middle; +} +.dark-mode .btn-group > .btn, +.dark-mode .btn-group-vertical > .btn { + position: relative; + flex: 1 1 auto; +} +.dark-mode .btn-group > .btn-check:checked + .btn, +.dark-mode .btn-group > .btn-check:focus + .btn, +.dark-mode .btn-group > .btn:hover, +.dark-mode .btn-group > .btn:focus, +.dark-mode .btn-group > .btn:active, +.dark-mode .btn-group > .btn.active, +.dark-mode .btn-group-vertical > .btn-check:checked + .btn, +.dark-mode .btn-group-vertical > .btn-check:focus + .btn, +.dark-mode .btn-group-vertical > .btn:hover, +.dark-mode .btn-group-vertical > .btn:focus, +.dark-mode .btn-group-vertical > .btn:active, +.dark-mode .btn-group-vertical > .btn.active { + z-index: 1; +} +.dark-mode .btn-toolbar { + display: flex; + flex-wrap: wrap; + justify-content: flex-start; +} +.dark-mode .btn-toolbar .input-group { + width: auto; +} +.dark-mode .btn-group > .btn:not(:first-child), +.dark-mode .btn-group > .btn-group:not(:first-child) { + margin-left: -1px; +} +.dark-mode .btn-group > .btn:not(:last-child):not(.dropdown-toggle), +.dark-mode .btn-group > .btn-group:not(:last-child) > .btn { + border-top-right-radius: 0; + border-bottom-right-radius: 0; +} +.dark-mode .btn-group > .btn:nth-child(n+3), +.dark-mode .btn-group > :not(.btn-check) + .btn, +.dark-mode .btn-group > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-bottom-left-radius: 0; +} +.dark-mode .dropdown-toggle-split { + padding-right: 0.5625rem; + padding-left: 0.5625rem; +} +.dark-mode .dropdown-toggle-split::after, .dropup .dark-mode .dropdown-toggle-split::after, .dropend .dark-mode .dropdown-toggle-split::after { + margin-left: 0; +} +.dropstart .dark-mode .dropdown-toggle-split::before { + margin-right: 0; +} +.dark-mode .btn-sm + .dropdown-toggle-split, .dark-mode .btn-group-sm > .btn + .dropdown-toggle-split { + padding-right: 0.375rem; + padding-left: 0.375rem; +} +.dark-mode .btn-lg + .dropdown-toggle-split, .dark-mode .btn-group-lg > .btn + .dropdown-toggle-split { + padding-right: 0.75rem; + padding-left: 0.75rem; +} +.dark-mode .btn-group-vertical { + flex-direction: column; + align-items: flex-start; + justify-content: center; +} +.dark-mode .btn-group-vertical > .btn, +.dark-mode .btn-group-vertical > .btn-group { + width: 100%; +} +.dark-mode .btn-group-vertical > .btn:not(:first-child), +.dark-mode .btn-group-vertical > .btn-group:not(:first-child) { + margin-top: -1px; +} +.dark-mode .btn-group-vertical > .btn:not(:last-child):not(.dropdown-toggle), +.dark-mode .btn-group-vertical > .btn-group:not(:last-child) > .btn { + border-bottom-right-radius: 0; + border-bottom-left-radius: 0; +} +.dark-mode .btn-group-vertical > .btn ~ .btn, +.dark-mode .btn-group-vertical > .btn-group:not(:first-child) > .btn { + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.dark-mode .nav { + display: flex; + flex-wrap: wrap; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.dark-mode .nav-link { + display: block; + padding: 0.5rem 1rem; + color: #a1a9bd; + text-decoration: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .nav-link { + transition: none; + } +} +.dark-mode .nav-link:hover, .dark-mode .nav-link:focus { + color: #818797; +} +.dark-mode .nav-link.disabled { + color: #6c757d; + pointer-events: none; + cursor: default; +} +.dark-mode .nav-tabs { + border-bottom: 1px solid #dee2e6; +} +.dark-mode .nav-tabs .nav-link { + margin-bottom: -1px; + background: none; + border: 1px solid transparent; + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.dark-mode .nav-tabs .nav-link:hover, .dark-mode .nav-tabs .nav-link:focus { + border-color: #e9ecef #e9ecef #dee2e6; + isolation: isolate; +} +.dark-mode .nav-tabs .nav-link.disabled { + color: #6c757d; + background-color: transparent; + border-color: transparent; +} +.dark-mode .nav-tabs .nav-link.active, +.dark-mode .nav-tabs .nav-item.show .nav-link { + color: #495057; + background-color: #cfd8dc; + border-color: #dee2e6 #dee2e6 #cfd8dc; +} +.dark-mode .nav-tabs .dropdown-menu { + margin-top: -1px; + border-top-left-radius: 0; + border-top-right-radius: 0; +} +.dark-mode .nav-pills .nav-link { + background: none; + border: 0; + border-radius: 0.25rem; +} +.dark-mode .nav-pills .nav-link.active, +.dark-mode .nav-pills .show > .nav-link { + color: #fff; + background-color: #a1a9bd; + background-image: var(--bs-gradient); +} +.dark-mode .nav-fill > .nav-link, +.dark-mode .nav-fill .nav-item { + flex: 1 1 auto; + text-align: center; +} +.dark-mode .nav-justified > .nav-link, +.dark-mode .nav-justified .nav-item { + flex-basis: 0; + flex-grow: 1; + text-align: center; +} +.dark-mode .nav-fill .nav-item .nav-link, +.dark-mode .nav-justified .nav-item .nav-link { + width: 100%; +} +.dark-mode .tab-content > .tab-pane { + display: none; +} +.dark-mode .tab-content > .active { + display: block; +} +.dark-mode .navbar { + position: relative; + display: flex; + flex-wrap: wrap; + align-items: center; + justify-content: space-between; + padding-top: 0.5rem; + padding-bottom: 0.5rem; + background-image: var(--bs-gradient); +} +.dark-mode .navbar > .container, +.dark-mode .navbar > .container-fluid, +.dark-mode .navbar > .container-sm, +.dark-mode .navbar > .container-md, +.dark-mode .navbar > .container-lg, +.dark-mode .navbar > .container-xl, +.dark-mode .navbar > .container-xxl { + display: flex; + flex-wrap: inherit; + align-items: center; + justify-content: space-between; +} +.dark-mode .navbar-brand { + padding-top: 0.3125rem; + padding-bottom: 0.3125rem; + margin-right: 1rem; + font-size: 1.25rem; + text-decoration: none; + white-space: nowrap; +} +.dark-mode .navbar-nav { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + list-style: none; +} +.dark-mode .navbar-nav .nav-link { + padding-right: 0; + padding-left: 0; +} +.dark-mode .navbar-nav .dropdown-menu { + position: static; +} +.dark-mode .navbar-text { + padding-top: 0.5rem; + padding-bottom: 0.5rem; +} +.dark-mode .navbar-collapse { + flex-basis: 100%; + flex-grow: 1; + align-items: center; +} +.dark-mode .navbar-toggler { + padding: 0.25rem 0.75rem; + font-size: 1.25rem; + line-height: 1; + background-color: transparent; + border: 1px solid transparent; + border-radius: 0.25rem; + transition: box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .navbar-toggler { + transition: none; + } +} +.dark-mode .navbar-toggler:hover { + text-decoration: none; +} +.dark-mode .navbar-toggler:focus { + text-decoration: none; + outline: 0; + box-shadow: 0 0 0 0.25rem; +} +.dark-mode .navbar-toggler-icon { + display: inline-block; + width: 1.5em; + height: 1.5em; + vertical-align: middle; + background-repeat: no-repeat; + background-position: center; + background-size: 100%; +} +.dark-mode .navbar-nav-scroll { + max-height: var(--bs-scroll-height, 75vh); + overflow-y: auto; +} +@media (min-width: 576px) { + .dark-mode .navbar-expand-sm { + flex-wrap: nowrap; + justify-content: flex-start; + } + .dark-mode .navbar-expand-sm .navbar-nav { + flex-direction: row; + } + .dark-mode .navbar-expand-sm .navbar-nav .dropdown-menu { + position: absolute; + } + .dark-mode .navbar-expand-sm .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .dark-mode .navbar-expand-sm .navbar-nav-scroll { + overflow: visible; + } + .dark-mode .navbar-expand-sm .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .dark-mode .navbar-expand-sm .navbar-toggler { + display: none; + } + .dark-mode .navbar-expand-sm .offcanvas-header { + display: none; + } + .dark-mode .navbar-expand-sm .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .dark-mode .navbar-expand-sm .offcanvas-top, +.dark-mode .navbar-expand-sm .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .dark-mode .navbar-expand-sm .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 768px) { + .dark-mode .navbar-expand-md { + flex-wrap: nowrap; + justify-content: flex-start; + } + .dark-mode .navbar-expand-md .navbar-nav { + flex-direction: row; + } + .dark-mode .navbar-expand-md .navbar-nav .dropdown-menu { + position: absolute; + } + .dark-mode .navbar-expand-md .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .dark-mode .navbar-expand-md .navbar-nav-scroll { + overflow: visible; + } + .dark-mode .navbar-expand-md .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .dark-mode .navbar-expand-md .navbar-toggler { + display: none; + } + .dark-mode .navbar-expand-md .offcanvas-header { + display: none; + } + .dark-mode .navbar-expand-md .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .dark-mode .navbar-expand-md .offcanvas-top, +.dark-mode .navbar-expand-md .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .dark-mode .navbar-expand-md .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 992px) { + .dark-mode .navbar-expand-lg { + flex-wrap: nowrap; + justify-content: flex-start; + } + .dark-mode .navbar-expand-lg .navbar-nav { + flex-direction: row; + } + .dark-mode .navbar-expand-lg .navbar-nav .dropdown-menu { + position: absolute; + } + .dark-mode .navbar-expand-lg .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .dark-mode .navbar-expand-lg .navbar-nav-scroll { + overflow: visible; + } + .dark-mode .navbar-expand-lg .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .dark-mode .navbar-expand-lg .navbar-toggler { + display: none; + } + .dark-mode .navbar-expand-lg .offcanvas-header { + display: none; + } + .dark-mode .navbar-expand-lg .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .dark-mode .navbar-expand-lg .offcanvas-top, +.dark-mode .navbar-expand-lg .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .dark-mode .navbar-expand-lg .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1200px) { + .dark-mode .navbar-expand-xl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .dark-mode .navbar-expand-xl .navbar-nav { + flex-direction: row; + } + .dark-mode .navbar-expand-xl .navbar-nav .dropdown-menu { + position: absolute; + } + .dark-mode .navbar-expand-xl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .dark-mode .navbar-expand-xl .navbar-nav-scroll { + overflow: visible; + } + .dark-mode .navbar-expand-xl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .dark-mode .navbar-expand-xl .navbar-toggler { + display: none; + } + .dark-mode .navbar-expand-xl .offcanvas-header { + display: none; + } + .dark-mode .navbar-expand-xl .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .dark-mode .navbar-expand-xl .offcanvas-top, +.dark-mode .navbar-expand-xl .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .dark-mode .navbar-expand-xl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +@media (min-width: 1400px) { + .dark-mode .navbar-expand-xxl { + flex-wrap: nowrap; + justify-content: flex-start; + } + .dark-mode .navbar-expand-xxl .navbar-nav { + flex-direction: row; + } + .dark-mode .navbar-expand-xxl .navbar-nav .dropdown-menu { + position: absolute; + } + .dark-mode .navbar-expand-xxl .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; + } + .dark-mode .navbar-expand-xxl .navbar-nav-scroll { + overflow: visible; + } + .dark-mode .navbar-expand-xxl .navbar-collapse { + display: flex !important; + flex-basis: auto; + } + .dark-mode .navbar-expand-xxl .navbar-toggler { + display: none; + } + .dark-mode .navbar-expand-xxl .offcanvas-header { + display: none; + } + .dark-mode .navbar-expand-xxl .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; + } + .dark-mode .navbar-expand-xxl .offcanvas-top, +.dark-mode .navbar-expand-xxl .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; + } + .dark-mode .navbar-expand-xxl .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; + } +} +.dark-mode .navbar-expand { + flex-wrap: nowrap; + justify-content: flex-start; +} +.dark-mode .navbar-expand .navbar-nav { + flex-direction: row; +} +.dark-mode .navbar-expand .navbar-nav .dropdown-menu { + position: absolute; +} +.dark-mode .navbar-expand .navbar-nav .nav-link { + padding-right: 0.5rem; + padding-left: 0.5rem; +} +.dark-mode .navbar-expand .navbar-nav-scroll { + overflow: visible; +} +.dark-mode .navbar-expand .navbar-collapse { + display: flex !important; + flex-basis: auto; +} +.dark-mode .navbar-expand .navbar-toggler { + display: none; +} +.dark-mode .navbar-expand .offcanvas-header { + display: none; +} +.dark-mode .navbar-expand .offcanvas { + position: inherit; + bottom: 0; + z-index: 1000; + flex-grow: 1; + visibility: visible !important; + background-color: transparent; + border-right: 0; + border-left: 0; + transition: none; + transform: none; +} +.dark-mode .navbar-expand .offcanvas-top, +.dark-mode .navbar-expand .offcanvas-bottom { + height: auto; + border-top: 0; + border-bottom: 0; +} +.dark-mode .navbar-expand .offcanvas-body { + display: flex; + flex-grow: 0; + padding: 0; + overflow-y: visible; +} +.dark-mode .navbar-light .navbar-brand { + color: rgba(0, 0, 0, 0.9); +} +.dark-mode .navbar-light .navbar-brand:hover, .dark-mode .navbar-light .navbar-brand:focus { + color: rgba(0, 0, 0, 0.9); +} +.dark-mode .navbar-light .navbar-nav .nav-link { + color: rgba(0, 0, 0, 0.55); +} +.dark-mode .navbar-light .navbar-nav .nav-link:hover, .dark-mode .navbar-light .navbar-nav .nav-link:focus { + color: rgba(0, 0, 0, 0.7); +} +.dark-mode .navbar-light .navbar-nav .nav-link.disabled { + color: rgba(0, 0, 0, 0.3); +} +.dark-mode .navbar-light .navbar-nav .show > .nav-link, +.dark-mode .navbar-light .navbar-nav .nav-link.active { + color: rgba(0, 0, 0, 0.9); +} +.dark-mode .navbar-light .navbar-toggler { + color: rgba(0, 0, 0, 0.55); + border-color: rgba(0, 0, 0, 0.1); +} +.dark-mode .navbar-light .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%280, 0, 0, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.dark-mode .navbar-light .navbar-text { + color: rgba(0, 0, 0, 0.55); +} +.dark-mode .navbar-light .navbar-text a, +.dark-mode .navbar-light .navbar-text a:hover, +.dark-mode .navbar-light .navbar-text a:focus { + color: rgba(0, 0, 0, 0.9); +} +.dark-mode .navbar-dark .navbar-brand { + color: #fff; +} +.dark-mode .navbar-dark .navbar-brand:hover, .dark-mode .navbar-dark .navbar-brand:focus { + color: #fff; +} +.dark-mode .navbar-dark .navbar-nav .nav-link { + color: rgba(255, 255, 255, 0.55); +} +.dark-mode .navbar-dark .navbar-nav .nav-link:hover, .dark-mode .navbar-dark .navbar-nav .nav-link:focus { + color: rgba(255, 255, 255, 0.75); +} +.dark-mode .navbar-dark .navbar-nav .nav-link.disabled { + color: rgba(255, 255, 255, 0.25); +} +.dark-mode .navbar-dark .navbar-nav .show > .nav-link, +.dark-mode .navbar-dark .navbar-nav .nav-link.active { + color: #fff; +} +.dark-mode .navbar-dark .navbar-toggler { + color: rgba(255, 255, 255, 0.55); + border-color: rgba(255, 255, 255, 0.1); +} +.dark-mode .navbar-dark .navbar-toggler-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255, 255, 255, 0.55%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e"); +} +.dark-mode .navbar-dark .navbar-text { + color: rgba(255, 255, 255, 0.55); +} +.dark-mode .navbar-dark .navbar-text a, +.dark-mode .navbar-dark .navbar-text a:hover, +.dark-mode .navbar-dark .navbar-text a:focus { + color: #fff; +} +.dark-mode .card { + position: relative; + display: flex; + flex-direction: column; + min-width: 0; + word-wrap: break-word; + background-color: #fff; + background-clip: border-box; + border: 1px solid rgba(0, 0, 0, 0.125); + border-radius: 0.25rem; +} +.dark-mode .card > hr { + margin-right: 0; + margin-left: 0; +} +.dark-mode .card > .list-group { + border-top: inherit; + border-bottom: inherit; +} +.dark-mode .card > .list-group:first-child { + border-top-width: 0; + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.dark-mode .card > .list-group:last-child { + border-bottom-width: 0; + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} +.dark-mode .card > .card-header + .list-group, +.dark-mode .card > .list-group + .card-footer { + border-top: 0; +} +.dark-mode .card-body { + flex: 1 1 auto; + padding: 1rem 1rem; +} +.dark-mode .card-title { + margin-bottom: 0.5rem; +} +.dark-mode .card-subtitle { + margin-top: -0.25rem; + margin-bottom: 0; +} +.dark-mode .card-text:last-child { + margin-bottom: 0; +} +.dark-mode .card-link + .card-link { + margin-left: 1rem; +} +.dark-mode .card-header { + padding: 0.5rem 1rem; + margin-bottom: 0; + background-color: rgba(0, 0, 0, 0.03); + border-bottom: 1px solid rgba(0, 0, 0, 0.125); +} +.dark-mode .card-header:first-child { + border-radius: calc(0.25rem - 1px) calc(0.25rem - 1px) 0 0; +} +.dark-mode .card-footer { + padding: 0.5rem 1rem; + background-color: rgba(0, 0, 0, 0.03); + border-top: 1px solid rgba(0, 0, 0, 0.125); +} +.dark-mode .card-footer:last-child { + border-radius: 0 0 calc(0.25rem - 1px) calc(0.25rem - 1px); +} +.dark-mode .card-header-tabs { + margin-right: -0.5rem; + margin-bottom: -0.5rem; + margin-left: -0.5rem; + border-bottom: 0; +} +.dark-mode .card-header-tabs .nav-link.active { + background-color: #fff; + border-bottom-color: #fff; +} +.dark-mode .card-header-pills { + margin-right: -0.5rem; + margin-left: -0.5rem; +} +.dark-mode .card-img-overlay { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + padding: 1rem; + border-radius: calc(0.25rem - 1px); +} +.dark-mode .card-img, +.dark-mode .card-img-top, +.dark-mode .card-img-bottom { + width: 100%; +} +.dark-mode .card-img, +.dark-mode .card-img-top { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.dark-mode .card-img, +.dark-mode .card-img-bottom { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} +.dark-mode .card-group > .card { + margin-bottom: 0.75rem; +} +@media (min-width: 576px) { + .dark-mode .card-group { + display: flex; + flex-flow: row wrap; + } + .dark-mode .card-group > .card { + flex: 1 0 0%; + margin-bottom: 0; + } + .dark-mode .card-group > .card + .card { + margin-left: 0; + border-left: 0; + } + .dark-mode .card-group > .card:not(:last-child) { + border-top-right-radius: 0; + border-bottom-right-radius: 0; + } + .dark-mode .card-group > .card:not(:last-child) .card-img-top, +.dark-mode .card-group > .card:not(:last-child) .card-header { + border-top-right-radius: 0; + } + .dark-mode .card-group > .card:not(:last-child) .card-img-bottom, +.dark-mode .card-group > .card:not(:last-child) .card-footer { + border-bottom-right-radius: 0; + } + .dark-mode .card-group > .card:not(:first-child) { + border-top-left-radius: 0; + border-bottom-left-radius: 0; + } + .dark-mode .card-group > .card:not(:first-child) .card-img-top, +.dark-mode .card-group > .card:not(:first-child) .card-header { + border-top-left-radius: 0; + } + .dark-mode .card-group > .card:not(:first-child) .card-img-bottom, +.dark-mode .card-group > .card:not(:first-child) .card-footer { + border-bottom-left-radius: 0; + } +} +.dark-mode .accordion-button { + position: relative; + display: flex; + align-items: center; + width: 100%; + padding: 1rem 1.25rem; + font-size: 1rem; + color: #212529; + text-align: left; + background-color: #cfd8dc; + border: 0; + border-radius: 0; + overflow-anchor: none; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out, border-radius 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .accordion-button { + transition: none; + } +} +.dark-mode .accordion-button:not(.collapsed) { + color: #9198aa; + background-color: #f6f6f8; + box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.125); +} +.dark-mode .accordion-button:not(.collapsed)::after { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%239198aa'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + transform: rotate(-180deg); +} +.dark-mode .accordion-button::after { + flex-shrink: 0; + width: 1.25rem; + height: 1.25rem; + margin-left: auto; + content: ""; + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23212529'%3e%3cpath fill-rule='evenodd' d='M1.646 4.646a.5.5 0 0 1 .708 0L8 10.293l5.646-5.647a.5.5 0 0 1 .708.708l-6 6a.5.5 0 0 1-.708 0l-6-6a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); + background-repeat: no-repeat; + background-size: 1.25rem; + transition: transform 0.2s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .accordion-button::after { + transition: none; + } +} +.dark-mode .accordion-button:hover { + z-index: 2; +} +.dark-mode .accordion-button:focus { + z-index: 3; + border-color: #d0d4de; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .accordion-header { + margin-bottom: 0; +} +.dark-mode .accordion-item { + background-color: #cfd8dc; + border: 1px solid rgba(0, 0, 0, 0.125); +} +.dark-mode .accordion-item:first-of-type { + border-top-left-radius: 0.25rem; + border-top-right-radius: 0.25rem; +} +.dark-mode .accordion-item:first-of-type .accordion-button { + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.dark-mode .accordion-item:not(:first-of-type) { + border-top: 0; +} +.dark-mode .accordion-item:last-of-type { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.dark-mode .accordion-item:last-of-type .accordion-button.collapsed { + border-bottom-right-radius: calc(0.25rem - 1px); + border-bottom-left-radius: calc(0.25rem - 1px); +} +.dark-mode .accordion-item:last-of-type .accordion-collapse { + border-bottom-right-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.dark-mode .accordion-body { + padding: 1rem 1.25rem; +} +.dark-mode .accordion-flush .accordion-collapse { + border-width: 0; +} +.dark-mode .accordion-flush .accordion-item { + border-right: 0; + border-left: 0; + border-radius: 0; +} +.dark-mode .accordion-flush .accordion-item:first-child { + border-top: 0; +} +.dark-mode .accordion-flush .accordion-item:last-child { + border-bottom: 0; +} +.dark-mode .accordion-flush .accordion-item .accordion-button { + border-radius: 0; +} +.dark-mode .breadcrumb { + display: flex; + flex-wrap: wrap; + padding: 0 0; + margin-bottom: 1rem; + list-style: none; +} +.dark-mode .breadcrumb-item + .breadcrumb-item { + padding-left: 0.5rem; +} +.dark-mode .breadcrumb-item + .breadcrumb-item::before { + float: left; + padding-right: 0.5rem; + color: #6c757d; + content: var(--bs-breadcrumb-divider, "/") /* rtl: var(--bs-breadcrumb-divider, "/") */; +} +.dark-mode .breadcrumb-item.active { + color: #6c757d; +} +.dark-mode .pagination { + display: flex; + padding-left: 0; + list-style: none; +} +.dark-mode .page-link { + position: relative; + display: block; + color: #a1a9bd; + text-decoration: none; + background-color: #fff; + border: 1px solid #dee2e6; + transition: color 0.15s ease-in-out, background-color 0.15s ease-in-out, border-color 0.15s ease-in-out, box-shadow 0.15s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .page-link { + transition: none; + } +} +.dark-mode .page-link:hover { + z-index: 2; + color: #818797; + background-color: #e9ecef; + border-color: #dee2e6; +} +.dark-mode .page-link:focus { + z-index: 3; + color: #818797; + background-color: #e9ecef; + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); +} +.dark-mode .page-item:not(:first-child) .page-link { + margin-left: -1px; +} +.dark-mode .page-item.active .page-link { + z-index: 3; + color: #fff; + background-color: #a1a9bd; + background-image: var(--bs-gradient); + border-color: #a1a9bd; +} +.dark-mode .page-item.disabled .page-link { + color: #6c757d; + pointer-events: none; + background-color: #fff; + border-color: #dee2e6; +} +.dark-mode .page-link { + padding: 0.375rem 0.75rem; +} +.dark-mode .page-item:first-child .page-link { + border-top-left-radius: 0.25rem; + border-bottom-left-radius: 0.25rem; +} +.dark-mode .page-item:last-child .page-link { + border-top-right-radius: 0.25rem; + border-bottom-right-radius: 0.25rem; +} +.dark-mode .pagination-lg .page-link { + padding: 0.75rem 1.5rem; + font-size: 1.25rem; +} +.dark-mode .pagination-lg .page-item:first-child .page-link { + border-top-left-radius: 0.3rem; + border-bottom-left-radius: 0.3rem; +} +.dark-mode .pagination-lg .page-item:last-child .page-link { + border-top-right-radius: 0.3rem; + border-bottom-right-radius: 0.3rem; +} +.dark-mode .pagination-sm .page-link { + padding: 0.25rem 0.5rem; + font-size: 0.875rem; +} +.dark-mode .pagination-sm .page-item:first-child .page-link { + border-top-left-radius: 0.2rem; + border-bottom-left-radius: 0.2rem; +} +.dark-mode .pagination-sm .page-item:last-child .page-link { + border-top-right-radius: 0.2rem; + border-bottom-right-radius: 0.2rem; +} +.dark-mode .badge { + display: inline-block; + padding: 0.35em 0.65em; + font-size: 0.75em; + font-weight: 700; + line-height: 1; + color: #fff; + text-align: center; + white-space: nowrap; + vertical-align: baseline; + border-radius: 0.25rem; + background-image: var(--bs-gradient); +} +.dark-mode .badge:empty { + display: none; +} +.dark-mode .btn .badge { + position: relative; + top: -1px; +} +.dark-mode .alert { + position: relative; + padding: 1rem 1rem; + margin-bottom: 1rem; + border: 1px solid transparent; + border-radius: 0.25rem; +} +.dark-mode .alert-heading { + color: inherit; +} +.dark-mode .alert-link { + font-weight: 700; +} +.dark-mode .alert-dismissible { + padding-right: 3rem; +} +.dark-mode .alert-dismissible .btn-close { + position: absolute; + top: 0; + right: 0; + z-index: 2; + padding: 1.25rem 1rem; +} +.dark-mode .alert-primary { + color: #374a65; + background-color: #dee5ee; + background-image: var(--bs-gradient); + border-color: #ced7e5; +} +.dark-mode .alert-primary .alert-link { + color: #2c3b51; +} +.dark-mode .alert-secondary { + color: #0c4128; + background-color: #d0e2d9; + background-image: var(--bs-gradient); + border-color: #b9d3c7; +} +.dark-mode .alert-secondary .alert-link { + color: #0a3420; +} +@keyframes progress-bar-stripes { + 0% { + background-position-x: 1rem; + } +} +.dark-mode .progress { + display: flex; + height: 1rem; + overflow: hidden; + font-size: 0.75rem; + background-color: #e9ecef; + border-radius: 0.25rem; +} +.dark-mode .progress-bar { + display: flex; + flex-direction: column; + justify-content: center; + overflow: hidden; + color: #fff; + text-align: center; + white-space: nowrap; + background-color: #a1a9bd; + transition: width 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .progress-bar { + transition: none; + } +} +.dark-mode .progress-bar-striped { + background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); + background-size: 1rem 1rem; +} +.dark-mode .progress-bar-animated { + animation: 1s linear infinite progress-bar-stripes; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .progress-bar-animated { + animation: none; + } +} +.dark-mode .list-group { + display: flex; + flex-direction: column; + padding-left: 0; + margin-bottom: 0; + border-radius: 0.25rem; +} +.dark-mode .list-group-numbered { + list-style-type: none; + counter-reset: section; +} +.dark-mode .list-group-numbered > li::before { + content: counters(section, ".") ". "; + counter-increment: section; +} +.dark-mode .list-group-item-action { + width: 100%; + color: #495057; + text-align: inherit; +} +.dark-mode .list-group-item-action:hover, .dark-mode .list-group-item-action:focus { + z-index: 1; + color: #495057; + text-decoration: none; + background-color: #f8f9fa; +} +.dark-mode .list-group-item-action:active { + color: #212529; + background-color: #e9ecef; +} +.dark-mode .list-group-item { + position: relative; + display: block; + padding: 0.5rem 1rem; + color: #212529; + text-decoration: none; + background-color: #fff; + border: 1px solid rgba(0, 0, 0, 0.125); +} +.dark-mode .list-group-item:first-child { + border-top-left-radius: inherit; + border-top-right-radius: inherit; +} +.dark-mode .list-group-item:last-child { + border-bottom-right-radius: inherit; + border-bottom-left-radius: inherit; +} +.dark-mode .list-group-item.disabled, .dark-mode .list-group-item:disabled { + color: #6c757d; + pointer-events: none; + background-color: #fff; +} +.dark-mode .list-group-item.active { + z-index: 2; + color: #fff; + background-color: #a1a9bd; + border-color: #a1a9bd; +} +.dark-mode .list-group-item + .dark-mode .list-group-item { + border-top-width: 0; +} +.dark-mode .list-group-item + .dark-mode .list-group-item.active { + margin-top: -1px; + border-top-width: 1px; +} +.dark-mode .list-group-horizontal { + flex-direction: row; +} +.dark-mode .list-group-horizontal > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; +} +.dark-mode .list-group-horizontal > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; +} +.dark-mode .list-group-horizontal > .list-group-item.active { + margin-top: 0; +} +.dark-mode .list-group-horizontal > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; +} +.dark-mode .list-group-horizontal > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; +} +@media (min-width: 576px) { + .dark-mode .list-group-horizontal-sm { + flex-direction: row; + } + .dark-mode .list-group-horizontal-sm > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .dark-mode .list-group-horizontal-sm > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .dark-mode .list-group-horizontal-sm > .list-group-item.active { + margin-top: 0; + } + .dark-mode .list-group-horizontal-sm > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .dark-mode .list-group-horizontal-sm > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 768px) { + .dark-mode .list-group-horizontal-md { + flex-direction: row; + } + .dark-mode .list-group-horizontal-md > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .dark-mode .list-group-horizontal-md > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .dark-mode .list-group-horizontal-md > .list-group-item.active { + margin-top: 0; + } + .dark-mode .list-group-horizontal-md > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .dark-mode .list-group-horizontal-md > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 992px) { + .dark-mode .list-group-horizontal-lg { + flex-direction: row; + } + .dark-mode .list-group-horizontal-lg > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .dark-mode .list-group-horizontal-lg > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .dark-mode .list-group-horizontal-lg > .list-group-item.active { + margin-top: 0; + } + .dark-mode .list-group-horizontal-lg > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .dark-mode .list-group-horizontal-lg > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 1200px) { + .dark-mode .list-group-horizontal-xl { + flex-direction: row; + } + .dark-mode .list-group-horizontal-xl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .dark-mode .list-group-horizontal-xl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .dark-mode .list-group-horizontal-xl > .list-group-item.active { + margin-top: 0; + } + .dark-mode .list-group-horizontal-xl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .dark-mode .list-group-horizontal-xl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +@media (min-width: 1400px) { + .dark-mode .list-group-horizontal-xxl { + flex-direction: row; + } + .dark-mode .list-group-horizontal-xxl > .list-group-item:first-child { + border-bottom-left-radius: 0.25rem; + border-top-right-radius: 0; + } + .dark-mode .list-group-horizontal-xxl > .list-group-item:last-child { + border-top-right-radius: 0.25rem; + border-bottom-left-radius: 0; + } + .dark-mode .list-group-horizontal-xxl > .list-group-item.active { + margin-top: 0; + } + .dark-mode .list-group-horizontal-xxl > .list-group-item + .list-group-item { + border-top-width: 1px; + border-left-width: 0; + } + .dark-mode .list-group-horizontal-xxl > .list-group-item + .list-group-item.active { + margin-left: -1px; + border-left-width: 1px; + } +} +.dark-mode .list-group-flush { + border-radius: 0; +} +.dark-mode .list-group-flush > .list-group-item { + border-width: 0 0 1px; +} +.dark-mode .list-group-flush > .list-group-item:last-child { + border-bottom-width: 0; +} +.dark-mode .list-group-item-primary { + color: #374a65; + background-color: #dee5ee; +} +.dark-mode .list-group-item-primary.list-group-item-action:hover, .dark-mode .list-group-item-primary.list-group-item-action:focus { + color: #374a65; + background-color: #c8ced6; +} +.dark-mode .list-group-item-primary.list-group-item-action.active { + color: #fff; + background-color: #374a65; + border-color: #374a65; +} +.dark-mode .list-group-item-secondary { + color: #0c4128; + background-color: #d0e2d9; +} +.dark-mode .list-group-item-secondary.list-group-item-action:hover, .dark-mode .list-group-item-secondary.list-group-item-action:focus { + color: #0c4128; + background-color: #bbcbc3; +} +.dark-mode .list-group-item-secondary.list-group-item-action.active { + color: #fff; + background-color: #0c4128; + border-color: #0c4128; +} +.dark-mode .btn-close { + box-sizing: content-box; + width: 1em; + height: 1em; + padding: 0.25em 0.25em; + color: #000; + background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 011.414 0L8 6.586 14.293.293a1 1 0 111.414 1.414L9.414 8l6.293 6.293a1 1 0 01-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 01-1.414-1.414L6.586 8 .293 1.707a1 1 0 010-1.414z'/%3e%3c/svg%3e") center/1em auto no-repeat; + border: 0; + border-radius: 0.25rem; + opacity: 0.5; +} +.dark-mode .btn-close:hover { + color: #000; + text-decoration: none; + opacity: 0.75; +} +.dark-mode .btn-close:focus { + outline: 0; + box-shadow: 0 0 0 0.25rem rgba(161, 169, 189, 0.25); + opacity: 1; +} +.dark-mode .btn-close:disabled, .dark-mode .btn-close.disabled { + pointer-events: none; + user-select: none; + opacity: 0.25; +} +.dark-mode .btn-close-white { + filter: invert(1) grayscale(100%) brightness(200%); +} +.dark-mode .toast { + width: 350px; + max-width: 100%; + font-size: 0.875rem; + pointer-events: auto; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.1); + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15); + border-radius: 0.25rem; +} +.dark-mode .toast.showing { + opacity: 0; +} +.dark-mode .toast:not(.show) { + display: none; +} +.dark-mode .toast-container { + width: max-content; + max-width: 100%; + pointer-events: none; +} +.dark-mode .toast-container > :not(:last-child) { + margin-bottom: 0.75rem; +} +.dark-mode .toast-header { + display: flex; + align-items: center; + padding: 0.5rem 0.75rem; + color: #6c757d; + background-color: rgba(255, 255, 255, 0.85); + background-clip: padding-box; + border-bottom: 1px solid rgba(0, 0, 0, 0.05); + border-top-left-radius: calc(0.25rem - 1px); + border-top-right-radius: calc(0.25rem - 1px); +} +.dark-mode .toast-header .btn-close { + margin-right: -0.375rem; + margin-left: 0.75rem; +} +.dark-mode .toast-body { + padding: 0.75rem; + word-wrap: break-word; +} +.dark-mode .modal { + position: fixed; + top: 0; + left: 0; + z-index: 1055; + display: none; + width: 100%; + height: 100%; + overflow-x: hidden; + overflow-y: auto; + outline: 0; +} +.dark-mode .modal-dialog { + position: relative; + width: auto; + margin: 0.5rem; + pointer-events: none; +} +.modal.fade .dark-mode .modal-dialog { + transition: transform 0.3s ease-out; + transform: translate(0, -50px); +} +@media (prefers-reduced-motion: reduce) { + .modal.fade .dark-mode .modal-dialog { + transition: none; + } +} +.modal.show .dark-mode .modal-dialog { + transform: none; +} +.modal.modal-static .dark-mode .modal-dialog { + transform: scale(1.02); +} +.dark-mode .modal-dialog-scrollable { + height: calc(100% - 1rem); +} +.dark-mode .modal-dialog-scrollable .modal-content { + max-height: 100%; + overflow: hidden; +} +.dark-mode .modal-dialog-scrollable .modal-body { + overflow-y: auto; +} +.dark-mode .modal-dialog-centered { + display: flex; + align-items: center; + min-height: calc(100% - 1rem); +} +.dark-mode .modal-content { + position: relative; + display: flex; + flex-direction: column; + width: 100%; + pointer-events: auto; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; + outline: 0; +} +.dark-mode .modal-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1050; + width: 100vw; + height: 100vh; + background-color: #000; +} +.dark-mode .modal-backdrop.fade { + opacity: 0; +} +.dark-mode .modal-backdrop.show { + opacity: 0.5; +} +.dark-mode .modal-header { + display: flex; + flex-shrink: 0; + align-items: center; + justify-content: space-between; + padding: 1rem 1rem; + border-bottom: 1px solid #dee2e6; + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} +.dark-mode .modal-header .btn-close { + padding: 0.5rem 0.5rem; + margin: -0.5rem -0.5rem -0.5rem auto; +} +.dark-mode .modal-title { + margin-bottom: 0; + line-height: 1.5; +} +.dark-mode .modal-body { + position: relative; + flex: 1 1 auto; + padding: 1rem; +} +.dark-mode .modal-footer { + display: flex; + flex-wrap: wrap; + flex-shrink: 0; + align-items: center; + justify-content: flex-end; + padding: 0.75rem; + border-top: 1px solid #dee2e6; + border-bottom-right-radius: calc(0.3rem - 1px); + border-bottom-left-radius: calc(0.3rem - 1px); +} +.dark-mode .modal-footer > * { + margin: 0.25rem; +} +@media (min-width: 576px) { + .dark-mode .modal-dialog { + max-width: 500px; + margin: 1.75rem auto; + } + .dark-mode .modal-dialog-scrollable { + height: calc(100% - 3.5rem); + } + .dark-mode .modal-dialog-centered { + min-height: calc(100% - 3.5rem); + } + .dark-mode .modal-sm { + max-width: 300px; + } +} +@media (min-width: 992px) { + .dark-mode .modal-lg, +.dark-mode .modal-xl { + max-width: 800px; + } +} +@media (min-width: 1200px) { + .dark-mode .modal-xl { + max-width: 1140px; + } +} +.dark-mode .modal-fullscreen { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; +} +.dark-mode .modal-fullscreen .modal-content { + height: 100%; + border: 0; + border-radius: 0; +} +.dark-mode .modal-fullscreen .modal-header { + border-radius: 0; +} +.dark-mode .modal-fullscreen .modal-body { + overflow-y: auto; +} +.dark-mode .modal-fullscreen .modal-footer { + border-radius: 0; +} +@media (max-width: 575.98px) { + .dark-mode .modal-fullscreen-sm-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .dark-mode .modal-fullscreen-sm-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .dark-mode .modal-fullscreen-sm-down .modal-header { + border-radius: 0; + } + .dark-mode .modal-fullscreen-sm-down .modal-body { + overflow-y: auto; + } + .dark-mode .modal-fullscreen-sm-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 767.98px) { + .dark-mode .modal-fullscreen-md-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .dark-mode .modal-fullscreen-md-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .dark-mode .modal-fullscreen-md-down .modal-header { + border-radius: 0; + } + .dark-mode .modal-fullscreen-md-down .modal-body { + overflow-y: auto; + } + .dark-mode .modal-fullscreen-md-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 991.98px) { + .dark-mode .modal-fullscreen-lg-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .dark-mode .modal-fullscreen-lg-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .dark-mode .modal-fullscreen-lg-down .modal-header { + border-radius: 0; + } + .dark-mode .modal-fullscreen-lg-down .modal-body { + overflow-y: auto; + } + .dark-mode .modal-fullscreen-lg-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 1199.98px) { + .dark-mode .modal-fullscreen-xl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .dark-mode .modal-fullscreen-xl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .dark-mode .modal-fullscreen-xl-down .modal-header { + border-radius: 0; + } + .dark-mode .modal-fullscreen-xl-down .modal-body { + overflow-y: auto; + } + .dark-mode .modal-fullscreen-xl-down .modal-footer { + border-radius: 0; + } +} +@media (max-width: 1399.98px) { + .dark-mode .modal-fullscreen-xxl-down { + width: 100vw; + max-width: none; + height: 100%; + margin: 0; + } + .dark-mode .modal-fullscreen-xxl-down .modal-content { + height: 100%; + border: 0; + border-radius: 0; + } + .dark-mode .modal-fullscreen-xxl-down .modal-header { + border-radius: 0; + } + .dark-mode .modal-fullscreen-xxl-down .modal-body { + overflow-y: auto; + } + .dark-mode .modal-fullscreen-xxl-down .modal-footer { + border-radius: 0; + } +} +.dark-mode .tooltip { + position: absolute; + z-index: 1080; + display: block; + margin: 0; + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + opacity: 0; +} +.dark-mode .tooltip.show { + opacity: 0.9; +} +.dark-mode .tooltip .tooltip-arrow { + position: absolute; + display: block; + width: 0.8rem; + height: 0.4rem; +} +.dark-mode .tooltip .tooltip-arrow::before { + position: absolute; + content: ""; + border-color: transparent; + border-style: solid; +} +.dark-mode .bs-tooltip-top, .dark-mode .bs-tooltip-auto[data-popper-placement^=top] { + padding: 0.4rem 0; +} +.dark-mode .bs-tooltip-top .tooltip-arrow, .dark-mode .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow { + bottom: 0; +} +.dark-mode .bs-tooltip-top .tooltip-arrow::before, .dark-mode .bs-tooltip-auto[data-popper-placement^=top] .tooltip-arrow::before { + top: -1px; + border-width: 0.4rem 0.4rem 0; + border-top-color: #000; +} +.dark-mode .bs-tooltip-end, .dark-mode .bs-tooltip-auto[data-popper-placement^=right] { + padding: 0 0.4rem; +} +.dark-mode .bs-tooltip-end .tooltip-arrow, .dark-mode .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow { + left: 0; + width: 0.4rem; + height: 0.8rem; +} +.dark-mode .bs-tooltip-end .tooltip-arrow::before, .dark-mode .bs-tooltip-auto[data-popper-placement^=right] .tooltip-arrow::before { + right: -1px; + border-width: 0.4rem 0.4rem 0.4rem 0; + border-right-color: #000; +} +.dark-mode .bs-tooltip-bottom, .dark-mode .bs-tooltip-auto[data-popper-placement^=bottom] { + padding: 0.4rem 0; +} +.dark-mode .bs-tooltip-bottom .tooltip-arrow, .dark-mode .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow { + top: 0; +} +.dark-mode .bs-tooltip-bottom .tooltip-arrow::before, .dark-mode .bs-tooltip-auto[data-popper-placement^=bottom] .tooltip-arrow::before { + bottom: -1px; + border-width: 0 0.4rem 0.4rem; + border-bottom-color: #000; +} +.dark-mode .bs-tooltip-start, .dark-mode .bs-tooltip-auto[data-popper-placement^=left] { + padding: 0 0.4rem; +} +.dark-mode .bs-tooltip-start .tooltip-arrow, .dark-mode .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow { + right: 0; + width: 0.4rem; + height: 0.8rem; +} +.dark-mode .bs-tooltip-start .tooltip-arrow::before, .dark-mode .bs-tooltip-auto[data-popper-placement^=left] .tooltip-arrow::before { + left: -1px; + border-width: 0.4rem 0 0.4rem 0.4rem; + border-left-color: #000; +} +.dark-mode .tooltip-inner { + max-width: 200px; + padding: 0.25rem 0.5rem; + color: #fff; + text-align: center; + background-color: #000; + border-radius: 0.25rem; +} +.dark-mode .popover { + position: absolute; + top: 0; + left: 0 /* rtl:ignore */; + z-index: 1070; + display: block; + max-width: 276px; + font-family: var(--bs-font-sans-serif); + font-style: normal; + font-weight: 400; + line-height: 1.5; + text-align: left; + text-align: start; + text-decoration: none; + text-shadow: none; + text-transform: none; + letter-spacing: normal; + word-break: normal; + word-spacing: normal; + white-space: normal; + line-break: auto; + font-size: 0.875rem; + word-wrap: break-word; + background-color: #fff; + background-clip: padding-box; + border: 1px solid rgba(0, 0, 0, 0.2); + border-radius: 0.3rem; +} +.dark-mode .popover .popover-arrow { + position: absolute; + display: block; + width: 1rem; + height: 0.5rem; +} +.dark-mode .popover .popover-arrow::before, .dark-mode .popover .popover-arrow::after { + position: absolute; + display: block; + content: ""; + border-color: transparent; + border-style: solid; +} +.dark-mode .bs-popover-top > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=top] > .popover-arrow { + bottom: calc(-0.5rem - 1px); +} +.dark-mode .bs-popover-top > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::before { + bottom: 0; + border-width: 0.5rem 0.5rem 0; + border-top-color: rgba(0, 0, 0, 0.25); +} +.dark-mode .bs-popover-top > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=top] > .popover-arrow::after { + bottom: 1px; + border-width: 0.5rem 0.5rem 0; + border-top-color: #fff; +} +.dark-mode .bs-popover-end > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=right] > .popover-arrow { + left: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; +} +.dark-mode .bs-popover-end > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::before { + left: 0; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: rgba(0, 0, 0, 0.25); +} +.dark-mode .bs-popover-end > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=right] > .popover-arrow::after { + left: 1px; + border-width: 0.5rem 0.5rem 0.5rem 0; + border-right-color: #fff; +} +.dark-mode .bs-popover-bottom > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow { + top: calc(-0.5rem - 1px); +} +.dark-mode .bs-popover-bottom > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::before { + top: 0; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: rgba(0, 0, 0, 0.25); +} +.dark-mode .bs-popover-bottom > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=bottom] > .popover-arrow::after { + top: 1px; + border-width: 0 0.5rem 0.5rem 0.5rem; + border-bottom-color: #fff; +} +.dark-mode .bs-popover-bottom .popover-header::before, .dark-mode .bs-popover-auto[data-popper-placement^=bottom] .popover-header::before { + position: absolute; + top: 0; + left: 50%; + display: block; + width: 1rem; + margin-left: -0.5rem; + content: ""; + border-bottom: 1px solid #f0f0f0; +} +.dark-mode .bs-popover-start > .popover-arrow, .dark-mode .bs-popover-auto[data-popper-placement^=left] > .popover-arrow { + right: calc(-0.5rem - 1px); + width: 0.5rem; + height: 1rem; +} +.dark-mode .bs-popover-start > .popover-arrow::before, .dark-mode .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::before { + right: 0; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: rgba(0, 0, 0, 0.25); +} +.dark-mode .bs-popover-start > .popover-arrow::after, .dark-mode .bs-popover-auto[data-popper-placement^=left] > .popover-arrow::after { + right: 1px; + border-width: 0.5rem 0 0.5rem 0.5rem; + border-left-color: #fff; +} +.dark-mode .popover-header { + padding: 0.5rem 1rem; + margin-bottom: 0; + font-size: 1rem; + background-color: #f0f0f0; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + border-top-left-radius: calc(0.3rem - 1px); + border-top-right-radius: calc(0.3rem - 1px); +} +.dark-mode .popover-header:empty { + display: none; +} +.dark-mode .popover-body { + padding: 1rem 1rem; + color: #212529; +} +.dark-mode .carousel { + position: relative; +} +.dark-mode .carousel.pointer-event { + touch-action: pan-y; +} +.dark-mode .carousel-inner { + position: relative; + width: 100%; + overflow: hidden; +} +.dark-mode .carousel-inner::after { + display: block; + clear: both; + content: ""; +} +.dark-mode .carousel-item { + position: relative; + display: none; + float: left; + width: 100%; + margin-right: -100%; + backface-visibility: hidden; + transition: transform 0.6s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .carousel-item { + transition: none; + } +} +.dark-mode .carousel-item.active, +.dark-mode .carousel-item-next, +.dark-mode .carousel-item-prev { + display: block; +} +.dark-mode .carousel-item-next:not(.carousel-item-start), +.dark-mode .active.carousel-item-end { + transform: translateX(100%); +} +.dark-mode .carousel-item-prev:not(.carousel-item-end), +.dark-mode .active.carousel-item-start { + transform: translateX(-100%); +} +.dark-mode .carousel-fade .carousel-item { + opacity: 0; + transition-property: opacity; + transform: none; +} +.dark-mode .carousel-fade .carousel-item.active, +.dark-mode .carousel-fade .carousel-item-next.carousel-item-start, +.dark-mode .carousel-fade .carousel-item-prev.carousel-item-end { + z-index: 1; + opacity: 1; +} +.dark-mode .carousel-fade .active.carousel-item-start, +.dark-mode .carousel-fade .active.carousel-item-end { + z-index: 0; + opacity: 0; + transition: opacity 0s 0.6s; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .carousel-fade .active.carousel-item-start, +.dark-mode .carousel-fade .active.carousel-item-end { + transition: none; + } +} +.dark-mode .carousel-control-prev, +.dark-mode .carousel-control-next { + position: absolute; + top: 0; + bottom: 0; + z-index: 1; + display: flex; + align-items: center; + justify-content: center; + width: 15%; + padding: 0; + color: #fff; + text-align: center; + background: none; + border: 0; + opacity: 0.5; + transition: opacity 0.15s ease; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .carousel-control-prev, +.dark-mode .carousel-control-next { + transition: none; + } +} +.dark-mode .carousel-control-prev:hover, .dark-mode .carousel-control-prev:focus, +.dark-mode .carousel-control-next:hover, +.dark-mode .carousel-control-next:focus { + color: #fff; + text-decoration: none; + outline: 0; + opacity: 0.9; +} +.dark-mode .carousel-control-prev { + left: 0; + background-image: linear-gradient(90deg, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.001)); +} +.dark-mode .carousel-control-next { + right: 0; + background-image: linear-gradient(270deg, rgba(0, 0, 0, 0.25), rgba(0, 0, 0, 0.001)); +} +.dark-mode .carousel-control-prev-icon, +.dark-mode .carousel-control-next-icon { + display: inline-block; + width: 2rem; + height: 2rem; + background-repeat: no-repeat; + background-position: 50%; + background-size: 100% 100%; +} +.dark-mode .carousel-control-prev-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M11.354 1.646a.5.5 0 0 1 0 .708L5.707 8l5.647 5.646a.5.5 0 0 1-.708.708l-6-6a.5.5 0 0 1 0-.708l6-6a.5.5 0 0 1 .708 0z'/%3e%3c/svg%3e"); +} +.dark-mode .carousel-control-next-icon { + background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23fff'%3e%3cpath d='M4.646 1.646a.5.5 0 0 1 .708 0l6 6a.5.5 0 0 1 0 .708l-6 6a.5.5 0 0 1-.708-.708L10.293 8 4.646 2.354a.5.5 0 0 1 0-.708z'/%3e%3c/svg%3e"); +} +.dark-mode .carousel-indicators { + position: absolute; + right: 0; + bottom: 0; + left: 0; + z-index: 2; + display: flex; + justify-content: center; + padding: 0; + margin-right: 15%; + margin-bottom: 1rem; + margin-left: 15%; + list-style: none; +} +.dark-mode .carousel-indicators [data-bs-target] { + box-sizing: content-box; + flex: 0 1 auto; + width: 30px; + height: 3px; + padding: 0; + margin-right: 3px; + margin-left: 3px; + text-indent: -999px; + cursor: pointer; + background-color: #fff; + background-clip: padding-box; + border: 0; + border-top: 10px solid transparent; + border-bottom: 10px solid transparent; + opacity: 0.5; + transition: opacity 0.6s ease; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .carousel-indicators [data-bs-target] { + transition: none; + } +} +.dark-mode .carousel-indicators .active { + opacity: 1; +} +.dark-mode .carousel-caption { + position: absolute; + right: 15%; + bottom: 1.25rem; + left: 15%; + padding-top: 1.25rem; + padding-bottom: 1.25rem; + color: #fff; + text-align: center; +} +.dark-mode .carousel-dark .carousel-control-prev-icon, +.dark-mode .carousel-dark .carousel-control-next-icon { + filter: invert(1) grayscale(100); +} +.dark-mode .carousel-dark .carousel-indicators [data-bs-target] { + background-color: #000; +} +.dark-mode .carousel-dark .carousel-caption { + color: #000; +} +@keyframes spinner-border { + to { + transform: rotate(360deg) /* rtl:ignore */; + } +} +.dark-mode .spinner-border { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: -0.125em; + border: 0.25em solid currentColor; + border-right-color: transparent; + border-radius: 50%; + animation: 0.75s linear infinite spinner-border; +} +.dark-mode .spinner-border-sm { + width: 1rem; + height: 1rem; + border-width: 0.2em; +} +@keyframes spinner-grow { + 0% { + transform: scale(0); + } + 50% { + opacity: 1; + transform: none; + } +} +.dark-mode .spinner-grow { + display: inline-block; + width: 2rem; + height: 2rem; + vertical-align: -0.125em; + background-color: currentColor; + border-radius: 50%; + opacity: 0; + animation: 0.75s linear infinite spinner-grow; +} +.dark-mode .spinner-grow-sm { + width: 1rem; + height: 1rem; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .spinner-border, +.dark-mode .spinner-grow { + animation-duration: 1.5s; + } +} +.dark-mode .offcanvas { + position: fixed; + bottom: 0; + z-index: 1045; + display: flex; + flex-direction: column; + max-width: 100%; + visibility: hidden; + background-color: #fff; + background-clip: padding-box; + outline: 0; + transition: transform 0.3s ease-in-out; +} +@media (prefers-reduced-motion: reduce) { + .dark-mode .offcanvas { + transition: none; + } +} +.dark-mode .offcanvas-backdrop { + position: fixed; + top: 0; + left: 0; + z-index: 1040; + width: 100vw; + height: 100vh; + background-color: #000; +} +.dark-mode .offcanvas-backdrop.fade { + opacity: 0; +} +.dark-mode .offcanvas-backdrop.show { + opacity: 0.5; +} +.dark-mode .offcanvas-header { + display: flex; + align-items: center; + justify-content: space-between; + padding: 1rem 1rem; +} +.dark-mode .offcanvas-header .btn-close { + padding: 0.5rem 0.5rem; + margin-top: -0.5rem; + margin-right: -0.5rem; + margin-bottom: -0.5rem; +} +.dark-mode .offcanvas-title { + margin-bottom: 0; + line-height: 1.5; +} +.dark-mode .offcanvas-body { + flex-grow: 1; + padding: 1rem 1rem; + overflow-y: auto; +} +.dark-mode .offcanvas-start { + top: 0; + left: 0; + width: 400px; + border-right: 1px solid rgba(0, 0, 0, 0.2); + transform: translateX(-100%); +} +.dark-mode .offcanvas-end { + top: 0; + right: 0; + width: 400px; + border-left: 1px solid rgba(0, 0, 0, 0.2); + transform: translateX(100%); +} +.dark-mode .offcanvas-top { + top: 0; + right: 0; + left: 0; + height: 30vh; + max-height: 100%; + border-bottom: 1px solid rgba(0, 0, 0, 0.2); + transform: translateY(-100%); +} +.dark-mode .offcanvas-bottom { + right: 0; + left: 0; + height: 30vh; + max-height: 100%; + border-top: 1px solid rgba(0, 0, 0, 0.2); + transform: translateY(100%); +} +.dark-mode .offcanvas.show { + transform: none; +} +.dark-mode .placeholder { + display: inline-block; + min-height: 1em; + vertical-align: middle; + cursor: wait; + background-color: currentColor; + opacity: 0.5; +} +.dark-mode .placeholder.btn::before { + display: inline-block; + content: ""; +} +.dark-mode .placeholder-xs { + min-height: 0.6em; +} +.dark-mode .placeholder-sm { + min-height: 0.8em; +} +.dark-mode .placeholder-lg { + min-height: 1.2em; +} +.dark-mode .placeholder-glow .placeholder { + animation: placeholder-glow 2s ease-in-out infinite; +} +@keyframes placeholder-glow { + 50% { + opacity: 0.2; + } +} +.dark-mode .placeholder-wave { + mask-image: linear-gradient(130deg, #000 55%, rgba(0, 0, 0, 0.8) 75%, #000 95%); + mask-size: 200% 100%; + animation: placeholder-wave 2s linear infinite; +} +@keyframes placeholder-wave { + 100% { + mask-position: -200% 0%; + } +} +.dark-mode .clearfix::after { + display: block; + clear: both; + content: ""; +} +.dark-mode .link-primary { + color: #5c7ba8; +} +.dark-mode .link-primary:hover, .dark-mode .link-primary:focus { + color: #7d95b9; +} +.dark-mode .link-secondary { + color: #146c43; +} +.dark-mode .link-secondary:hover, .dark-mode .link-secondary:focus { + color: #105636; +} +.dark-mode .ratio { + position: relative; + width: 100%; +} +.dark-mode .ratio::before { + display: block; + padding-top: var(--bs-aspect-ratio); + content: ""; +} +.dark-mode .ratio > * { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; +} +.dark-mode .ratio-1x1 { + --bs-aspect-ratio: 100%; +} +.dark-mode .ratio-4x3 { + --bs-aspect-ratio: 75%; +} +.dark-mode .ratio-16x9 { + --bs-aspect-ratio: 56.25%; +} +.dark-mode .ratio-21x9 { + --bs-aspect-ratio: 42.8571428571%; +} +.dark-mode .fixed-top { + position: fixed; + top: 0; + right: 0; + left: 0; + z-index: 1030; +} +.dark-mode .fixed-bottom { + position: fixed; + right: 0; + bottom: 0; + left: 0; + z-index: 1030; +} +.dark-mode .sticky-top { + position: sticky; + top: 0; + z-index: 1020; +} +@media (min-width: 576px) { + .dark-mode .sticky-sm-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 768px) { + .dark-mode .sticky-md-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 992px) { + .dark-mode .sticky-lg-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 1200px) { + .dark-mode .sticky-xl-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +@media (min-width: 1400px) { + .dark-mode .sticky-xxl-top { + position: sticky; + top: 0; + z-index: 1020; + } +} +.dark-mode .hstack { + display: flex; + flex-direction: row; + align-items: center; + align-self: stretch; +} +.dark-mode .vstack { + display: flex; + flex: 1 1 auto; + flex-direction: column; + align-self: stretch; +} +.dark-mode .visually-hidden, +.dark-mode .visually-hidden-focusable:not(:focus):not(:focus-within) { + position: absolute !important; + width: 1px !important; + height: 1px !important; + padding: 0 !important; + margin: -1px !important; + overflow: hidden !important; + clip: rect(0, 0, 0, 0) !important; + white-space: nowrap !important; + border: 0 !important; +} +.dark-mode .stretched-link::after { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + z-index: 1; + content: ""; +} +.dark-mode .text-truncate { + overflow: hidden; + text-overflow: ellipsis; + white-space: nowrap; +} +.dark-mode .vr { + display: inline-block; + align-self: stretch; + width: 1px; + min-height: 1em; + background-color: currentColor; + opacity: 0.25; +} +.dark-mode .align-baseline { + vertical-align: baseline !important; +} +.dark-mode .align-top { + vertical-align: top !important; +} +.dark-mode .align-middle { + vertical-align: middle !important; +} +.dark-mode .align-bottom { + vertical-align: bottom !important; +} +.dark-mode .align-text-bottom { + vertical-align: text-bottom !important; +} +.dark-mode .align-text-top { + vertical-align: text-top !important; +} +.dark-mode .float-start { + float: left !important; +} +.dark-mode .float-end { + float: right !important; +} +.dark-mode .float-none { + float: none !important; +} +.dark-mode .opacity-0 { + opacity: 0 !important; +} +.dark-mode .opacity-25 { + opacity: 0.25 !important; +} +.dark-mode .opacity-50 { + opacity: 0.5 !important; +} +.dark-mode .opacity-75 { + opacity: 0.75 !important; +} +.dark-mode .opacity-100 { + opacity: 1 !important; +} +.dark-mode .overflow-auto { + overflow: auto !important; +} +.dark-mode .overflow-hidden { + overflow: hidden !important; +} +.dark-mode .overflow-visible { + overflow: visible !important; +} +.dark-mode .overflow-scroll { + overflow: scroll !important; +} +.dark-mode .d-inline { + display: inline !important; +} +.dark-mode .d-inline-block { + display: inline-block !important; +} +.dark-mode .d-block { + display: block !important; +} +.dark-mode .d-grid { + display: grid !important; +} +.dark-mode .d-table { + display: table !important; +} +.dark-mode .d-table-row { + display: table-row !important; +} +.dark-mode .d-table-cell { + display: table-cell !important; +} +.dark-mode .d-flex { + display: flex !important; +} +.dark-mode .d-inline-flex { + display: inline-flex !important; +} +.dark-mode .d-none { + display: none !important; +} +.dark-mode .shadow { + box-shadow: 0 0.5rem 1rem rgba(0, 0, 0, 0.15) !important; +} +.dark-mode .shadow-sm { + box-shadow: 0 0.125rem 0.25rem rgba(0, 0, 0, 0.075) !important; +} +.dark-mode .shadow-lg { + box-shadow: 0 1rem 3rem rgba(0, 0, 0, 0.175) !important; +} +.dark-mode .shadow-none { + box-shadow: none !important; +} +.dark-mode .position-static { + position: static !important; +} +.dark-mode .position-relative { + position: relative !important; +} +.dark-mode .position-absolute { + position: absolute !important; +} +.dark-mode .position-fixed { + position: fixed !important; +} +.dark-mode .position-sticky { + position: sticky !important; +} +.dark-mode .top-0 { + top: 0 !important; +} +.dark-mode .top-50 { + top: 50% !important; +} +.dark-mode .top-100 { + top: 100% !important; +} +.dark-mode .bottom-0 { + bottom: 0 !important; +} +.dark-mode .bottom-50 { + bottom: 50% !important; +} +.dark-mode .bottom-100 { + bottom: 100% !important; +} +.dark-mode .start-0 { + left: 0 !important; +} +.dark-mode .start-50 { + left: 50% !important; +} +.dark-mode .start-100 { + left: 100% !important; +} +.dark-mode .end-0 { + right: 0 !important; +} +.dark-mode .end-50 { + right: 50% !important; +} +.dark-mode .end-100 { + right: 100% !important; +} +.dark-mode .translate-middle { + transform: translate(-50%, -50%) !important; +} +.dark-mode .translate-middle-x { + transform: translateX(-50%) !important; +} +.dark-mode .translate-middle-y { + transform: translateY(-50%) !important; +} +.dark-mode .border { + border: 1px solid #dee2e6 !important; +} +.dark-mode .border-0 { + border: 0 !important; +} +.dark-mode .border-top { + border-top: 1px solid #dee2e6 !important; +} +.dark-mode .border-top-0 { + border-top: 0 !important; +} +.dark-mode .border-end { + border-right: 1px solid #dee2e6 !important; +} +.dark-mode .border-end-0 { + border-right: 0 !important; +} +.dark-mode .border-bottom { + border-bottom: 1px solid #dee2e6 !important; +} +.dark-mode .border-bottom-0 { + border-bottom: 0 !important; +} +.dark-mode .border-start { + border-left: 1px solid #dee2e6 !important; +} +.dark-mode .border-start-0 { + border-left: 0 !important; +} +.dark-mode .border-primary { + border-color: #a1a9bd !important; +} +.dark-mode .border-secondary { + border-color: #5B9D82 !important; +} +.dark-mode .border-success { + border-color: #198754 !important; +} +.dark-mode .border-info { + border-color: #0dcaf0 !important; +} +.dark-mode .border-warning { + border-color: #ffc107 !important; +} +.dark-mode .border-danger { + border-color: #dc3545 !important; +} +.dark-mode .border-light { + border-color: #f8f9fa !important; +} +.dark-mode .border-dark { + border-color: #212529 !important; +} +.dark-mode .border-white { + border-color: #fff !important; +} +.dark-mode .border-1 { + border-width: 1px !important; +} +.dark-mode .border-2 { + border-width: 2px !important; +} +.dark-mode .border-3 { + border-width: 3px !important; +} +.dark-mode .border-4 { + border-width: 4px !important; +} +.dark-mode .border-5 { + border-width: 5px !important; +} +.dark-mode .w-25 { + width: 25% !important; +} +.dark-mode .w-50 { + width: 50% !important; +} +.dark-mode .w-75 { + width: 75% !important; +} +.dark-mode .w-100 { + width: 100% !important; +} +.dark-mode .w-auto { + width: auto !important; +} +.dark-mode .mw-100 { + max-width: 100% !important; +} +.dark-mode .vw-100 { + width: 100vw !important; +} +.dark-mode .min-vw-100 { + min-width: 100vw !important; +} +.dark-mode .h-25 { + height: 25% !important; +} +.dark-mode .h-50 { + height: 50% !important; +} +.dark-mode .h-75 { + height: 75% !important; +} +.dark-mode .h-100 { + height: 100% !important; +} +.dark-mode .h-auto { + height: auto !important; +} +.dark-mode .mh-100 { + max-height: 100% !important; +} +.dark-mode .vh-100 { + height: 100vh !important; +} +.dark-mode .min-vh-100 { + min-height: 100vh !important; +} +.dark-mode .flex-fill { + flex: 1 1 auto !important; +} +.dark-mode .flex-row { + flex-direction: row !important; +} +.dark-mode .flex-column { + flex-direction: column !important; +} +.dark-mode .flex-row-reverse { + flex-direction: row-reverse !important; +} +.dark-mode .flex-column-reverse { + flex-direction: column-reverse !important; +} +.dark-mode .flex-grow-0 { + flex-grow: 0 !important; +} +.dark-mode .flex-grow-1 { + flex-grow: 1 !important; +} +.dark-mode .flex-shrink-0 { + flex-shrink: 0 !important; +} +.dark-mode .flex-shrink-1 { + flex-shrink: 1 !important; +} +.dark-mode .flex-wrap { + flex-wrap: wrap !important; +} +.dark-mode .flex-nowrap { + flex-wrap: nowrap !important; +} +.dark-mode .flex-wrap-reverse { + flex-wrap: wrap-reverse !important; +} +.dark-mode .gap-0 { + gap: 0 !important; +} +.dark-mode .gap-1 { + gap: 0.25rem !important; +} +.dark-mode .gap-2 { + gap: 0.5rem !important; +} +.dark-mode .gap-3 { + gap: 1rem !important; +} +.dark-mode .gap-4 { + gap: 1.5rem !important; +} +.dark-mode .gap-5 { + gap: 3rem !important; +} +.dark-mode .justify-content-start { + justify-content: flex-start !important; +} +.dark-mode .justify-content-end { + justify-content: flex-end !important; +} +.dark-mode .justify-content-center { + justify-content: center !important; +} +.dark-mode .justify-content-between { + justify-content: space-between !important; +} +.dark-mode .justify-content-around { + justify-content: space-around !important; +} +.dark-mode .justify-content-evenly { + justify-content: space-evenly !important; +} +.dark-mode .align-items-start { + align-items: flex-start !important; +} +.dark-mode .align-items-end { + align-items: flex-end !important; +} +.dark-mode .align-items-center { + align-items: center !important; +} +.dark-mode .align-items-baseline { + align-items: baseline !important; +} +.dark-mode .align-items-stretch { + align-items: stretch !important; +} +.dark-mode .align-content-start { + align-content: flex-start !important; +} +.dark-mode .align-content-end { + align-content: flex-end !important; +} +.dark-mode .align-content-center { + align-content: center !important; +} +.dark-mode .align-content-between { + align-content: space-between !important; +} +.dark-mode .align-content-around { + align-content: space-around !important; +} +.dark-mode .align-content-stretch { + align-content: stretch !important; +} +.dark-mode .align-self-auto { + align-self: auto !important; +} +.dark-mode .align-self-start { + align-self: flex-start !important; +} +.dark-mode .align-self-end { + align-self: flex-end !important; +} +.dark-mode .align-self-center { + align-self: center !important; +} +.dark-mode .align-self-baseline { + align-self: baseline !important; +} +.dark-mode .align-self-stretch { + align-self: stretch !important; +} +.dark-mode .order-first { + order: -1 !important; +} +.dark-mode .order-0 { + order: 0 !important; +} +.dark-mode .order-1 { + order: 1 !important; +} +.dark-mode .order-2 { + order: 2 !important; +} +.dark-mode .order-3 { + order: 3 !important; +} +.dark-mode .order-4 { + order: 4 !important; +} +.dark-mode .order-5 { + order: 5 !important; +} +.dark-mode .order-last { + order: 6 !important; +} +.dark-mode .m-0 { + margin: 0 !important; +} +.dark-mode .m-1 { + margin: 0.25rem !important; +} +.dark-mode .m-2 { + margin: 0.5rem !important; +} +.dark-mode .m-3 { + margin: 1rem !important; +} +.dark-mode .m-4 { + margin: 1.5rem !important; +} +.dark-mode .m-5 { + margin: 3rem !important; +} +.dark-mode .m-auto { + margin: auto !important; +} +.dark-mode .mx-0 { + margin-right: 0 !important; + margin-left: 0 !important; +} +.dark-mode .mx-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; +} +.dark-mode .mx-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; +} +.dark-mode .mx-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; +} +.dark-mode .mx-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; +} +.dark-mode .mx-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; +} +.dark-mode .mx-auto { + margin-right: auto !important; + margin-left: auto !important; +} +.dark-mode .my-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; +} +.dark-mode .my-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; +} +.dark-mode .my-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; +} +.dark-mode .my-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; +} +.dark-mode .my-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; +} +.dark-mode .my-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; +} +.dark-mode .my-auto { + margin-top: auto !important; + margin-bottom: auto !important; +} +.dark-mode .mt-0 { + margin-top: 0 !important; +} +.dark-mode .mt-1 { + margin-top: 0.25rem !important; +} +.dark-mode .mt-2 { + margin-top: 0.5rem !important; +} +.dark-mode .mt-3 { + margin-top: 1rem !important; +} +.dark-mode .mt-4 { + margin-top: 1.5rem !important; +} +.dark-mode .mt-5 { + margin-top: 3rem !important; +} +.dark-mode .mt-auto { + margin-top: auto !important; +} +.dark-mode .me-0 { + margin-right: 0 !important; +} +.dark-mode .me-1 { + margin-right: 0.25rem !important; +} +.dark-mode .me-2 { + margin-right: 0.5rem !important; +} +.dark-mode .me-3 { + margin-right: 1rem !important; +} +.dark-mode .me-4 { + margin-right: 1.5rem !important; +} +.dark-mode .me-5 { + margin-right: 3rem !important; +} +.dark-mode .me-auto { + margin-right: auto !important; +} +.dark-mode .mb-0 { + margin-bottom: 0 !important; +} +.dark-mode .mb-1 { + margin-bottom: 0.25rem !important; +} +.dark-mode .mb-2 { + margin-bottom: 0.5rem !important; +} +.dark-mode .mb-3 { + margin-bottom: 1rem !important; +} +.dark-mode .mb-4 { + margin-bottom: 1.5rem !important; +} +.dark-mode .mb-5 { + margin-bottom: 3rem !important; +} +.dark-mode .mb-auto { + margin-bottom: auto !important; +} +.dark-mode .ms-0 { + margin-left: 0 !important; +} +.dark-mode .ms-1 { + margin-left: 0.25rem !important; +} +.dark-mode .ms-2 { + margin-left: 0.5rem !important; +} +.dark-mode .ms-3 { + margin-left: 1rem !important; +} +.dark-mode .ms-4 { + margin-left: 1.5rem !important; +} +.dark-mode .ms-5 { + margin-left: 3rem !important; +} +.dark-mode .ms-auto { + margin-left: auto !important; +} +.dark-mode .p-0 { + padding: 0 !important; +} +.dark-mode .p-1 { + padding: 0.25rem !important; +} +.dark-mode .p-2 { + padding: 0.5rem !important; +} +.dark-mode .p-3 { + padding: 1rem !important; +} +.dark-mode .p-4 { + padding: 1.5rem !important; +} +.dark-mode .p-5 { + padding: 3rem !important; +} +.dark-mode .px-0 { + padding-right: 0 !important; + padding-left: 0 !important; +} +.dark-mode .px-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; +} +.dark-mode .px-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; +} +.dark-mode .px-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; +} +.dark-mode .px-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; +} +.dark-mode .px-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; +} +.dark-mode .py-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; +} +.dark-mode .py-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; +} +.dark-mode .py-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; +} +.dark-mode .py-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; +} +.dark-mode .py-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; +} +.dark-mode .py-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; +} +.dark-mode .pt-0 { + padding-top: 0 !important; +} +.dark-mode .pt-1 { + padding-top: 0.25rem !important; +} +.dark-mode .pt-2 { + padding-top: 0.5rem !important; +} +.dark-mode .pt-3 { + padding-top: 1rem !important; +} +.dark-mode .pt-4 { + padding-top: 1.5rem !important; +} +.dark-mode .pt-5 { + padding-top: 3rem !important; +} +.dark-mode .pe-0 { + padding-right: 0 !important; +} +.dark-mode .pe-1 { + padding-right: 0.25rem !important; +} +.dark-mode .pe-2 { + padding-right: 0.5rem !important; +} +.dark-mode .pe-3 { + padding-right: 1rem !important; +} +.dark-mode .pe-4 { + padding-right: 1.5rem !important; +} +.dark-mode .pe-5 { + padding-right: 3rem !important; +} +.dark-mode .pb-0 { + padding-bottom: 0 !important; +} +.dark-mode .pb-1 { + padding-bottom: 0.25rem !important; +} +.dark-mode .pb-2 { + padding-bottom: 0.5rem !important; +} +.dark-mode .pb-3 { + padding-bottom: 1rem !important; +} +.dark-mode .pb-4 { + padding-bottom: 1.5rem !important; +} +.dark-mode .pb-5 { + padding-bottom: 3rem !important; +} +.dark-mode .ps-0 { + padding-left: 0 !important; +} +.dark-mode .ps-1 { + padding-left: 0.25rem !important; +} +.dark-mode .ps-2 { + padding-left: 0.5rem !important; +} +.dark-mode .ps-3 { + padding-left: 1rem !important; +} +.dark-mode .ps-4 { + padding-left: 1.5rem !important; +} +.dark-mode .ps-5 { + padding-left: 3rem !important; +} +.dark-mode .font-monospace { + font-family: var(--bs-font-monospace) !important; +} +.dark-mode .fs-1 { + font-size: calc(1.375rem + 1.5vw) !important; +} +.dark-mode .fs-2 { + font-size: calc(1.325rem + 0.9vw) !important; +} +.dark-mode .fs-3 { + font-size: calc(1.3rem + 0.6vw) !important; +} +.dark-mode .fs-4 { + font-size: calc(1.275rem + 0.3vw) !important; +} +.dark-mode .fs-5 { + font-size: 1.25rem !important; +} +.dark-mode .fs-6 { + font-size: 1rem !important; +} +.dark-mode .fst-italic { + font-style: italic !important; +} +.dark-mode .fst-normal { + font-style: normal !important; +} +.dark-mode .fw-light { + font-weight: 300 !important; +} +.dark-mode .fw-lighter { + font-weight: lighter !important; +} +.dark-mode .fw-normal { + font-weight: 400 !important; +} +.dark-mode .fw-bold { + font-weight: 700 !important; +} +.dark-mode .fw-bolder { + font-weight: bolder !important; +} +.dark-mode .lh-1 { + line-height: 1 !important; +} +.dark-mode .lh-sm { + line-height: 1.25 !important; +} +.dark-mode .lh-base { + line-height: 1.5 !important; +} +.dark-mode .lh-lg { + line-height: 2 !important; +} +.dark-mode .text-start { + text-align: left !important; +} +.dark-mode .text-end { + text-align: right !important; +} +.dark-mode .text-center { + text-align: center !important; +} +.dark-mode .text-decoration-none { + text-decoration: none !important; +} +.dark-mode .text-decoration-underline { + text-decoration: underline !important; +} +.dark-mode .text-decoration-line-through { + text-decoration: line-through !important; +} +.dark-mode .text-lowercase { + text-transform: lowercase !important; +} +.dark-mode .text-uppercase { + text-transform: uppercase !important; +} +.dark-mode .text-capitalize { + text-transform: capitalize !important; +} +.dark-mode .text-wrap { + white-space: normal !important; +} +.dark-mode .text-nowrap { + white-space: nowrap !important; +} +.dark-mode .text-break { + word-wrap: break-word !important; + word-break: break-word !important; +} +.dark-mode .text-primary { + --bs-text-opacity: 1; + color: rgba(var(--bs-primary-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-secondary { + --bs-text-opacity: 1; + color: rgba(var(--bs-secondary-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-success { + --bs-text-opacity: 1; + color: rgba(var(--bs-success-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-info { + --bs-text-opacity: 1; + color: rgba(var(--bs-info-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-warning { + --bs-text-opacity: 1; + color: rgba(var(--bs-warning-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-danger { + --bs-text-opacity: 1; + color: rgba(var(--bs-danger-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-light { + --bs-text-opacity: 1; + color: rgba(var(--bs-light-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-dark { + --bs-text-opacity: 1; + color: rgba(var(--bs-dark-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-black { + --bs-text-opacity: 1; + color: rgba(var(--bs-black-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-white { + --bs-text-opacity: 1; + color: rgba(var(--bs-white-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-body { + --bs-text-opacity: 1; + color: rgba(var(--bs-body-color-rgb), var(--bs-text-opacity)) !important; +} +.dark-mode .text-muted { + --bs-text-opacity: 1; + color: #6c757d !important; +} +.dark-mode .text-black-50 { + --bs-text-opacity: 1; + color: rgba(0, 0, 0, 0.5) !important; +} +.dark-mode .text-white-50 { + --bs-text-opacity: 1; + color: rgba(255, 255, 255, 0.5) !important; +} +.dark-mode .text-reset { + --bs-text-opacity: 1; + color: inherit !important; +} +.dark-mode .text-opacity-25 { + --bs-text-opacity: 0.25; +} +.dark-mode .text-opacity-50 { + --bs-text-opacity: 0.5; +} +.dark-mode .text-opacity-75 { + --bs-text-opacity: 0.75; +} +.dark-mode .text-opacity-100 { + --bs-text-opacity: 1; +} +.dark-mode .bg-primary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-primary-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-secondary { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-secondary-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-success { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-success-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-info { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-info-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-warning { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-warning-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-danger { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-danger-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-light { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-light-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-dark { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-dark-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-black { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-black-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-white { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-white-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-body { + --bs-bg-opacity: 1; + background-color: rgba(var(--bs-body-bg-rgb), var(--bs-bg-opacity)) !important; +} +.dark-mode .bg-transparent { + --bs-bg-opacity: 1; + background-color: transparent !important; +} +.dark-mode .bg-opacity-10 { + --bs-bg-opacity: 0.1; +} +.dark-mode .bg-opacity-25 { + --bs-bg-opacity: 0.25; +} +.dark-mode .bg-opacity-50 { + --bs-bg-opacity: 0.5; +} +.dark-mode .bg-opacity-75 { + --bs-bg-opacity: 0.75; +} +.dark-mode .bg-opacity-100 { + --bs-bg-opacity: 1; +} +.dark-mode .bg-gradient { + background-image: var(--bs-gradient) !important; +} +.dark-mode .user-select-all { + user-select: all !important; +} +.dark-mode .user-select-auto { + user-select: auto !important; +} +.dark-mode .user-select-none { + user-select: none !important; +} +.dark-mode .pe-none { + pointer-events: none !important; +} +.dark-mode .pe-auto { + pointer-events: auto !important; +} +.dark-mode .rounded { + border-radius: 0.25rem !important; +} +.dark-mode .rounded-0 { + border-radius: 0 !important; +} +.dark-mode .rounded-1 { + border-radius: 0.2rem !important; +} +.dark-mode .rounded-2 { + border-radius: 0.25rem !important; +} +.dark-mode .rounded-3 { + border-radius: 0.3rem !important; +} +.dark-mode .rounded-circle { + border-radius: 50% !important; +} +.dark-mode .rounded-pill { + border-radius: 50rem !important; +} +.dark-mode .rounded-top { + border-top-left-radius: 0.25rem !important; + border-top-right-radius: 0.25rem !important; +} +.dark-mode .rounded-end { + border-top-right-radius: 0.25rem !important; + border-bottom-right-radius: 0.25rem !important; +} +.dark-mode .rounded-bottom { + border-bottom-right-radius: 0.25rem !important; + border-bottom-left-radius: 0.25rem !important; +} +.dark-mode .rounded-start { + border-bottom-left-radius: 0.25rem !important; + border-top-left-radius: 0.25rem !important; +} +.dark-mode .visible { + visibility: visible !important; +} +.dark-mode .invisible { + visibility: hidden !important; +} +@media (min-width: 576px) { + .dark-mode .float-sm-start { + float: left !important; + } + .dark-mode .float-sm-end { + float: right !important; + } + .dark-mode .float-sm-none { + float: none !important; + } + .dark-mode .d-sm-inline { + display: inline !important; + } + .dark-mode .d-sm-inline-block { + display: inline-block !important; + } + .dark-mode .d-sm-block { + display: block !important; + } + .dark-mode .d-sm-grid { + display: grid !important; + } + .dark-mode .d-sm-table { + display: table !important; + } + .dark-mode .d-sm-table-row { + display: table-row !important; + } + .dark-mode .d-sm-table-cell { + display: table-cell !important; + } + .dark-mode .d-sm-flex { + display: flex !important; + } + .dark-mode .d-sm-inline-flex { + display: inline-flex !important; + } + .dark-mode .d-sm-none { + display: none !important; + } + .dark-mode .flex-sm-fill { + flex: 1 1 auto !important; + } + .dark-mode .flex-sm-row { + flex-direction: row !important; + } + .dark-mode .flex-sm-column { + flex-direction: column !important; + } + .dark-mode .flex-sm-row-reverse { + flex-direction: row-reverse !important; + } + .dark-mode .flex-sm-column-reverse { + flex-direction: column-reverse !important; + } + .dark-mode .flex-sm-grow-0 { + flex-grow: 0 !important; + } + .dark-mode .flex-sm-grow-1 { + flex-grow: 1 !important; + } + .dark-mode .flex-sm-shrink-0 { + flex-shrink: 0 !important; + } + .dark-mode .flex-sm-shrink-1 { + flex-shrink: 1 !important; + } + .dark-mode .flex-sm-wrap { + flex-wrap: wrap !important; + } + .dark-mode .flex-sm-nowrap { + flex-wrap: nowrap !important; + } + .dark-mode .flex-sm-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .dark-mode .gap-sm-0 { + gap: 0 !important; + } + .dark-mode .gap-sm-1 { + gap: 0.25rem !important; + } + .dark-mode .gap-sm-2 { + gap: 0.5rem !important; + } + .dark-mode .gap-sm-3 { + gap: 1rem !important; + } + .dark-mode .gap-sm-4 { + gap: 1.5rem !important; + } + .dark-mode .gap-sm-5 { + gap: 3rem !important; + } + .dark-mode .justify-content-sm-start { + justify-content: flex-start !important; + } + .dark-mode .justify-content-sm-end { + justify-content: flex-end !important; + } + .dark-mode .justify-content-sm-center { + justify-content: center !important; + } + .dark-mode .justify-content-sm-between { + justify-content: space-between !important; + } + .dark-mode .justify-content-sm-around { + justify-content: space-around !important; + } + .dark-mode .justify-content-sm-evenly { + justify-content: space-evenly !important; + } + .dark-mode .align-items-sm-start { + align-items: flex-start !important; + } + .dark-mode .align-items-sm-end { + align-items: flex-end !important; + } + .dark-mode .align-items-sm-center { + align-items: center !important; + } + .dark-mode .align-items-sm-baseline { + align-items: baseline !important; + } + .dark-mode .align-items-sm-stretch { + align-items: stretch !important; + } + .dark-mode .align-content-sm-start { + align-content: flex-start !important; + } + .dark-mode .align-content-sm-end { + align-content: flex-end !important; + } + .dark-mode .align-content-sm-center { + align-content: center !important; + } + .dark-mode .align-content-sm-between { + align-content: space-between !important; + } + .dark-mode .align-content-sm-around { + align-content: space-around !important; + } + .dark-mode .align-content-sm-stretch { + align-content: stretch !important; + } + .dark-mode .align-self-sm-auto { + align-self: auto !important; + } + .dark-mode .align-self-sm-start { + align-self: flex-start !important; + } + .dark-mode .align-self-sm-end { + align-self: flex-end !important; + } + .dark-mode .align-self-sm-center { + align-self: center !important; + } + .dark-mode .align-self-sm-baseline { + align-self: baseline !important; + } + .dark-mode .align-self-sm-stretch { + align-self: stretch !important; + } + .dark-mode .order-sm-first { + order: -1 !important; + } + .dark-mode .order-sm-0 { + order: 0 !important; + } + .dark-mode .order-sm-1 { + order: 1 !important; + } + .dark-mode .order-sm-2 { + order: 2 !important; + } + .dark-mode .order-sm-3 { + order: 3 !important; + } + .dark-mode .order-sm-4 { + order: 4 !important; + } + .dark-mode .order-sm-5 { + order: 5 !important; + } + .dark-mode .order-sm-last { + order: 6 !important; + } + .dark-mode .m-sm-0 { + margin: 0 !important; + } + .dark-mode .m-sm-1 { + margin: 0.25rem !important; + } + .dark-mode .m-sm-2 { + margin: 0.5rem !important; + } + .dark-mode .m-sm-3 { + margin: 1rem !important; + } + .dark-mode .m-sm-4 { + margin: 1.5rem !important; + } + .dark-mode .m-sm-5 { + margin: 3rem !important; + } + .dark-mode .m-sm-auto { + margin: auto !important; + } + .dark-mode .mx-sm-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .dark-mode .mx-sm-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .dark-mode .mx-sm-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .dark-mode .mx-sm-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .dark-mode .mx-sm-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .dark-mode .mx-sm-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .dark-mode .mx-sm-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .dark-mode .my-sm-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .dark-mode .my-sm-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .dark-mode .my-sm-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .dark-mode .my-sm-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .dark-mode .my-sm-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .dark-mode .my-sm-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .dark-mode .my-sm-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .dark-mode .mt-sm-0 { + margin-top: 0 !important; + } + .dark-mode .mt-sm-1 { + margin-top: 0.25rem !important; + } + .dark-mode .mt-sm-2 { + margin-top: 0.5rem !important; + } + .dark-mode .mt-sm-3 { + margin-top: 1rem !important; + } + .dark-mode .mt-sm-4 { + margin-top: 1.5rem !important; + } + .dark-mode .mt-sm-5 { + margin-top: 3rem !important; + } + .dark-mode .mt-sm-auto { + margin-top: auto !important; + } + .dark-mode .me-sm-0 { + margin-right: 0 !important; + } + .dark-mode .me-sm-1 { + margin-right: 0.25rem !important; + } + .dark-mode .me-sm-2 { + margin-right: 0.5rem !important; + } + .dark-mode .me-sm-3 { + margin-right: 1rem !important; + } + .dark-mode .me-sm-4 { + margin-right: 1.5rem !important; + } + .dark-mode .me-sm-5 { + margin-right: 3rem !important; + } + .dark-mode .me-sm-auto { + margin-right: auto !important; + } + .dark-mode .mb-sm-0 { + margin-bottom: 0 !important; + } + .dark-mode .mb-sm-1 { + margin-bottom: 0.25rem !important; + } + .dark-mode .mb-sm-2 { + margin-bottom: 0.5rem !important; + } + .dark-mode .mb-sm-3 { + margin-bottom: 1rem !important; + } + .dark-mode .mb-sm-4 { + margin-bottom: 1.5rem !important; + } + .dark-mode .mb-sm-5 { + margin-bottom: 3rem !important; + } + .dark-mode .mb-sm-auto { + margin-bottom: auto !important; + } + .dark-mode .ms-sm-0 { + margin-left: 0 !important; + } + .dark-mode .ms-sm-1 { + margin-left: 0.25rem !important; + } + .dark-mode .ms-sm-2 { + margin-left: 0.5rem !important; + } + .dark-mode .ms-sm-3 { + margin-left: 1rem !important; + } + .dark-mode .ms-sm-4 { + margin-left: 1.5rem !important; + } + .dark-mode .ms-sm-5 { + margin-left: 3rem !important; + } + .dark-mode .ms-sm-auto { + margin-left: auto !important; + } + .dark-mode .p-sm-0 { + padding: 0 !important; + } + .dark-mode .p-sm-1 { + padding: 0.25rem !important; + } + .dark-mode .p-sm-2 { + padding: 0.5rem !important; + } + .dark-mode .p-sm-3 { + padding: 1rem !important; + } + .dark-mode .p-sm-4 { + padding: 1.5rem !important; + } + .dark-mode .p-sm-5 { + padding: 3rem !important; + } + .dark-mode .px-sm-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .dark-mode .px-sm-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .dark-mode .px-sm-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .dark-mode .px-sm-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .dark-mode .px-sm-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .dark-mode .px-sm-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .dark-mode .py-sm-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .dark-mode .py-sm-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .dark-mode .py-sm-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .dark-mode .py-sm-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .dark-mode .py-sm-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .dark-mode .py-sm-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .dark-mode .pt-sm-0 { + padding-top: 0 !important; + } + .dark-mode .pt-sm-1 { + padding-top: 0.25rem !important; + } + .dark-mode .pt-sm-2 { + padding-top: 0.5rem !important; + } + .dark-mode .pt-sm-3 { + padding-top: 1rem !important; + } + .dark-mode .pt-sm-4 { + padding-top: 1.5rem !important; + } + .dark-mode .pt-sm-5 { + padding-top: 3rem !important; + } + .dark-mode .pe-sm-0 { + padding-right: 0 !important; + } + .dark-mode .pe-sm-1 { + padding-right: 0.25rem !important; + } + .dark-mode .pe-sm-2 { + padding-right: 0.5rem !important; + } + .dark-mode .pe-sm-3 { + padding-right: 1rem !important; + } + .dark-mode .pe-sm-4 { + padding-right: 1.5rem !important; + } + .dark-mode .pe-sm-5 { + padding-right: 3rem !important; + } + .dark-mode .pb-sm-0 { + padding-bottom: 0 !important; + } + .dark-mode .pb-sm-1 { + padding-bottom: 0.25rem !important; + } + .dark-mode .pb-sm-2 { + padding-bottom: 0.5rem !important; + } + .dark-mode .pb-sm-3 { + padding-bottom: 1rem !important; + } + .dark-mode .pb-sm-4 { + padding-bottom: 1.5rem !important; + } + .dark-mode .pb-sm-5 { + padding-bottom: 3rem !important; + } + .dark-mode .ps-sm-0 { + padding-left: 0 !important; + } + .dark-mode .ps-sm-1 { + padding-left: 0.25rem !important; + } + .dark-mode .ps-sm-2 { + padding-left: 0.5rem !important; + } + .dark-mode .ps-sm-3 { + padding-left: 1rem !important; + } + .dark-mode .ps-sm-4 { + padding-left: 1.5rem !important; + } + .dark-mode .ps-sm-5 { + padding-left: 3rem !important; + } + .dark-mode .text-sm-start { + text-align: left !important; + } + .dark-mode .text-sm-end { + text-align: right !important; + } + .dark-mode .text-sm-center { + text-align: center !important; + } +} +@media (min-width: 768px) { + .dark-mode .float-md-start { + float: left !important; + } + .dark-mode .float-md-end { + float: right !important; + } + .dark-mode .float-md-none { + float: none !important; + } + .dark-mode .d-md-inline { + display: inline !important; + } + .dark-mode .d-md-inline-block { + display: inline-block !important; + } + .dark-mode .d-md-block { + display: block !important; + } + .dark-mode .d-md-grid { + display: grid !important; + } + .dark-mode .d-md-table { + display: table !important; + } + .dark-mode .d-md-table-row { + display: table-row !important; + } + .dark-mode .d-md-table-cell { + display: table-cell !important; + } + .dark-mode .d-md-flex { + display: flex !important; + } + .dark-mode .d-md-inline-flex { + display: inline-flex !important; + } + .dark-mode .d-md-none { + display: none !important; + } + .dark-mode .flex-md-fill { + flex: 1 1 auto !important; + } + .dark-mode .flex-md-row { + flex-direction: row !important; + } + .dark-mode .flex-md-column { + flex-direction: column !important; + } + .dark-mode .flex-md-row-reverse { + flex-direction: row-reverse !important; + } + .dark-mode .flex-md-column-reverse { + flex-direction: column-reverse !important; + } + .dark-mode .flex-md-grow-0 { + flex-grow: 0 !important; + } + .dark-mode .flex-md-grow-1 { + flex-grow: 1 !important; + } + .dark-mode .flex-md-shrink-0 { + flex-shrink: 0 !important; + } + .dark-mode .flex-md-shrink-1 { + flex-shrink: 1 !important; + } + .dark-mode .flex-md-wrap { + flex-wrap: wrap !important; + } + .dark-mode .flex-md-nowrap { + flex-wrap: nowrap !important; + } + .dark-mode .flex-md-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .dark-mode .gap-md-0 { + gap: 0 !important; + } + .dark-mode .gap-md-1 { + gap: 0.25rem !important; + } + .dark-mode .gap-md-2 { + gap: 0.5rem !important; + } + .dark-mode .gap-md-3 { + gap: 1rem !important; + } + .dark-mode .gap-md-4 { + gap: 1.5rem !important; + } + .dark-mode .gap-md-5 { + gap: 3rem !important; + } + .dark-mode .justify-content-md-start { + justify-content: flex-start !important; + } + .dark-mode .justify-content-md-end { + justify-content: flex-end !important; + } + .dark-mode .justify-content-md-center { + justify-content: center !important; + } + .dark-mode .justify-content-md-between { + justify-content: space-between !important; + } + .dark-mode .justify-content-md-around { + justify-content: space-around !important; + } + .dark-mode .justify-content-md-evenly { + justify-content: space-evenly !important; + } + .dark-mode .align-items-md-start { + align-items: flex-start !important; + } + .dark-mode .align-items-md-end { + align-items: flex-end !important; + } + .dark-mode .align-items-md-center { + align-items: center !important; + } + .dark-mode .align-items-md-baseline { + align-items: baseline !important; + } + .dark-mode .align-items-md-stretch { + align-items: stretch !important; + } + .dark-mode .align-content-md-start { + align-content: flex-start !important; + } + .dark-mode .align-content-md-end { + align-content: flex-end !important; + } + .dark-mode .align-content-md-center { + align-content: center !important; + } + .dark-mode .align-content-md-between { + align-content: space-between !important; + } + .dark-mode .align-content-md-around { + align-content: space-around !important; + } + .dark-mode .align-content-md-stretch { + align-content: stretch !important; + } + .dark-mode .align-self-md-auto { + align-self: auto !important; + } + .dark-mode .align-self-md-start { + align-self: flex-start !important; + } + .dark-mode .align-self-md-end { + align-self: flex-end !important; + } + .dark-mode .align-self-md-center { + align-self: center !important; + } + .dark-mode .align-self-md-baseline { + align-self: baseline !important; + } + .dark-mode .align-self-md-stretch { + align-self: stretch !important; + } + .dark-mode .order-md-first { + order: -1 !important; + } + .dark-mode .order-md-0 { + order: 0 !important; + } + .dark-mode .order-md-1 { + order: 1 !important; + } + .dark-mode .order-md-2 { + order: 2 !important; + } + .dark-mode .order-md-3 { + order: 3 !important; + } + .dark-mode .order-md-4 { + order: 4 !important; + } + .dark-mode .order-md-5 { + order: 5 !important; + } + .dark-mode .order-md-last { + order: 6 !important; + } + .dark-mode .m-md-0 { + margin: 0 !important; + } + .dark-mode .m-md-1 { + margin: 0.25rem !important; + } + .dark-mode .m-md-2 { + margin: 0.5rem !important; + } + .dark-mode .m-md-3 { + margin: 1rem !important; + } + .dark-mode .m-md-4 { + margin: 1.5rem !important; + } + .dark-mode .m-md-5 { + margin: 3rem !important; + } + .dark-mode .m-md-auto { + margin: auto !important; + } + .dark-mode .mx-md-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .dark-mode .mx-md-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .dark-mode .mx-md-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .dark-mode .mx-md-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .dark-mode .mx-md-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .dark-mode .mx-md-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .dark-mode .mx-md-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .dark-mode .my-md-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .dark-mode .my-md-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .dark-mode .my-md-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .dark-mode .my-md-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .dark-mode .my-md-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .dark-mode .my-md-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .dark-mode .my-md-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .dark-mode .mt-md-0 { + margin-top: 0 !important; + } + .dark-mode .mt-md-1 { + margin-top: 0.25rem !important; + } + .dark-mode .mt-md-2 { + margin-top: 0.5rem !important; + } + .dark-mode .mt-md-3 { + margin-top: 1rem !important; + } + .dark-mode .mt-md-4 { + margin-top: 1.5rem !important; + } + .dark-mode .mt-md-5 { + margin-top: 3rem !important; + } + .dark-mode .mt-md-auto { + margin-top: auto !important; + } + .dark-mode .me-md-0 { + margin-right: 0 !important; + } + .dark-mode .me-md-1 { + margin-right: 0.25rem !important; + } + .dark-mode .me-md-2 { + margin-right: 0.5rem !important; + } + .dark-mode .me-md-3 { + margin-right: 1rem !important; + } + .dark-mode .me-md-4 { + margin-right: 1.5rem !important; + } + .dark-mode .me-md-5 { + margin-right: 3rem !important; + } + .dark-mode .me-md-auto { + margin-right: auto !important; + } + .dark-mode .mb-md-0 { + margin-bottom: 0 !important; + } + .dark-mode .mb-md-1 { + margin-bottom: 0.25rem !important; + } + .dark-mode .mb-md-2 { + margin-bottom: 0.5rem !important; + } + .dark-mode .mb-md-3 { + margin-bottom: 1rem !important; + } + .dark-mode .mb-md-4 { + margin-bottom: 1.5rem !important; + } + .dark-mode .mb-md-5 { + margin-bottom: 3rem !important; + } + .dark-mode .mb-md-auto { + margin-bottom: auto !important; + } + .dark-mode .ms-md-0 { + margin-left: 0 !important; + } + .dark-mode .ms-md-1 { + margin-left: 0.25rem !important; + } + .dark-mode .ms-md-2 { + margin-left: 0.5rem !important; + } + .dark-mode .ms-md-3 { + margin-left: 1rem !important; + } + .dark-mode .ms-md-4 { + margin-left: 1.5rem !important; + } + .dark-mode .ms-md-5 { + margin-left: 3rem !important; + } + .dark-mode .ms-md-auto { + margin-left: auto !important; + } + .dark-mode .p-md-0 { + padding: 0 !important; + } + .dark-mode .p-md-1 { + padding: 0.25rem !important; + } + .dark-mode .p-md-2 { + padding: 0.5rem !important; + } + .dark-mode .p-md-3 { + padding: 1rem !important; + } + .dark-mode .p-md-4 { + padding: 1.5rem !important; + } + .dark-mode .p-md-5 { + padding: 3rem !important; + } + .dark-mode .px-md-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .dark-mode .px-md-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .dark-mode .px-md-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .dark-mode .px-md-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .dark-mode .px-md-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .dark-mode .px-md-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .dark-mode .py-md-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .dark-mode .py-md-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .dark-mode .py-md-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .dark-mode .py-md-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .dark-mode .py-md-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .dark-mode .py-md-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .dark-mode .pt-md-0 { + padding-top: 0 !important; + } + .dark-mode .pt-md-1 { + padding-top: 0.25rem !important; + } + .dark-mode .pt-md-2 { + padding-top: 0.5rem !important; + } + .dark-mode .pt-md-3 { + padding-top: 1rem !important; + } + .dark-mode .pt-md-4 { + padding-top: 1.5rem !important; + } + .dark-mode .pt-md-5 { + padding-top: 3rem !important; + } + .dark-mode .pe-md-0 { + padding-right: 0 !important; + } + .dark-mode .pe-md-1 { + padding-right: 0.25rem !important; + } + .dark-mode .pe-md-2 { + padding-right: 0.5rem !important; + } + .dark-mode .pe-md-3 { + padding-right: 1rem !important; + } + .dark-mode .pe-md-4 { + padding-right: 1.5rem !important; + } + .dark-mode .pe-md-5 { + padding-right: 3rem !important; + } + .dark-mode .pb-md-0 { + padding-bottom: 0 !important; + } + .dark-mode .pb-md-1 { + padding-bottom: 0.25rem !important; + } + .dark-mode .pb-md-2 { + padding-bottom: 0.5rem !important; + } + .dark-mode .pb-md-3 { + padding-bottom: 1rem !important; + } + .dark-mode .pb-md-4 { + padding-bottom: 1.5rem !important; + } + .dark-mode .pb-md-5 { + padding-bottom: 3rem !important; + } + .dark-mode .ps-md-0 { + padding-left: 0 !important; + } + .dark-mode .ps-md-1 { + padding-left: 0.25rem !important; + } + .dark-mode .ps-md-2 { + padding-left: 0.5rem !important; + } + .dark-mode .ps-md-3 { + padding-left: 1rem !important; + } + .dark-mode .ps-md-4 { + padding-left: 1.5rem !important; + } + .dark-mode .ps-md-5 { + padding-left: 3rem !important; + } + .dark-mode .text-md-start { + text-align: left !important; + } + .dark-mode .text-md-end { + text-align: right !important; + } + .dark-mode .text-md-center { + text-align: center !important; + } +} +@media (min-width: 992px) { + .dark-mode .float-lg-start { + float: left !important; + } + .dark-mode .float-lg-end { + float: right !important; + } + .dark-mode .float-lg-none { + float: none !important; + } + .dark-mode .d-lg-inline { + display: inline !important; + } + .dark-mode .d-lg-inline-block { + display: inline-block !important; + } + .dark-mode .d-lg-block { + display: block !important; + } + .dark-mode .d-lg-grid { + display: grid !important; + } + .dark-mode .d-lg-table { + display: table !important; + } + .dark-mode .d-lg-table-row { + display: table-row !important; + } + .dark-mode .d-lg-table-cell { + display: table-cell !important; + } + .dark-mode .d-lg-flex { + display: flex !important; + } + .dark-mode .d-lg-inline-flex { + display: inline-flex !important; + } + .dark-mode .d-lg-none { + display: none !important; + } + .dark-mode .flex-lg-fill { + flex: 1 1 auto !important; + } + .dark-mode .flex-lg-row { + flex-direction: row !important; + } + .dark-mode .flex-lg-column { + flex-direction: column !important; + } + .dark-mode .flex-lg-row-reverse { + flex-direction: row-reverse !important; + } + .dark-mode .flex-lg-column-reverse { + flex-direction: column-reverse !important; + } + .dark-mode .flex-lg-grow-0 { + flex-grow: 0 !important; + } + .dark-mode .flex-lg-grow-1 { + flex-grow: 1 !important; + } + .dark-mode .flex-lg-shrink-0 { + flex-shrink: 0 !important; + } + .dark-mode .flex-lg-shrink-1 { + flex-shrink: 1 !important; + } + .dark-mode .flex-lg-wrap { + flex-wrap: wrap !important; + } + .dark-mode .flex-lg-nowrap { + flex-wrap: nowrap !important; + } + .dark-mode .flex-lg-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .dark-mode .gap-lg-0 { + gap: 0 !important; + } + .dark-mode .gap-lg-1 { + gap: 0.25rem !important; + } + .dark-mode .gap-lg-2 { + gap: 0.5rem !important; + } + .dark-mode .gap-lg-3 { + gap: 1rem !important; + } + .dark-mode .gap-lg-4 { + gap: 1.5rem !important; + } + .dark-mode .gap-lg-5 { + gap: 3rem !important; + } + .dark-mode .justify-content-lg-start { + justify-content: flex-start !important; + } + .dark-mode .justify-content-lg-end { + justify-content: flex-end !important; + } + .dark-mode .justify-content-lg-center { + justify-content: center !important; + } + .dark-mode .justify-content-lg-between { + justify-content: space-between !important; + } + .dark-mode .justify-content-lg-around { + justify-content: space-around !important; + } + .dark-mode .justify-content-lg-evenly { + justify-content: space-evenly !important; + } + .dark-mode .align-items-lg-start { + align-items: flex-start !important; + } + .dark-mode .align-items-lg-end { + align-items: flex-end !important; + } + .dark-mode .align-items-lg-center { + align-items: center !important; + } + .dark-mode .align-items-lg-baseline { + align-items: baseline !important; + } + .dark-mode .align-items-lg-stretch { + align-items: stretch !important; + } + .dark-mode .align-content-lg-start { + align-content: flex-start !important; + } + .dark-mode .align-content-lg-end { + align-content: flex-end !important; + } + .dark-mode .align-content-lg-center { + align-content: center !important; + } + .dark-mode .align-content-lg-between { + align-content: space-between !important; + } + .dark-mode .align-content-lg-around { + align-content: space-around !important; + } + .dark-mode .align-content-lg-stretch { + align-content: stretch !important; + } + .dark-mode .align-self-lg-auto { + align-self: auto !important; + } + .dark-mode .align-self-lg-start { + align-self: flex-start !important; + } + .dark-mode .align-self-lg-end { + align-self: flex-end !important; + } + .dark-mode .align-self-lg-center { + align-self: center !important; + } + .dark-mode .align-self-lg-baseline { + align-self: baseline !important; + } + .dark-mode .align-self-lg-stretch { + align-self: stretch !important; + } + .dark-mode .order-lg-first { + order: -1 !important; + } + .dark-mode .order-lg-0 { + order: 0 !important; + } + .dark-mode .order-lg-1 { + order: 1 !important; + } + .dark-mode .order-lg-2 { + order: 2 !important; + } + .dark-mode .order-lg-3 { + order: 3 !important; + } + .dark-mode .order-lg-4 { + order: 4 !important; + } + .dark-mode .order-lg-5 { + order: 5 !important; + } + .dark-mode .order-lg-last { + order: 6 !important; + } + .dark-mode .m-lg-0 { + margin: 0 !important; + } + .dark-mode .m-lg-1 { + margin: 0.25rem !important; + } + .dark-mode .m-lg-2 { + margin: 0.5rem !important; + } + .dark-mode .m-lg-3 { + margin: 1rem !important; + } + .dark-mode .m-lg-4 { + margin: 1.5rem !important; + } + .dark-mode .m-lg-5 { + margin: 3rem !important; + } + .dark-mode .m-lg-auto { + margin: auto !important; + } + .dark-mode .mx-lg-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .dark-mode .mx-lg-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .dark-mode .mx-lg-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .dark-mode .mx-lg-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .dark-mode .mx-lg-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .dark-mode .mx-lg-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .dark-mode .mx-lg-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .dark-mode .my-lg-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .dark-mode .my-lg-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .dark-mode .my-lg-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .dark-mode .my-lg-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .dark-mode .my-lg-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .dark-mode .my-lg-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .dark-mode .my-lg-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .dark-mode .mt-lg-0 { + margin-top: 0 !important; + } + .dark-mode .mt-lg-1 { + margin-top: 0.25rem !important; + } + .dark-mode .mt-lg-2 { + margin-top: 0.5rem !important; + } + .dark-mode .mt-lg-3 { + margin-top: 1rem !important; + } + .dark-mode .mt-lg-4 { + margin-top: 1.5rem !important; + } + .dark-mode .mt-lg-5 { + margin-top: 3rem !important; + } + .dark-mode .mt-lg-auto { + margin-top: auto !important; + } + .dark-mode .me-lg-0 { + margin-right: 0 !important; + } + .dark-mode .me-lg-1 { + margin-right: 0.25rem !important; + } + .dark-mode .me-lg-2 { + margin-right: 0.5rem !important; + } + .dark-mode .me-lg-3 { + margin-right: 1rem !important; + } + .dark-mode .me-lg-4 { + margin-right: 1.5rem !important; + } + .dark-mode .me-lg-5 { + margin-right: 3rem !important; + } + .dark-mode .me-lg-auto { + margin-right: auto !important; + } + .dark-mode .mb-lg-0 { + margin-bottom: 0 !important; + } + .dark-mode .mb-lg-1 { + margin-bottom: 0.25rem !important; + } + .dark-mode .mb-lg-2 { + margin-bottom: 0.5rem !important; + } + .dark-mode .mb-lg-3 { + margin-bottom: 1rem !important; + } + .dark-mode .mb-lg-4 { + margin-bottom: 1.5rem !important; + } + .dark-mode .mb-lg-5 { + margin-bottom: 3rem !important; + } + .dark-mode .mb-lg-auto { + margin-bottom: auto !important; + } + .dark-mode .ms-lg-0 { + margin-left: 0 !important; + } + .dark-mode .ms-lg-1 { + margin-left: 0.25rem !important; + } + .dark-mode .ms-lg-2 { + margin-left: 0.5rem !important; + } + .dark-mode .ms-lg-3 { + margin-left: 1rem !important; + } + .dark-mode .ms-lg-4 { + margin-left: 1.5rem !important; + } + .dark-mode .ms-lg-5 { + margin-left: 3rem !important; + } + .dark-mode .ms-lg-auto { + margin-left: auto !important; + } + .dark-mode .p-lg-0 { + padding: 0 !important; + } + .dark-mode .p-lg-1 { + padding: 0.25rem !important; + } + .dark-mode .p-lg-2 { + padding: 0.5rem !important; + } + .dark-mode .p-lg-3 { + padding: 1rem !important; + } + .dark-mode .p-lg-4 { + padding: 1.5rem !important; + } + .dark-mode .p-lg-5 { + padding: 3rem !important; + } + .dark-mode .px-lg-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .dark-mode .px-lg-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .dark-mode .px-lg-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .dark-mode .px-lg-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .dark-mode .px-lg-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .dark-mode .px-lg-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .dark-mode .py-lg-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .dark-mode .py-lg-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .dark-mode .py-lg-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .dark-mode .py-lg-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .dark-mode .py-lg-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .dark-mode .py-lg-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .dark-mode .pt-lg-0 { + padding-top: 0 !important; + } + .dark-mode .pt-lg-1 { + padding-top: 0.25rem !important; + } + .dark-mode .pt-lg-2 { + padding-top: 0.5rem !important; + } + .dark-mode .pt-lg-3 { + padding-top: 1rem !important; + } + .dark-mode .pt-lg-4 { + padding-top: 1.5rem !important; + } + .dark-mode .pt-lg-5 { + padding-top: 3rem !important; + } + .dark-mode .pe-lg-0 { + padding-right: 0 !important; + } + .dark-mode .pe-lg-1 { + padding-right: 0.25rem !important; + } + .dark-mode .pe-lg-2 { + padding-right: 0.5rem !important; + } + .dark-mode .pe-lg-3 { + padding-right: 1rem !important; + } + .dark-mode .pe-lg-4 { + padding-right: 1.5rem !important; + } + .dark-mode .pe-lg-5 { + padding-right: 3rem !important; + } + .dark-mode .pb-lg-0 { + padding-bottom: 0 !important; + } + .dark-mode .pb-lg-1 { + padding-bottom: 0.25rem !important; + } + .dark-mode .pb-lg-2 { + padding-bottom: 0.5rem !important; + } + .dark-mode .pb-lg-3 { + padding-bottom: 1rem !important; + } + .dark-mode .pb-lg-4 { + padding-bottom: 1.5rem !important; + } + .dark-mode .pb-lg-5 { + padding-bottom: 3rem !important; + } + .dark-mode .ps-lg-0 { + padding-left: 0 !important; + } + .dark-mode .ps-lg-1 { + padding-left: 0.25rem !important; + } + .dark-mode .ps-lg-2 { + padding-left: 0.5rem !important; + } + .dark-mode .ps-lg-3 { + padding-left: 1rem !important; + } + .dark-mode .ps-lg-4 { + padding-left: 1.5rem !important; + } + .dark-mode .ps-lg-5 { + padding-left: 3rem !important; + } + .dark-mode .text-lg-start { + text-align: left !important; + } + .dark-mode .text-lg-end { + text-align: right !important; + } + .dark-mode .text-lg-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .dark-mode .float-xl-start { + float: left !important; + } + .dark-mode .float-xl-end { + float: right !important; + } + .dark-mode .float-xl-none { + float: none !important; + } + .dark-mode .d-xl-inline { + display: inline !important; + } + .dark-mode .d-xl-inline-block { + display: inline-block !important; + } + .dark-mode .d-xl-block { + display: block !important; + } + .dark-mode .d-xl-grid { + display: grid !important; + } + .dark-mode .d-xl-table { + display: table !important; + } + .dark-mode .d-xl-table-row { + display: table-row !important; + } + .dark-mode .d-xl-table-cell { + display: table-cell !important; + } + .dark-mode .d-xl-flex { + display: flex !important; + } + .dark-mode .d-xl-inline-flex { + display: inline-flex !important; + } + .dark-mode .d-xl-none { + display: none !important; + } + .dark-mode .flex-xl-fill { + flex: 1 1 auto !important; + } + .dark-mode .flex-xl-row { + flex-direction: row !important; + } + .dark-mode .flex-xl-column { + flex-direction: column !important; + } + .dark-mode .flex-xl-row-reverse { + flex-direction: row-reverse !important; + } + .dark-mode .flex-xl-column-reverse { + flex-direction: column-reverse !important; + } + .dark-mode .flex-xl-grow-0 { + flex-grow: 0 !important; + } + .dark-mode .flex-xl-grow-1 { + flex-grow: 1 !important; + } + .dark-mode .flex-xl-shrink-0 { + flex-shrink: 0 !important; + } + .dark-mode .flex-xl-shrink-1 { + flex-shrink: 1 !important; + } + .dark-mode .flex-xl-wrap { + flex-wrap: wrap !important; + } + .dark-mode .flex-xl-nowrap { + flex-wrap: nowrap !important; + } + .dark-mode .flex-xl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .dark-mode .gap-xl-0 { + gap: 0 !important; + } + .dark-mode .gap-xl-1 { + gap: 0.25rem !important; + } + .dark-mode .gap-xl-2 { + gap: 0.5rem !important; + } + .dark-mode .gap-xl-3 { + gap: 1rem !important; + } + .dark-mode .gap-xl-4 { + gap: 1.5rem !important; + } + .dark-mode .gap-xl-5 { + gap: 3rem !important; + } + .dark-mode .justify-content-xl-start { + justify-content: flex-start !important; + } + .dark-mode .justify-content-xl-end { + justify-content: flex-end !important; + } + .dark-mode .justify-content-xl-center { + justify-content: center !important; + } + .dark-mode .justify-content-xl-between { + justify-content: space-between !important; + } + .dark-mode .justify-content-xl-around { + justify-content: space-around !important; + } + .dark-mode .justify-content-xl-evenly { + justify-content: space-evenly !important; + } + .dark-mode .align-items-xl-start { + align-items: flex-start !important; + } + .dark-mode .align-items-xl-end { + align-items: flex-end !important; + } + .dark-mode .align-items-xl-center { + align-items: center !important; + } + .dark-mode .align-items-xl-baseline { + align-items: baseline !important; + } + .dark-mode .align-items-xl-stretch { + align-items: stretch !important; + } + .dark-mode .align-content-xl-start { + align-content: flex-start !important; + } + .dark-mode .align-content-xl-end { + align-content: flex-end !important; + } + .dark-mode .align-content-xl-center { + align-content: center !important; + } + .dark-mode .align-content-xl-between { + align-content: space-between !important; + } + .dark-mode .align-content-xl-around { + align-content: space-around !important; + } + .dark-mode .align-content-xl-stretch { + align-content: stretch !important; + } + .dark-mode .align-self-xl-auto { + align-self: auto !important; + } + .dark-mode .align-self-xl-start { + align-self: flex-start !important; + } + .dark-mode .align-self-xl-end { + align-self: flex-end !important; + } + .dark-mode .align-self-xl-center { + align-self: center !important; + } + .dark-mode .align-self-xl-baseline { + align-self: baseline !important; + } + .dark-mode .align-self-xl-stretch { + align-self: stretch !important; + } + .dark-mode .order-xl-first { + order: -1 !important; + } + .dark-mode .order-xl-0 { + order: 0 !important; + } + .dark-mode .order-xl-1 { + order: 1 !important; + } + .dark-mode .order-xl-2 { + order: 2 !important; + } + .dark-mode .order-xl-3 { + order: 3 !important; + } + .dark-mode .order-xl-4 { + order: 4 !important; + } + .dark-mode .order-xl-5 { + order: 5 !important; + } + .dark-mode .order-xl-last { + order: 6 !important; + } + .dark-mode .m-xl-0 { + margin: 0 !important; + } + .dark-mode .m-xl-1 { + margin: 0.25rem !important; + } + .dark-mode .m-xl-2 { + margin: 0.5rem !important; + } + .dark-mode .m-xl-3 { + margin: 1rem !important; + } + .dark-mode .m-xl-4 { + margin: 1.5rem !important; + } + .dark-mode .m-xl-5 { + margin: 3rem !important; + } + .dark-mode .m-xl-auto { + margin: auto !important; + } + .dark-mode .mx-xl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .dark-mode .mx-xl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .dark-mode .mx-xl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .dark-mode .mx-xl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .dark-mode .mx-xl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .dark-mode .mx-xl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .dark-mode .mx-xl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .dark-mode .my-xl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .dark-mode .my-xl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .dark-mode .my-xl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .dark-mode .my-xl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .dark-mode .my-xl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .dark-mode .my-xl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .dark-mode .my-xl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .dark-mode .mt-xl-0 { + margin-top: 0 !important; + } + .dark-mode .mt-xl-1 { + margin-top: 0.25rem !important; + } + .dark-mode .mt-xl-2 { + margin-top: 0.5rem !important; + } + .dark-mode .mt-xl-3 { + margin-top: 1rem !important; + } + .dark-mode .mt-xl-4 { + margin-top: 1.5rem !important; + } + .dark-mode .mt-xl-5 { + margin-top: 3rem !important; + } + .dark-mode .mt-xl-auto { + margin-top: auto !important; + } + .dark-mode .me-xl-0 { + margin-right: 0 !important; + } + .dark-mode .me-xl-1 { + margin-right: 0.25rem !important; + } + .dark-mode .me-xl-2 { + margin-right: 0.5rem !important; + } + .dark-mode .me-xl-3 { + margin-right: 1rem !important; + } + .dark-mode .me-xl-4 { + margin-right: 1.5rem !important; + } + .dark-mode .me-xl-5 { + margin-right: 3rem !important; + } + .dark-mode .me-xl-auto { + margin-right: auto !important; + } + .dark-mode .mb-xl-0 { + margin-bottom: 0 !important; + } + .dark-mode .mb-xl-1 { + margin-bottom: 0.25rem !important; + } + .dark-mode .mb-xl-2 { + margin-bottom: 0.5rem !important; + } + .dark-mode .mb-xl-3 { + margin-bottom: 1rem !important; + } + .dark-mode .mb-xl-4 { + margin-bottom: 1.5rem !important; + } + .dark-mode .mb-xl-5 { + margin-bottom: 3rem !important; + } + .dark-mode .mb-xl-auto { + margin-bottom: auto !important; + } + .dark-mode .ms-xl-0 { + margin-left: 0 !important; + } + .dark-mode .ms-xl-1 { + margin-left: 0.25rem !important; + } + .dark-mode .ms-xl-2 { + margin-left: 0.5rem !important; + } + .dark-mode .ms-xl-3 { + margin-left: 1rem !important; + } + .dark-mode .ms-xl-4 { + margin-left: 1.5rem !important; + } + .dark-mode .ms-xl-5 { + margin-left: 3rem !important; + } + .dark-mode .ms-xl-auto { + margin-left: auto !important; + } + .dark-mode .p-xl-0 { + padding: 0 !important; + } + .dark-mode .p-xl-1 { + padding: 0.25rem !important; + } + .dark-mode .p-xl-2 { + padding: 0.5rem !important; + } + .dark-mode .p-xl-3 { + padding: 1rem !important; + } + .dark-mode .p-xl-4 { + padding: 1.5rem !important; + } + .dark-mode .p-xl-5 { + padding: 3rem !important; + } + .dark-mode .px-xl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .dark-mode .px-xl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .dark-mode .px-xl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .dark-mode .px-xl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .dark-mode .px-xl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .dark-mode .px-xl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .dark-mode .py-xl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .dark-mode .py-xl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .dark-mode .py-xl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .dark-mode .py-xl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .dark-mode .py-xl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .dark-mode .py-xl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .dark-mode .pt-xl-0 { + padding-top: 0 !important; + } + .dark-mode .pt-xl-1 { + padding-top: 0.25rem !important; + } + .dark-mode .pt-xl-2 { + padding-top: 0.5rem !important; + } + .dark-mode .pt-xl-3 { + padding-top: 1rem !important; + } + .dark-mode .pt-xl-4 { + padding-top: 1.5rem !important; + } + .dark-mode .pt-xl-5 { + padding-top: 3rem !important; + } + .dark-mode .pe-xl-0 { + padding-right: 0 !important; + } + .dark-mode .pe-xl-1 { + padding-right: 0.25rem !important; + } + .dark-mode .pe-xl-2 { + padding-right: 0.5rem !important; + } + .dark-mode .pe-xl-3 { + padding-right: 1rem !important; + } + .dark-mode .pe-xl-4 { + padding-right: 1.5rem !important; + } + .dark-mode .pe-xl-5 { + padding-right: 3rem !important; + } + .dark-mode .pb-xl-0 { + padding-bottom: 0 !important; + } + .dark-mode .pb-xl-1 { + padding-bottom: 0.25rem !important; + } + .dark-mode .pb-xl-2 { + padding-bottom: 0.5rem !important; + } + .dark-mode .pb-xl-3 { + padding-bottom: 1rem !important; + } + .dark-mode .pb-xl-4 { + padding-bottom: 1.5rem !important; + } + .dark-mode .pb-xl-5 { + padding-bottom: 3rem !important; + } + .dark-mode .ps-xl-0 { + padding-left: 0 !important; + } + .dark-mode .ps-xl-1 { + padding-left: 0.25rem !important; + } + .dark-mode .ps-xl-2 { + padding-left: 0.5rem !important; + } + .dark-mode .ps-xl-3 { + padding-left: 1rem !important; + } + .dark-mode .ps-xl-4 { + padding-left: 1.5rem !important; + } + .dark-mode .ps-xl-5 { + padding-left: 3rem !important; + } + .dark-mode .text-xl-start { + text-align: left !important; + } + .dark-mode .text-xl-end { + text-align: right !important; + } + .dark-mode .text-xl-center { + text-align: center !important; + } +} +@media (min-width: 1400px) { + .dark-mode .float-xxl-start { + float: left !important; + } + .dark-mode .float-xxl-end { + float: right !important; + } + .dark-mode .float-xxl-none { + float: none !important; + } + .dark-mode .d-xxl-inline { + display: inline !important; + } + .dark-mode .d-xxl-inline-block { + display: inline-block !important; + } + .dark-mode .d-xxl-block { + display: block !important; + } + .dark-mode .d-xxl-grid { + display: grid !important; + } + .dark-mode .d-xxl-table { + display: table !important; + } + .dark-mode .d-xxl-table-row { + display: table-row !important; + } + .dark-mode .d-xxl-table-cell { + display: table-cell !important; + } + .dark-mode .d-xxl-flex { + display: flex !important; + } + .dark-mode .d-xxl-inline-flex { + display: inline-flex !important; + } + .dark-mode .d-xxl-none { + display: none !important; + } + .dark-mode .flex-xxl-fill { + flex: 1 1 auto !important; + } + .dark-mode .flex-xxl-row { + flex-direction: row !important; + } + .dark-mode .flex-xxl-column { + flex-direction: column !important; + } + .dark-mode .flex-xxl-row-reverse { + flex-direction: row-reverse !important; + } + .dark-mode .flex-xxl-column-reverse { + flex-direction: column-reverse !important; + } + .dark-mode .flex-xxl-grow-0 { + flex-grow: 0 !important; + } + .dark-mode .flex-xxl-grow-1 { + flex-grow: 1 !important; + } + .dark-mode .flex-xxl-shrink-0 { + flex-shrink: 0 !important; + } + .dark-mode .flex-xxl-shrink-1 { + flex-shrink: 1 !important; + } + .dark-mode .flex-xxl-wrap { + flex-wrap: wrap !important; + } + .dark-mode .flex-xxl-nowrap { + flex-wrap: nowrap !important; + } + .dark-mode .flex-xxl-wrap-reverse { + flex-wrap: wrap-reverse !important; + } + .dark-mode .gap-xxl-0 { + gap: 0 !important; + } + .dark-mode .gap-xxl-1 { + gap: 0.25rem !important; + } + .dark-mode .gap-xxl-2 { + gap: 0.5rem !important; + } + .dark-mode .gap-xxl-3 { + gap: 1rem !important; + } + .dark-mode .gap-xxl-4 { + gap: 1.5rem !important; + } + .dark-mode .gap-xxl-5 { + gap: 3rem !important; + } + .dark-mode .justify-content-xxl-start { + justify-content: flex-start !important; + } + .dark-mode .justify-content-xxl-end { + justify-content: flex-end !important; + } + .dark-mode .justify-content-xxl-center { + justify-content: center !important; + } + .dark-mode .justify-content-xxl-between { + justify-content: space-between !important; + } + .dark-mode .justify-content-xxl-around { + justify-content: space-around !important; + } + .dark-mode .justify-content-xxl-evenly { + justify-content: space-evenly !important; + } + .dark-mode .align-items-xxl-start { + align-items: flex-start !important; + } + .dark-mode .align-items-xxl-end { + align-items: flex-end !important; + } + .dark-mode .align-items-xxl-center { + align-items: center !important; + } + .dark-mode .align-items-xxl-baseline { + align-items: baseline !important; + } + .dark-mode .align-items-xxl-stretch { + align-items: stretch !important; + } + .dark-mode .align-content-xxl-start { + align-content: flex-start !important; + } + .dark-mode .align-content-xxl-end { + align-content: flex-end !important; + } + .dark-mode .align-content-xxl-center { + align-content: center !important; + } + .dark-mode .align-content-xxl-between { + align-content: space-between !important; + } + .dark-mode .align-content-xxl-around { + align-content: space-around !important; + } + .dark-mode .align-content-xxl-stretch { + align-content: stretch !important; + } + .dark-mode .align-self-xxl-auto { + align-self: auto !important; + } + .dark-mode .align-self-xxl-start { + align-self: flex-start !important; + } + .dark-mode .align-self-xxl-end { + align-self: flex-end !important; + } + .dark-mode .align-self-xxl-center { + align-self: center !important; + } + .dark-mode .align-self-xxl-baseline { + align-self: baseline !important; + } + .dark-mode .align-self-xxl-stretch { + align-self: stretch !important; + } + .dark-mode .order-xxl-first { + order: -1 !important; + } + .dark-mode .order-xxl-0 { + order: 0 !important; + } + .dark-mode .order-xxl-1 { + order: 1 !important; + } + .dark-mode .order-xxl-2 { + order: 2 !important; + } + .dark-mode .order-xxl-3 { + order: 3 !important; + } + .dark-mode .order-xxl-4 { + order: 4 !important; + } + .dark-mode .order-xxl-5 { + order: 5 !important; + } + .dark-mode .order-xxl-last { + order: 6 !important; + } + .dark-mode .m-xxl-0 { + margin: 0 !important; + } + .dark-mode .m-xxl-1 { + margin: 0.25rem !important; + } + .dark-mode .m-xxl-2 { + margin: 0.5rem !important; + } + .dark-mode .m-xxl-3 { + margin: 1rem !important; + } + .dark-mode .m-xxl-4 { + margin: 1.5rem !important; + } + .dark-mode .m-xxl-5 { + margin: 3rem !important; + } + .dark-mode .m-xxl-auto { + margin: auto !important; + } + .dark-mode .mx-xxl-0 { + margin-right: 0 !important; + margin-left: 0 !important; + } + .dark-mode .mx-xxl-1 { + margin-right: 0.25rem !important; + margin-left: 0.25rem !important; + } + .dark-mode .mx-xxl-2 { + margin-right: 0.5rem !important; + margin-left: 0.5rem !important; + } + .dark-mode .mx-xxl-3 { + margin-right: 1rem !important; + margin-left: 1rem !important; + } + .dark-mode .mx-xxl-4 { + margin-right: 1.5rem !important; + margin-left: 1.5rem !important; + } + .dark-mode .mx-xxl-5 { + margin-right: 3rem !important; + margin-left: 3rem !important; + } + .dark-mode .mx-xxl-auto { + margin-right: auto !important; + margin-left: auto !important; + } + .dark-mode .my-xxl-0 { + margin-top: 0 !important; + margin-bottom: 0 !important; + } + .dark-mode .my-xxl-1 { + margin-top: 0.25rem !important; + margin-bottom: 0.25rem !important; + } + .dark-mode .my-xxl-2 { + margin-top: 0.5rem !important; + margin-bottom: 0.5rem !important; + } + .dark-mode .my-xxl-3 { + margin-top: 1rem !important; + margin-bottom: 1rem !important; + } + .dark-mode .my-xxl-4 { + margin-top: 1.5rem !important; + margin-bottom: 1.5rem !important; + } + .dark-mode .my-xxl-5 { + margin-top: 3rem !important; + margin-bottom: 3rem !important; + } + .dark-mode .my-xxl-auto { + margin-top: auto !important; + margin-bottom: auto !important; + } + .dark-mode .mt-xxl-0 { + margin-top: 0 !important; + } + .dark-mode .mt-xxl-1 { + margin-top: 0.25rem !important; + } + .dark-mode .mt-xxl-2 { + margin-top: 0.5rem !important; + } + .dark-mode .mt-xxl-3 { + margin-top: 1rem !important; + } + .dark-mode .mt-xxl-4 { + margin-top: 1.5rem !important; + } + .dark-mode .mt-xxl-5 { + margin-top: 3rem !important; + } + .dark-mode .mt-xxl-auto { + margin-top: auto !important; + } + .dark-mode .me-xxl-0 { + margin-right: 0 !important; + } + .dark-mode .me-xxl-1 { + margin-right: 0.25rem !important; + } + .dark-mode .me-xxl-2 { + margin-right: 0.5rem !important; + } + .dark-mode .me-xxl-3 { + margin-right: 1rem !important; + } + .dark-mode .me-xxl-4 { + margin-right: 1.5rem !important; + } + .dark-mode .me-xxl-5 { + margin-right: 3rem !important; + } + .dark-mode .me-xxl-auto { + margin-right: auto !important; + } + .dark-mode .mb-xxl-0 { + margin-bottom: 0 !important; + } + .dark-mode .mb-xxl-1 { + margin-bottom: 0.25rem !important; + } + .dark-mode .mb-xxl-2 { + margin-bottom: 0.5rem !important; + } + .dark-mode .mb-xxl-3 { + margin-bottom: 1rem !important; + } + .dark-mode .mb-xxl-4 { + margin-bottom: 1.5rem !important; + } + .dark-mode .mb-xxl-5 { + margin-bottom: 3rem !important; + } + .dark-mode .mb-xxl-auto { + margin-bottom: auto !important; + } + .dark-mode .ms-xxl-0 { + margin-left: 0 !important; + } + .dark-mode .ms-xxl-1 { + margin-left: 0.25rem !important; + } + .dark-mode .ms-xxl-2 { + margin-left: 0.5rem !important; + } + .dark-mode .ms-xxl-3 { + margin-left: 1rem !important; + } + .dark-mode .ms-xxl-4 { + margin-left: 1.5rem !important; + } + .dark-mode .ms-xxl-5 { + margin-left: 3rem !important; + } + .dark-mode .ms-xxl-auto { + margin-left: auto !important; + } + .dark-mode .p-xxl-0 { + padding: 0 !important; + } + .dark-mode .p-xxl-1 { + padding: 0.25rem !important; + } + .dark-mode .p-xxl-2 { + padding: 0.5rem !important; + } + .dark-mode .p-xxl-3 { + padding: 1rem !important; + } + .dark-mode .p-xxl-4 { + padding: 1.5rem !important; + } + .dark-mode .p-xxl-5 { + padding: 3rem !important; + } + .dark-mode .px-xxl-0 { + padding-right: 0 !important; + padding-left: 0 !important; + } + .dark-mode .px-xxl-1 { + padding-right: 0.25rem !important; + padding-left: 0.25rem !important; + } + .dark-mode .px-xxl-2 { + padding-right: 0.5rem !important; + padding-left: 0.5rem !important; + } + .dark-mode .px-xxl-3 { + padding-right: 1rem !important; + padding-left: 1rem !important; + } + .dark-mode .px-xxl-4 { + padding-right: 1.5rem !important; + padding-left: 1.5rem !important; + } + .dark-mode .px-xxl-5 { + padding-right: 3rem !important; + padding-left: 3rem !important; + } + .dark-mode .py-xxl-0 { + padding-top: 0 !important; + padding-bottom: 0 !important; + } + .dark-mode .py-xxl-1 { + padding-top: 0.25rem !important; + padding-bottom: 0.25rem !important; + } + .dark-mode .py-xxl-2 { + padding-top: 0.5rem !important; + padding-bottom: 0.5rem !important; + } + .dark-mode .py-xxl-3 { + padding-top: 1rem !important; + padding-bottom: 1rem !important; + } + .dark-mode .py-xxl-4 { + padding-top: 1.5rem !important; + padding-bottom: 1.5rem !important; + } + .dark-mode .py-xxl-5 { + padding-top: 3rem !important; + padding-bottom: 3rem !important; + } + .dark-mode .pt-xxl-0 { + padding-top: 0 !important; + } + .dark-mode .pt-xxl-1 { + padding-top: 0.25rem !important; + } + .dark-mode .pt-xxl-2 { + padding-top: 0.5rem !important; + } + .dark-mode .pt-xxl-3 { + padding-top: 1rem !important; + } + .dark-mode .pt-xxl-4 { + padding-top: 1.5rem !important; + } + .dark-mode .pt-xxl-5 { + padding-top: 3rem !important; + } + .dark-mode .pe-xxl-0 { + padding-right: 0 !important; + } + .dark-mode .pe-xxl-1 { + padding-right: 0.25rem !important; + } + .dark-mode .pe-xxl-2 { + padding-right: 0.5rem !important; + } + .dark-mode .pe-xxl-3 { + padding-right: 1rem !important; + } + .dark-mode .pe-xxl-4 { + padding-right: 1.5rem !important; + } + .dark-mode .pe-xxl-5 { + padding-right: 3rem !important; + } + .dark-mode .pb-xxl-0 { + padding-bottom: 0 !important; + } + .dark-mode .pb-xxl-1 { + padding-bottom: 0.25rem !important; + } + .dark-mode .pb-xxl-2 { + padding-bottom: 0.5rem !important; + } + .dark-mode .pb-xxl-3 { + padding-bottom: 1rem !important; + } + .dark-mode .pb-xxl-4 { + padding-bottom: 1.5rem !important; + } + .dark-mode .pb-xxl-5 { + padding-bottom: 3rem !important; + } + .dark-mode .ps-xxl-0 { + padding-left: 0 !important; + } + .dark-mode .ps-xxl-1 { + padding-left: 0.25rem !important; + } + .dark-mode .ps-xxl-2 { + padding-left: 0.5rem !important; + } + .dark-mode .ps-xxl-3 { + padding-left: 1rem !important; + } + .dark-mode .ps-xxl-4 { + padding-left: 1.5rem !important; + } + .dark-mode .ps-xxl-5 { + padding-left: 3rem !important; + } + .dark-mode .text-xxl-start { + text-align: left !important; + } + .dark-mode .text-xxl-end { + text-align: right !important; + } + .dark-mode .text-xxl-center { + text-align: center !important; + } +} +@media (min-width: 1200px) { + .dark-mode .fs-1 { + font-size: 2.5rem !important; + } + .dark-mode .fs-2 { + font-size: 2rem !important; + } + .dark-mode .fs-3 { + font-size: 1.75rem !important; + } + .dark-mode .fs-4 { + font-size: 1.5rem !important; + } +} +@media print { + .dark-mode .d-print-inline { + display: inline !important; + } + .dark-mode .d-print-inline-block { + display: inline-block !important; + } + .dark-mode .d-print-block { + display: block !important; + } + .dark-mode .d-print-grid { + display: grid !important; + } + .dark-mode .d-print-table { + display: table !important; + } + .dark-mode .d-print-table-row { + display: table-row !important; + } + .dark-mode .d-print-table-cell { + display: table-cell !important; + } + .dark-mode .d-print-flex { + display: flex !important; + } + .dark-mode .d-print-inline-flex { + display: inline-flex !important; + } + .dark-mode .d-print-none { + display: none !important; + } +} + +/*# sourceMappingURL=custom.css.map */ diff --git a/src/main/resources/static/scss/custom.css.map b/src/main/resources/static/scss/custom.css.map new file mode 100644 index 00000000..7b6d97b5 --- /dev/null +++ b/src/main/resources/static/scss/custom.css.map @@ -0,0 +1 @@ +{"version":3,"sourceRoot":"","sources":["custom.scss","../../../../../node_modules/bootstrap/scss/bootstrap.scss","../../../../../node_modules/bootstrap/scss/_root.scss","../../../../../node_modules/bootstrap/scss/_reboot.scss","../../../../../node_modules/bootstrap/scss/vendor/_rfs.scss","../../../../../node_modules/bootstrap/scss/_variables.scss","../../../../../node_modules/bootstrap/scss/mixins/_border-radius.scss","../../../../../node_modules/bootstrap/scss/_type.scss","../../../../../node_modules/bootstrap/scss/mixins/_lists.scss","../../../../../node_modules/bootstrap/scss/_images.scss","../../../../../node_modules/bootstrap/scss/mixins/_image.scss","../../../../../node_modules/bootstrap/scss/_containers.scss","../../../../../node_modules/bootstrap/scss/mixins/_container.scss","../../../../../node_modules/bootstrap/scss/mixins/_breakpoints.scss","../../../../../node_modules/bootstrap/scss/_grid.scss","../../../../../node_modules/bootstrap/scss/mixins/_grid.scss","../../../../../node_modules/bootstrap/scss/_tables.scss","../../../../../node_modules/bootstrap/scss/mixins/_table-variants.scss","../../../../../node_modules/bootstrap/scss/forms/_labels.scss","../../../../../node_modules/bootstrap/scss/forms/_form-text.scss","../../../../../node_modules/bootstrap/scss/forms/_form-control.scss","../../../../../node_modules/bootstrap/scss/mixins/_transition.scss","../../../../../node_modules/bootstrap/scss/mixins/_gradients.scss","../../../../../node_modules/bootstrap/scss/forms/_form-select.scss","../../../../../node_modules/bootstrap/scss/forms/_form-check.scss","../../../../../node_modules/bootstrap/scss/forms/_form-range.scss","../../../../../node_modules/bootstrap/scss/forms/_floating-labels.scss","../../../../../node_modules/bootstrap/scss/forms/_input-group.scss","../../../../../node_modules/bootstrap/scss/mixins/_forms.scss","../../../../../node_modules/bootstrap/scss/_buttons.scss","../../../../../node_modules/bootstrap/scss/mixins/_buttons.scss","../../../../../node_modules/bootstrap/scss/_transitions.scss","../../../../../node_modules/bootstrap/scss/_dropdown.scss","../../../../../node_modules/bootstrap/scss/mixins/_caret.scss","../../../../../node_modules/bootstrap/scss/_button-group.scss","../../../../../node_modules/bootstrap/scss/_nav.scss","../../../../../node_modules/bootstrap/scss/_navbar.scss","../../../../../node_modules/bootstrap/scss/_card.scss","../../../../../node_modules/bootstrap/scss/_accordion.scss","../../../../../node_modules/bootstrap/scss/_breadcrumb.scss","../../../../../node_modules/bootstrap/scss/_pagination.scss","../../../../../node_modules/bootstrap/scss/mixins/_pagination.scss","../../../../../node_modules/bootstrap/scss/_badge.scss","../../../../../node_modules/bootstrap/scss/_alert.scss","../../../../../node_modules/bootstrap/scss/mixins/_alert.scss","../../../../../node_modules/bootstrap/scss/_progress.scss","../../../../../node_modules/bootstrap/scss/_list-group.scss","../../../../../node_modules/bootstrap/scss/mixins/_list-group.scss","../../../../../node_modules/bootstrap/scss/_close.scss","../../../../../node_modules/bootstrap/scss/_toasts.scss","../../../../../node_modules/bootstrap/scss/_modal.scss","../../../../../node_modules/bootstrap/scss/mixins/_backdrop.scss","../../../../../node_modules/bootstrap/scss/_tooltip.scss","../../../../../node_modules/bootstrap/scss/mixins/_reset-text.scss","../../../../../node_modules/bootstrap/scss/_popover.scss","../../../../../node_modules/bootstrap/scss/_carousel.scss","../../../../../node_modules/bootstrap/scss/mixins/_clearfix.scss","../../../../../node_modules/bootstrap/scss/_spinners.scss","../../../../../node_modules/bootstrap/scss/_offcanvas.scss","../../../../../node_modules/bootstrap/scss/_placeholders.scss","../../../../../node_modules/bootstrap/scss/helpers/_colored-links.scss","../../../../../node_modules/bootstrap/scss/helpers/_ratio.scss","../../../../../node_modules/bootstrap/scss/helpers/_position.scss","../../../../../node_modules/bootstrap/scss/helpers/_stacks.scss","../../../../../node_modules/bootstrap/scss/helpers/_visually-hidden.scss","../../../../../node_modules/bootstrap/scss/mixins/_visually-hidden.scss","../../../../../node_modules/bootstrap/scss/helpers/_stretched-link.scss","../../../../../node_modules/bootstrap/scss/helpers/_text-truncation.scss","../../../../../node_modules/bootstrap/scss/mixins/_text-truncate.scss","../../../../../node_modules/bootstrap/scss/helpers/_vr.scss","../../../../../node_modules/bootstrap/scss/mixins/_utilities.scss","../../../../../node_modules/bootstrap/scss/utilities/_api.scss","../../../../../node_modules/bootstrap/scss/_functions.scss"],"names":[],"mappings":"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;;;AG7QN;EHsQM;EGpQJ,aF0lBkB;EEzlBlB,aF2kB0B;;AD1e1B;EGpGF;IH6QM;;;;AG7QN;EHsQM;EGpQJ,aF0lBkB;EEzlBlB,aF2kB0B;;AD1e1B;EGpGF;IH6QM;;;;AG7QN;EHsQM;EGpQJ,aF0lBkB;EEzlBlB,aF2kB0B;;AD1e1B;EGpGF;IH6QM;;;;AG7QN;EHsQM;EGpQJ,aF0lBkB;EEzlBlB,aF2kB0B;;AD1e1B;EGpGF;IH6QM;;;;AG7QN;EHsQM;EGpQJ,aF0lBkB;EEzlBlB,aF2kB0B;;AD1e1B;EGpGF;IH6QM;;;;AGvPR;ECrDE;EACA;;;ADyDF;EC1DE;EACA;;;AD4DF;EACE;;AAEA;EACE,cF8lB0B;;;AEplB9B;EHsNM,WALI;EG/MR;;;AAIF;EACE,eFgSO;EDjFH,WALI;;AGvMR;EACE;;;AAIJ;EACE;EACA,eFsRO;EDjFH,WALI;EG9LR,OFpFS;;AEsFT;EACE;;;AE9FJ;ECIE;EAGA;;;ADDF;EACE,SJs9CkC;EIr9ClC,kBT+BQ;ES9BR;EHGE;EIRF;EAGA;;;ADcF;EAEE;;;AAGF;EACE;EACA;;;AAGF;EL+PM,WALI;EKxPR,OJ1BS;;;AMRT;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;ECHA;EACA;EACA;EACA;EACA;;;ACwDE;EF5CE;IACE,WNide;;;AQtanB;EF5CE;IACE,WNide;;;AQtanB;EF5CE;IACE,WNide;;;AQtanB;EF5CE;IACE,WNide;;;AQtanB;EF5CE;IACE,WNide;;;ASherB;ECAA;EACA;EACA;EACA;EAEA;EACA;EACA;;ADJE;ECaF;EACA;EACA;EACA;EACA;EACA;;;AA+CI;EACE;;;AAGF;EApCJ;EACA;;;AAcA;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AAFF;EACE;EACA;;;AA+BE;EAhDJ;EACA;;;AAqDQ;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;AA+DM;EAhEN;EACA;;;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ACA;EACA;;AAEA;EAEE;EACA;;;AAWJ;EACE,YfguBsC;Ee/tBtC;EhBmJI,WALI;EE7QN;;AcmIF;EACE;EACA;EACA,mBf2lB0B;;AexlB5B;EACE;EACA;EACA,mBfqlB0B;;;AejlB9B;EACE,Yf8sBsC;Ee7sBtC;EhBgII,WALI;EE7QN;;AcsJF;EACE;EACA;EACA,mBf4kB0B;;AezkB5B;EACE;EACA;EACA,mBfskB0B;;;Ae9jB5B;EACE,YfqrBoC;;AelrBtC;EACE,YfkrBoC;;Ae/qBtC;EACE,Yf+qBoC;;;Ae1qBxC;EACE,Of6qBsC;Ee5qBtC;EACA,Sf4hB4B;;Ae1hB5B;EACE;;AAGF;EACE;Ed/LA;;AcmMF;EACE;EdpMA;;;AiBdJ;EACE;EACA;EACA;EAEA;EnB2RI,WALI;EmBnRR,alBkkB4B;EkBjkB5B,alBukB4B;EkBtkB5B,OlBES;EkBDT,kBvB8BQ;EuB7BR;EACA;EACA,qBlBg7BkC;EkB/6BlC,iBlBg7BkC;EkB/6BlC;EjBFE;EeHE,YEQJ;EACA;;AFLI;EEfN;IFgBQ;;;AEMN;EACE,clBs0BoC;EkBr0BpC;EAKE,YlBi7B4B;;AkB76BhC;EAEE,elBgsB0B;EkB/rB1B;;AAGF;EAEE,kBlBpCO;;AkByCT;EACE;EACA;;;AAIJ;EACE,alByrB4B;EkBxrB5B,gBlBwrB4B;EkBvrB5B,clBwrB4B;ED/cxB,WALI;EE7QN;;;AiB8CJ;EACE,alBqrB4B;EkBprB5B,gBlBorB4B;EkBnrB5B,clBorB4B;EDndxB,WALI;EE7QN;;;AkBfJ;EACE;EACA,YnBq3BwC;EmBp3BxC,cnBq3BwC;EmBp3BxC,enBq3BwC;;AmBn3BxC;EACE;EACA;;;AAIJ;EACE,OnBy2BwC;EmBx2BxC,QnBw2BwC;EmBv2BxC;EACA;EACA,kBxByBQ;EwBxBR;EACA;EACA;EACA,QnB42BwC;EmB32BxC;EACA;;AAGA;ElBXE;;AkBeF;EAEE,enBm2BsC;;AmBh2BxC;EACE,QnB01BsC;;AmBv1BxC;EACE,cnBszBoC;EmBrzBpC;EACA,YnBmsB4B;;AmBhsB9B;EACE,kBxBNM;EwBON,cxBPM;;AwBSN;EAII;;AAIJ;EAII;;AAKN;EACE,kBxB3BM;EwB4BN,cxB5BM;EwBiCJ;;AAIJ;EACE;EACA;EACA,SnBk0BuC;;AmB3zBvC;EACE,SnB0zBqC;;;AmB5yB3C;EACE,cnBqzBgC;;AmBnzBhC;EACE,OnBizB8B;EmBhzB9B;EACA;EACA;ElB9FA;EeHE,YGmGF;;AH/FE;EGyFJ;IHxFM;;;AGgGJ;EACE;;AAGF;EACE,qBnBgzB4B;EmB3yB1B;;;AAMR;EACE;EACA,cnBmxBgC;;;AmBhxBlC;EACE;EACA;EACA;;AAIE;EACE;EACA;EACA,SnBqoBwB;;;AoBnxB9B;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIA;EAA0B,YpB89Ba;;AoB79BvC;EAA0B,YpB69Ba;;AoB19BzC;EACE;;AAGF;EACE,OpB+8BuC;EoB98BvC,QpB88BuC;EoB78BvC;EHzBF,kBtBwCQ;EyBbN,QpB88BuC;EC19BvC;EeHE,YIkBF;EACA;;AJfE;EIMJ;IJLM;;;AIgBJ;EHjCF,kBjB8+ByC;;AoBx8BzC;EACE,OpBw7B8B;EoBv7B9B,QpBw7B8B;EoBv7B9B;EACA,QpBu7B8B;EoBt7B9B,kBpBpCO;EoBqCP;EnB7BA;;AmBkCF;EACE,OpBo7BuC;EoBn7BvC,QpBm7BuC;EiBt+BzC,kBtBwCQ;EyBaN,QpBo7BuC;EC19BvC;EeHE,YI4CF;EACA;;AJzCE;EIiCJ;IJhCM;;;AI0CJ;EH3DF,kBjB8+ByC;;AoB96BzC;EACE,OpB85B8B;EoB75B9B,QpB85B8B;EoB75B9B;EACA,QpB65B8B;EoB55B9B,kBpB9DO;EoB+DP;EnBvDA;;AmB4DF;EACE;;AAEA;EACE,kBpBtEK;;AoByEP;EACE,kBpB1EK;;;AqBbX;EACE;;AAEA;AAAA;EAEE,QrBy/B8B;EqBx/B9B,arBy/B8B;;AqBt/BhC;EACE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;ELDE,YKEF;;ALEE;EKXJ;ILYM;;;AKCN;EACE;;AAEA;EACE;;AAGF;EAEE,arBm+B4B;EqBl+B5B,gBrBm+B4B;;AqBh+B9B;EACE,arB89B4B;E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Bb;ECvCA,OAXQ;ERLR,kBjB4Ea;EyB1Db,czB0Da;;AyBvDb;EACE,OAdY;ERRd,kBQMmB;EAkBjB,cAjBa;;AAoBf;EAEE,OArBY;ERRd,kBQMmB;EAyBjB,cAxBa;EA6BX;;AAIJ;EAKE,OAlCa;EAmCb,kBArCkB;EAwClB,cAvCc;;AAyCd;EAKI;;AAKN;EAEE,OAjDe;EAkDf,kBzBYW;EyBTX,czBSW;;;AwBfb;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;ADvDF;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;ADvDF;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;ADvDF;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;ADvDF;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;ADvDF;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;ADvDF;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;ADvDF;ECmBA,OzBJa;EyBKb,czBLa;;AyBOb;EACE,OATY;EAUZ,kBzBTW;EyBUX,czBVW;;AyBab;EAEE;;AAGF;EAKE,OArBa;EAsBb,kBzBxBW;EyByBX,czBzBW;;AyB2BX;EAKI;;AAKN;EAEE,OzBvCW;EyBwCX;;;AD3CJ;EACE,axBigB4B;EwBhgB5B,O7BnCQ;E6BoCR,iBxB6WwC;;AwB3WxC;EACE,OxB4WsC;;AwBpWxC;EAEE,OxB/EO;;;AwB0FX;ECuBE;E1BsKI,WALI;EE7QN;;;AuByFJ;ECmBE;E1BsKI,WALI;EE7QN;;;AyBnBJ;EVgBM,YUfJ;;AVmBI;EUpBN;IVqBQ;;;AUlBN;EACE;;;AAMF;EACE;;;AAIJ;EACE;EACA;EVDI,YUEJ;;AVEI;EULN;IVMQ;;;AUDN;EACE;EACA;EVNE,YUOF;;AVHE;EUAJ;IVCM;;;;AWpBR;AAAA;AAAA;AAAA;EAIE;;;AAGF;EACE;;ACqBE;EACE;EACA,a5BqgBwB;E4BpgBxB,gB5BmgBwB;E4BlgBxB;EAhCJ;EACA;EACA;EACA;;AAqDE;EACE;;;AD3CN;EACE;EACA,S3ByhCkC;E2BxhClC;EACA,W3B+mCkC;E2B9mClC;EACA;E5B+QI,WALI;E4BxQR,O3BPS;E2BQT;EACA;EACA,kB3BnBS;E2BoBT;EACA;E1BVE;;A0BcF;EACE;EACA;EACA,Y3BkmCgC;;;A2BtlChC;EACE;;AAEA;EACE;EACA;;;AAIJ;EACE;;AAEA;EACE;EACA;;;AnBCJ;EmBfA;IACE;;EAEA;IACE;IACA;;;EAIJ;IACE;;EAEA;IACE;IACA;;;AnBCJ;EmBfA;IACE;;EAEA;IACE;IACA;;;EAIJ;IACE;;EAEA;IACE;IACA;;;AnBCJ;EmBfA;IACE;;EAEA;IACE;IACA;;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ACE;EACA;EACA;EACA,elCw/CkC;EkCt/ClC;;;AAOA;EACE,clC6+CgC;;AkC3+ChC;EACE;EACA,elCy+C8B;EkCx+C9B,OlCLK;EkCML;;AAIJ;EACE,OlCXO;;;AmCdX;EACE;EhCGA;EACA;;;AgCAF;EACE;EACA;EACA,OxCoCQ;EwCnCR;EACA,kBnCFS;EmCGT;EnBKI,YmBJJ;;AnBQI;EmBfN;InBgBQ;;;AmBPN;EACE;EACA,OnC+asC;EmC7atC,kBnCRO;EmCSP,cnCRO;;AmCWT;EACE;EACA,OnCuasC;EmCtatC,kBnCfO;EmCgBP,SnC4qCgC;EmC3qChC,YnCstB4B;;;AmCjtB9B;EACE,anC+pCgC;;AmC5pClC;EACE;EACA,OnC9BO;EiBJT,kBtBwCQ;EwCJN,cxCIM;;AwCDR;EACE,OnC9BO;EmC+BP;EACA,kBnCtCO;EmCuCP,cnCpCO;;;AoCPT;EACE;;;AAOI;EnCqCJ;EACA;;AmChCI;EnCiBJ;EACA;;;AmChCF;EACE;ErCgSE,WALI;;AqCpRF;EnCqCJ;EACA;;AmChCI;EnCiBJ;EACA;;;AmChCF;EACE;ErCgSE,WALI;;AqCpRF;EnCqCJ;EACA;;AmChCI;EnCiBJ;EACA;;;AoC/BJ;EACE;EACA;EtC8RI,WALI;EsCvRR,arCukB4B;EqCtkB5B;EACA,OrCHS;EqCIT;EACA;EACA;EpCKE;;AoCAF;EACE;;;AAKJ;EACE;EACA;;;ACvBF;EACE;EACA;EACA,etCk6C8B;EsCj6C9B;ErCWE;;;AqCNJ;EAEE;;;AAIF;EACE,atC4jB4B;;;AsCpjB9B;EACE,etCm5C8B;;AsCh5C9B;EACE;EACA;EACA;EACA;EACA;;;AAeF;EClDA,OD8Cc;ErB5Cd,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;AD6CF;EClDA,OD8Cc;ErB5Cd,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;AD6CF;EClDA,OD8Cc;ErB5Cd,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;AD6CF;EClDA,ODgDgB;ErB9ChB,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;AD6CF;EClDA,ODgDgB;ErB9ChB,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;AD6CF;EClDA,OD8Cc;ErB5Cd,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;AD6CF;EClDA,ODgDgB;ErB9ChB,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;AD6CF;EClDA,OD8Cc;ErB5Cd,kBqB0CmB;EC1CnB,cD2Ce;;ACzCf;EACE;;;ACHF;EACE;IAAK,uBxCk7C2B;;;AwC76CpC;EACE;EACA,QxC26CkC;EwC16ClC;EzCwRI,WALI;EyCjRR,kBxCLS;ECSP;;;AuCCJ;EACE;EACA;EACA;EACA;EACA,OxCjBS;EwCkBT;EACA;EACA,kB7CgBQ;EqB5BJ,YwBaJ;;AxBTI;EwBAN;IxBCQ;;;;AwBWR;EvBYE;EuBVA;;;AAIA;EACE;;AAGE;EAJJ;IAKM;;;;ACvCR;EACE;EACA;EAGA;EACA;ExCSE;;;AwCLJ;EACE;EACA;;AAEA;EAEE;EACA;;;AAUJ;EACE;EACA,OzClBS;EyCmBT;;AAGA;EAEE;EACA,OzCzBO;EyC0BP;EACA,kBzCjCO;;AyCoCT;EACE,OzC7BO;EyC8BP,kBzCrCO;;;AyC8CX;EACE;EACA;EACA;EACA,OzC3CS;EyC4CT;EACA,kBzCtDS;EyCuDT;;AAEA;ExCrCE;EACA;;AwCwCF;ExC3BE;EACA;;AwC8BF;EAEE,OzC7DO;EyC8DP;EACA,kBzCrEO;;AyCyET;EACE;EACA,OzC3EO;EyC4EP,kB9CxCM;E8CyCN,c9CzCM;;A8C4CR;EACE;;AAEA;EACE;EACA,kBzCwawB;;;AyC1Z1B;EACE;;AAGE;ExCrCJ;EAZA;;AwCsDI;ExCtDJ;EAYA;;AwC+CI;EACE;;AAGF;EACE,kBzCuYoB;EyCtYpB;;AAEA;EACE;EACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AyCpX9B;ExC9HI;;AwCiIF;EACE;;AAEA;EACE;;;ACpJJ;EACE,ODiKyB;EChKzB,kBD+JsB;;AC5JpB;EAEE,OD2JqB;EC1JrB;;AAGF;EACE,O1CRG;E0CSH,kBDqJqB;ECpJrB,cDoJqB;;;AClK3B;EACE,ODiKyB;EChKzB,kBD+JsB;;AC5JpB;EAEE,OD2JqB;EC1JrB;;AAGF;EACE,O1CRG;E0CSH,kBDqJqB;ECpJrB,cDoJqB;;;AClK3B;EACE,ODiKyB;EChKzB,kBD+JsB;;AC5JpB;EAEE,OD2JqB;EC1JrB;;AAGF;EACE,O1CRG;E0CSH,kBDqJqB;ECpJrB,cDoJqB;;;AClK3B;EACE,ODmK2B;EClK3B,kBD+JsB;;AC5JpB;EAEE,OD6JuB;EC5JvB;;AAGF;EACE,O1CRG;E0CSH,kBDuJuB;ECtJvB,cDsJuB;;;ACpK7B;EACE,ODmK2B;EClK3B,kBD+JsB;;AC5JpB;EAEE,OD6JuB;EC5JvB;;AAGF;EACE,O1CRG;E0CSH,kBDuJuB;ECtJvB,cDsJuB;;;ACpK7B;EACE,ODiKyB;EChKzB,kBD+JsB;;AC5JpB;EAEE,OD2JqB;EC1JrB;;AAGF;EACE,O1CRG;E0CSH,kBDqJqB;ECpJrB,cDoJqB;;;AClK3B;EACE,ODmK2B;EClK3B,kBD+JsB;;AC5JpB;EAEE,OD6JuB;EC5JvB;;AAGF;EACE,O1CRG;E0CS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A;EACA,kB/CtBK;;;A+C2BX;EACE;;AAEA;EACE;EACA,O/CwvCgC;E+CvvChC,Q/CsvCgC;;A+CpvChC;EACE;EACA;EACA,oB/CtCK;;;A+C2CX;EACE;;AAEA;EACE;;AAEA;EACE;EACA;EACA,qB/CpDK;;;A+CyDX;EACE;;AAEA;EACE;EACA,O/C0tCgC;E+CztChC,Q/CwtCgC;;A+CttChC;EACE;EACA;EACA,mB/CpEK;;;A+CyFX;EACE,W/CorCkC;E+CnrClC;EACA,O/CtGS;E+CuGT;EACA,kB/C9FS;ECCP;;;AgDnBJ;EACE;EACA;EACA;EACA,SjD8iCkC;EiD7iClC;EACA,WjDwzCkC;EgD7zClC,ahDkkB4B;EgDhkB5B;EACA,ahD2kB4B;EgD1kB5B,ahDglB4B;EgD/kB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EjDsRI,WALI;EkDpRR;EACA,kBjDLS;EiDMT;EACA;EhDIE;;AgDAF;EACE;EACA;EACA,OjDwzCgC;EiDvzChC,QjDwzCgC;;AiDtzChC;EAEE;EACA;EACA;EACA;EACA;;;AAMJ;EACE;;AAEA;EACE;EACA;EACA,kBjDuyC8B;;AiDpyChC;EACE,QjDsdwB;EiDrdxB;EACA,kBjDzCK;;;AiD+CT;EACE;EACA,OjDsxCgC;EiDrxChC,QjDoxCgC;;AiDlxChC;EACE;EACA;EACA,oBjDmxC8B;;AiDhxChC;EACE,MjDkcwB;EiDjcxB;EACA,oBjD7DK;;;AiDmET;EACE;;AAEA;EACE;EACA;EACA,qBjDiwC8B;;AiD9vChC;EACE,KjDgbwB;EiD/axB;EACA,qBjD/EK;;AiDoFT;EACE;EACA;EACA;EACA;EACA,OjD6uCgC;EiD5uChC;EACA;EACA;;;AAKF;EACE;EACA,OjDouCgC;EiDnuChC,QjDkuCgC;;AiDhuChC;EACE;EACA;EACA,mBjDiuC8B;;AiD9tChC;EACE,OjDgZwB;EiD/YxB;EACA,mBjD/GK;;;AiDoIX;EACE;EACA;ElDuJI,WALI;EkD/IR,kBjDorCkC;EiDnrClC;EhDtHE;EACA;;AgDwHF;EACE;;;AAIJ;EA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OI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AArBJ;AAcA;EAOI;EAAA;;;AAcJ;AArBA;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAPJ;EAIQ;EAGJ;;;AAjBJ;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AADF;EACE;;;AASF;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;EAAA;;;AAPJ;EAOI;;;AAPJ;EAOI;;;AzDPR;EyDAI;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;IAAA;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EAPJ;IAOI;;;EA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1B;ECtEE,YDuEF;;ACnEE;EDuDJ;ICtDM;;;ADqEN;EACE,kBf+5B8B;;Ae55BhC;EACE;EACA;EACA,mBfuoB0B;EetoB1B,OfjFO;EiBbT,kBjBMS;EiBHP;EF6FA;EACA;EACA;EACA;EACA,yBf6Z0B;Ee5Z1B;ECzFE,YD0FF;;ACtFE;ED0EJ;ICzEM;;;ADwFN;EACE,kBf44B8B;;Aen4BlC;EACE;EACA;EACA;EACA;EACA,afyd4B;Eexd5B,Of5GS;Ee6GT;EACA;EACA;;AAEA;EAEE;EACA;;AAWJ;EACE,YfguBsC;Ee/tBtC;EhBmJI,WALI;EE7QN;;AcmIF;EACE;EACA;EACA,mBf2lB0B;;AexlB5B;EACE;EACA;EACA,mBfqlB0B;;AejlB9B;EACE,Yf8sBsC;Ee7sBtC;EhBgII,WALI;EE7QN;;AcsJF;EACE;EACA;EACA,mBf4kB0B;;AezkB5B;EACE;EACA;EACA,mBfskB0B;;Ae9jB5B;EACE,YfqrBoC;;AelrBtC;EACE,YfkrBoC;;Ae/qBtC;EACE,Yf+qBoC;;Ae1qBxC;EACE,Of6qBsC;Ee5qBtC;EACA,Sf4hB4B;;Ae1hB5B;EACE;;AAGF;EACE;Ed/LA;;AcmMF;EACE;EdpMA;;AiBdJ;EACE;EACA;EACA;EAEA;EnB2RI,WALI;EmBnRR,alBkkB4B;EkBjkB5B,alBukB4B;EkBtkB5B,OlBES;EkBDT,kBvB8BQ;EuB7BR;EACA;EACA,qBlBg7BkC;EkB/6BlC,iBlBg7BkC;EkB/6BlC;EjBFE;EeHE,YEQJ;EACA;;AFLI;EEfN;IFgBQ;;;AEMN;EACE,clBs0BoC;EkBr0BpC;EAKE,YlBi7B4B;;AkB76BhC;EAEE,elBgsB0B;EkB/rB1B;;AAGF;EAEE,kBlBpCO;;AkByCT;EACE;EACA;;AAIJ;EACE,alByrB4B;EkBxrB5B,gBlBwrB4B;EkBvrB5B,clBwrB4B;ED/cxB,WALI;EE7QN;;AiB8CJ;EACE,alBqrB4B;EkBprB5B,gBlBorB4B;EkBnrB5B,clBorB4B;EDndxB,WALI;EE7QN;;AkBfJ;EACE;EACA,YnBq3BwC;EmBp3BxC,cnBq3BwC;EmBp3BxC,enBq3BwC;;AmBn3BxC;EACE;EACA;;AAIJ;EACE,OnBy2BwC;EmBx2BxC,QnBw2BwC;EmBv2BxC;EACA;EACA,kBxByBQ;EwBxBR;EACA;EACA;EACA,QnB42BwC;EmB32BxC;EACA;;AAGA;ElBXE;;AkBeF;EAEE,enBm2BsC;;AmBh2BxC;EACE,QnB01BsC;;AmBv1BxC;EACE,cnBszBoC;EmBrzBpC;EACA,YnBmsB4B;;AmBhsB9B;EACE,kBxBNM;EwBON,cxBPM;;AwBSN;EAEI;;AAMJ;EAEI;;AAON;EACE,kBxB3BM;EwB4BN,cxB5BM;EwB+BJ;;AAMJ;EACE;EACA;EACA,SnBk0BuC;;AmB3zBvC;EACE,SnB0zBqC;;AmB5yB3C;EACE,cnBqzBgC;;AmBnzBhC;EACE,OnBizB8B;EmBhzB9B;EACA;EACA;ElB9FA;EeHE,YGmGF;;AH/FE;EGyFJ;IHxFM;;;AGgGJ;EACE;;AAGF;EACE,qBnBgzB4B;EmB7yB1B;;AAQR;EACE;EACA,cnBmxBgC;;AmBhxBlC;EACE;EACA;EACA;;AAIE;EACE;EACA;EACA,SnBqoBwB;;AoBnxB9B;EACE;EACA;EACA;EACA;EACA;;AAEA;EACE;;AAIA;EAA0B,YpB89Ba;;AoB79BvC;EAA0B,YpB69Ba;;AoB19BzC;EACE;;AAGF;EACE,OpB+8BuC;EoB98BvC,QpB88BuC;EoB78BvC;EHzBF,kBtBwCQ;EsBrCN;EGwBA,QpB88BuC;EC19BvC;EeHE,YIkBF;EACA;;AJfE;EIMJ;IJLM;;;AIgBJ;EHjCF,kBjB8+ByC;EiB3+BvC;;AGmCF;EACE,OpBw7B8B;EoBv7B9B,QpBw7B8B;EoBv7B9B;EACA,QpBu7B8B;EoBt7B9B,kBpBpCO;EoBqCP;EnB7BA;;AmBkCF;EACE,OpBo7BuC;EoBn7BvC,QpBm7BuC;EiBt+BzC,kBtBwCQ;EsBrCN;EGkDA,QpBo7BuC;EC19BvC;EeHE,YI4CF;EACA;;AJzCE;EIiCJ;IJhCM;;;AI0CJ;EH3DF,kBjB8+ByC;EiB3+BvC;;AG6DF;EACE,OpB85B8B;EoB75B9B,QpB85B8B;EoB75B9B;EACA,QpB65B8B;EoB55B9B,kBpB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CA,O0C0Je;ElD1Kf,kBQSoB;ERNlB;EQeF,c9B8Ce;;A8B3Cf;EACE,OAdY;ERRd,kBQMmB;ERHjB;EQqBA,cAjBa;;AAoBf;EAEE,OArBY;ERRd,kBQMmB;ERHjB;EQ4BA,cAxBa;EA6BX;;AAIJ;EAKE,OAlCa;EAmCb,kBArCkB;EAuClB;EACA,cAvCc;;AAyCd;EAKI;;AAKN;EAEE,OAjDe;EAkDf,kBAvDkB;EAyDlB;EACA,c9BHa;;A6BHf;ECmBA,O0C0Fe;E1CzFf,c0CyFe;;A1CvFf;EACE,OATY;EAUZ,kB0CqFa;E1CpFb,c0CoFa;;A1CjFf;EAEE;;AAGF;EAKE,OArBa;EAsBb,kB0CsEa;E1CrEb,c0CqEa;;A1CnEb;EAKI;;AAKN;EAEE,O0CuDa;E1CtDb;;ADvDF;ECmBA,O0C0Fe;E1CzFf,c0CyFe;;A1CvFf;EACE,OATY;EAUZ,kB0CqFa;E1CpFb,c0CoFa;;A1CjFf;EAEE;;AAGF;EAKE,OArBa;EAsBb,kB0CsEa;E1CrEb,c0CqEa;;A1CnEb;EAKI;;AAKN;EAEE,O0CuDa;E1CtDb;;AD3CJ;EACE,axBigB4B;EwBhgB5B,O7BnCQ;E6BoCR,iBxB6WwC;;AwB3WxC;EACE,OxB4WsC;;AwBpWxC;EAEE,OxB/EO;;AwB0FX;ECuBE;E1BsKI,WALI;EE7QN;;AuByFJ;ECmBE;E1BsKI,WALI;EE7QN;;AyBnBJ;EVgBM,YUfJ;;AVmBI;EUpBN;IVqBQ;;;AUlBN;EACE;;AAMF;EACE;;AAIJ;EACE;EACA;EVDI,YUEJ;;AVEI;EULN;IVMQ;;;AUDN;EACE;EACA;EVNE,YUOF;;AVHE;EUAJ;IVCM;;;AWpBR;AAAA;AAAA;AAAA;EAIE;;AAGF;EACE;;ACqBE;EACE;EACA,a5BqgBwB;E4BpgBxB,gB5BmgBwB;E4BlgBxB;EAhCJ;EACA;EACA;EACA;;AAqDE;EACE;;AD3CN;EACE;EACA,S3ByhCkC;E2BxhClC;EACA,W3B+mCkC;E2B9mClC;EACA;E5B+QI,WALI;E4BxQR,O3BPS;E2BQT;EACA;EACA,kB3BnBS;E2BoBT;EACA;E1BVE;;A0BcF;EACE;EACA;EACA,Y3BkmCgC;;A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CA;;AgC0CF;EACE;;AAIF;EhClCE;EACA;;AgCqCE;EhCtCF;EACA;;AgC0CA;EhC3CA;EACA;;AgCgDJ;EACE;;AASA;EACE;;AAGF;EACE;EACA;EhCxFA;;AgC2FA;EAAgB;;AAChB;EAAe;;AAEf;EhC9FA;;AiCnBJ;EACE;EACA;EACA;EACA,elCw/CkC;EkCt/ClC;;AAOA;EACE,clC6+CgC;;AkC3+ChC;EACE;EACA,elCy+C8B;EkCx+C9B,OlCLK;EkCML;;AAIJ;EACE,OlCXO;;AmCdX;EACE;EhCGA;EACA;;AgCAF;EACE;EACA;EACA,OxCoCQ;EwCnCR;EACA,kBnCFS;EmCGT;EnBKI,YmBJJ;;AnBQI;EmBfN;InBgBQ;;;AmBPN;EACE;EACA,OnC+asC;EmC7atC,kBnCRO;EmCSP,cnCRO;;AmCWT;EACE;EACA,OnCuasC;EmCtatC,kBnCfO;EmCgBP,SnC4qCgC;EmC3qChC,YnCstB4B;;AmCjtB9B;EACE,anC+pCgC;;AmC5pClC;EACE;EACA,OnC9BO;EiBJT,kBtBwCQ;EsBrCN;EkBiCA,cxCIM;;AwCDR;EACE,OnC9BO;EmC+BP;EACA,kBnCtCO;EmCuCP,cnCpCO;;AoCPT;EACE;;AAOI;EnCqCJ;EACA;;AmChCI;EnCiBJ;EACA;;AmChCF;EACE;ErCgSE,WALI;;AqCpRF;EnCqCJ;EACA;;AmChCI;EnCiBJ;EACA;;AmChCF;EACE;ErCgSE,WALI;;AqCpRF;EnCqCJ;EACA;;AmChCI;EnCiBJ;EACA;;AoC/BJ;EACE;EACA;EtC8RI,WALI;EsCvRR,arCukB4B;EqCtkB5B;EACA,OrCHS;EqCIT;EACA;EACA;EpCKE;EgBZA;;AoBYF;EACE;;AAKJ;EACE;EACA;;ACvBF;EACE;EACA;EACA,etCk6C8B;EsCj6C9B;ErCWE;;AqCNJ;EAEE;;AAIF;EACE,atC4jB4B;;AsCpjB9B;EACE,etCm5C8B;;AsCh5C9B;EACE;EACA;EACA;EACA;EACA;;AAeF;EClDA,OD8Cc;ErB5Cd,kBqB0CmB;ErBvCjB;EsBHF,cD2Ce;;ACzCf;EACE;;AD6CF;EClDA,OD8Cc;ErB5Cd,kBqB0CmB;ErBvCjB;EsBHF,cD2Ce;;ACzCf;EACE;;ACHF;EACE;IAAK,uBxCk7C2B;;;AwC76CpC;EACE;EACA,QxC26CkC;EwC16ClC;EzCwRI,WALI;EyCjRR,kBxCLS;ECSP;;AuCCJ;EACE;EACA;EACA;EACA;EACA,OxCjBS;EwCkBT;EACA;EACA,kB7CgBQ;EqB5BJ,YwBaJ;;AxBTI;EwBAN;IxBCQ;;;AwBWR;EvBYE;EuBVA;;AAIA;EACE;;AAGE;EAJJ;IAKM;;;ACvCR;EACE;EACA;EAGA;EACA;ExCSE;;AwCLJ;EACE;EACA;;AAEA;EAEE;EACA;;AAUJ;EACE;EACA,OzClBS;EyCmBT;;AAGA;EAEE;EACA,OzCzBO;EyC0BP;EACA,kBzCjCO;;AyCoCT;EACE,OzC7BO;EyC8BP,kBzCrCO;;AyC8CX;EACE;EACA;EACA;EACA,OzC3CS;EyC4CT;EACA,kBzCtDS;EyCuDT;;AAEA;ExCrCE;EACA;;AwCwCF;ExC3BE;EACA;;AwC8BF;EAEE,OzC7DO;EyC8DP;EACA,kBzCrEO;;AyCyET;EACE;EACA,OzC3EO;EyC4EP,kB9CxCM;E8CyCN,c9CzCM;;A8C4CR;EACE;;AAEA;EACE;EACA,kBzCwawB;;AyC1Z1B;EACE;;AAGE;ExCrCJ;EAZA;;AwCsDI;ExCtDJ;EAYA;;AwC+CI;EACE;;AAGF;EACE,kBzCuYoB;EyCtYpB;;AAEA;EACE;EACA,mBzCkYkB;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AQtc1B;EiC4CA;IACE;;EAGE;IxCrCJ;IAZA;;EwCsDI;IxCtDJ;IAYA;;EwC+CI;IACE;;EAGF;IACE,kBzCuYoB;IyCtYpB;;EAEA;IACE;IACA,mBzCkYkB;;;AyCpX9B;ExC9HI;;AwCiIF;EACE;;AAEA;EACE;;ACpJJ;EACE,ODiKyB;EChKzB,kBD+JsB;;AC5JpB;EAEE,OD2JqB;EC1JrB;;AAGF;EACE,O1CRG;E0CSH,kBDoJkB;ECnJlB,cDmJkB;;ACjKxB;EACE,ODiKyB;EChKzB,kBD+JsB;;AC5JpB;EAEE,OD2JqB;EC1JrB;;AAGF;EACE,O1CRG;E0CSH,kBDoJkB;ECnJlB,cDmJkB;;AEhK1B;EACE;EACA,O3CqjD2B;E2CpjD3B,Q3CojD2B;E2CnjD3B;EACA,O3CQS;E2CPT;EACA;E1COE;E0CLF,S3CqjD2B;;A2CljD3B;EACE;EACA;EACA,S3CgjDyB;;A2C7iD3B;EACE;EACA,Y3CwtB4B;E2CvtB5B,S3C2iDyB;;A2CxiD3B;EAEE;EACA;EACA,S3CqiDyB;;A2CjiD7B;EACE,Q3CiiD2B;;A4CvkD7B;EACE,O5Cw1CkC;E4Cv1ClC;E7CmSI,WALI;E6C3RR;EACA,kB5Cw1CkC;E4Cv1ClC;EACA;EACA,Y5CghB4B;ECtgB1B;;A2CPF;EACE;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAEA;EACE,e5CkekB;;A4C9dtB;EACE;EACA;EACA;EACA,O5CrBS;E4CsBT,kB5Ck0CkC;E4Cj0ClC;EACA;E3CVE;EACA;;A2CYF;EACE;EACA,a5C+yCgC;;A4C3yCpC;EACE,S5C0yCkC;E4CzyClC;;AC1CF;EACE;EACA;EACA;EACA,S7CsiCkC;E6CriClC;EACA;EACA;EACA;EACA;EAGA;;AAOF;EACE;EACA;EACA,Q7Ci2CkC;E6C/1ClC;;AAGA;E7BlBI,Y6BmBF;EACA,W7Cu3CgC;;AgBv4C9B;E6BcJ;I7BbM;;;A6BiBN;EACE,W7Cq3CgC;;A6Cj3ClC;EACE,W7Ck3CgC;;A6C92CpC;EACE;;AAEA;EACE;EACA;;AAGF;EACE;;AAIJ;EACE;EACA;EACA;;AAIF;EACE;EACA;EACA;EACA;EAGA;EACA,kB7CpES;E6CqET;EACA;E5C3DE;E4C+DF;;AAIF;ECpFE;EACA;EACA;EACA,S9C2iCkC;E8C1iClC;EACA;EACA,kB9CUS;;A8CPT;EAAS;;AACT;EAAS,S9Ci4CyB;;A6CjzCpC;EACE;EACA;EACA;EACA;EACA,S7CmzCkC;E6ClzClC;E5CtEE;EACA;;A4CwEF;EACE;EACA;;AAKJ;EACE;EACA,a7Cue4B;;A6Cle9B;EACE;EAGA;EACA,S7C8PO;;A6C1PT;EACE;EACA;EACA;EACA;EACA;EACA;EACA;E5CzFE;EACA;;A4C8FF;EACE;;ArC3EA;EqCkFF;IACE,W7CqwCgC;I6CpwChC;;EAGF;IACE;;EAGF;IACE;;EAOF;IAAY,W7CovCsB;;;AQv1ChC;EqCuGF;AAAA;IAEE,W7CgvCgC;;;AQz1ChC;EqC8GF;IAAY,W7C4uCsB;;;A6CnuChC;EACE;EACA;EACA;EACA;;AAEA;EACE;EACA;E5C3KJ;;A4C+KE;E5C/KF;;A4CmLE;EACE;;AAGF;E5CvLF;;AOyDA;EqC0GA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I5C3KJ;;E4C+KE;I5C/KF;;E4CmLE;IACE;;EAGF;I5CvLF;;;AOyDA;EqC0GA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I5C3KJ;;E4C+KE;I5C/KF;;E4CmLE;IACE;;EAGF;I5CvLF;;;AOyDA;EqC0GA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I5C3KJ;;E4C+KE;I5C/KF;;E4CmLE;IACE;;EAGF;I5CvLF;;;AOyDA;EqC0GA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I5C3KJ;;E4C+KE;I5C/KF;;E4CmLE;IACE;;EAGF;I5CvLF;;;AOyDA;EqC0GA;IACE;IACA;IACA;IACA;;EAEA;IACE;IACA;I5C3KJ;;E4C+KE;I5C/KF;;E4CmLE;IACE;;EAGF;I5CvLF;;;A8ClBJ;EACE;EACA,S/CgjCkC;E+C/iClC;EACA,Q/CkyCkC;EgDtyClC,ahDkkB4B;EgDhkB5B;EACA,ahD2kB4B;EgD1kB5B,ahDglB4B;EgD/kB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EjDsRI,WALI;EgDrRR;EACA;;AAEA;EAAS,S/CsxCyB;;A+CpxClC;EACE;EACA;EACA,O/CsxCgC;E+CrxChC,Q/CsxCgC;;A+CpxChC;EACE;EACA;EACA;EACA;;AAKN;EACE;;AAEA;EACE;;AAEA;EACE;EACA;EACA,kB/CtBK;;A+C2BX;EACE;;AAEA;EACE;EACA,O/CwvCgC;E+CvvChC,Q/CsvCgC;;A+CpvChC;EACE;EACA;EACA,oB/CtCK;;A+C2CX;EACE;;AAEA;EACE;;AAEA;EACE;EACA;EACA,qB/CpDK;;A+CyDX;EACE;;AAEA;EACE;EACA,O/C0tCgC;E+CztChC,Q/CwtCgC;;A+CttChC;EACE;EACA;EACA,mB/CpEK;;A+CyFX;EACE,W/CorCkC;E+CnrClC;EACA,O/CtGS;E+CuGT;EACA,kB/C9FS;ECCP;;AgDnBJ;EACE;EACA;EACA;EACA,SjD8iCkC;EiD7iClC;EACA,WjDwzCkC;EgD7zClC,ahDkkB4B;EgDhkB5B;EACA,ahD2kB4B;EgD1kB5B,ahDglB4B;EgD/kB5B;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EjDsRI,WALI;EkDpRR;EACA,kBjDLS;EiDMT;EACA;EhDIE;;AgDAF;EACE;EACA;EACA,OjDwzCgC;EiDvzChC,QjDwzCgC;;AiDtzChC;EAEE;EACA;EACA;EACA;EACA;;AAMJ;EACE;;AAEA;EACE;EACA;EACA,kBjDuyC8B;;AiDpyChC;EACE,QjDsdwB;EiDrdxB;EACA,kBjDzCK;;AiD+CT;EACE;EACA,OjDsxCgC;EiDrxChC,QjDoxCgC;;AiDlxChC;EACE;EACA;EACA,oBjDmxC8B;;AiDhxChC;EACE,MjDkcwB;EiDjcxB;EACA,oBjD7DK;;AiDmET;EACE;;AAEA;EACE;EACA;EACA,qBjDiwC8B;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;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;EAAA;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAjBJ;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AASF;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAPJ;EAIQ;EAGJ;;AAjBJ;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AADF;EACE;;AASF;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;EAAA;;AAPJ;EAOI;;AAPJ;EAOI;;AzDPR;EyDAI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AzDPR;EyDAI;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;IAAA;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;ACnDZ;ED4CQ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;;AChCZ;EDyBQ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI;;EAPJ;IAOI","file":"custom.css"} \ No newline at end of file diff --git a/src/main/resources/static/scss/custom.scss b/src/main/resources/static/scss/custom.scss new file mode 100644 index 00000000..fdfae5ef --- /dev/null +++ b/src/main/resources/static/scss/custom.scss @@ -0,0 +1,85 @@ +/* For design in bootstrap look at: + Colors and Text: https://getbootstrap.com/docs/5.0/utilities/colors/ + Background: https://getbootstrap.com/docs/5.0/utilities/background/ + +Key Colors +$blue: #0d6efd; +$indigo: #6610f2; +$purple: #6f42c1; +$pink: #d63384; +$red: #dc3545; +$orange: #fd7e14; +$yellow: #ffc107; +$green: #198754; +$teal: #20c997; +$cyan: #0dcaf0; +$gray-100: #f8f9fa; +$gray-600: #6c757d; +$gray-900: #212529; + +Key Colors map to ... +$primary: $blue; +$secondary: $gray-600; +$success: $green; +$info: $cyan; +$warning: $yellow; +$danger: $red; +$light: $gray-100; +$dark: $gray-900; + +Key colors are are mapped to words we use in HTML (text-primary, text-dark, bg-primary, bg-dark) +$theme-colors: ( + "primary": $primary, + "secondary": $secondary, + "success": $success, + "info": $info, + "warning": $warning, + "danger": $danger, + "light": $light, + "dark": $dark +); + +*/ + +// redefine colors +$primary: #a1a9bd; +$secondary: #5B9D82; +$body-bg: #cfd8dc; + +// redefine body background +@import "../../../../../node_modules/bootstrap/scss/bootstrap"; + +// setup default background +html, body { + background-image: var(--bs-gradient); + background-color: var(--bs-body-bg); +} + +// setup dark mode styling +.dark-mode { + $enable-gradients: true; + + /* redefine theme colors */ + $primary: #5c7ba8; + $secondary: $green-600; + $body-bg: #455a64; + /* set background values */ + --#{$variable-prefix}body-bg: #{$body-bg}; + + $theme-colors: ( + "primary": $primary, + "secondary": $secondary + ); + /* redefine theme color variables */ + @each $color, $value in $theme-colors { + --#{$variable-prefix}#{$color}: #{$value}; + } + /* redefine theme theme-colors-rgb variables */ + $theme-colors-rgb: map-loop($theme-colors, to-rgb, "$value"); + @each $color, $value in $theme-colors-rgb { + --#{$variable-prefix}#{$color}-rgb: #{$value}; + } + + @import "../../../../../node_modules/bootstrap/scss/bootstrap"; +} + diff --git a/src/main/resources/templates/course/deploy.html b/src/main/resources/templates/course/deploy.html index 19383dbe..52857f2c 100644 --- a/src/main/resources/templates/course/deploy.html +++ b/src/main/resources/templates/course/deploy.html @@ -1,18 +1,17 @@ - - - -
- Course Deployment Guide -
+ +
- + Course Deployment Guide +
- -
+ +
@@ -49,6 +48,6 @@ main(); -
+
\ No newline at end of file diff --git a/src/main/resources/templates/course/repos.html b/src/main/resources/templates/course/repos.html index d8487d74..c814c956 100644 --- a/src/main/resources/templates/course/repos.html +++ b/src/main/resources/templates/course/repos.html @@ -1,17 +1,17 @@ - - - -
- Course Repositories -
- + + +
+ Course Repositories +
- -
+ +

GitHub

@@ -36,6 +36,6 @@

Repl.it

-
+
\ No newline at end of file diff --git a/src/main/resources/templates/course/timelines.html b/src/main/resources/templates/course/timelines.html index ac6e31e0..c443d5a9 100644 --- a/src/main/resources/templates/course/timelines.html +++ b/src/main/resources/templates/course/timelines.html @@ -1,27 +1,27 @@ - - -
- Course materials -
- - - -
+ +
+ Course materials +
-
-
-

- -

-
- Made with Padlet -
+< +
+
+
+

+ +

+
+ Made with Padlet
-
- +
+ + + diff --git a/src/main/resources/templates/error/403.html b/src/main/resources/templates/error/403.html new file mode 100644 index 00000000..da41fbd4 --- /dev/null +++ b/src/main/resources/templates/error/403.html @@ -0,0 +1,29 @@ + + + + + + +
+ 403 Error +
+ + +
+
+
+
+ +
+ +
+

You don't have permission to do that! (Insufficient Role)

+ Go Home +
+
+
+
+ + \ No newline at end of file diff --git a/src/main/resources/templates/error/404.html b/src/main/resources/templates/error/404.html index 836c9e08..d77152b1 100644 --- a/src/main/resources/templates/error/404.html +++ b/src/main/resources/templates/error/404.html @@ -1,15 +1,17 @@ - -
+ +
404 Error -
+
- -
+ +
@@ -20,9 +22,8 @@

Something Went Wrong

Engineering is on the case!

Go Home
- +
- -
+
\ No newline at end of file diff --git a/src/main/resources/templates/fragments/footer.html b/src/main/resources/templates/fragments/footer.html index de7ad62e..74fcfac9 100644 --- a/src/main/resources/templates/fragments/footer.html +++ b/src/main/resources/templates/fragments/footer.html @@ -1,27 +1,9 @@ - - - ... - -
-
-
-

Contact Us

-
- - - -
- - - -
- -
+ - - \ No newline at end of file + +
\ No newline at end of file diff --git a/src/main/resources/templates/fragments/head.html b/src/main/resources/templates/fragments/head.html deleted file mode 100644 index 46808336..00000000 --- a/src/main/resources/templates/fragments/head.html +++ /dev/null @@ -1,119 +0,0 @@ - - - - Layout - - - - - - - - - - - - - - - - - - - - -... - - diff --git a/src/main/resources/templates/fragments/nav.html b/src/main/resources/templates/fragments/nav.html index d10cdc25..dc7d7e28 100644 --- a/src/main/resources/templates/fragments/nav.html +++ b/src/main/resources/templates/fragments/nav.html @@ -1,98 +1,230 @@ + + +