diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 297b122..a6890d7 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -3,6 +3,8 @@ name: Bug report about: Create a report to help us improve --- +# Bug report + **Describe the bug** A clear and concise description of what the bug is. diff --git a/.github/ISSUE_TEMPLATE/feature_request.md b/.github/ISSUE_TEMPLATE/feature_request.md index a09db44..2a9953c 100644 --- a/.github/ISSUE_TEMPLATE/feature_request.md +++ b/.github/ISSUE_TEMPLATE/feature_request.md @@ -3,6 +3,8 @@ name: Feature request about: Suggest an idea for this project --- +# Feature request + **Is your feature request related to a problem? Please describe.** A clear and concise description of what the problem is. Ex. I'm always frustrated when [...] diff --git a/.github/ISSUE_TEMPLATE/security_report.md b/.github/ISSUE_TEMPLATE/security_report.md index 649c7c1..7e3e446 100644 --- a/.github/ISSUE_TEMPLATE/security_report.md +++ b/.github/ISSUE_TEMPLATE/security_report.md @@ -3,6 +3,8 @@ name: Security vulnerability report about: Create a report to help us improve our security --- +# Security vulnerability report + **Describe the issue** A clear and concise description of what the security vulnerability/issue is. diff --git a/.github/workflows/code-qa-js.yaml b/.github/workflows/code-qa-js.yaml index 8417951..bc2a2cb 100644 --- a/.github/workflows/code-qa-js.yaml +++ b/.github/workflows/code-qa-js.yaml @@ -44,18 +44,18 @@ jobs: strategy: matrix: - node-version: [22.x] + node-version: [24.x] # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: ${{ matrix.node-version }} - name: Cache Node.js modules - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} diff --git a/.github/workflows/code-qa-markdown.yaml b/.github/workflows/code-qa-markdown.yaml index d432e46..9093591 100644 --- a/.github/workflows/code-qa-markdown.yaml +++ b/.github/workflows/code-qa-markdown.yaml @@ -6,7 +6,7 @@ on: paths: - "**/*.md" - ".markdownlint.json" - - ".markdownlintignore" + - ".markdownlint-cli2.jsonc" - ".github/workflows/code-qa-markdown.yaml" - "package*.json" pull_request: @@ -14,7 +14,7 @@ on: paths: - "**/*.md" - ".markdownlint.json" - - ".markdownlintignore" + - ".markdownlint-cli2.jsonc" - ".github/workflows/code-qa-markdown.yaml" - "package*.json" @@ -24,15 +24,20 @@ jobs: lint-markdown: runs-on: ubuntu-latest + strategy: + matrix: + node-version: [24.x] + # See supported Node.js release schedule at https://nodejs.org/en/about/releases/ + steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 - name: Use Node.js ${{ matrix.node-version }} - uses: actions/setup-node@v6 + uses: actions/setup-node@v7 with: node-version: ${{ matrix.node-version }} - name: Cache Node.js modules - uses: actions/cache@v5 + uses: actions/cache@v6 with: path: ~/.npm key: ${{ runner.os }}-node-${{ hashFiles('**/package-lock.json') }} diff --git a/.github/workflows/codeql-analysis.yaml b/.github/workflows/codeql-analysis.yaml index 12fe0d0..1afa053 100644 --- a/.github/workflows/codeql-analysis.yaml +++ b/.github/workflows/codeql-analysis.yaml @@ -50,7 +50,7 @@ jobs: steps: - name: Checkout repository - uses: actions/checkout@v6 + uses: actions/checkout@v7 # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL diff --git a/.markdownlint-cli2.jsonc b/.markdownlint-cli2.jsonc new file mode 100644 index 0000000..bae09f2 --- /dev/null +++ b/.markdownlint-cli2.jsonc @@ -0,0 +1,6 @@ +{ + // Vendored third-party sources and the GPL licence text are maintained elsewhere. + "ignores": ["LICENSE.md", "core/scripts/APIandLibraries/**"], + // Dependency and test output listed in .gitignore stays out of the lint set. + "gitignore": true, +} diff --git a/.markdownlintignore b/.markdownlintignore deleted file mode 100644 index b73df77..0000000 --- a/.markdownlintignore +++ /dev/null @@ -1,56 +0,0 @@ -# Markdown to ignore -LICENSE.md - -# dependencies -**/node_modules -/.pnp -.pnp.js - -# VS code -.vscode/settings.json -.vscode/launch.json - -# System Files -.DS_Store - -# Coverage and testing -.coverage -/coverage -coverage.html -coverage.out -coverage.xml -cypress/screenshots -cypress/videos - -# Playwright -node_modules/ -test-results/ -playwright-report/ -blob-report/ -playwright/.cache/ -playwright/.auth/ -playwright-report/ -blob-report/ -test-results/ - -# Packages -core/scripts/APIandLibraries/**/* - -# workbox -workbox-config.cjs -core/scripts/serviceWorker - -# Visual Studio Code -.vscode/settings.json -.vscode/launch.json - -# Data files -.fasta -.xlsx -.csv - -# PDFs -.pdf - -# Ignore minified files -*.min.* diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 7dfd66f..cb8057a 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -2,55 +2,30 @@ We are open to any contributions at any time. When contributing, we ask you to please first discuss the change you wish to make via issue, email, or any other method with the owners of this repository before making a change. -Please note we have a code of conduct, please follow it in all your interactions with the project. +Please note we have a [code of conduct](CODE_OF_CONDUCT.md), and we ask you to follow it in all your interactions with the project. -## Pull Request Process +SciGrade is in maintenance mode, so critical bug fixes and security updates are prioritized over new features. [README.md](README.md) states what that means for feature requests. -1. Ensure any install or build dependencies are removed before the end of the layer when doing a build. -2. Update the [README.md](/README.md) with details of changes to the interface, this includes new environment variables, exposed ports, useful file locations and container parameters. -3. Increase the version numbers in any examples files and the [README.md](/README.md) to the new version that this Pull Request would represent. The versioning scheme we use is [SemVer](http://semver.org/). -4. You may merge the Pull Request in once you have the sign-off of two other developers, or if you do not have permission to do that, you may request the second reviewer to merge it for you. +## Before you open a pull request -## Code of Conduct +Node.js 24 or later is what continuous integration runs. Node 22.13 through 22.x also satisfies every dependency, but the 23.x line does not: ESLint in [package.json](package.json) declares `^20.19.0 || ^22.13.0 || >=24`, and `markdownlint-cli2` declares `>=22`. -### Our Pledge +1. Install dependencies with `npm ci`. +2. Run `npm run validate`. That chains Prettier, ESLint, minification, the Jest unit tests, the Playwright end-to-end suite, and the Markdown linter. +3. Commit any change `npm run minify` makes to [core/scripts/crispr_scripts.min.js](core/scripts/crispr_scripts.min.js) or [core/scripts/runtime.min.js](core/scripts/runtime.min.js). [core/systemrun.html](core/systemrun.html) loads only the minified bundles, so an edit to the unminified source does not reach users until it is rebuilt. +4. Update the documentation under [docs/index.md](docs/index.md) whenever your change alters behaviour a document describes. -In the interest of fostering an open and welcoming environment, we as contributors and maintainers pledge to making participation in our project and our community a harassment-free experience for everyone, regardless of age, body size, disability, ethnicity, gender identity and expression, level of experience nationality, personal appearance, race, religion, or sexual identity and orientation. +## What runs on your pull request -### Our Standards +Two quality workflows can gate a pull request. Each has its own `paths` filter, so which of them runs depends on what you touched, and a workflow that is not triggered does not appear as a check: -Examples of behavior that contributes to creating a positive environment include: +- [code-qa-js.yaml](.github/workflows/code-qa-js.yaml) runs `prettier:check`, `eslint:check`, the Jest tests, and the Playwright suite on Node 24.x. It is triggered by scripts, markup, styles, images, and `package*.json`, not by Markdown. +- [code-qa-markdown.yaml](.github/workflows/code-qa-markdown.yaml) runs `lint:markdown` on Node 24.x. It is triggered by Markdown files, the two markdown-lint configuration files, and `package*.json`, not by scripts. -- Using welcoming and inclusive language -- Being respectful of differing viewpoints and experiences -- Gracefully accepting constructive criticism -- Focusing on what is best for the community -- Showing empathy towards other community members +[codeql-analysis.yaml](.github/workflows/codeql-analysis.yaml) also runs CodeQL analysis over the `javascript-typescript` and `actions` languages. Changes confined to [core/scripts/APIandLibraries/](core/scripts/APIandLibraries/jQuery/jquery.min.js) do not trigger it. -Examples of unacceptable behavior by participants include: +[CODEOWNERS](.github/CODEOWNERS) assigns review of every path to a single maintainer, who merges once the checks pass. -- The use of sexualized language or imagery and unwelcome sexual attention or advances -- Trolling, insulting/derogatory comments, and personal or political attacks -- Public or private harassment -- Publishing others' private information, such as a physical or electronic address, without explicit permission -- Other conduct which could reasonably be considered inappropriate in a professional setting +## Reporting a bug or a vulnerability -### Our Responsibilities - -Project maintainers are responsible for clarifying the standards of acceptable behavior and are expected to take appropriate and fair corrective action in response to any instances of unacceptable behavior. - -Project maintainers have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, or to ban temporarily or permanently any contributor for other behaviors that they deem inappropriate, threatening, offensive, or harmful. - -### Scope - -This Code of Conduct applies both within project spaces and in public spaces when an individual is representing the project or its community. Examples of representing a project or community include using an official project e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event. Representation of a project may be further defined and clarified by project maintainers. - -### Enforcement - -Instances of abusive, harassing, or otherwise unacceptable behavior may be reported by contacting the project team. All complaints will be reviewed and investigated and will result in a response that is deemed necessary and appropriate to the circumstances. The project team is obligated to maintain confidentiality with regard to the reporter of an incident. Further details of specific enforcement policies may be posted separately. - -Project maintainers who do not follow or enforce the Code of Conduct in good faith may face temporary or permanent repercussions as determined by other members of the project's leadership. - -### Attribution - -This Code of Conduct is adapted from the [Contributor Covenant](http://contributor-covenant.org), version 1.4, available at [http://contributor-covenant.org/version/1/4](http://contributor-covenant.org/version/1/4/) +Open a [bug report](https://github.com/AlexJSully/SciGrade/issues/new?template=bug_report.md) for defects. [SECURITY.md](SECURITY.md) states how to report a security vulnerability. diff --git a/EDIT.MD b/EDIT.md similarity index 96% rename from EDIT.MD rename to EDIT.md index 8aa0c32..020bbd6 100644 --- a/EDIT.MD +++ b/EDIT.md @@ -10,7 +10,7 @@ Everything on SciGrade is generated dynamically on the client side to reduce the ![practice example](core/images/EDITmd/002_SciGradePracticeGene.png "Example of the practice content page") -There is also a feedback page for practice assignments screen which is displayed as an option whenever a user submits a practice assignment. +There is also a feedback page which is displayed whenever a user submits a practice attempt. ![feedback example](core/images/EDITmd/004_FeedbackPage.png "Example of the feedback page") @@ -57,7 +57,7 @@ To add a new gene, update the JSON data files: 1. **[Gene's Background Information](core/data/Background_info/gene_background_info.json)** Add an entry with: - - `base_type`: "practice" or "assignment" + - `base_type`: "practice" on every existing entry; no runtime script reads it - `name`: The name of the gene - `Background`: Educational description - `Target site`: Description of what you are targeting diff --git a/README.md b/README.md index 51fc680..9c8ae40 100644 --- a/README.md +++ b/README.md @@ -44,7 +44,7 @@ Please read [CONTRIBUTING.md](CONTRIBUTING.md) for more details. ## Modifying -Please read [EDIT.md](EDIT.MD) if you want to understand how SciGrade works and how you can modify it. +Please read [EDIT.md](EDIT.md) if you want to understand how SciGrade works and how you can modify it. ## License @@ -57,14 +57,6 @@ This project is currently in maintenance mode. This means that: - Only critical bug fixes and security updates will be addressed. - New feature requests are unlikely to be implemented. -## Sponsorship - -If you want to support my work, you can through the following methods: - -- [BTC](3Lp4pwF5nXqwFA62BYx4DSvDswyYpskBog) - 3Lp4pwF5nXqwFA62BYx4DSvDswyYpskBog -- [ETH](0xc6EB17BD7cbe5976Bfc4f845669cD66Ff340a1A2) - 0xc6EB17BD7cbe5976Bfc4f845669cD66Ff340a1A2 -- [PayPal](https://paypal.me/alexjsully) - paypal.me/alexjsully - ## Authors - Alexander Sullivan - [GitHub](https://github.com/AlexJSully), [Twitter](https://twitter.com/alexjsully), [LinkedIn](https://www.linkedin.com/in/alexanderjsullivan/), [Website](https://alexjsully.me/) diff --git a/SECURITY.MD b/SECURITY.md similarity index 100% rename from SECURITY.MD rename to SECURITY.md diff --git a/core/scripts/crispr_scripts.js b/core/scripts/crispr_scripts.js index 0f05bbf..af66b46 100644 --- a/core/scripts/crispr_scripts.js +++ b/core/scripts/crispr_scripts.js @@ -20,7 +20,7 @@ function select_Gene() { checkAnswers_executed = false; } else { current_gene = "empty"; - alert("Error code sG34-42 occurred. Please contact admin or TA!"); + alert("Error code sG34-42 occurred. Please report this on our GitHub issue tracker."); } } @@ -76,7 +76,7 @@ let loadedMode = "practice"; */ function loadWork() { if (!gene_backgroundInfo?.gene_list?.[current_gene]) { - alert("Error code lFS50-66 occurred. Please contact admin or TA!"); + alert("Error code lFS50-66 occurred. Please report this on our GitHub issue tracker."); return; } @@ -102,10 +102,10 @@ function loadWork() { // End background information append_str += ""; - // Begin gene assignment work + // Begin gene work form append_str += '
'; - // Gene assignment form inputs + // Gene work form inputs append_str += "

Please input the following information for your gRNA for your selected gene.

\n"; append_str += "
"; @@ -187,7 +187,7 @@ function loadWork() { // End form append_str += "
"; - // End gene assignment work + // End gene work form append_str += "
"; $("#work").append(append_str); @@ -348,7 +348,7 @@ function checkAnswers() { true_counts += 1; } else if (temp_answer.Position === null || temp_answer.Position === undefined) { alert( - "Error code cA302-307: retrieving server information on 'Position' answers occurred. Please contact admin or TA!", + "Error code cA302-307: the reference data has no 'Position' value for this gRNA. Please report this on our GitHub issue tracker.", ); } @@ -361,7 +361,7 @@ function checkAnswers() { true_counts += 1; } else if (temp_answer.PAM === null || temp_answer.PAM === undefined) { alert( - "Error code cA311-317: retrieving server information on 'PAM' answers occurred. Please contact admin or TA!", + "Error code cA311-317: the reference data has no 'PAM' value for this gRNA. Please report this on our GitHub issue tracker.", ); } @@ -373,7 +373,7 @@ function checkAnswers() { temp_answer["Specificity Score"] === undefined ) { alert( - "Error code cA342-348: retrieving server information on 'Specificity Score' answers occurred. Please contact admin or TA!", + "Error code cA342-348: the reference data has no 'Specificity Score' value for this gRNA. Please report this on our GitHub issue tracker.", ); } @@ -602,12 +602,10 @@ function markAnswers() { */ function showFeedback() { $("#mainContainer").empty(); - let append_str = - "

You would only receive feedback on your practice attempts and not your final assignments.

"; + let append_str = "

Here is the feedback for your practice attempt.

"; append_str += - "

The assignment itself is marked out of 10 marks with 2 marks for each input excluding gRNA strand direction, cut position and target region range (these three values are used to calculate if you have the right answer or not which means they are still crucial that they are still correct).

"; - append_str += - "

The following is the breakdown of what marks you would have received and why you would have gotten them:

"; + "

Your attempt is marked out of 10 marks with 2 marks for each input excluding gRNA strand direction, cut position and target region range (these three values are used to calculate if you have the right answer or not which means they are still crucial that they are still correct).

"; + append_str += "

The following is the breakdown of your marks and why you received them:

"; append_str += `

Mark: ${all_marks[0]}/10 (${all_marks[1]})

`; // Calculate all conditions: @@ -626,7 +624,7 @@ function showFeedback() { } else if (MARgRNAseq_degree === 3) { MARgRNAseq_degree_display = 0.5; MARgRNAseq_degree_explain = - "This means your sequence was not wrong (therefore was still correct) but there were better options out there. I recommend you try this practice assignment again. Still worth some marks though (half a mark)."; + "This means your sequence was not wrong (therefore was still correct) but there were better options out there. I recommend you try this gene again. Still worth some marks though (half a mark)."; } } /// PAM: @@ -796,39 +794,22 @@ function showFeedback() { append_str = "
"; append_str += - "

If at any point you wish to dispute marks, please contact your TA or professor once you completed your assignment. If you have found a bug in our SciGrade marking system, please contact your professor or our admin.

"; + "

If you have found a bug in our SciGrade marking system, please report it on our GitHub issue tracker.

"; append_str += "
"; append_str += - '

'; + '

'; $("#mainContainer").append(append_str); } -/** - * Determine whether an input form will be displayed or not - * @param {string} docCheck The DOM being checked against - * @param {string} checkFor The value of the DOM being used to check for - * @param {string} docDisplay The DOM what will toggle hidden visibility for - */ -function showNewInput(docCheck, checkFor, docDisplay) { - if (document.getElementById(String(docCheck)).value === String(checkFor)) { - document.getElementById(String(docDisplay)).removeAttribute("hidden"); - } else { - document.getElementById(String(docDisplay)).setAttribute("hidden", true); - } -} - -let completed_assignments = []; let all_answers = []; -let all_outputs = []; let all_marks = []; /** * Collects the student's answers, calculates marks, and triggers feedback display. */ function submitAnswers() { all_answers = []; - all_outputs = []; all_marks = []; checkAnswers(); setTimeout(() => { @@ -842,20 +823,6 @@ function submitAnswers() { document.getElementById("f1_input").value.trim(), document.getElementById("r1_input").value.trim(), ); - all_outputs.push( - MARstrand, - MARgRNAseq, - MARgRNAseq_degree, - MARCutPos, - MARPAMseq, - MAROffTarget, - MAROffTarget_degree, - MAROffTarget_aboveOpt, - MAROffTarget_above35, - MAROffTarget_onlyOption, - MARF1primers, - MARR1primers, - ); all_marks.push(studentMark, studentMarkPercentage); showFeedback(); @@ -873,14 +840,6 @@ function IfPressEnter(event, toClickButton) { } } -/** - * Resets the assignment section page - */ -function backToAssignments() { - redirectCRISPR(); - $("#practice").click(); -} - // Block submit calls on keypress $(() => { $("form").submit(() => false); diff --git a/core/scripts/crispr_scripts.min.js b/core/scripts/crispr_scripts.min.js index 7127d8d..abaa1ed 100644 --- a/core/scripts/crispr_scripts.min.js +++ b/core/scripts/crispr_scripts.min.js @@ -1,6 +1,6 @@ -let selection_inMode="practice",possible_gene="eBFP",current_gene="empty";function select_Gene(){possible_gene&&gene_backgroundInfo?.gene_list?.[possible_gene]?(current_gene=possible_gene,loadWork(),checkAnswers_executed=!1):(current_gene="empty",alert("Error code sG34-42 occurred. Please contact admin or TA!"))}let gene_backgroundInfo,benchling_gRNA_outputs;async function loadCRISPRJSON_Files(){try{benchling_gRNA_outputs=await(await fetch("./data/Benchling_gRNA_Outputs.json")).json(),gene_backgroundInfo=await(await fetch("data/Background_info/gene_background_info.json")).json()}catch(e){console.error("Error fetching file:",e)}}function fillGeneList(){if(gene_backgroundInfo?.gene_list){$("#gene_dropdown_selection").empty();let e="";const n=Object.keys(gene_backgroundInfo.gene_list);for(const t of n)e+=` +let selection_inMode="practice",possible_gene="eBFP",current_gene="empty";function select_Gene(){possible_gene&&gene_backgroundInfo?.gene_list?.[possible_gene]?(current_gene=possible_gene,loadWork(),checkAnswers_executed=!1):(current_gene="empty",alert("Error code sG34-42 occurred. Please report this on our GitHub issue tracker."))}let gene_backgroundInfo,benchling_gRNA_outputs;async function loadCRISPRJSON_Files(){try{benchling_gRNA_outputs=await(await fetch("./data/Benchling_gRNA_Outputs.json")).json(),gene_backgroundInfo=await(await fetch("data/Background_info/gene_background_info.json")).json()}catch(e){console.error("Error fetching file:",e)}}function fillGeneList(){if(gene_backgroundInfo?.gene_list){$("#gene_dropdown_selection").empty();let e="";const i=Object.keys(gene_backgroundInfo.gene_list);for(const t of i)e+=` - `;$("#gene_dropdown_selection").append(e),$("#load_gene_button").prop("disabled",!1)}}let loadedMode="practice";function loadWork(){if(!gene_backgroundInfo?.gene_list?.[current_gene]){alert("Error code lFS50-66 occurred. Please contact admin or TA!");return}$("#work").empty(),loadedMode=selection_inMode,checkAnswers_executed=!1;let e;e='
',e+=`
+ `;$("#gene_dropdown_selection").append(e),$("#load_gene_button").prop("disabled",!1)}}let loadedMode="practice";function loadWork(){if(!gene_backgroundInfo?.gene_list?.[current_gene]){alert("Error code lFS50-66 occurred. Please report this on our GitHub issue tracker.");return}$("#work").empty(),loadedMode=selection_inMode,checkAnswers_executed=!1;let e;e='
',e+=`

Please refer to your dry lab protocol for full instructions on how and what to do. Below is a brief reminder of what you are supposed to do with each gene: Your objective is to find these mutations, design a gRNA and its corresponding F1/R1 primers

@@ -24,4 +24,4 @@ let selection_inMode="practice",possible_gene="eBFP",current_gene="empty";functi
- `,e+='
',e+='',e+='',e+='This would be your off-target score for your gRNA. NOTE: This input only takes numbers',e+="
",e+='
',e+='',e+='',e+='This would be your forward primer (F1) for your gRNA',e+="
",e+='
',e+='',e+='',e+='This would be your reverse primer (R1) for your gRNA',e+="
",e+='',e+='',e+="",e+="
",$("#work").append(e)}function isNumberOrDashKey(e){const n=e.which?e.which:e.keyCode;return!(n!==46&&n!==45&&n>31&&(n<48||n>57))}let MARgRNAseq=!1,MARgRNAseq_degree=0,MARPAMseq=!1,MARCutPos=!1,MARstrand=!1,MAROffTarget=!1,MAROffTarget_degree=0,MAROffTarget_aboveOpt=!1,MAROffTarget_above35=!1,MAROffTarget_onlyOption=!1,MARF1primers=!1,MARR1primers=!1,possible_comparable_answers=[],correctNucleotideIncluded=!1,true_counts=0,checkAnswers_executed=!1;function checkAnswers(){MARgRNAseq=!1,MARgRNAseq_degree=0,MARPAMseq=!1,MARCutPos=!1,MARstrand=!1,correctNucleotideIncluded=!1,true_counts=0;const e=gene_backgroundInfo.gene_list[current_gene]["Target position"]-1,n=document?.getElementById("sequence_input")?.value?.trim()||void 0;if(possible_comparable_answers=[],n)for(const t of benchling_gRNA_outputs.gene_list[current_gene])t.Sequence===n&&possible_comparable_answers.push(t);if(possible_comparable_answers.length>0)for(const t of possible_comparable_answers){if(true_counts=0,correctNucleotideIncluded=!1,t.Strand===1){const i=t.Position-1-1+3,r=t.Position-1-17;e>=r&&e<=i&&(correctNucleotideIncluded=!0)}else if(t.Strand===-1){const i=t.Position-1+17,r=t.Position-1-3;e>=r&&e<=i&&(correctNucleotideIncluded=!0)}if(correctNucleotideIncluded){let i,r;if(t.Strand===1?(i=t.Position-1+2,r=t.Position-1+4,document.getElementById("strand_input").value==="Sense (+)"&&(MARstrand=!0,true_counts+=1)):t.Strand===-1&&(i=t.Position-1-2,r=t.Position-1-4,document.getElementById("strand_input").value==="Antisense (-)"&&(MARstrand=!0,true_counts+=1)),e>=i&&e<=r?(MARgRNAseq=!1,MARgRNAseq_degree=0):e>=t.Position-1+1&&e<=t.Position-1+10||e<=t.Position-1-1&&e>=t.Position-1-10?(MARgRNAseq=!0,MARgRNAseq_degree=1,true_counts+=1):e>=t.Position-1&&e<=t.Position-1+20||e<=t.Position-1&&e>=t.Position-1-20?(MARgRNAseq=!0,MARgRNAseq_degree=2,true_counts+=1):(e>=t.Position-1&&e<=t.Position-1+30||e<=t.Position-1&&e>=t.Position-1-30)&&(MARgRNAseq=!0,MARgRNAseq_degree=3,true_counts+=1),MARgRNAseq){const o=t;o.Position&&parseInt(o.Position,10)===parseInt(document.getElementById("position_input").value,10)?(MARCutPos=!0,true_counts+=1):(o.Position===null||o.Position===void 0)&&alert("Error code cA302-307: retrieving server information on 'Position' answers occurred. Please contact admin or TA!"),(o.PAM||o.PAM)&&o.PAM===document.getElementById("pam_input").value.trim()?(MARPAMseq=!0,true_counts+=1):(o.PAM===null||o.PAM===void 0)&&alert("Error code cA311-317: retrieving server information on 'PAM' answers occurred. Please contact admin or TA!"),o["Specificity Score"]||o["Specificity Score"]?checkOffTarget(o["Specificity Score"]):(o["Specificity Score"]===null||o["Specificity Score"]===void 0)&&alert("Error code cA342-348: retrieving server information on 'Specificity Score' answers occurred. Please contact admin or TA!"),checkF1Primers(document?.getElementById("sequence_input")?.value?.trim()||""),checkR1Primers(document?.getElementById("sequence_input")?.value?.trim()||"")}}}checkAnswers_executed=!0}let offtarget_List=[],offtarget_dict={},offtarget_dictParse=[],offtarget_Use=[];function checkOffTarget(e){MAROffTarget=!1,MAROffTarget_degree=0,MAROffTarget_aboveOpt=!1,MAROffTarget_above35=!1,MAROffTarget_onlyOption=!1;const n=Math.floor(e),t=Math.ceil(e),i=parseInt(document.getElementById("offtarget_input").value,10);if(correctNucleotideIncluded&&MARgRNAseq&&i>=n&&i<=t&&(MAROffTarget=!0,true_counts+=1),MAROffTarget){const r=parseInt(document.getElementById("position_input").value,10)+35,o=parseInt(document.getElementById("position_input").value,10)-35;offtarget_List=[],offtarget_dict={},offtarget_dictParse=[],offtarget_Use=[];for(let a=0;a=o&&benchling_gRNA_outputs.gene_list[current_gene][a].Position<=r&&benchling_gRNA_outputs.gene_list[current_gene][a]["Specificity Score"]&&(offtarget_List.push(benchling_gRNA_outputs.gene_list[current_gene][a]["Specificity Score"]),offtarget_dict[a]=benchling_gRNA_outputs.gene_list[current_gene][a]["Specificity Score"],offtarget_dictParse.push(a));let l=!0;Math.max.apply(null,offtarget_List)<35&&(l=!1);const c=Math.max.apply(null,offtarget_List),u=getOffTargetOptimalValue(c);i>=u?(MAROffTarget_aboveOpt=!0,MAROffTarget_above35=!0,MAROffTarget_degree=1):i>=35?(MAROffTarget_above35=!0,Math.max.apply(null,offtarget_List)<80?MAROffTarget_degree=1:MAROffTarget_degree=2):l||(MAROffTarget_onlyOption=!0,MAROffTarget_degree=3)}}function getOffTargetOptimalValue(e){const n=e-e*.2;return n>80||n<35?80:n}let possible_F1_primers=[];function checkF1Primers(e){MARF1primers=!1,possible_F1_primers=[];const n="TAATACGACTCACTATAG";let t=!0;e[0]==="G"&&(t=!1);for(let i=16;i<=20;i+=1)possible_F1_primers.push(n+e.slice(0,i));if(!t)for(let i=16;i<=20;i+=1)possible_F1_primers.push(n+e.slice(1,i));possible_F1_primers.includes(document.getElementById("f1_input").value.trim())&&(MARF1primers=!0)}let possible_R1_primers=[];const complementary_nt_dict={A:"T",T:"A",C:"G",G:"C"};function checkR1Primers(e){MARR1primers=!1,possible_R1_primers=[];const n="TTCTAGCTCTAAAAC";let t="";for(const i of e)t=complementary_nt_dict[i]+t;for(let i=19;i<=20;i+=1)possible_R1_primers.push(n+t.slice(0,i));possible_R1_primers.includes(document.getElementById("r1_input").value.trim())&&(MARR1primers=!0)}function createComplementarySeq(e){let n="";for(const t of e)n=complementary_nt_dict[t]+n;return n}let studentMark=0,studentMarkPercentage=0;const markTotal=10;function markAnswers(){studentMark=0,checkAnswers_executed||checkAnswers(),checkAnswers_executed&&(MARgRNAseq&&(MARgRNAseq_degree===1?studentMark+=2:MARgRNAseq_degree===2?studentMark+=1:MARgRNAseq_degree===3&&(studentMark+=.5)),MARPAMseq&&(studentMark+=2),MAROffTarget&&(MAROffTarget_degree===1?studentMark+=2:MAROffTarget_degree===2?studentMark+=1:MAROffTarget_degree===3&&(studentMark+=.5)),MARF1primers&&(studentMark+=2),MARR1primers&&(studentMark+=2),studentMarkPercentage=(studentMark/markTotal*100).toFixed(2),studentMarkPercentage>100?studentMarkPercentage=100:studentMarkPercentage<0&&(studentMarkPercentage=0))}function showFeedback(){$("#mainContainer").empty();let e="

You would only receive feedback on your practice attempts and not your final assignments.

";e+="

The assignment itself is marked out of 10 marks with 2 marks for each input excluding gRNA strand direction, cut position and target region range (these three values are used to calculate if you have the right answer or not which means they are still crucial that they are still correct).

",e+="

The following is the breakdown of what marks you would have received and why you would have gotten them:

",e+=`

Mark: ${all_marks[0]}/10 (${all_marks[1]})

`;let n=0,t="Your gRNA sequence was wrong and not found in the Benchling gRNA outputs. Either you made a typo or this answer was not correct and did not contain the target cut site within an acceptable range.";MARgRNAseq&&(MARgRNAseq_degree===1?(n=2,t="This means your answer was correct and you received full marks."):MARgRNAseq_degree===2?(n=1,t="This means your sequence was partially correct as it contains the target sequence within a 20bp range but was not optimal. One mark."):MARgRNAseq_degree===3&&(n=.5,t="This means your sequence was not wrong (therefore was still correct) but there were better options out there. I recommend you try this practice assignment again. Still worth some marks though (half a mark)."));let i=0,r="Your PAM sequence was wrong and not found relative to your gRNA sequence. Either you made a typo or this answer was not correct. Either it contained the cut site within the PAM site or it was not an NGG or NAG PAM site (SciGrade only accepts either of those two PAM sites).";MARPAMseq&&(i=2,r="This means your answer was correct and you received full marks.");let o=0,l="Your off-target score was wrong. Either it was not above/within the optimal range (or above 35) or the last-resort option.";MAROffTarget&&(MAROffTarget_degree===1?(o=2,l="This means your answer was correct while above/within the optimal and you received full marks."):MAROffTarget_degree===2?(o=1,l="This means your answer was technically correct as its on-target value was above 35."):MAROffTarget_degree===3&&(o=.5,l="This means your answer was partially correct as it was found to be your only option is solely based on the target region range you selected."));let c=0,u="";for(let s=0;s For gRNA Strand Sequence, you put down "${all_answers[0]}" which gave you the mark ${n}.

`,e+=t,e+="
",e+="",e+="",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For gRNA PAM Sequence, you put down "${all_answers[1]}" which gave you the mark ${i}.

`,e+=r,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For Off-Target Score, you put down "${all_answers[4]}" which gave you the mark ${o}.

`,e+=l,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For F1 Primer, you put down "${all_answers[5]}" which gave you the mark ${c}.

`,e+=a,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For R1 Primer, you put down "${all_answers[6]}" which gave you the mark ${f}.

`,e+=p,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="

If at any point you wish to dispute marks, please contact your TA or professor once you completed your assignment. If you have found a bug in our SciGrade marking system, please contact your professor or our admin.

",e+="
",e+='

',$("#mainContainer").append(e)}function showNewInput(e,n,t){document.getElementById(String(e)).value===String(n)?document.getElementById(String(t)).removeAttribute("hidden"):document.getElementById(String(t)).setAttribute("hidden",!0)}let completed_assignments=[],all_answers=[],all_outputs=[],all_marks=[];function submitAnswers(){all_answers=[],all_outputs=[],all_marks=[],checkAnswers(),setTimeout(()=>{markAnswers(),all_answers.push(document?.getElementById("sequence_input")?.value?.trim()||"",document.getElementById("pam_input").value.trim(),document.getElementById("position_input").value,document.getElementById("strand_input").value,document.getElementById("offtarget_input").value,document.getElementById("f1_input").value.trim(),document.getElementById("r1_input").value.trim()),all_outputs.push(MARstrand,MARgRNAseq,MARgRNAseq_degree,MARCutPos,MARPAMseq,MAROffTarget,MAROffTarget_degree,MAROffTarget_aboveOpt,MAROffTarget_above35,MAROffTarget_onlyOption,MARF1primers,MARR1primers),all_marks.push(studentMark,studentMarkPercentage),showFeedback()},750)}function IfPressEnter(e,n){(e.which===13||e.keyCode===13)&&$(`#${n}`).click()}function backToAssignments(){redirectCRISPR(),$("#practice").click()}$(()=>{$("form").submit(()=>!1)}),typeof module<"u"&&module.exports&&(module.exports={getOffTargetOptimalValue,isNumberOrDashKey,createComplementarySeq,checkOffTarget,checkF1Primers,checkR1Primers,fillGeneList,select_Gene,loadWork,get MAROffTarget(){return MAROffTarget},get MAROffTarget_degree(){return MAROffTarget_degree},get MARF1primers(){return MARF1primers},get MARR1primers(){return MARR1primers},get current_gene(){return current_gene},__setTestState(e={}){e.correctNucleotideIncluded!==void 0&&(correctNucleotideIncluded=e.correctNucleotideIncluded),e.MARgRNAseq!==void 0&&(MARgRNAseq=e.MARgRNAseq),e.benchling_gRNA_outputs!==void 0&&(benchling_gRNA_outputs=e.benchling_gRNA_outputs),e.current_gene!==void 0&&(current_gene=e.current_gene),e.gene_backgroundInfo!==void 0&&(gene_backgroundInfo=e.gene_backgroundInfo),e.possible_gene!==void 0&&(possible_gene=e.possible_gene)},__resetState(){MAROffTarget=!1,MAROffTarget_degree=0,MARF1primers=!1,MARR1primers=!1,MAROffTarget_aboveOpt=!1,MAROffTarget_above35=!1,MAROffTarget_onlyOption=!1,correctNucleotideIncluded=!1,MARgRNAseq=!1}}); + `,e+='
',e+='',e+='',e+='This would be your off-target score for your gRNA. NOTE: This input only takes numbers',e+="
",e+='
',e+='',e+='',e+='This would be your forward primer (F1) for your gRNA',e+="
",e+='
',e+='',e+='',e+='This would be your reverse primer (R1) for your gRNA',e+="
",e+='',e+='',e+="",e+="",$("#work").append(e)}function isNumberOrDashKey(e){const i=e.which?e.which:e.keyCode;return!(i!==46&&i!==45&&i>31&&(i<48||i>57))}let MARgRNAseq=!1,MARgRNAseq_degree=0,MARPAMseq=!1,MARCutPos=!1,MARstrand=!1,MAROffTarget=!1,MAROffTarget_degree=0,MAROffTarget_aboveOpt=!1,MAROffTarget_above35=!1,MAROffTarget_onlyOption=!1,MARF1primers=!1,MARR1primers=!1,possible_comparable_answers=[],correctNucleotideIncluded=!1,true_counts=0,checkAnswers_executed=!1;function checkAnswers(){MARgRNAseq=!1,MARgRNAseq_degree=0,MARPAMseq=!1,MARCutPos=!1,MARstrand=!1,correctNucleotideIncluded=!1,true_counts=0;const e=gene_backgroundInfo.gene_list[current_gene]["Target position"]-1,i=document?.getElementById("sequence_input")?.value?.trim()||void 0;if(possible_comparable_answers=[],i)for(const t of benchling_gRNA_outputs.gene_list[current_gene])t.Sequence===i&&possible_comparable_answers.push(t);if(possible_comparable_answers.length>0)for(const t of possible_comparable_answers){if(true_counts=0,correctNucleotideIncluded=!1,t.Strand===1){const r=t.Position-1-1+3,o=t.Position-1-17;e>=o&&e<=r&&(correctNucleotideIncluded=!0)}else if(t.Strand===-1){const r=t.Position-1+17,o=t.Position-1-3;e>=o&&e<=r&&(correctNucleotideIncluded=!0)}if(correctNucleotideIncluded){let r,o;if(t.Strand===1?(r=t.Position-1+2,o=t.Position-1+4,document.getElementById("strand_input").value==="Sense (+)"&&(MARstrand=!0,true_counts+=1)):t.Strand===-1&&(r=t.Position-1-2,o=t.Position-1-4,document.getElementById("strand_input").value==="Antisense (-)"&&(MARstrand=!0,true_counts+=1)),e>=r&&e<=o?(MARgRNAseq=!1,MARgRNAseq_degree=0):e>=t.Position-1+1&&e<=t.Position-1+10||e<=t.Position-1-1&&e>=t.Position-1-10?(MARgRNAseq=!0,MARgRNAseq_degree=1,true_counts+=1):e>=t.Position-1&&e<=t.Position-1+20||e<=t.Position-1&&e>=t.Position-1-20?(MARgRNAseq=!0,MARgRNAseq_degree=2,true_counts+=1):(e>=t.Position-1&&e<=t.Position-1+30||e<=t.Position-1&&e>=t.Position-1-30)&&(MARgRNAseq=!0,MARgRNAseq_degree=3,true_counts+=1),MARgRNAseq){const n=t;n.Position&&parseInt(n.Position,10)===parseInt(document.getElementById("position_input").value,10)?(MARCutPos=!0,true_counts+=1):(n.Position===null||n.Position===void 0)&&alert("Error code cA302-307: the reference data has no 'Position' value for this gRNA. Please report this on our GitHub issue tracker."),(n.PAM||n.PAM)&&n.PAM===document.getElementById("pam_input").value.trim()?(MARPAMseq=!0,true_counts+=1):(n.PAM===null||n.PAM===void 0)&&alert("Error code cA311-317: the reference data has no 'PAM' value for this gRNA. Please report this on our GitHub issue tracker."),n["Specificity Score"]||n["Specificity Score"]?checkOffTarget(n["Specificity Score"]):(n["Specificity Score"]===null||n["Specificity Score"]===void 0)&&alert("Error code cA342-348: the reference data has no 'Specificity Score' value for this gRNA. Please report this on our GitHub issue tracker."),checkF1Primers(document?.getElementById("sequence_input")?.value?.trim()||""),checkR1Primers(document?.getElementById("sequence_input")?.value?.trim()||"")}}}checkAnswers_executed=!0}let offtarget_List=[],offtarget_dict={},offtarget_dictParse=[],offtarget_Use=[];function checkOffTarget(e){MAROffTarget=!1,MAROffTarget_degree=0,MAROffTarget_aboveOpt=!1,MAROffTarget_above35=!1,MAROffTarget_onlyOption=!1;const i=Math.floor(e),t=Math.ceil(e),r=parseInt(document.getElementById("offtarget_input").value,10);if(correctNucleotideIncluded&&MARgRNAseq&&r>=i&&r<=t&&(MAROffTarget=!0,true_counts+=1),MAROffTarget){const o=parseInt(document.getElementById("position_input").value,10)+35,n=parseInt(document.getElementById("position_input").value,10)-35;offtarget_List=[],offtarget_dict={},offtarget_dictParse=[],offtarget_Use=[];for(let a=0;a=n&&benchling_gRNA_outputs.gene_list[current_gene][a].Position<=o&&benchling_gRNA_outputs.gene_list[current_gene][a]["Specificity Score"]&&(offtarget_List.push(benchling_gRNA_outputs.gene_list[current_gene][a]["Specificity Score"]),offtarget_dict[a]=benchling_gRNA_outputs.gene_list[current_gene][a]["Specificity Score"],offtarget_dictParse.push(a));let l=!0;Math.max.apply(null,offtarget_List)<35&&(l=!1);const c=Math.max.apply(null,offtarget_List),u=getOffTargetOptimalValue(c);r>=u?(MAROffTarget_aboveOpt=!0,MAROffTarget_above35=!0,MAROffTarget_degree=1):r>=35?(MAROffTarget_above35=!0,Math.max.apply(null,offtarget_List)<80?MAROffTarget_degree=1:MAROffTarget_degree=2):l||(MAROffTarget_onlyOption=!0,MAROffTarget_degree=3)}}function getOffTargetOptimalValue(e){const i=e-e*.2;return i>80||i<35?80:i}let possible_F1_primers=[];function checkF1Primers(e){MARF1primers=!1,possible_F1_primers=[];const i="TAATACGACTCACTATAG";let t=!0;e[0]==="G"&&(t=!1);for(let r=16;r<=20;r+=1)possible_F1_primers.push(i+e.slice(0,r));if(!t)for(let r=16;r<=20;r+=1)possible_F1_primers.push(i+e.slice(1,r));possible_F1_primers.includes(document.getElementById("f1_input").value.trim())&&(MARF1primers=!0)}let possible_R1_primers=[];const complementary_nt_dict={A:"T",T:"A",C:"G",G:"C"};function checkR1Primers(e){MARR1primers=!1,possible_R1_primers=[];const i="TTCTAGCTCTAAAAC";let t="";for(const r of e)t=complementary_nt_dict[r]+t;for(let r=19;r<=20;r+=1)possible_R1_primers.push(i+t.slice(0,r));possible_R1_primers.includes(document.getElementById("r1_input").value.trim())&&(MARR1primers=!0)}function createComplementarySeq(e){let i="";for(const t of e)i=complementary_nt_dict[t]+i;return i}let studentMark=0,studentMarkPercentage=0;const markTotal=10;function markAnswers(){studentMark=0,checkAnswers_executed||checkAnswers(),checkAnswers_executed&&(MARgRNAseq&&(MARgRNAseq_degree===1?studentMark+=2:MARgRNAseq_degree===2?studentMark+=1:MARgRNAseq_degree===3&&(studentMark+=.5)),MARPAMseq&&(studentMark+=2),MAROffTarget&&(MAROffTarget_degree===1?studentMark+=2:MAROffTarget_degree===2?studentMark+=1:MAROffTarget_degree===3&&(studentMark+=.5)),MARF1primers&&(studentMark+=2),MARR1primers&&(studentMark+=2),studentMarkPercentage=(studentMark/markTotal*100).toFixed(2),studentMarkPercentage>100?studentMarkPercentage=100:studentMarkPercentage<0&&(studentMarkPercentage=0))}function showFeedback(){$("#mainContainer").empty();let e="

Here is the feedback for your practice attempt.

";e+="

Your attempt is marked out of 10 marks with 2 marks for each input excluding gRNA strand direction, cut position and target region range (these three values are used to calculate if you have the right answer or not which means they are still crucial that they are still correct).

",e+="

The following is the breakdown of your marks and why you received them:

",e+=`

Mark: ${all_marks[0]}/10 (${all_marks[1]})

`;let i=0,t="Your gRNA sequence was wrong and not found in the Benchling gRNA outputs. Either you made a typo or this answer was not correct and did not contain the target cut site within an acceptable range.";MARgRNAseq&&(MARgRNAseq_degree===1?(i=2,t="This means your answer was correct and you received full marks."):MARgRNAseq_degree===2?(i=1,t="This means your sequence was partially correct as it contains the target sequence within a 20bp range but was not optimal. One mark."):MARgRNAseq_degree===3&&(i=.5,t="This means your sequence was not wrong (therefore was still correct) but there were better options out there. I recommend you try this gene again. Still worth some marks though (half a mark)."));let r=0,o="Your PAM sequence was wrong and not found relative to your gRNA sequence. Either you made a typo or this answer was not correct. Either it contained the cut site within the PAM site or it was not an NGG or NAG PAM site (SciGrade only accepts either of those two PAM sites).";MARPAMseq&&(r=2,o="This means your answer was correct and you received full marks.");let n=0,l="Your off-target score was wrong. Either it was not above/within the optimal range (or above 35) or the last-resort option.";MAROffTarget&&(MAROffTarget_degree===1?(n=2,l="This means your answer was correct while above/within the optimal and you received full marks."):MAROffTarget_degree===2?(n=1,l="This means your answer was technically correct as its on-target value was above 35."):MAROffTarget_degree===3&&(n=.5,l="This means your answer was partially correct as it was found to be your only option is solely based on the target region range you selected."));let c=0,u="";for(let s=0;s For gRNA Strand Sequence, you put down "${all_answers[0]}" which gave you the mark ${i}.

`,e+=t,e+="",e+="",e+="",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For gRNA PAM Sequence, you put down "${all_answers[1]}" which gave you the mark ${r}.

`,e+=o,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For Off-Target Score, you put down "${all_answers[4]}" which gave you the mark ${n}.

`,e+=l,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For F1 Primer, you put down "${all_answers[5]}" which gave you the mark ${c}.

`,e+=a,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="
",e+="
",e+="",e+="
",e+="
",e+="
",e+="
",e+=`

For R1 Primer, you put down "${all_answers[6]}" which gave you the mark ${f}.

`,e+=p,e+="
",e+="
",e+="
",$("#mainContainer").append(e),e="
",e+="

If you have found a bug in our SciGrade marking system, please report it on our GitHub issue tracker.

",e+="
",e+='

',$("#mainContainer").append(e)}let all_answers=[],all_marks=[];function submitAnswers(){all_answers=[],all_marks=[],checkAnswers(),setTimeout(()=>{markAnswers(),all_answers.push(document?.getElementById("sequence_input")?.value?.trim()||"",document.getElementById("pam_input").value.trim(),document.getElementById("position_input").value,document.getElementById("strand_input").value,document.getElementById("offtarget_input").value,document.getElementById("f1_input").value.trim(),document.getElementById("r1_input").value.trim()),all_marks.push(studentMark,studentMarkPercentage),showFeedback()},750)}function IfPressEnter(e,i){(e.which===13||e.keyCode===13)&&$(`#${i}`).click()}$(()=>{$("form").submit(()=>!1)}),typeof module<"u"&&module.exports&&(module.exports={getOffTargetOptimalValue,isNumberOrDashKey,createComplementarySeq,checkOffTarget,checkF1Primers,checkR1Primers,fillGeneList,select_Gene,loadWork,get MAROffTarget(){return MAROffTarget},get MAROffTarget_degree(){return MAROffTarget_degree},get MARF1primers(){return MARF1primers},get MARR1primers(){return MARR1primers},get current_gene(){return current_gene},__setTestState(e={}){e.correctNucleotideIncluded!==void 0&&(correctNucleotideIncluded=e.correctNucleotideIncluded),e.MARgRNAseq!==void 0&&(MARgRNAseq=e.MARgRNAseq),e.benchling_gRNA_outputs!==void 0&&(benchling_gRNA_outputs=e.benchling_gRNA_outputs),e.current_gene!==void 0&&(current_gene=e.current_gene),e.gene_backgroundInfo!==void 0&&(gene_backgroundInfo=e.gene_backgroundInfo),e.possible_gene!==void 0&&(possible_gene=e.possible_gene)},__resetState(){MAROffTarget=!1,MAROffTarget_degree=0,MARF1primers=!1,MARR1primers=!1,MAROffTarget_aboveOpt=!1,MAROffTarget_above35=!1,MAROffTarget_onlyOption=!1,correctNucleotideIncluded=!1,MARgRNAseq=!1}}); diff --git a/core/scripts/runtime.js b/core/scripts/runtime.js index a3fbfbe..56fbde6 100644 --- a/core/scripts/runtime.js +++ b/core/scripts/runtime.js @@ -25,10 +25,6 @@ async function redirectCRISPR() {
-
-

Please select the dry lab mode you would like to use:

-
-
Please select your gene:
diff --git a/core/scripts/runtime.min.js b/core/scripts/runtime.min.js index 52bf0a7..578a0c7 100644 --- a/core/scripts/runtime.min.js +++ b/core/scripts/runtime.min.js @@ -3,10 +3,6 @@ function loadGeneContent(){checkAnswers_executed=!1,possible_gene=document.getEl
-
-

Please select the dry lab mode you would like to use:

-
-
Please select your gene:
diff --git a/core/scripts/serviceWorker/sw.js b/core/scripts/serviceWorker/sw.js index 2c1bdb9..5052dbf 100644 --- a/core/scripts/serviceWorker/sw.js +++ b/core/scripts/serviceWorker/sw.js @@ -1,3 +1,3 @@ -if(!self.define){let e,r={};const c=(c,o)=>(c=new URL(c+".js",o).href,r[c]||new Promise(r=>{if("document"in self){const e=document.createElement("script");e.src=c,e.onload=r,document.head.appendChild(e);}else e=c,importScripts(c),r();}).then(()=>{let e=r[c];if(!e)throw new Error(`Module ${c} didn’t register its module`);return e;}));self.define=(o,i)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(r[a])return;let s={};const n=e=>c(e,a),d={module:{uri:a},exports:s,require:n};r[a]=Promise.all(o.map(e=>d[e]||n(e))).then(e=>(i(...e),s));};}define(["./workbox-65a61656"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting();}),e.precacheAndRoute([{url:"/core/systemrun.html",revision:"20e44644ac71a407e51ca0f9d22a35ba"},{url:"/core/styling/style.min.css",revision:"65a608b7d010ea2b87bb7ea7584ab875"},{url:"/core/styling/style.css",revision:"b67cbfd3995e07bba50358eaa64009fe"},{url:"/core/scripts/runtime.min.js",revision:"b37786a16c561c5823e0c0f1f06c3c31"},{url:"/core/scripts/runtime.js",revision:"e0e4c9f38f610d5a80d74c967b677fe3"},{url:"/core/scripts/crispr_scripts.min.js",revision:"9d0639be504dda36b94685880b302f38"},{url:"/core/scripts/crispr_scripts.js",revision:"8c9b4cd749d625f2538705ce0d95e861"},{url:"/core/scripts/APIandLibraries/tabletoCSV/package.json",revision:"ef0258ebdf3f9d244d7d38c4c35ec723"},{url:"/core/scripts/APIandLibraries/tabletoCSV/jquery.tabletoCSV.js",revision:"1757e6cdbbbe5f5a1c330e2f182e24f2"},{url:"/core/scripts/APIandLibraries/tabletoCSV/gulpfile.js",revision:"c93880a7ac368dcd9b51d547948cbf8a"},{url:"/core/scripts/APIandLibraries/tabletoCSV/example.html",revision:"9b17ab0cdbf7acd33dfcfff87c410d2b"},{url:"/core/scripts/APIandLibraries/tabletoCSV/bower.json",revision:"79787e672bb7dc33e2a2e0bdc8467a38"},{url:"/core/scripts/APIandLibraries/tabletoCSV/README.md",revision:"d581efd7f3de48bdf77206307df41034"},{url:"/core/scripts/APIandLibraries/tabletoCSV/dist/jquery.tabletoCSV.js",revision:"38e3e2fcaff8b3a33f2e3bf01190e845"},{url:"/core/scripts/APIandLibraries/jQuery/jquery.min.js",revision:"a8e7cabd4d49dfaf0146678ee147dfc5"},{url:"/core/scripts/APIandLibraries/Fonts/MaterialIcon.css",revision:"c1cbea39f07b551807abd9967b809ffd"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.min.js",revision:"a92b3364fb0a7349f2a1c31a7ad5ed5e"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.js",revision:"52de67605c3d156f4958c83fa9cfc8d9"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.min.js",revision:"6ccf144f123da79e62d5e46a06f133b9"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.js",revision:"32e42b38a15f27b01f79bb13aad53714"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.min.js",revision:"5cc1b73e70520fa84b1846afe0ec8fb6"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.js",revision:"7d2c412531f05f39e97195f9b48a53dc"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.min.css",revision:"53aa521e55523d4f35610e568c5991fd"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.css",revision:"f50b588ab5764c08bb2e57da6bbe47c7"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.min.css",revision:"1b1cb0e2be9a21f091a87691f20c6300"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.css",revision:"32f9388da564ecf3f4f129021d3736a8"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.min.css",revision:"1282e3b4ef0226816da34cd92a7ae69b"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.css",revision:"95616dd04a2044a59dbefbc48c050891"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.min.css",revision:"20d013574c70b2032e408e8f81a8fec9"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.css",revision:"2609642eaa62f29a2275e0ced5a098fe"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.min.css",revision:"c01f229a610e6f96bdb57fd287f48fc9"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.css",revision:"0b4f19eb4846adc5a866b80c81bda434"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.min.css",revision:"7c821536802bd2fa35701c22f2e96d36"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.css",revision:"cb9d8d28a86d39db9b43030a8248b766"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.min.css",revision:"fc7e1eb57c409c379d21a8001a0f9b33"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.css",revision:"93f428651ed8b87b9986050f06e03cb2"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.min.css",revision:"895b9494c7178ac12ad9c56d81305665"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.css",revision:"4dd0ce2aa69225d64aacbded692fe756"},{url:"/core/images/logo_transparent.svg",revision:"d6abce258f77c56dfa6bb87765e3dfcf"},{url:"/core/images/logo_transparent.png",revision:"86746c9170e4cc9fccb363d0c54b3497"},{url:"/core/images/logo_transparent-Dark.svg",revision:"faef5b38e346a12888c11184c890292e"},{url:"/core/images/logo_transparent-Dark.png",revision:"cec8eede6a0b9a7e6da788d86edf6b37"},{url:"/core/images/dna.svg",revision:"7cf969d66011a6cddf39163fa202fa51"},{url:"/core/images/dna.png",revision:"d2778bf9fba581a4f4b8c2fca9abc9e8"},{url:"/core/images/EDITmd/005_Algorithm.png",revision:"934afcec1bad4f6cd1b39e799e6de5c2"},{url:"/core/images/EDITmd/004_FeedbackPage.png",revision:"e4ffddaa8a91c2c5547a89a4c6f47794"},{url:"/core/images/EDITmd/002_SciGradePracticeGene.png",revision:"a47cd17752a978f6e468985af11d5f3e"},{url:"/core/images/BackgroundImage/homeBackground.webp",revision:"fcb1240061569d6c355261f8d75a0f1b"},{url:"/core/images/BackgroundImage/grey.webp",revision:"44f3357b5a1f4d29ea3368de0f0f5279"},{url:"/core/icon/screenshot3.webp",revision:"19ef6219d8f3ba14ebf25b72e07240d8"},{url:"/core/icon/screenshot2.webp",revision:"87d56bb07395695fda9e04a30caf1672"},{url:"/core/icon/screenshot1.webp",revision:"426fd7165422ee95968d181411229d95"},{url:"/core/icon/safari-pinned-tab.svg",revision:"3a6f655958b21d384ae3dad886960d93"},{url:"/core/icon/resoc.png",revision:"4b94395e0972a350b0727a20e3d06baa"},{url:"/core/icon/mstile-70x70.png",revision:"b2902f78c5c0344f8a0558a8f36b97bf"},{url:"/core/icon/mstile-310x310.png",revision:"39af54c06ac44ebe9312f682ddd3602c"},{url:"/core/icon/mstile-310x150.png",revision:"7555e1760cd643b25105bfe4114eedfd"},{url:"/core/icon/mstile-150x150.png",revision:"4a6b569778e6b9d81aaee10df7c65284"},{url:"/core/icon/mstile-144x144.png",revision:"52d597709f2268268fd4063d34bd0ce7"},{url:"/core/icon/maskable_icon_x96.png",revision:"5269c50f0761a8aa50ae7201c28760c6"},{url:"/core/icon/maskable_icon_x72.png",revision:"0603508e30979836bd82b2d95dc0b1f4"},{url:"/core/icon/maskable_icon_x512.png",revision:"499293f67750aa3b60815cb50d8e3b72"},{url:"/core/icon/maskable_icon_x48.png",revision:"c521515543d0ccc88a843690484dfefe"},{url:"/core/icon/maskable_icon_x384.png",revision:"83527cdabf00617fb5b56df08a08b2a3"},{url:"/core/icon/maskable_icon_x192.png",revision:"bd977cf9153d6ebb3e8d8f79b4f100b6"},{url:"/core/icon/maskable_icon_x128.png",revision:"cf5ea1b4cd68730505d36d59d3c8b04d"},{url:"/core/icon/maskable_icon.png",revision:"94a300afab67912c4aa267989a725155"},{url:"/core/icon/manifest.json",revision:"ec78f1b4aaf3e8be6d7db11ef45fbf72"},{url:"/core/icon/favicon.ico",revision:"ea57adfd4a62355e9f4c2b46ef21600f"},{url:"/core/icon/favicon-32x32.png",revision:"a6296dcec5e5a6449807f753d885507d"},{url:"/core/icon/favicon-16x16.png",revision:"f9e844d671e8e4b80174f643fe4dcf56"},{url:"/core/icon/apple-touch-icon.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-precomposed.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-76x76.png",revision:"448377ba1760c41142b83ffd0fa47163"},{url:"/core/icon/apple-touch-icon-76x76-precomposed.png",revision:"448377ba1760c41142b83ffd0fa47163"},{url:"/core/icon/apple-touch-icon-72x72.png",revision:"819a43b6e5dc4991e399ff9b5d9b34b3"},{url:"/core/icon/apple-touch-icon-72x72-precomposed.png",revision:"819a43b6e5dc4991e399ff9b5d9b34b3"},{url:"/core/icon/apple-touch-icon-60x60.png",revision:"37be5e105d7a21fc8f3c437508dca233"},{url:"/core/icon/apple-touch-icon-60x60-precomposed.png",revision:"37be5e105d7a21fc8f3c437508dca233"},{url:"/core/icon/apple-touch-icon-57x57.png",revision:"b3e1d7fc553b33f086791c138d69bba1"},{url:"/core/icon/apple-touch-icon-57x57-precomposed.png",revision:"b3e1d7fc553b33f086791c138d69bba1"},{url:"/core/icon/apple-touch-icon-180x180.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-180x180-precomposed.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-152x152.png",revision:"8d46a8911ef72a562c97570d452f83ac"},{url:"/core/icon/apple-touch-icon-152x152-precomposed.png",revision:"8d46a8911ef72a562c97570d452f83ac"},{url:"/core/icon/apple-touch-icon-144x144.png",revision:"52d597709f2268268fd4063d34bd0ce7"},{url:"/core/icon/apple-touch-icon-144x144-precomposed.png",revision:"52d597709f2268268fd4063d34bd0ce7"},{url:"/core/icon/apple-touch-icon-120x120.png",revision:"c61a5acca54b104d7fe15fbc473796b5"},{url:"/core/icon/apple-touch-icon-120x120-precomposed.png",revision:"c61a5acca54b104d7fe15fbc473796b5"},{url:"/core/icon/apple-touch-icon-114x114.png",revision:"7b0f0af98c190974af01f605b117fc18"},{url:"/core/icon/apple-touch-icon-114x114-precomposed.png",revision:"7b0f0af98c190974af01f605b117fc18"},{url:"/core/icon/android-chrome-96x96.png",revision:"497e53074c189be631a8368192870f02"},{url:"/core/icon/android-chrome-72x72.png",revision:"a2b1197f79059981d8a19ba65ce73e6d"},{url:"/core/icon/android-chrome-512x512.png",revision:"d5a6869fb6a0d95e1c1398de5aac2278"},{url:"/core/icon/android-chrome-48x48.png",revision:"7ac44965ab502f17205e2d048d3e1580"},{url:"/core/icon/android-chrome-384x384.png",revision:"45ea1a83b4d26a9224844344602ad69e"},{url:"/core/icon/android-chrome-36x36.png",revision:"c3603b9735bb8397b0ac5351da9e94ed"},{url:"/core/icon/android-chrome-256x256.png",revision:"d80b94ad67334b9560e3cefaf8b04677"},{url:"/core/icon/android-chrome-192x192.png",revision:"f94fc51b10052dcc8f91e04945a618b8"},{url:"/core/icon/android-chrome-144x144.png",revision:"859cb36c4d6354a1d76e8d9692fdd88d"},{url:"/core/data/Benchling_gRNA_Outputs.json",revision:"515b0830b197e126a294fb15cd6d8e89"},{url:"/core/data/eBFP/eBFP.fasta",revision:"a30dc131549dc5fbbaa59128830ca49c"},{url:"/core/data/eBFP/Benchling_gRNA_outputs.xlsx",revision:"cb29f7f64c8c0f44cfe58c3504af0d2b"},{url:"/core/data/HBB/HBB.fasta",revision:"0314a959f59b730536fddec088d4a6c5"},{url:"/core/data/HBB/Benchling_gRNA_Outputs.xlsx",revision:"571ef05c0a5fc985423f08ab13e3fc71"},{url:"/core/data/CCR5/CCR5.fasta",revision:"60232b31119c5c0dfd9c59216f46928a"},{url:"/core/data/CCR5/Benchling_gRNA_Outputs.xlsx",revision:"d204b7de85c0def6a40789a3104dd975"},{url:"/core/data/Background_info/gene_background_info.json",revision:"ebeaca222ceb2e2354f6b2bacb6d0b26"},{url:"/core/data/APOE/Benchling_gRNA_Outputs.xlsx",revision:"d728b00ab3559732abc114c43893ba7e"},{url:"/core/data/APOE/APOE.fasta",revision:"9955beb43e9fd5a6e506cb9853ef13f2"},{url:"/core/data/ACTN3/Benchling_gRNA_Outputs.xlsx",revision:"9d9a05ae5858671f89b87ae185b4917b"},{url:"/core/data/ACTN3/ACTN3.fasta",revision:"a5ad42f7acbecbc28bed864b8377c5d4"}],{}),e.registerRoute(/\.(?:png|jpg|jpeg|webp|ico|svg)$/,new e.CacheFirst({cacheName:"images",plugins:[new e.ExpirationPlugin({maxEntries:10})]}),"GET"),e.registerRoute(/\.html$/,new e.NetworkFirst({cacheName:"html",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:50}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),e.registerRoute(/\.(?:css|js)$/,new e.NetworkFirst({cacheName:"assets",plugins:[new e.ExpirationPlugin({maxEntries:50}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET");}); +if(!self.define){let e,c={};const r=(r,o)=>(r=new URL(r+".js",o).href,c[r]||new Promise(c=>{if("document"in self){const e=document.createElement("script");e.src=r,e.onload=c,document.head.appendChild(e)}else e=r,importScripts(r),c()}).then(()=>{let e=c[r];if(!e)throw new Error(`Module ${r} didn’t register its module`);return e}));self.define=(o,i)=>{const a=e||("document"in self?document.currentScript.src:"")||location.href;if(c[a])return;let s={};const n=e=>r(e,a),d={module:{uri:a},exports:s,require:n};c[a]=Promise.all(o.map(e=>d[e]||n(e))).then(e=>(i(...e),s))}}define(["./workbox-65a61656"],function(e){"use strict";self.addEventListener("message",e=>{e.data&&"SKIP_WAITING"===e.data.type&&self.skipWaiting()}),e.precacheAndRoute([{url:"/core/systemrun.html",revision:"23a01500420c5661682af5e6cc3502a5"},{url:"/core/styling/style.min.css",revision:"65a608b7d010ea2b87bb7ea7584ab875"},{url:"/core/styling/style.css",revision:"b67cbfd3995e07bba50358eaa64009fe"},{url:"/core/scripts/runtime.min.js",revision:"48689f86e688cea0cdcf0b7d760d4b76"},{url:"/core/scripts/runtime.js",revision:"d97dc692cac988c54247bee2fd50dbc4"},{url:"/core/scripts/crispr_scripts.min.js",revision:"3431813c793558235a346cc1de18dbde"},{url:"/core/scripts/crispr_scripts.js",revision:"4f4f531cc70bc17d90230a13bbe87a24"},{url:"/core/scripts/APIandLibraries/tabletoCSV/package.json",revision:"ef0258ebdf3f9d244d7d38c4c35ec723"},{url:"/core/scripts/APIandLibraries/tabletoCSV/jquery.tabletoCSV.js",revision:"1757e6cdbbbe5f5a1c330e2f182e24f2"},{url:"/core/scripts/APIandLibraries/tabletoCSV/gulpfile.js",revision:"c93880a7ac368dcd9b51d547948cbf8a"},{url:"/core/scripts/APIandLibraries/tabletoCSV/example.html",revision:"9b17ab0cdbf7acd33dfcfff87c410d2b"},{url:"/core/scripts/APIandLibraries/tabletoCSV/bower.json",revision:"79787e672bb7dc33e2a2e0bdc8467a38"},{url:"/core/scripts/APIandLibraries/tabletoCSV/README.md",revision:"d581efd7f3de48bdf77206307df41034"},{url:"/core/scripts/APIandLibraries/tabletoCSV/dist/jquery.tabletoCSV.js",revision:"38e3e2fcaff8b3a33f2e3bf01190e845"},{url:"/core/scripts/APIandLibraries/jQuery/jquery.min.js",revision:"a8e7cabd4d49dfaf0146678ee147dfc5"},{url:"/core/scripts/APIandLibraries/Fonts/MaterialIcon.css",revision:"c1cbea39f07b551807abd9967b809ffd"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.min.js",revision:"a92b3364fb0a7349f2a1c31a7ad5ed5e"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.js",revision:"52de67605c3d156f4958c83fa9cfc8d9"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.min.js",revision:"6ccf144f123da79e62d5e46a06f133b9"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.js",revision:"32e42b38a15f27b01f79bb13aad53714"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.min.js",revision:"5cc1b73e70520fa84b1846afe0ec8fb6"},{url:"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.js",revision:"7d2c412531f05f39e97195f9b48a53dc"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.min.css",revision:"53aa521e55523d4f35610e568c5991fd"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.css",revision:"f50b588ab5764c08bb2e57da6bbe47c7"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.min.css",revision:"1b1cb0e2be9a21f091a87691f20c6300"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.css",revision:"32f9388da564ecf3f4f129021d3736a8"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.min.css",revision:"1282e3b4ef0226816da34cd92a7ae69b"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.css",revision:"95616dd04a2044a59dbefbc48c050891"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.min.css",revision:"20d013574c70b2032e408e8f81a8fec9"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.css",revision:"2609642eaa62f29a2275e0ced5a098fe"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.min.css",revision:"c01f229a610e6f96bdb57fd287f48fc9"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.css",revision:"0b4f19eb4846adc5a866b80c81bda434"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.min.css",revision:"7c821536802bd2fa35701c22f2e96d36"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.css",revision:"cb9d8d28a86d39db9b43030a8248b766"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.min.css",revision:"fc7e1eb57c409c379d21a8001a0f9b33"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.css",revision:"93f428651ed8b87b9986050f06e03cb2"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.min.css",revision:"895b9494c7178ac12ad9c56d81305665"},{url:"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.css",revision:"4dd0ce2aa69225d64aacbded692fe756"},{url:"/core/images/logo_transparent.svg",revision:"d6abce258f77c56dfa6bb87765e3dfcf"},{url:"/core/images/logo_transparent.png",revision:"86746c9170e4cc9fccb363d0c54b3497"},{url:"/core/images/logo_transparent-Dark.svg",revision:"faef5b38e346a12888c11184c890292e"},{url:"/core/images/logo_transparent-Dark.png",revision:"cec8eede6a0b9a7e6da788d86edf6b37"},{url:"/core/images/dna.svg",revision:"7cf969d66011a6cddf39163fa202fa51"},{url:"/core/images/dna.png",revision:"d2778bf9fba581a4f4b8c2fca9abc9e8"},{url:"/core/images/EDITmd/005_Algorithm.png",revision:"934afcec1bad4f6cd1b39e799e6de5c2"},{url:"/core/images/EDITmd/004_FeedbackPage.png",revision:"e4ffddaa8a91c2c5547a89a4c6f47794"},{url:"/core/images/EDITmd/002_SciGradePracticeGene.png",revision:"a47cd17752a978f6e468985af11d5f3e"},{url:"/core/images/BackgroundImage/homeBackground.webp",revision:"fcb1240061569d6c355261f8d75a0f1b"},{url:"/core/images/BackgroundImage/grey.webp",revision:"44f3357b5a1f4d29ea3368de0f0f5279"},{url:"/core/icon/screenshot3.webp",revision:"19ef6219d8f3ba14ebf25b72e07240d8"},{url:"/core/icon/screenshot2.webp",revision:"87d56bb07395695fda9e04a30caf1672"},{url:"/core/icon/screenshot1.webp",revision:"426fd7165422ee95968d181411229d95"},{url:"/core/icon/safari-pinned-tab.svg",revision:"3a6f655958b21d384ae3dad886960d93"},{url:"/core/icon/resoc.png",revision:"4b94395e0972a350b0727a20e3d06baa"},{url:"/core/icon/mstile-70x70.png",revision:"b2902f78c5c0344f8a0558a8f36b97bf"},{url:"/core/icon/mstile-310x310.png",revision:"39af54c06ac44ebe9312f682ddd3602c"},{url:"/core/icon/mstile-310x150.png",revision:"7555e1760cd643b25105bfe4114eedfd"},{url:"/core/icon/mstile-150x150.png",revision:"4a6b569778e6b9d81aaee10df7c65284"},{url:"/core/icon/mstile-144x144.png",revision:"52d597709f2268268fd4063d34bd0ce7"},{url:"/core/icon/maskable_icon_x96.png",revision:"5269c50f0761a8aa50ae7201c28760c6"},{url:"/core/icon/maskable_icon_x72.png",revision:"0603508e30979836bd82b2d95dc0b1f4"},{url:"/core/icon/maskable_icon_x512.png",revision:"499293f67750aa3b60815cb50d8e3b72"},{url:"/core/icon/maskable_icon_x48.png",revision:"c521515543d0ccc88a843690484dfefe"},{url:"/core/icon/maskable_icon_x384.png",revision:"83527cdabf00617fb5b56df08a08b2a3"},{url:"/core/icon/maskable_icon_x192.png",revision:"bd977cf9153d6ebb3e8d8f79b4f100b6"},{url:"/core/icon/maskable_icon_x128.png",revision:"cf5ea1b4cd68730505d36d59d3c8b04d"},{url:"/core/icon/maskable_icon.png",revision:"94a300afab67912c4aa267989a725155"},{url:"/core/icon/manifest.json",revision:"ec78f1b4aaf3e8be6d7db11ef45fbf72"},{url:"/core/icon/favicon.ico",revision:"ea57adfd4a62355e9f4c2b46ef21600f"},{url:"/core/icon/favicon-32x32.png",revision:"a6296dcec5e5a6449807f753d885507d"},{url:"/core/icon/favicon-16x16.png",revision:"f9e844d671e8e4b80174f643fe4dcf56"},{url:"/core/icon/apple-touch-icon.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-precomposed.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-76x76.png",revision:"448377ba1760c41142b83ffd0fa47163"},{url:"/core/icon/apple-touch-icon-76x76-precomposed.png",revision:"448377ba1760c41142b83ffd0fa47163"},{url:"/core/icon/apple-touch-icon-72x72.png",revision:"819a43b6e5dc4991e399ff9b5d9b34b3"},{url:"/core/icon/apple-touch-icon-72x72-precomposed.png",revision:"819a43b6e5dc4991e399ff9b5d9b34b3"},{url:"/core/icon/apple-touch-icon-60x60.png",revision:"37be5e105d7a21fc8f3c437508dca233"},{url:"/core/icon/apple-touch-icon-60x60-precomposed.png",revision:"37be5e105d7a21fc8f3c437508dca233"},{url:"/core/icon/apple-touch-icon-57x57.png",revision:"b3e1d7fc553b33f086791c138d69bba1"},{url:"/core/icon/apple-touch-icon-57x57-precomposed.png",revision:"b3e1d7fc553b33f086791c138d69bba1"},{url:"/core/icon/apple-touch-icon-180x180.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-180x180-precomposed.png",revision:"ced32ca13a0c404c96fc081dca7473eb"},{url:"/core/icon/apple-touch-icon-152x152.png",revision:"8d46a8911ef72a562c97570d452f83ac"},{url:"/core/icon/apple-touch-icon-152x152-precomposed.png",revision:"8d46a8911ef72a562c97570d452f83ac"},{url:"/core/icon/apple-touch-icon-144x144.png",revision:"52d597709f2268268fd4063d34bd0ce7"},{url:"/core/icon/apple-touch-icon-144x144-precomposed.png",revision:"52d597709f2268268fd4063d34bd0ce7"},{url:"/core/icon/apple-touch-icon-120x120.png",revision:"c61a5acca54b104d7fe15fbc473796b5"},{url:"/core/icon/apple-touch-icon-120x120-precomposed.png",revision:"c61a5acca54b104d7fe15fbc473796b5"},{url:"/core/icon/apple-touch-icon-114x114.png",revision:"7b0f0af98c190974af01f605b117fc18"},{url:"/core/icon/apple-touch-icon-114x114-precomposed.png",revision:"7b0f0af98c190974af01f605b117fc18"},{url:"/core/icon/android-chrome-96x96.png",revision:"497e53074c189be631a8368192870f02"},{url:"/core/icon/android-chrome-72x72.png",revision:"a2b1197f79059981d8a19ba65ce73e6d"},{url:"/core/icon/android-chrome-512x512.png",revision:"d5a6869fb6a0d95e1c1398de5aac2278"},{url:"/core/icon/android-chrome-48x48.png",revision:"7ac44965ab502f17205e2d048d3e1580"},{url:"/core/icon/android-chrome-384x384.png",revision:"45ea1a83b4d26a9224844344602ad69e"},{url:"/core/icon/android-chrome-36x36.png",revision:"c3603b9735bb8397b0ac5351da9e94ed"},{url:"/core/icon/android-chrome-256x256.png",revision:"d80b94ad67334b9560e3cefaf8b04677"},{url:"/core/icon/android-chrome-192x192.png",revision:"f94fc51b10052dcc8f91e04945a618b8"},{url:"/core/icon/android-chrome-144x144.png",revision:"859cb36c4d6354a1d76e8d9692fdd88d"},{url:"/core/data/Benchling_gRNA_Outputs.json",revision:"515b0830b197e126a294fb15cd6d8e89"},{url:"/core/data/eBFP/eBFP.fasta",revision:"a30dc131549dc5fbbaa59128830ca49c"},{url:"/core/data/eBFP/Benchling_gRNA_outputs.xlsx",revision:"cb29f7f64c8c0f44cfe58c3504af0d2b"},{url:"/core/data/HBB/HBB.fasta",revision:"0314a959f59b730536fddec088d4a6c5"},{url:"/core/data/HBB/Benchling_gRNA_Outputs.xlsx",revision:"571ef05c0a5fc985423f08ab13e3fc71"},{url:"/core/data/CCR5/CCR5.fasta",revision:"60232b31119c5c0dfd9c59216f46928a"},{url:"/core/data/CCR5/Benchling_gRNA_Outputs.xlsx",revision:"d204b7de85c0def6a40789a3104dd975"},{url:"/core/data/Background_info/gene_background_info.json",revision:"ebeaca222ceb2e2354f6b2bacb6d0b26"},{url:"/core/data/APOE/Benchling_gRNA_Outputs.xlsx",revision:"d728b00ab3559732abc114c43893ba7e"},{url:"/core/data/APOE/APOE.fasta",revision:"9955beb43e9fd5a6e506cb9853ef13f2"},{url:"/core/data/ACTN3/Benchling_gRNA_Outputs.xlsx",revision:"9d9a05ae5858671f89b87ae185b4917b"},{url:"/core/data/ACTN3/ACTN3.fasta",revision:"a5ad42f7acbecbc28bed864b8377c5d4"}],{}),e.registerRoute(/\.(?:png|jpg|jpeg|webp|ico|svg)$/,new e.CacheFirst({cacheName:"images",plugins:[new e.ExpirationPlugin({maxEntries:10})]}),"GET"),e.registerRoute(/\.html$/,new e.NetworkFirst({cacheName:"html",networkTimeoutSeconds:10,plugins:[new e.ExpirationPlugin({maxEntries:50}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET"),e.registerRoute(/\.(?:css|js)$/,new e.NetworkFirst({cacheName:"assets",plugins:[new e.ExpirationPlugin({maxEntries:50}),new e.CacheableResponsePlugin({statuses:[0,200]})]}),"GET")}); //# sourceMappingURL=sw.js.map //# sourceMappingURL=sw.js.map diff --git a/core/scripts/serviceWorker/sw.js.map b/core/scripts/serviceWorker/sw.js.map index 79c5044..f576342 100644 --- a/core/scripts/serviceWorker/sw.js.map +++ b/core/scripts/serviceWorker/sw.js.map @@ -1 +1 @@ -{"version":3,"file":"sw.js","sources":["../../../../../private/var/folders/j2/ybsmn15n6yq760kpndk79fh80000gn/T/a06e4036a1442749fb8318385a544195/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/core/systemrun.html\",\n \"revision\": \"20e44644ac71a407e51ca0f9d22a35ba\"\n },\n {\n \"url\": \"/core/styling/style.min.css\",\n \"revision\": \"65a608b7d010ea2b87bb7ea7584ab875\"\n },\n {\n \"url\": \"/core/styling/style.css\",\n \"revision\": \"b67cbfd3995e07bba50358eaa64009fe\"\n },\n {\n \"url\": \"/core/scripts/runtime.min.js\",\n \"revision\": \"b37786a16c561c5823e0c0f1f06c3c31\"\n },\n {\n \"url\": \"/core/scripts/runtime.js\",\n \"revision\": \"e0e4c9f38f610d5a80d74c967b677fe3\"\n },\n {\n \"url\": \"/core/scripts/crispr_scripts.min.js\",\n \"revision\": \"9d0639be504dda36b94685880b302f38\"\n },\n {\n \"url\": \"/core/scripts/crispr_scripts.js\",\n \"revision\": \"8c9b4cd749d625f2538705ce0d95e861\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/package.json\",\n \"revision\": \"ef0258ebdf3f9d244d7d38c4c35ec723\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/jquery.tabletoCSV.js\",\n \"revision\": \"1757e6cdbbbe5f5a1c330e2f182e24f2\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/gulpfile.js\",\n \"revision\": \"c93880a7ac368dcd9b51d547948cbf8a\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/example.html\",\n \"revision\": \"9b17ab0cdbf7acd33dfcfff87c410d2b\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/bower.json\",\n \"revision\": \"79787e672bb7dc33e2a2e0bdc8467a38\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/README.md\",\n \"revision\": \"d581efd7f3de48bdf77206307df41034\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/dist/jquery.tabletoCSV.js\",\n \"revision\": \"38e3e2fcaff8b3a33f2e3bf01190e845\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/jQuery/jquery.min.js\",\n \"revision\": \"a8e7cabd4d49dfaf0146678ee147dfc5\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Fonts/MaterialIcon.css\",\n \"revision\": \"c1cbea39f07b551807abd9967b809ffd\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.min.js\",\n \"revision\": \"a92b3364fb0a7349f2a1c31a7ad5ed5e\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.js\",\n \"revision\": \"52de67605c3d156f4958c83fa9cfc8d9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.min.js\",\n \"revision\": \"6ccf144f123da79e62d5e46a06f133b9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.js\",\n \"revision\": \"32e42b38a15f27b01f79bb13aad53714\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.min.js\",\n \"revision\": \"5cc1b73e70520fa84b1846afe0ec8fb6\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.js\",\n \"revision\": \"7d2c412531f05f39e97195f9b48a53dc\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.min.css\",\n \"revision\": \"53aa521e55523d4f35610e568c5991fd\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.css\",\n \"revision\": \"f50b588ab5764c08bb2e57da6bbe47c7\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.min.css\",\n \"revision\": \"1b1cb0e2be9a21f091a87691f20c6300\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.css\",\n \"revision\": \"32f9388da564ecf3f4f129021d3736a8\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.min.css\",\n \"revision\": \"1282e3b4ef0226816da34cd92a7ae69b\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.css\",\n \"revision\": \"95616dd04a2044a59dbefbc48c050891\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.min.css\",\n \"revision\": \"20d013574c70b2032e408e8f81a8fec9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.css\",\n \"revision\": \"2609642eaa62f29a2275e0ced5a098fe\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.min.css\",\n \"revision\": \"c01f229a610e6f96bdb57fd287f48fc9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.css\",\n \"revision\": \"0b4f19eb4846adc5a866b80c81bda434\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.min.css\",\n \"revision\": \"7c821536802bd2fa35701c22f2e96d36\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.css\",\n \"revision\": \"cb9d8d28a86d39db9b43030a8248b766\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.min.css\",\n \"revision\": \"fc7e1eb57c409c379d21a8001a0f9b33\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.css\",\n \"revision\": \"93f428651ed8b87b9986050f06e03cb2\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.min.css\",\n \"revision\": \"895b9494c7178ac12ad9c56d81305665\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.css\",\n \"revision\": \"4dd0ce2aa69225d64aacbded692fe756\"\n },\n {\n \"url\": \"/core/images/logo_transparent.svg\",\n \"revision\": \"d6abce258f77c56dfa6bb87765e3dfcf\"\n },\n {\n \"url\": \"/core/images/logo_transparent.png\",\n \"revision\": \"86746c9170e4cc9fccb363d0c54b3497\"\n },\n {\n \"url\": \"/core/images/logo_transparent-Dark.svg\",\n \"revision\": \"faef5b38e346a12888c11184c890292e\"\n },\n {\n \"url\": \"/core/images/logo_transparent-Dark.png\",\n \"revision\": \"cec8eede6a0b9a7e6da788d86edf6b37\"\n },\n {\n \"url\": \"/core/images/dna.svg\",\n \"revision\": \"7cf969d66011a6cddf39163fa202fa51\"\n },\n {\n \"url\": \"/core/images/dna.png\",\n \"revision\": \"d2778bf9fba581a4f4b8c2fca9abc9e8\"\n },\n {\n \"url\": \"/core/images/EDITmd/005_Algorithm.png\",\n \"revision\": \"934afcec1bad4f6cd1b39e799e6de5c2\"\n },\n {\n \"url\": \"/core/images/EDITmd/004_FeedbackPage.png\",\n \"revision\": \"e4ffddaa8a91c2c5547a89a4c6f47794\"\n },\n {\n \"url\": \"/core/images/EDITmd/002_SciGradePracticeGene.png\",\n \"revision\": \"a47cd17752a978f6e468985af11d5f3e\"\n },\n {\n \"url\": \"/core/images/BackgroundImage/homeBackground.webp\",\n \"revision\": \"fcb1240061569d6c355261f8d75a0f1b\"\n },\n {\n \"url\": \"/core/images/BackgroundImage/grey.webp\",\n \"revision\": \"44f3357b5a1f4d29ea3368de0f0f5279\"\n },\n {\n \"url\": \"/core/icon/screenshot3.webp\",\n \"revision\": \"19ef6219d8f3ba14ebf25b72e07240d8\"\n },\n {\n \"url\": \"/core/icon/screenshot2.webp\",\n \"revision\": \"87d56bb07395695fda9e04a30caf1672\"\n },\n {\n \"url\": \"/core/icon/screenshot1.webp\",\n \"revision\": \"426fd7165422ee95968d181411229d95\"\n },\n {\n \"url\": \"/core/icon/safari-pinned-tab.svg\",\n \"revision\": \"3a6f655958b21d384ae3dad886960d93\"\n },\n {\n \"url\": \"/core/icon/resoc.png\",\n \"revision\": \"4b94395e0972a350b0727a20e3d06baa\"\n },\n {\n \"url\": \"/core/icon/mstile-70x70.png\",\n \"revision\": \"b2902f78c5c0344f8a0558a8f36b97bf\"\n },\n {\n \"url\": \"/core/icon/mstile-310x310.png\",\n \"revision\": \"39af54c06ac44ebe9312f682ddd3602c\"\n },\n {\n \"url\": \"/core/icon/mstile-310x150.png\",\n \"revision\": \"7555e1760cd643b25105bfe4114eedfd\"\n },\n {\n \"url\": \"/core/icon/mstile-150x150.png\",\n \"revision\": \"4a6b569778e6b9d81aaee10df7c65284\"\n },\n {\n \"url\": \"/core/icon/mstile-144x144.png\",\n \"revision\": \"52d597709f2268268fd4063d34bd0ce7\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x96.png\",\n \"revision\": \"5269c50f0761a8aa50ae7201c28760c6\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x72.png\",\n \"revision\": \"0603508e30979836bd82b2d95dc0b1f4\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x512.png\",\n \"revision\": \"499293f67750aa3b60815cb50d8e3b72\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x48.png\",\n \"revision\": \"c521515543d0ccc88a843690484dfefe\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x384.png\",\n \"revision\": \"83527cdabf00617fb5b56df08a08b2a3\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x192.png\",\n \"revision\": \"bd977cf9153d6ebb3e8d8f79b4f100b6\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x128.png\",\n \"revision\": \"cf5ea1b4cd68730505d36d59d3c8b04d\"\n },\n {\n \"url\": \"/core/icon/maskable_icon.png\",\n \"revision\": \"94a300afab67912c4aa267989a725155\"\n },\n {\n \"url\": \"/core/icon/manifest.json\",\n \"revision\": \"ec78f1b4aaf3e8be6d7db11ef45fbf72\"\n },\n {\n \"url\": \"/core/icon/favicon.ico\",\n \"revision\": \"ea57adfd4a62355e9f4c2b46ef21600f\"\n },\n {\n \"url\": \"/core/icon/favicon-32x32.png\",\n \"revision\": \"a6296dcec5e5a6449807f753d885507d\"\n },\n {\n \"url\": \"/core/icon/favicon-16x16.png\",\n \"revision\": \"f9e844d671e8e4b80174f643fe4dcf56\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-precomposed.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-76x76.png\",\n \"revision\": \"448377ba1760c41142b83ffd0fa47163\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-76x76-precomposed.png\",\n \"revision\": \"448377ba1760c41142b83ffd0fa47163\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-72x72.png\",\n \"revision\": \"819a43b6e5dc4991e399ff9b5d9b34b3\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-72x72-precomposed.png\",\n \"revision\": \"819a43b6e5dc4991e399ff9b5d9b34b3\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-60x60.png\",\n \"revision\": \"37be5e105d7a21fc8f3c437508dca233\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-60x60-precomposed.png\",\n \"revision\": \"37be5e105d7a21fc8f3c437508dca233\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-57x57.png\",\n \"revision\": \"b3e1d7fc553b33f086791c138d69bba1\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-57x57-precomposed.png\",\n \"revision\": \"b3e1d7fc553b33f086791c138d69bba1\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-180x180.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-180x180-precomposed.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-152x152.png\",\n \"revision\": \"8d46a8911ef72a562c97570d452f83ac\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-152x152-precomposed.png\",\n \"revision\": \"8d46a8911ef72a562c97570d452f83ac\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-144x144.png\",\n \"revision\": \"52d597709f2268268fd4063d34bd0ce7\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-144x144-precomposed.png\",\n \"revision\": \"52d597709f2268268fd4063d34bd0ce7\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-120x120.png\",\n \"revision\": \"c61a5acca54b104d7fe15fbc473796b5\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-120x120-precomposed.png\",\n \"revision\": \"c61a5acca54b104d7fe15fbc473796b5\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-114x114.png\",\n \"revision\": \"7b0f0af98c190974af01f605b117fc18\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-114x114-precomposed.png\",\n \"revision\": \"7b0f0af98c190974af01f605b117fc18\"\n },\n {\n \"url\": \"/core/icon/android-chrome-96x96.png\",\n \"revision\": \"497e53074c189be631a8368192870f02\"\n },\n {\n \"url\": \"/core/icon/android-chrome-72x72.png\",\n \"revision\": \"a2b1197f79059981d8a19ba65ce73e6d\"\n },\n {\n \"url\": \"/core/icon/android-chrome-512x512.png\",\n \"revision\": \"d5a6869fb6a0d95e1c1398de5aac2278\"\n },\n {\n \"url\": \"/core/icon/android-chrome-48x48.png\",\n \"revision\": \"7ac44965ab502f17205e2d048d3e1580\"\n },\n {\n \"url\": \"/core/icon/android-chrome-384x384.png\",\n \"revision\": \"45ea1a83b4d26a9224844344602ad69e\"\n },\n {\n \"url\": \"/core/icon/android-chrome-36x36.png\",\n \"revision\": \"c3603b9735bb8397b0ac5351da9e94ed\"\n },\n {\n \"url\": \"/core/icon/android-chrome-256x256.png\",\n \"revision\": \"d80b94ad67334b9560e3cefaf8b04677\"\n },\n {\n \"url\": \"/core/icon/android-chrome-192x192.png\",\n \"revision\": \"f94fc51b10052dcc8f91e04945a618b8\"\n },\n {\n \"url\": \"/core/icon/android-chrome-144x144.png\",\n \"revision\": \"859cb36c4d6354a1d76e8d9692fdd88d\"\n },\n {\n \"url\": \"/core/data/Benchling_gRNA_Outputs.json\",\n \"revision\": \"515b0830b197e126a294fb15cd6d8e89\"\n },\n {\n \"url\": \"/core/data/eBFP/eBFP.fasta\",\n \"revision\": \"a30dc131549dc5fbbaa59128830ca49c\"\n },\n {\n \"url\": \"/core/data/eBFP/Benchling_gRNA_outputs.xlsx\",\n \"revision\": \"cb29f7f64c8c0f44cfe58c3504af0d2b\"\n },\n {\n \"url\": \"/core/data/HBB/HBB.fasta\",\n \"revision\": \"0314a959f59b730536fddec088d4a6c5\"\n },\n {\n \"url\": \"/core/data/HBB/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"571ef05c0a5fc985423f08ab13e3fc71\"\n },\n {\n \"url\": \"/core/data/CCR5/CCR5.fasta\",\n \"revision\": \"60232b31119c5c0dfd9c59216f46928a\"\n },\n {\n \"url\": \"/core/data/CCR5/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"d204b7de85c0def6a40789a3104dd975\"\n },\n {\n \"url\": \"/core/data/Background_info/gene_background_info.json\",\n \"revision\": \"ebeaca222ceb2e2354f6b2bacb6d0b26\"\n },\n {\n \"url\": \"/core/data/APOE/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"d728b00ab3559732abc114c43893ba7e\"\n },\n {\n \"url\": \"/core/data/APOE/APOE.fasta\",\n \"revision\": \"9955beb43e9fd5a6e506cb9853ef13f2\"\n },\n {\n \"url\": \"/core/data/ACTN3/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"9d9a05ae5858671f89b87ae185b4917b\"\n },\n {\n \"url\": \"/core/data/ACTN3/ACTN3.fasta\",\n \"revision\": \"a5ad42f7acbecbc28bed864b8377c5d4\"\n }\n], {});\n\nworkbox_routing_registerRoute(/\\.(?:png|jpg|jpeg|webp|ico|svg)$/, new workbox_strategies_CacheFirst({ \"cacheName\":\"images\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 10 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.html$/, new workbox_strategies_NetworkFirst({ \"cacheName\":\"html\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 50 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:css|js)$/, new workbox_strategies_NetworkFirst({ \"cacheName\":\"assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 50 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","workbox_routing_registerRoute","workbox_strategies_CacheFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxEntries","workbox_strategies_NetworkFirst","networkTimeoutSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"inBAoBAA,KAAKC,iBAAiB,UAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,gBASTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,8EACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,oCAEd,CACED,IAAO,sEACPC,SAAY,oCAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,qCAEb,CAAA,GAEHC,EAAAA,cAA8B,mCAAoC,IAAIC,aAA8B,CAAEC,UAAY,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,QAAW,OACvML,EAAAA,cAA8B,UAAW,IAAIM,eAAgC,CAAEJ,UAAY,OAAOK,sBAAwB,GAAIJ,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,KAAO,IAAIG,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc,OAC3RT,EAAAA,cAA8B,gBAAiB,IAAIM,eAAgC,CAAEJ,UAAY,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,KAAO,IAAIG,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"} \ No newline at end of file +{"version":3,"file":"sw.js","sources":["../../../../../private/var/folders/j2/ybsmn15n6yq760kpndk79fh80000gn/T/d26a461de57dfcc1ac8fc3e87a7ccd5c/sw.js"],"sourcesContent":["import {registerRoute as workbox_routing_registerRoute} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-routing/registerRoute.mjs';\nimport {ExpirationPlugin as workbox_expiration_ExpirationPlugin} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-expiration/ExpirationPlugin.mjs';\nimport {CacheFirst as workbox_strategies_CacheFirst} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-strategies/CacheFirst.mjs';\nimport {CacheableResponsePlugin as workbox_cacheable_response_CacheableResponsePlugin} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-cacheable-response/CacheableResponsePlugin.mjs';\nimport {NetworkFirst as workbox_strategies_NetworkFirst} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-strategies/NetworkFirst.mjs';\nimport {precacheAndRoute as workbox_precaching_precacheAndRoute} from '/Users/joohyun/Documents/code/SciGrade/node_modules/workbox-precaching/precacheAndRoute.mjs';/**\n * Welcome to your Workbox-powered service worker!\n *\n * You'll need to register this file in your web app.\n * See https://goo.gl/nhQhGp\n *\n * The rest of the code is auto-generated. Please don't update this file\n * directly; instead, make changes to your Workbox build configuration\n * and re-run your build process.\n * See https://goo.gl/2aRDsh\n */\n\n\n\n\nself.addEventListener('message', (event) => {\n if (event.data && event.data.type === 'SKIP_WAITING') {\n self.skipWaiting();\n }\n});\n\n/**\n * The precacheAndRoute() method efficiently caches and responds to\n * requests for URLs in the manifest.\n * See https://goo.gl/S9QRab\n */\nworkbox_precaching_precacheAndRoute([\n {\n \"url\": \"/core/systemrun.html\",\n \"revision\": \"23a01500420c5661682af5e6cc3502a5\"\n },\n {\n \"url\": \"/core/styling/style.min.css\",\n \"revision\": \"65a608b7d010ea2b87bb7ea7584ab875\"\n },\n {\n \"url\": \"/core/styling/style.css\",\n \"revision\": \"b67cbfd3995e07bba50358eaa64009fe\"\n },\n {\n \"url\": \"/core/scripts/runtime.min.js\",\n \"revision\": \"48689f86e688cea0cdcf0b7d760d4b76\"\n },\n {\n \"url\": \"/core/scripts/runtime.js\",\n \"revision\": \"d97dc692cac988c54247bee2fd50dbc4\"\n },\n {\n \"url\": \"/core/scripts/crispr_scripts.min.js\",\n \"revision\": \"3431813c793558235a346cc1de18dbde\"\n },\n {\n \"url\": \"/core/scripts/crispr_scripts.js\",\n \"revision\": \"4f4f531cc70bc17d90230a13bbe87a24\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/package.json\",\n \"revision\": \"ef0258ebdf3f9d244d7d38c4c35ec723\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/jquery.tabletoCSV.js\",\n \"revision\": \"1757e6cdbbbe5f5a1c330e2f182e24f2\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/gulpfile.js\",\n \"revision\": \"c93880a7ac368dcd9b51d547948cbf8a\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/example.html\",\n \"revision\": \"9b17ab0cdbf7acd33dfcfff87c410d2b\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/bower.json\",\n \"revision\": \"79787e672bb7dc33e2a2e0bdc8467a38\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/README.md\",\n \"revision\": \"d581efd7f3de48bdf77206307df41034\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/tabletoCSV/dist/jquery.tabletoCSV.js\",\n \"revision\": \"38e3e2fcaff8b3a33f2e3bf01190e845\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/jQuery/jquery.min.js\",\n \"revision\": \"a8e7cabd4d49dfaf0146678ee147dfc5\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Fonts/MaterialIcon.css\",\n \"revision\": \"c1cbea39f07b551807abd9967b809ffd\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.min.js\",\n \"revision\": \"a92b3364fb0a7349f2a1c31a7ad5ed5e\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.js\",\n \"revision\": \"52de67605c3d156f4958c83fa9cfc8d9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.min.js\",\n \"revision\": \"6ccf144f123da79e62d5e46a06f133b9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.esm.js\",\n \"revision\": \"32e42b38a15f27b01f79bb13aad53714\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.min.js\",\n \"revision\": \"5cc1b73e70520fa84b1846afe0ec8fb6\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/js/bootstrap.bundle.js\",\n \"revision\": \"7d2c412531f05f39e97195f9b48a53dc\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.min.css\",\n \"revision\": \"53aa521e55523d4f35610e568c5991fd\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.rtl.css\",\n \"revision\": \"f50b588ab5764c08bb2e57da6bbe47c7\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.min.css\",\n \"revision\": \"1b1cb0e2be9a21f091a87691f20c6300\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap.css\",\n \"revision\": \"32f9388da564ecf3f4f129021d3736a8\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.min.css\",\n \"revision\": \"1282e3b4ef0226816da34cd92a7ae69b\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.rtl.css\",\n \"revision\": \"95616dd04a2044a59dbefbc48c050891\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.min.css\",\n \"revision\": \"20d013574c70b2032e408e8f81a8fec9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-utilities.css\",\n \"revision\": \"2609642eaa62f29a2275e0ced5a098fe\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.min.css\",\n \"revision\": \"c01f229a610e6f96bdb57fd287f48fc9\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.rtl.css\",\n \"revision\": \"0b4f19eb4846adc5a866b80c81bda434\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.min.css\",\n \"revision\": \"7c821536802bd2fa35701c22f2e96d36\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-reboot.css\",\n \"revision\": \"cb9d8d28a86d39db9b43030a8248b766\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.min.css\",\n \"revision\": \"fc7e1eb57c409c379d21a8001a0f9b33\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.rtl.css\",\n \"revision\": \"93f428651ed8b87b9986050f06e03cb2\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.min.css\",\n \"revision\": \"895b9494c7178ac12ad9c56d81305665\"\n },\n {\n \"url\": \"/core/scripts/APIandLibraries/Bootstrap/css/bootstrap-grid.css\",\n \"revision\": \"4dd0ce2aa69225d64aacbded692fe756\"\n },\n {\n \"url\": \"/core/images/logo_transparent.svg\",\n \"revision\": \"d6abce258f77c56dfa6bb87765e3dfcf\"\n },\n {\n \"url\": \"/core/images/logo_transparent.png\",\n \"revision\": \"86746c9170e4cc9fccb363d0c54b3497\"\n },\n {\n \"url\": \"/core/images/logo_transparent-Dark.svg\",\n \"revision\": \"faef5b38e346a12888c11184c890292e\"\n },\n {\n \"url\": \"/core/images/logo_transparent-Dark.png\",\n \"revision\": \"cec8eede6a0b9a7e6da788d86edf6b37\"\n },\n {\n \"url\": \"/core/images/dna.svg\",\n \"revision\": \"7cf969d66011a6cddf39163fa202fa51\"\n },\n {\n \"url\": \"/core/images/dna.png\",\n \"revision\": \"d2778bf9fba581a4f4b8c2fca9abc9e8\"\n },\n {\n \"url\": \"/core/images/EDITmd/005_Algorithm.png\",\n \"revision\": \"934afcec1bad4f6cd1b39e799e6de5c2\"\n },\n {\n \"url\": \"/core/images/EDITmd/004_FeedbackPage.png\",\n \"revision\": \"e4ffddaa8a91c2c5547a89a4c6f47794\"\n },\n {\n \"url\": \"/core/images/EDITmd/002_SciGradePracticeGene.png\",\n \"revision\": \"a47cd17752a978f6e468985af11d5f3e\"\n },\n {\n \"url\": \"/core/images/BackgroundImage/homeBackground.webp\",\n \"revision\": \"fcb1240061569d6c355261f8d75a0f1b\"\n },\n {\n \"url\": \"/core/images/BackgroundImage/grey.webp\",\n \"revision\": \"44f3357b5a1f4d29ea3368de0f0f5279\"\n },\n {\n \"url\": \"/core/icon/screenshot3.webp\",\n \"revision\": \"19ef6219d8f3ba14ebf25b72e07240d8\"\n },\n {\n \"url\": \"/core/icon/screenshot2.webp\",\n \"revision\": \"87d56bb07395695fda9e04a30caf1672\"\n },\n {\n \"url\": \"/core/icon/screenshot1.webp\",\n \"revision\": \"426fd7165422ee95968d181411229d95\"\n },\n {\n \"url\": \"/core/icon/safari-pinned-tab.svg\",\n \"revision\": \"3a6f655958b21d384ae3dad886960d93\"\n },\n {\n \"url\": \"/core/icon/resoc.png\",\n \"revision\": \"4b94395e0972a350b0727a20e3d06baa\"\n },\n {\n \"url\": \"/core/icon/mstile-70x70.png\",\n \"revision\": \"b2902f78c5c0344f8a0558a8f36b97bf\"\n },\n {\n \"url\": \"/core/icon/mstile-310x310.png\",\n \"revision\": \"39af54c06ac44ebe9312f682ddd3602c\"\n },\n {\n \"url\": \"/core/icon/mstile-310x150.png\",\n \"revision\": \"7555e1760cd643b25105bfe4114eedfd\"\n },\n {\n \"url\": \"/core/icon/mstile-150x150.png\",\n \"revision\": \"4a6b569778e6b9d81aaee10df7c65284\"\n },\n {\n \"url\": \"/core/icon/mstile-144x144.png\",\n \"revision\": \"52d597709f2268268fd4063d34bd0ce7\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x96.png\",\n \"revision\": \"5269c50f0761a8aa50ae7201c28760c6\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x72.png\",\n \"revision\": \"0603508e30979836bd82b2d95dc0b1f4\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x512.png\",\n \"revision\": \"499293f67750aa3b60815cb50d8e3b72\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x48.png\",\n \"revision\": \"c521515543d0ccc88a843690484dfefe\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x384.png\",\n \"revision\": \"83527cdabf00617fb5b56df08a08b2a3\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x192.png\",\n \"revision\": \"bd977cf9153d6ebb3e8d8f79b4f100b6\"\n },\n {\n \"url\": \"/core/icon/maskable_icon_x128.png\",\n \"revision\": \"cf5ea1b4cd68730505d36d59d3c8b04d\"\n },\n {\n \"url\": \"/core/icon/maskable_icon.png\",\n \"revision\": \"94a300afab67912c4aa267989a725155\"\n },\n {\n \"url\": \"/core/icon/manifest.json\",\n \"revision\": \"ec78f1b4aaf3e8be6d7db11ef45fbf72\"\n },\n {\n \"url\": \"/core/icon/favicon.ico\",\n \"revision\": \"ea57adfd4a62355e9f4c2b46ef21600f\"\n },\n {\n \"url\": \"/core/icon/favicon-32x32.png\",\n \"revision\": \"a6296dcec5e5a6449807f753d885507d\"\n },\n {\n \"url\": \"/core/icon/favicon-16x16.png\",\n \"revision\": \"f9e844d671e8e4b80174f643fe4dcf56\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-precomposed.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-76x76.png\",\n \"revision\": \"448377ba1760c41142b83ffd0fa47163\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-76x76-precomposed.png\",\n \"revision\": \"448377ba1760c41142b83ffd0fa47163\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-72x72.png\",\n \"revision\": \"819a43b6e5dc4991e399ff9b5d9b34b3\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-72x72-precomposed.png\",\n \"revision\": \"819a43b6e5dc4991e399ff9b5d9b34b3\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-60x60.png\",\n \"revision\": \"37be5e105d7a21fc8f3c437508dca233\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-60x60-precomposed.png\",\n \"revision\": \"37be5e105d7a21fc8f3c437508dca233\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-57x57.png\",\n \"revision\": \"b3e1d7fc553b33f086791c138d69bba1\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-57x57-precomposed.png\",\n \"revision\": \"b3e1d7fc553b33f086791c138d69bba1\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-180x180.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-180x180-precomposed.png\",\n \"revision\": \"ced32ca13a0c404c96fc081dca7473eb\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-152x152.png\",\n \"revision\": \"8d46a8911ef72a562c97570d452f83ac\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-152x152-precomposed.png\",\n \"revision\": \"8d46a8911ef72a562c97570d452f83ac\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-144x144.png\",\n \"revision\": \"52d597709f2268268fd4063d34bd0ce7\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-144x144-precomposed.png\",\n \"revision\": \"52d597709f2268268fd4063d34bd0ce7\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-120x120.png\",\n \"revision\": \"c61a5acca54b104d7fe15fbc473796b5\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-120x120-precomposed.png\",\n \"revision\": \"c61a5acca54b104d7fe15fbc473796b5\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-114x114.png\",\n \"revision\": \"7b0f0af98c190974af01f605b117fc18\"\n },\n {\n \"url\": \"/core/icon/apple-touch-icon-114x114-precomposed.png\",\n \"revision\": \"7b0f0af98c190974af01f605b117fc18\"\n },\n {\n \"url\": \"/core/icon/android-chrome-96x96.png\",\n \"revision\": \"497e53074c189be631a8368192870f02\"\n },\n {\n \"url\": \"/core/icon/android-chrome-72x72.png\",\n \"revision\": \"a2b1197f79059981d8a19ba65ce73e6d\"\n },\n {\n \"url\": \"/core/icon/android-chrome-512x512.png\",\n \"revision\": \"d5a6869fb6a0d95e1c1398de5aac2278\"\n },\n {\n \"url\": \"/core/icon/android-chrome-48x48.png\",\n \"revision\": \"7ac44965ab502f17205e2d048d3e1580\"\n },\n {\n \"url\": \"/core/icon/android-chrome-384x384.png\",\n \"revision\": \"45ea1a83b4d26a9224844344602ad69e\"\n },\n {\n \"url\": \"/core/icon/android-chrome-36x36.png\",\n \"revision\": \"c3603b9735bb8397b0ac5351da9e94ed\"\n },\n {\n \"url\": \"/core/icon/android-chrome-256x256.png\",\n \"revision\": \"d80b94ad67334b9560e3cefaf8b04677\"\n },\n {\n \"url\": \"/core/icon/android-chrome-192x192.png\",\n \"revision\": \"f94fc51b10052dcc8f91e04945a618b8\"\n },\n {\n \"url\": \"/core/icon/android-chrome-144x144.png\",\n \"revision\": \"859cb36c4d6354a1d76e8d9692fdd88d\"\n },\n {\n \"url\": \"/core/data/Benchling_gRNA_Outputs.json\",\n \"revision\": \"515b0830b197e126a294fb15cd6d8e89\"\n },\n {\n \"url\": \"/core/data/eBFP/eBFP.fasta\",\n \"revision\": \"a30dc131549dc5fbbaa59128830ca49c\"\n },\n {\n \"url\": \"/core/data/eBFP/Benchling_gRNA_outputs.xlsx\",\n \"revision\": \"cb29f7f64c8c0f44cfe58c3504af0d2b\"\n },\n {\n \"url\": \"/core/data/HBB/HBB.fasta\",\n \"revision\": \"0314a959f59b730536fddec088d4a6c5\"\n },\n {\n \"url\": \"/core/data/HBB/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"571ef05c0a5fc985423f08ab13e3fc71\"\n },\n {\n \"url\": \"/core/data/CCR5/CCR5.fasta\",\n \"revision\": \"60232b31119c5c0dfd9c59216f46928a\"\n },\n {\n \"url\": \"/core/data/CCR5/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"d204b7de85c0def6a40789a3104dd975\"\n },\n {\n \"url\": \"/core/data/Background_info/gene_background_info.json\",\n \"revision\": \"ebeaca222ceb2e2354f6b2bacb6d0b26\"\n },\n {\n \"url\": \"/core/data/APOE/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"d728b00ab3559732abc114c43893ba7e\"\n },\n {\n \"url\": \"/core/data/APOE/APOE.fasta\",\n \"revision\": \"9955beb43e9fd5a6e506cb9853ef13f2\"\n },\n {\n \"url\": \"/core/data/ACTN3/Benchling_gRNA_Outputs.xlsx\",\n \"revision\": \"9d9a05ae5858671f89b87ae185b4917b\"\n },\n {\n \"url\": \"/core/data/ACTN3/ACTN3.fasta\",\n \"revision\": \"a5ad42f7acbecbc28bed864b8377c5d4\"\n }\n], {});\n\nworkbox_routing_registerRoute(/\\.(?:png|jpg|jpeg|webp|ico|svg)$/, new workbox_strategies_CacheFirst({ \"cacheName\":\"images\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 10 })] }), 'GET');\nworkbox_routing_registerRoute(/\\.html$/, new workbox_strategies_NetworkFirst({ \"cacheName\":\"html\",\"networkTimeoutSeconds\":10, plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 50 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\nworkbox_routing_registerRoute(/\\.(?:css|js)$/, new workbox_strategies_NetworkFirst({ \"cacheName\":\"assets\", plugins: [new workbox_expiration_ExpirationPlugin({ maxEntries: 50 }), new workbox_cacheable_response_CacheableResponsePlugin({ statuses: [ 0, 200 ] })] }), 'GET');\n\n\n"],"names":["self","addEventListener","event","data","type","skipWaiting","workbox_precaching_precacheAndRoute","url","revision","workbox_routing_registerRoute","workbox_strategies_CacheFirst","cacheName","plugins","workbox_expiration_ExpirationPlugin","maxEntries","workbox_strategies_NetworkFirst","networkTimeoutSeconds","workbox_cacheable_response_CacheableResponsePlugin","statuses"],"mappings":"inBAoBAA,KAAKC,iBAAiB,UAAYC,IAC5BA,EAAMC,MAA4B,iBAApBD,EAAMC,KAAKC,MAC3BJ,KAAKK,gBASTC,EAAAA,iBAAoC,CAClC,CACEC,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,0BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,wDACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,qDACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,0DACPC,SAAY,oCAEd,CACED,IAAO,kEACPC,SAAY,oCAEd,CACED,IAAO,8DACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,oEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,gEACPC,SAAY,oCAEd,CACED,IAAO,4DACPC,SAAY,oCAEd,CACED,IAAO,8EACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,oCAEd,CACED,IAAO,0EACPC,SAAY,oCAEd,CACED,IAAO,sEACPC,SAAY,oCAEd,CACED,IAAO,2EACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,uEACPC,SAAY,oCAEd,CACED,IAAO,mEACPC,SAAY,oCAEd,CACED,IAAO,yEACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,qEACPC,SAAY,oCAEd,CACED,IAAO,iEACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,2CACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,mDACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,uBACPC,SAAY,oCAEd,CACED,IAAO,8BACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,gCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,mCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,oCACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,yBACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,oCAEd,CACED,IAAO,kCACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,oDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,0CACPC,SAAY,oCAEd,CACED,IAAO,sDACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,sCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,wCACPC,SAAY,oCAEd,CACED,IAAO,yCACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,2BACPC,SAAY,oCAEd,CACED,IAAO,6CACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,uDACPC,SAAY,oCAEd,CACED,IAAO,8CACPC,SAAY,oCAEd,CACED,IAAO,6BACPC,SAAY,oCAEd,CACED,IAAO,+CACPC,SAAY,oCAEd,CACED,IAAO,+BACPC,SAAY,qCAEb,CAAA,GAEHC,EAAAA,cAA8B,mCAAoC,IAAIC,aAA8B,CAAEC,UAAY,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,QAAW,OACvML,EAAAA,cAA8B,UAAW,IAAIM,eAAgC,CAAEJ,UAAY,OAAOK,sBAAwB,GAAIJ,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,KAAO,IAAIG,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc,OAC3RT,EAAAA,cAA8B,gBAAiB,IAAIM,eAAgC,CAAEJ,UAAY,SAAUC,QAAS,CAAC,IAAIC,mBAAoC,CAAEC,WAAY,KAAO,IAAIG,EAAAA,wBAAmD,CAAEC,SAAU,CAAE,EAAG,UAAc"} \ No newline at end of file diff --git a/core/scripts/serviceWorker/workbox-65a61656.js b/core/scripts/serviceWorker/workbox-65a61656.js index 4579658..39b0ca5 100644 --- a/core/scripts/serviceWorker/workbox-65a61656.js +++ b/core/scripts/serviceWorker/workbox-65a61656.js @@ -1,3 +1,3 @@ -define(["exports"],function(t){"use strict";try{self["workbox:core:7.4.0"]&&_();}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s;};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s;}}try{self["workbox:routing:7.4.0"]&&_();}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s;}setCatchHandler(t){this.catchHandler=n(t);}}class r extends i{constructor(t,e,s){super(({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1);},e,s);}}class a{constructor(){this.t=new Map,this.i=new Map;}get routes(){return this.t;}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s);});}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map(e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t});}));t.waitUntil(s),t.ports&&t.ports[0]&&s.then(()=>t.ports[0].postMessage(!0));}});}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=r&&r.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:i});}catch(t){c=Promise.reject(t);}const h=r&&r.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch(async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i});}catch(t){t instanceof Error&&(n=t);}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n;})),c;}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const a=r.match({url:t,sameOrigin:e,request:s,event:n});if(a)return i=a,(Array.isArray(i)&&0===i.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(i=void 0),{route:r,params:i};}return{};}setDefaultHandler(t,e="GET"){this.i.set(e,n(t));}setCatchHandler(t){this.o=n(t);}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t);}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1);}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new i(({url:t})=>t.href===s.href,e,n);}else if(t instanceof RegExp)a=new r(t,e,n);else if("function"==typeof t)a=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t;}return c().registerRoute(a),a;}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter(t=>t&&t.length>0).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t){t.then(()=>{});}const p=new Set;function y(){return y=Object.assign?Object.assign.bind():function(t){for(var e=1;e(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function x(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(g||(g=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(E(this),e),L(R.get(this));}:function(...e){return L(t.apply(E(this),e));}:function(e,...s){const n=t.call(E(this),e,...s);return b.set(n,e.sort?e.sort():[e]),L(n);};}function I(t){return"function"==typeof t?x(t):(t instanceof IDBTransaction&&function(t){if(v.has(t))return;const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("complete",i),t.removeEventListener("error",r),t.removeEventListener("abort",r);},i=()=>{e(),n();},r=()=>{s(t.error||new DOMException("AbortError","AbortError")),n();};t.addEventListener("complete",i),t.addEventListener("error",r),t.addEventListener("abort",r);});v.set(t,e);}(t),e=t,(m||(m=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some(t=>e instanceof t)?new Proxy(t,U):t);var e;}function L(t){if(t instanceof IDBRequest)return function(t){const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("success",i),t.removeEventListener("error",r);},i=()=>{e(L(t.result)),n();},r=()=>{s(t.error),n();};t.addEventListener("success",i),t.addEventListener("error",r);});return e.then(e=>{e instanceof IDBCursor&&R.set(e,t);}).catch(()=>{}),D.set(e,t),e;}(t);if(q.has(t))return q.get(t);const e=I(t);return e!==t&&(q.set(t,e),D.set(e,t)),e;}const E=t=>D.get(t);const C=["get","getKey","getAll","getAllKeys","count"],N=["put","add","delete","clear"],O=new Map;function k(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(O.get(e))return O.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,i=N.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!i&&!C.includes(s))return;const r=async function(t,...e){const r=this.transaction(t,i?"readwrite":"readonly");let a=r.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),i&&r.done]))[0];};return O.set(e,r),r;}U=(t=>y({},t,{get:(e,s,n)=>k(e,s)||t.get(e,s,n),has:(e,s)=>!!k(e,s)||t.has(e,s)}))(U);try{self["workbox:expiration:7.4.0"]&&_();}catch(t){}const B="cache-entries",T=t=>{const e=new URL(t,location.href);return e.hash="",e.href;};class M{constructor(t){this.h=null,this.u=t;}l(t){const e=t.createObjectStore(B,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1});}p(t){this.l(t),this.u&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",t=>e(t.oldVersion,t)),L(s).then(()=>{});}(this.u);}async setTimestamp(t,e){const s={url:t=T(t),timestamp:e,cacheName:this.u,id:this.m(t)},n=(await this.getDb()).transaction(B,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done;}async getTimestamp(t){const e=await this.getDb(),s=await e.get(B,this.m(t));return null==s?void 0:s.timestamp;}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(B).store.index("timestamp").openCursor(null,"prev");const i=[];let r=0;for(;n;){const s=n.value;s.cacheName===this.u&&(t&&s.timestamp=e?i.push(n.value):r++),n=await n.continue();}const a=[];for(const t of i)await s.delete(B,t.id),a.push(t.url);return a;}m(t){return this.u+"|"+T(t);}async getDb(){return this.h||(this.h=await function(t,e,{blocked:s,upgrade:n,blocking:i,terminated:r}={}){const a=indexedDB.open(t,e),o=L(a);return n&&a.addEventListener("upgradeneeded",t=>{n(L(a.result),t.oldVersion,t.newVersion,L(a.transaction),t);}),s&&a.addEventListener("blocked",t=>s(t.oldVersion,t.newVersion,t)),o.then(t=>{r&&t.addEventListener("close",()=>r()),i&&t.addEventListener("versionchange",t=>i(t.oldVersion,t.newVersion,t));}).catch(()=>{}),o;}("workbox-expiration",1,{upgrade:this.p.bind(this)})),this.h;}}class P{constructor(t,e={}){this.R=!1,this.v=!1,this.q=e.maxEntries,this.D=e.maxAgeSeconds,this.U=e.matchOptions,this.u=t,this._=new M(t);}async expireEntries(){if(this.R)return void(this.v=!0);this.R=!0;const t=this.D?Date.now()-1e3*this.D:0,e=await this._.expireEntries(t,this.q),s=await self.caches.open(this.u);for(const t of e)await s.delete(t,this.U);this.R=!1,this.v&&(this.v=!1,d(this.expireEntries()));}async updateTimestamp(t){await this._.setTimestamp(t,Date.now());}async isURLExpired(t){if(this.D){const e=await this._.getTimestamp(t),s=Date.now()-1e3*this.D;return void 0===e||e{this.resolve=t,this.reject=e;});}}try{self["workbox:strategies:7.4.0"]&&_();}catch(t){}function S(t){return"string"==typeof t?new Request(t):t;}class K{constructor(t,e){this.I={},Object.assign(this,e),this.event=e.event,this.L=t,this.C=new W,this.N=[],this.O=[...t.plugins],this.k=new Map;for(const t of this.O)this.k.set(t,{});this.event.waitUntil(this.C.promise);}async fetch(t){const{event:e}=this;let n=S(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t;}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e});}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message});}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.L.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t;}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t;}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e;}async cacheMatch(t){const e=S(t);let s;const{cacheName:n,matchOptions:i}=this.L,r=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s;}async cachePut(t,e){const n=S(t);var i;await(i=0,new Promise(t=>setTimeout(t,i)));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(a=r.url,new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var a;const o=await this.B(e);if(!o)return!1;const{cacheName:c,matchOptions:h}=this.L,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=j(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,r);for(const e of a)if(i===j(e.url,s))return t.match(e,n);}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?o.clone():o);}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of p)await t();}(),t;}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:o.clone(),request:r,event:this.event});return!0;}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.I[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=S(await t({mode:e,request:n,event:this.event,params:this.params}));this.I[s]=n;}return this.I[s];}hasCallback(t){for(const e of this.L.plugins)if(t in e)return!0;return!1;}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e);}*iterateCallbacks(t){for(const e of this.L.plugins)if("function"==typeof e[t]){const s=this.k.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i);};yield n;}}waitUntil(t){return this.N.push(t),t;}async doneWaiting(){for(;this.N.length;){const t=this.N.splice(0),e=(await Promise.allSettled(t)).find(t=>"rejected"===t.status);if(e)throw e.reason;}}destroy(){this.C.resolve(null);}async B(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e;}}class A{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions;}handle(t){const[e]=this.handleAll(t);return e;}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new K(this,{event:e,request:s,params:n}),r=this.T(i,s,e);return[r,this.M(r,i,s,e)];}async T(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.P(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url});}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s;}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i;}async M(t,e,s,n){let i,r;try{i=await t;}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting();}catch(t){t instanceof Error&&(r=t);}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r;}}try{self["workbox:cacheable-response:7.4.0"]&&_();}catch(t){}class F{constructor(t={}){this.j=t.statuses,this.W=t.headers;}isResponseCacheable(t){let e=!0;return this.j&&(e=this.j.includes(t.status)),this.W&&e&&(e=Object.keys(this.W).some(e=>t.headers.get(e)===this.W[e])),e;}}const H={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null};function $(t,e){const s=e();return t.waitUntil(s),s;}try{self["workbox:precaching:7.4.0"]&&_();}catch(t){}function G(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href};}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href};}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href};}class V{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t);},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t);}return s;};}}class J{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.S.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t;},this.S=t;}}let Q,z;async function X(t,e){let n=null;if(t.url){n=new URL(t.url).origin;}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},a=function(){if(void 0===Q){const t=new Response("");if("body"in t)try{new Response(t.body),Q=!0;}catch(t){Q=!1;}Q=!1;}return Q;}()?i.body:await i.blob();return new Response(a,r);}class Y extends A{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.K=!1!==t.fallbackToNetwork,this.plugins.push(Y.copyRedirectedCacheableResponsesPlugin);}async P(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.A(t,e):await this.F(t,e));}async F(t,e){let n;const i=e.params||{};if(!this.K)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,a=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&a&&"no-cors"!==t.mode&&(this.H(),await e.cachePut(t,n.clone()));}return n;}async A(t,e){this.H();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n;}H(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==Y.copyRedirectedCacheableResponsesPlugin&&(n===Y.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(Y.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1);}}Y.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},Y.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await X(t):t};class Z{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.$=new Map,this.G=new Map,this.V=new Map,this.L=new Y({cacheName:f(t),plugins:[...e,new J({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this);}get strategy(){return this.L;}precache(t){this.addToCacheList(t),this.J||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.J=!0);}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=G(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.$.has(i)&&this.$.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.$.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.V.has(t)&&this.V.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.V.set(t,n.integrity);}if(this.$.set(i,t),this.G.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t);}}}install(t){return $(t,async()=>{const e=new V;this.strategy.plugins.push(e);for(const[e,s]of this.$){const n=this.V.get(s),i=this.G.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}));}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n};});}activate(t){return $(t,async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.$.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n};});}getURLsToCacheKeys(){return this.$;}getCachedURLs(){return[...this.$.keys()];}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.$.get(e.href);}getIntegrityForCacheKey(t){return this.V.get(t);}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s);}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s));}}const tt=()=>(z||(z=new Z),z);class et extends i{constructor(t,e){super(({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some(t=>t.test(s))&&t.searchParams.delete(s);return t;}(r,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href;}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href;}if(i){const t=i({url:r});for(const e of t)yield e.href;}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)};}}},t.strategy);}}t.CacheFirst=class extends A{async P(t,e){let n,i=await e.cacheMatch(t);if(!i)try{i=await e.fetchAndCachePut(t);}catch(t){t instanceof Error&&(n=t);}if(!i)throw new s("no-response",{url:t.url,error:n});return i;}},t.CacheableResponsePlugin=class{constructor(t){this.cacheWillUpdate=async({response:t})=>this.X.isResponseCacheable(t)?t:null,this.X=new F(t);}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const i=this.Y(n),r=this.Z(s);d(r.expireEntries());const a=r.updateTimestamp(e.url);if(t)try{t.waitUntil(a);}catch(t){}return i?n:null;},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.Z(t);await s.updateTimestamp(e.url),await s.expireEntries();},this.tt=t,this.D=t.maxAgeSeconds,this.et=new Map,t.purgeOnQuotaError&&function(t){p.add(t);}(()=>this.deleteCacheAndMetadata());}Z(t){if(t===w())throw new s("expire-custom-caches-only");let e=this.et.get(t);return e||(e=new P(t,this.tt),this.et.set(t,e)),e;}Y(t){if(!this.D)return!0;const e=this.st(t);if(null===e)return!0;return e>=Date.now()-1e3*this.D;}st(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s;}async deleteCacheAndMetadata(){for(const[t,e]of this.et)await self.caches.delete(t),await e.delete();this.et=new Map;}},t.NetworkFirst=class extends A{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(H),this.nt=t.networkTimeoutSeconds||0;}async P(t,e){const n=[],i=[];let r;if(this.nt){const{id:s,promise:a}=this.it({request:t,logs:n,handler:e});r=s,i.push(a);}const a=this.rt({timeoutId:r,request:t,logs:n,handler:e});i.push(a);const o=await e.waitUntil((async()=>await e.waitUntil(Promise.race(i))||await a)());if(!o)throw new s("no-response",{url:t.url});return o;}it({request:t,logs:e,handler:s}){let n;return{promise:new Promise(e=>{n=setTimeout(async()=>{e(await s.cacheMatch(t));},1e3*this.nt);}),id:n};}async rt({timeoutId:t,request:e,logs:s,handler:n}){let i,r;try{r=await n.fetchAndCachePut(e);}catch(t){t instanceof Error&&(i=t);}return t&&clearTimeout(t),!i&&r||(r=await n.cacheMatch(e)),r;}},t.precacheAndRoute=function(t,e){!function(t){tt().precache(t);}(t),function(t){const e=tt();h(new et(e,t));}(e);},t.registerRoute=h;}); +define(["exports"],function(t){"use strict";try{self["workbox:core:7.4.0"]&&_()}catch(t){}const e=(t,...e)=>{let s=t;return e.length>0&&(s+=` :: ${JSON.stringify(e)}`),s};class s extends Error{constructor(t,s){super(e(t,s)),this.name=t,this.details=s}}try{self["workbox:routing:7.4.0"]&&_()}catch(t){}const n=t=>t&&"object"==typeof t?t:{handle:t};class i{constructor(t,e,s="GET"){this.handler=n(e),this.match=t,this.method=s}setCatchHandler(t){this.catchHandler=n(t)}}class r extends i{constructor(t,e,s){super(({url:e})=>{const s=t.exec(e.href);if(s&&(e.origin===location.origin||0===s.index))return s.slice(1)},e,s)}}class a{constructor(){this.t=new Map,this.i=new Map}get routes(){return this.t}addFetchListener(){self.addEventListener("fetch",t=>{const{request:e}=t,s=this.handleRequest({request:e,event:t});s&&t.respondWith(s)})}addCacheListener(){self.addEventListener("message",t=>{if(t.data&&"CACHE_URLS"===t.data.type){const{payload:e}=t.data,s=Promise.all(e.urlsToCache.map(e=>{"string"==typeof e&&(e=[e]);const s=new Request(...e);return this.handleRequest({request:s,event:t})}));t.waitUntil(s),t.ports&&t.ports[0]&&s.then(()=>t.ports[0].postMessage(!0))}})}handleRequest({request:t,event:e}){const s=new URL(t.url,location.href);if(!s.protocol.startsWith("http"))return;const n=s.origin===location.origin,{params:i,route:r}=this.findMatchingRoute({event:e,request:t,sameOrigin:n,url:s});let a=r&&r.handler;const o=t.method;if(!a&&this.i.has(o)&&(a=this.i.get(o)),!a)return;let c;try{c=a.handle({url:s,request:t,event:e,params:i})}catch(t){c=Promise.reject(t)}const h=r&&r.catchHandler;return c instanceof Promise&&(this.o||h)&&(c=c.catch(async n=>{if(h)try{return await h.handle({url:s,request:t,event:e,params:i})}catch(t){t instanceof Error&&(n=t)}if(this.o)return this.o.handle({url:s,request:t,event:e});throw n})),c}findMatchingRoute({url:t,sameOrigin:e,request:s,event:n}){const i=this.t.get(s.method)||[];for(const r of i){let i;const a=r.match({url:t,sameOrigin:e,request:s,event:n});if(a)return i=a,(Array.isArray(i)&&0===i.length||a.constructor===Object&&0===Object.keys(a).length||"boolean"==typeof a)&&(i=void 0),{route:r,params:i}}return{}}setDefaultHandler(t,e="GET"){this.i.set(e,n(t))}setCatchHandler(t){this.o=n(t)}registerRoute(t){this.t.has(t.method)||this.t.set(t.method,[]),this.t.get(t.method).push(t)}unregisterRoute(t){if(!this.t.has(t.method))throw new s("unregister-route-but-not-found-with-method",{method:t.method});const e=this.t.get(t.method).indexOf(t);if(!(e>-1))throw new s("unregister-route-route-not-registered");this.t.get(t.method).splice(e,1)}}let o;const c=()=>(o||(o=new a,o.addFetchListener(),o.addCacheListener()),o);function h(t,e,n){let a;if("string"==typeof t){const s=new URL(t,location.href);a=new i(({url:t})=>t.href===s.href,e,n)}else if(t instanceof RegExp)a=new r(t,e,n);else if("function"==typeof t)a=new i(t,e,n);else{if(!(t instanceof i))throw new s("unsupported-route-type",{moduleName:"workbox-routing",funcName:"registerRoute",paramName:"capture"});a=t}return c().registerRoute(a),a}const u={googleAnalytics:"googleAnalytics",precache:"precache-v2",prefix:"workbox",runtime:"runtime",suffix:"undefined"!=typeof registration?registration.scope:""},l=t=>[u.prefix,t,u.suffix].filter(t=>t&&t.length>0).join("-"),f=t=>t||l(u.precache),w=t=>t||l(u.runtime);function d(t){t.then(()=>{})}const p=new Set;function y(){return y=Object.assign?Object.assign.bind():function(t){for(var e=1;e(t[e]=s,!0),has:(t,e)=>t instanceof IDBTransaction&&("done"===e||"store"===e)||e in t};function x(t){return t!==IDBDatabase.prototype.transaction||"objectStoreNames"in IDBTransaction.prototype?(g||(g=[IDBCursor.prototype.advance,IDBCursor.prototype.continue,IDBCursor.prototype.continuePrimaryKey])).includes(t)?function(...e){return t.apply(E(this),e),L(R.get(this))}:function(...e){return L(t.apply(E(this),e))}:function(e,...s){const n=t.call(E(this),e,...s);return b.set(n,e.sort?e.sort():[e]),L(n)}}function I(t){return"function"==typeof t?x(t):(t instanceof IDBTransaction&&function(t){if(v.has(t))return;const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("complete",i),t.removeEventListener("error",r),t.removeEventListener("abort",r)},i=()=>{e(),n()},r=()=>{s(t.error||new DOMException("AbortError","AbortError")),n()};t.addEventListener("complete",i),t.addEventListener("error",r),t.addEventListener("abort",r)});v.set(t,e)}(t),e=t,(m||(m=[IDBDatabase,IDBObjectStore,IDBIndex,IDBCursor,IDBTransaction])).some(t=>e instanceof t)?new Proxy(t,U):t);var e}function L(t){if(t instanceof IDBRequest)return function(t){const e=new Promise((e,s)=>{const n=()=>{t.removeEventListener("success",i),t.removeEventListener("error",r)},i=()=>{e(L(t.result)),n()},r=()=>{s(t.error),n()};t.addEventListener("success",i),t.addEventListener("error",r)});return e.then(e=>{e instanceof IDBCursor&&R.set(e,t)}).catch(()=>{}),D.set(e,t),e}(t);if(q.has(t))return q.get(t);const e=I(t);return e!==t&&(q.set(t,e),D.set(e,t)),e}const E=t=>D.get(t);const C=["get","getKey","getAll","getAllKeys","count"],N=["put","add","delete","clear"],O=new Map;function k(t,e){if(!(t instanceof IDBDatabase)||e in t||"string"!=typeof e)return;if(O.get(e))return O.get(e);const s=e.replace(/FromIndex$/,""),n=e!==s,i=N.includes(s);if(!(s in(n?IDBIndex:IDBObjectStore).prototype)||!i&&!C.includes(s))return;const r=async function(t,...e){const r=this.transaction(t,i?"readwrite":"readonly");let a=r.store;return n&&(a=a.index(e.shift())),(await Promise.all([a[s](...e),i&&r.done]))[0]};return O.set(e,r),r}U=(t=>y({},t,{get:(e,s,n)=>k(e,s)||t.get(e,s,n),has:(e,s)=>!!k(e,s)||t.has(e,s)}))(U);try{self["workbox:expiration:7.4.0"]&&_()}catch(t){}const B="cache-entries",T=t=>{const e=new URL(t,location.href);return e.hash="",e.href};class M{constructor(t){this.h=null,this.u=t}l(t){const e=t.createObjectStore(B,{keyPath:"id"});e.createIndex("cacheName","cacheName",{unique:!1}),e.createIndex("timestamp","timestamp",{unique:!1})}p(t){this.l(t),this.u&&function(t,{blocked:e}={}){const s=indexedDB.deleteDatabase(t);e&&s.addEventListener("blocked",t=>e(t.oldVersion,t)),L(s).then(()=>{})}(this.u)}async setTimestamp(t,e){const s={url:t=T(t),timestamp:e,cacheName:this.u,id:this.m(t)},n=(await this.getDb()).transaction(B,"readwrite",{durability:"relaxed"});await n.store.put(s),await n.done}async getTimestamp(t){const e=await this.getDb(),s=await e.get(B,this.m(t));return null==s?void 0:s.timestamp}async expireEntries(t,e){const s=await this.getDb();let n=await s.transaction(B).store.index("timestamp").openCursor(null,"prev");const i=[];let r=0;for(;n;){const s=n.value;s.cacheName===this.u&&(t&&s.timestamp=e?i.push(n.value):r++),n=await n.continue()}const a=[];for(const t of i)await s.delete(B,t.id),a.push(t.url);return a}m(t){return this.u+"|"+T(t)}async getDb(){return this.h||(this.h=await function(t,e,{blocked:s,upgrade:n,blocking:i,terminated:r}={}){const a=indexedDB.open(t,e),o=L(a);return n&&a.addEventListener("upgradeneeded",t=>{n(L(a.result),t.oldVersion,t.newVersion,L(a.transaction),t)}),s&&a.addEventListener("blocked",t=>s(t.oldVersion,t.newVersion,t)),o.then(t=>{r&&t.addEventListener("close",()=>r()),i&&t.addEventListener("versionchange",t=>i(t.oldVersion,t.newVersion,t))}).catch(()=>{}),o}("workbox-expiration",1,{upgrade:this.p.bind(this)})),this.h}}class P{constructor(t,e={}){this.R=!1,this.v=!1,this.q=e.maxEntries,this.D=e.maxAgeSeconds,this.U=e.matchOptions,this.u=t,this._=new M(t)}async expireEntries(){if(this.R)return void(this.v=!0);this.R=!0;const t=this.D?Date.now()-1e3*this.D:0,e=await this._.expireEntries(t,this.q),s=await self.caches.open(this.u);for(const t of e)await s.delete(t,this.U);this.R=!1,this.v&&(this.v=!1,d(this.expireEntries()))}async updateTimestamp(t){await this._.setTimestamp(t,Date.now())}async isURLExpired(t){if(this.D){const e=await this._.getTimestamp(t),s=Date.now()-1e3*this.D;return void 0===e||e{this.resolve=t,this.reject=e})}}try{self["workbox:strategies:7.4.0"]&&_()}catch(t){}function S(t){return"string"==typeof t?new Request(t):t}class K{constructor(t,e){this.I={},Object.assign(this,e),this.event=e.event,this.L=t,this.C=new W,this.N=[],this.O=[...t.plugins],this.k=new Map;for(const t of this.O)this.k.set(t,{});this.event.waitUntil(this.C.promise)}async fetch(t){const{event:e}=this;let n=S(t);if("navigate"===n.mode&&e instanceof FetchEvent&&e.preloadResponse){const t=await e.preloadResponse;if(t)return t}const i=this.hasCallback("fetchDidFail")?n.clone():null;try{for(const t of this.iterateCallbacks("requestWillFetch"))n=await t({request:n.clone(),event:e})}catch(t){if(t instanceof Error)throw new s("plugin-error-request-will-fetch",{thrownErrorMessage:t.message})}const r=n.clone();try{let t;t=await fetch(n,"navigate"===n.mode?void 0:this.L.fetchOptions);for(const s of this.iterateCallbacks("fetchDidSucceed"))t=await s({event:e,request:r,response:t});return t}catch(t){throw i&&await this.runCallbacks("fetchDidFail",{error:t,event:e,originalRequest:i.clone(),request:r.clone()}),t}}async fetchAndCachePut(t){const e=await this.fetch(t),s=e.clone();return this.waitUntil(this.cachePut(t,s)),e}async cacheMatch(t){const e=S(t);let s;const{cacheName:n,matchOptions:i}=this.L,r=await this.getCacheKey(e,"read"),a=Object.assign(Object.assign({},i),{cacheName:n});s=await caches.match(r,a);for(const t of this.iterateCallbacks("cachedResponseWillBeUsed"))s=await t({cacheName:n,matchOptions:i,cachedResponse:s,request:r,event:this.event})||void 0;return s}async cachePut(t,e){const n=S(t);var i;await(i=0,new Promise(t=>setTimeout(t,i)));const r=await this.getCacheKey(n,"write");if(!e)throw new s("cache-put-with-no-response",{url:(a=r.url,new URL(String(a),location.href).href.replace(new RegExp(`^${location.origin}`),""))});var a;const o=await this.B(e);if(!o)return!1;const{cacheName:c,matchOptions:h}=this.L,u=await self.caches.open(c),l=this.hasCallback("cacheDidUpdate"),f=l?await async function(t,e,s,n){const i=j(e.url,s);if(e.url===i)return t.match(e,n);const r=Object.assign(Object.assign({},n),{ignoreSearch:!0}),a=await t.keys(e,r);for(const e of a)if(i===j(e.url,s))return t.match(e,n)}(u,r.clone(),["__WB_REVISION__"],h):null;try{await u.put(r,l?o.clone():o)}catch(t){if(t instanceof Error)throw"QuotaExceededError"===t.name&&await async function(){for(const t of p)await t()}(),t}for(const t of this.iterateCallbacks("cacheDidUpdate"))await t({cacheName:c,oldResponse:f,newResponse:o.clone(),request:r,event:this.event});return!0}async getCacheKey(t,e){const s=`${t.url} | ${e}`;if(!this.I[s]){let n=t;for(const t of this.iterateCallbacks("cacheKeyWillBeUsed"))n=S(await t({mode:e,request:n,event:this.event,params:this.params}));this.I[s]=n}return this.I[s]}hasCallback(t){for(const e of this.L.plugins)if(t in e)return!0;return!1}async runCallbacks(t,e){for(const s of this.iterateCallbacks(t))await s(e)}*iterateCallbacks(t){for(const e of this.L.plugins)if("function"==typeof e[t]){const s=this.k.get(e),n=n=>{const i=Object.assign(Object.assign({},n),{state:s});return e[t](i)};yield n}}waitUntil(t){return this.N.push(t),t}async doneWaiting(){for(;this.N.length;){const t=this.N.splice(0),e=(await Promise.allSettled(t)).find(t=>"rejected"===t.status);if(e)throw e.reason}}destroy(){this.C.resolve(null)}async B(t){let e=t,s=!1;for(const t of this.iterateCallbacks("cacheWillUpdate"))if(e=await t({request:this.request,response:e,event:this.event})||void 0,s=!0,!e)break;return s||e&&200!==e.status&&(e=void 0),e}}class A{constructor(t={}){this.cacheName=w(t.cacheName),this.plugins=t.plugins||[],this.fetchOptions=t.fetchOptions,this.matchOptions=t.matchOptions}handle(t){const[e]=this.handleAll(t);return e}handleAll(t){t instanceof FetchEvent&&(t={event:t,request:t.request});const e=t.event,s="string"==typeof t.request?new Request(t.request):t.request,n="params"in t?t.params:void 0,i=new K(this,{event:e,request:s,params:n}),r=this.T(i,s,e);return[r,this.M(r,i,s,e)]}async T(t,e,n){let i;await t.runCallbacks("handlerWillStart",{event:n,request:e});try{if(i=await this.P(e,t),!i||"error"===i.type)throw new s("no-response",{url:e.url})}catch(s){if(s instanceof Error)for(const r of t.iterateCallbacks("handlerDidError"))if(i=await r({error:s,event:n,request:e}),i)break;if(!i)throw s}for(const s of t.iterateCallbacks("handlerWillRespond"))i=await s({event:n,request:e,response:i});return i}async M(t,e,s,n){let i,r;try{i=await t}catch(r){}try{await e.runCallbacks("handlerDidRespond",{event:n,request:s,response:i}),await e.doneWaiting()}catch(t){t instanceof Error&&(r=t)}if(await e.runCallbacks("handlerDidComplete",{event:n,request:s,response:i,error:r}),e.destroy(),r)throw r}}try{self["workbox:cacheable-response:7.4.0"]&&_()}catch(t){}class F{constructor(t={}){this.j=t.statuses,this.W=t.headers}isResponseCacheable(t){let e=!0;return this.j&&(e=this.j.includes(t.status)),this.W&&e&&(e=Object.keys(this.W).some(e=>t.headers.get(e)===this.W[e])),e}}const H={cacheWillUpdate:async({response:t})=>200===t.status||0===t.status?t:null};function $(t,e){const s=e();return t.waitUntil(s),s}try{self["workbox:precaching:7.4.0"]&&_()}catch(t){}function G(t){if(!t)throw new s("add-to-cache-list-unexpected-type",{entry:t});if("string"==typeof t){const e=new URL(t,location.href);return{cacheKey:e.href,url:e.href}}const{revision:e,url:n}=t;if(!n)throw new s("add-to-cache-list-unexpected-type",{entry:t});if(!e){const t=new URL(n,location.href);return{cacheKey:t.href,url:t.href}}const i=new URL(n,location.href),r=new URL(n,location.href);return i.searchParams.set("__WB_REVISION__",e),{cacheKey:i.href,url:r.href}}class V{constructor(){this.updatedURLs=[],this.notUpdatedURLs=[],this.handlerWillStart=async({request:t,state:e})=>{e&&(e.originalRequest=t)},this.cachedResponseWillBeUsed=async({event:t,state:e,cachedResponse:s})=>{if("install"===t.type&&e&&e.originalRequest&&e.originalRequest instanceof Request){const t=e.originalRequest.url;s?this.notUpdatedURLs.push(t):this.updatedURLs.push(t)}return s}}}class J{constructor({precacheController:t}){this.cacheKeyWillBeUsed=async({request:t,params:e})=>{const s=(null==e?void 0:e.cacheKey)||this.S.getCacheKeyForURL(t.url);return s?new Request(s,{headers:t.headers}):t},this.S=t}}let Q,z;async function X(t,e){let n=null;if(t.url){n=new URL(t.url).origin}if(n!==self.location.origin)throw new s("cross-origin-copy-response",{origin:n});const i=t.clone(),r={headers:new Headers(i.headers),status:i.status,statusText:i.statusText},a=function(){if(void 0===Q){const t=new Response("");if("body"in t)try{new Response(t.body),Q=!0}catch(t){Q=!1}Q=!1}return Q}()?i.body:await i.blob();return new Response(a,r)}class Y extends A{constructor(t={}){t.cacheName=f(t.cacheName),super(t),this.K=!1!==t.fallbackToNetwork,this.plugins.push(Y.copyRedirectedCacheableResponsesPlugin)}async P(t,e){const s=await e.cacheMatch(t);return s||(e.event&&"install"===e.event.type?await this.A(t,e):await this.F(t,e))}async F(t,e){let n;const i=e.params||{};if(!this.K)throw new s("missing-precache-entry",{cacheName:this.cacheName,url:t.url});{const s=i.integrity,r=t.integrity,a=!r||r===s;n=await e.fetch(new Request(t,{integrity:"no-cors"!==t.mode?r||s:void 0})),s&&a&&"no-cors"!==t.mode&&(this.H(),await e.cachePut(t,n.clone()))}return n}async A(t,e){this.H();const n=await e.fetch(t);if(!await e.cachePut(t,n.clone()))throw new s("bad-precaching-response",{url:t.url,status:n.status});return n}H(){let t=null,e=0;for(const[s,n]of this.plugins.entries())n!==Y.copyRedirectedCacheableResponsesPlugin&&(n===Y.defaultPrecacheCacheabilityPlugin&&(t=s),n.cacheWillUpdate&&e++);0===e?this.plugins.push(Y.defaultPrecacheCacheabilityPlugin):e>1&&null!==t&&this.plugins.splice(t,1)}}Y.defaultPrecacheCacheabilityPlugin={cacheWillUpdate:async({response:t})=>!t||t.status>=400?null:t},Y.copyRedirectedCacheableResponsesPlugin={cacheWillUpdate:async({response:t})=>t.redirected?await X(t):t};class Z{constructor({cacheName:t,plugins:e=[],fallbackToNetwork:s=!0}={}){this.$=new Map,this.G=new Map,this.V=new Map,this.L=new Y({cacheName:f(t),plugins:[...e,new J({precacheController:this})],fallbackToNetwork:s}),this.install=this.install.bind(this),this.activate=this.activate.bind(this)}get strategy(){return this.L}precache(t){this.addToCacheList(t),this.J||(self.addEventListener("install",this.install),self.addEventListener("activate",this.activate),this.J=!0)}addToCacheList(t){const e=[];for(const n of t){"string"==typeof n?e.push(n):n&&void 0===n.revision&&e.push(n.url);const{cacheKey:t,url:i}=G(n),r="string"!=typeof n&&n.revision?"reload":"default";if(this.$.has(i)&&this.$.get(i)!==t)throw new s("add-to-cache-list-conflicting-entries",{firstEntry:this.$.get(i),secondEntry:t});if("string"!=typeof n&&n.integrity){if(this.V.has(t)&&this.V.get(t)!==n.integrity)throw new s("add-to-cache-list-conflicting-integrities",{url:i});this.V.set(t,n.integrity)}if(this.$.set(i,t),this.G.set(i,r),e.length>0){const t=`Workbox is precaching URLs without revision info: ${e.join(", ")}\nThis is generally NOT safe. Learn more at https://bit.ly/wb-precache`;console.warn(t)}}}install(t){return $(t,async()=>{const e=new V;this.strategy.plugins.push(e);for(const[e,s]of this.$){const n=this.V.get(s),i=this.G.get(e),r=new Request(e,{integrity:n,cache:i,credentials:"same-origin"});await Promise.all(this.strategy.handleAll({params:{cacheKey:s},request:r,event:t}))}const{updatedURLs:s,notUpdatedURLs:n}=e;return{updatedURLs:s,notUpdatedURLs:n}})}activate(t){return $(t,async()=>{const t=await self.caches.open(this.strategy.cacheName),e=await t.keys(),s=new Set(this.$.values()),n=[];for(const i of e)s.has(i.url)||(await t.delete(i),n.push(i.url));return{deletedURLs:n}})}getURLsToCacheKeys(){return this.$}getCachedURLs(){return[...this.$.keys()]}getCacheKeyForURL(t){const e=new URL(t,location.href);return this.$.get(e.href)}getIntegrityForCacheKey(t){return this.V.get(t)}async matchPrecache(t){const e=t instanceof Request?t.url:t,s=this.getCacheKeyForURL(e);if(s){return(await self.caches.open(this.strategy.cacheName)).match(s)}}createHandlerBoundToURL(t){const e=this.getCacheKeyForURL(t);if(!e)throw new s("non-precached-url",{url:t});return s=>(s.request=new Request(t),s.params=Object.assign({cacheKey:e},s.params),this.strategy.handle(s))}}const tt=()=>(z||(z=new Z),z);class et extends i{constructor(t,e){super(({request:s})=>{const n=t.getURLsToCacheKeys();for(const i of function*(t,{ignoreURLParametersMatching:e=[/^utm_/,/^fbclid$/],directoryIndex:s="index.html",cleanURLs:n=!0,urlManipulation:i}={}){const r=new URL(t,location.href);r.hash="",yield r.href;const a=function(t,e=[]){for(const s of[...t.searchParams.keys()])e.some(t=>t.test(s))&&t.searchParams.delete(s);return t}(r,e);if(yield a.href,s&&a.pathname.endsWith("/")){const t=new URL(a.href);t.pathname+=s,yield t.href}if(n){const t=new URL(a.href);t.pathname+=".html",yield t.href}if(i){const t=i({url:r});for(const e of t)yield e.href}}(s.url,e)){const e=n.get(i);if(e){return{cacheKey:e,integrity:t.getIntegrityForCacheKey(e)}}}},t.strategy)}}t.CacheFirst=class extends A{async P(t,e){let n,i=await e.cacheMatch(t);if(!i)try{i=await e.fetchAndCachePut(t)}catch(t){t instanceof Error&&(n=t)}if(!i)throw new s("no-response",{url:t.url,error:n});return i}},t.CacheableResponsePlugin=class{constructor(t){this.cacheWillUpdate=async({response:t})=>this.X.isResponseCacheable(t)?t:null,this.X=new F(t)}},t.ExpirationPlugin=class{constructor(t={}){this.cachedResponseWillBeUsed=async({event:t,request:e,cacheName:s,cachedResponse:n})=>{if(!n)return null;const i=this.Y(n),r=this.Z(s);d(r.expireEntries());const a=r.updateTimestamp(e.url);if(t)try{t.waitUntil(a)}catch(t){}return i?n:null},this.cacheDidUpdate=async({cacheName:t,request:e})=>{const s=this.Z(t);await s.updateTimestamp(e.url),await s.expireEntries()},this.tt=t,this.D=t.maxAgeSeconds,this.et=new Map,t.purgeOnQuotaError&&function(t){p.add(t)}(()=>this.deleteCacheAndMetadata())}Z(t){if(t===w())throw new s("expire-custom-caches-only");let e=this.et.get(t);return e||(e=new P(t,this.tt),this.et.set(t,e)),e}Y(t){if(!this.D)return!0;const e=this.st(t);if(null===e)return!0;return e>=Date.now()-1e3*this.D}st(t){if(!t.headers.has("date"))return null;const e=t.headers.get("date"),s=new Date(e).getTime();return isNaN(s)?null:s}async deleteCacheAndMetadata(){for(const[t,e]of this.et)await self.caches.delete(t),await e.delete();this.et=new Map}},t.NetworkFirst=class extends A{constructor(t={}){super(t),this.plugins.some(t=>"cacheWillUpdate"in t)||this.plugins.unshift(H),this.nt=t.networkTimeoutSeconds||0}async P(t,e){const n=[],i=[];let r;if(this.nt){const{id:s,promise:a}=this.it({request:t,logs:n,handler:e});r=s,i.push(a)}const a=this.rt({timeoutId:r,request:t,logs:n,handler:e});i.push(a);const o=await e.waitUntil((async()=>await e.waitUntil(Promise.race(i))||await a)());if(!o)throw new s("no-response",{url:t.url});return o}it({request:t,logs:e,handler:s}){let n;return{promise:new Promise(e=>{n=setTimeout(async()=>{e(await s.cacheMatch(t))},1e3*this.nt)}),id:n}}async rt({timeoutId:t,request:e,logs:s,handler:n}){let i,r;try{r=await n.fetchAndCachePut(e)}catch(t){t instanceof Error&&(i=t)}return t&&clearTimeout(t),!i&&r||(r=await n.cacheMatch(e)),r}},t.precacheAndRoute=function(t,e){!function(t){tt().precache(t)}(t),function(t){const e=tt();h(new et(e,t))}(e)},t.registerRoute=h}); //# sourceMappingURL=workbox-65a61656.js.map //# sourceMappingURL=workbox-65a61656.js.map diff --git a/core/systemrun.html b/core/systemrun.html index 60d8b6b..3d23e35 100644 --- a/core/systemrun.html +++ b/core/systemrun.html @@ -40,13 +40,13 @@ - + - + - + diff --git a/package-lock.json b/package-lock.json index 65254d1..af10dfe 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,18 +9,18 @@ "version": "1.2.0", "license": "GPL-3.0", "devDependencies": { - "@playwright/test": "^1.60.0", + "@playwright/test": "^1.62.1", "@types/jest": "^30.0.0", - "@types/node": "^25.9.0", + "@types/node": "^26.2.0", "axe-playwright": "^2.2.2", - "esbuild": "^0.28.0", - "eslint": "^10.4.0", - "globals": "^17.6.0", + "esbuild": "^0.28.2", + "eslint": "^10.8.1", + "globals": "^17.9.0", "http-server": "^14.1.1", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", - "markdownlint-cli": "^0.48.0", - "prettier": "^3.8.3", + "markdownlint-cli2": "^0.23.2", + "prettier": "^3.9.6", "workbox-cli": "^7.4.1" } }, @@ -102,14 +102,14 @@ } }, "node_modules/@babel/generator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.7.tgz", - "integrity": "sha512-DkXD5OJQaAQIdZ1bt3UZdEnHAn9Imd3IVBdX03UFe+ony9Ojw5pzr9YVKGDY1jt+Gcn/FnGkNf8r+Vj5NOJWtQ==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.29.8.tgz", + "integrity": "sha512-gZbepsdh3WDtgZKWL+vTPh71LSBrm/Y4/QDZBVCcYfmeTEEuoOYwlSy+G1StfJg+/Zy550u/3TATbm7qDbbMtg==", "dev": true, "license": "MIT", "dependencies": { - "@babel/parser": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/parser": "^7.29.8", + "@babel/types": "^7.29.8", "@jridgewell/gen-mapping": "^0.3.12", "@jridgewell/trace-mapping": "^0.3.28", "jsesc": "^3.0.2" @@ -394,13 +394,13 @@ } }, "node_modules/@babel/parser": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.7.tgz", - "integrity": "sha512-hnORnjP/1P/zFEndoeX+n+t1RwWRJiJpM/jO7FW32Kn9r5+sJB2JWOdYo4L6k78j15eCwY3Gm/7364B1EMwtNg==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.29.8.tgz", + "integrity": "sha512-E8lTAYNB1KW+FH+VGJuZM1ioAx2E6oVlvQFRrf5P8ZZmsiJXYAD9vTFV7yyEURNzgh1dFqMZuO6tUwcARbqFCA==", "dev": true, "license": "MIT", "dependencies": { - "@babel/types": "^7.29.7" + "@babel/types": "^7.29.8" }, "bin": { "parser": "bin/babel-parser.js" @@ -1217,16 +1217,16 @@ } }, "node_modules/@babel/plugin-transform-modules-systemjs": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.7.tgz", - "integrity": "sha512-TM2ZcQLoG2/y4HODiStCo10DibYhWhGWAwVv+EQKmG/7GFl0N+AAmUiXOMKM+aiJ9XBJ9AHVZBvTzMnJ2sM3cQ==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.29.8.tgz", + "integrity": "sha512-6iSnEK0zlkLKU4heofK/AdmRD4e2SHVpJMtrwnTCzhnaM98ria4rTrOXBBi45BTTYnJtO8txnPsX4fChYXkmeA==", "dev": true, "license": "MIT", "dependencies": { "@babel/helper-module-transforms": "^7.29.7", "@babel/helper-plugin-utils": "^7.29.7", "@babel/helper-validator-identifier": "^7.29.7", - "@babel/traverse": "^7.29.7" + "@babel/traverse": "^7.29.8" }, "engines": { "node": ">=6.9.0" @@ -1455,9 +1455,9 @@ } }, "node_modules/@babel/plugin-transform-regenerator": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.7.tgz", - "integrity": "sha512-rNNFV0DBAJp988xW2DOntfDoYn1eR8GGF5AT5vYc+rjyfaQkM242c9tZUHHPe7KYaiJizXPWhQTzzdbXySyhBw==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.29.8.tgz", + "integrity": "sha512-0UpIXPtdDtMXfnV2OJAVMLpj3H/92vmkA6lpSRakmycJvj3VUy6Xs1dM8tXRugupykr5WB+LpiVl0J8LMVg2mg==", "dev": true, "license": "MIT", "dependencies": { @@ -1520,9 +1520,9 @@ } }, "node_modules/@babel/plugin-transform-spread": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.7.tgz", - "integrity": "sha512-/u5K1QWada7tbYNqTjMh96718g9NTwh9tfPJMsSmVsQwGT447FskV+KcfeXkXq2GWki4EM/MuTdmBec+hOuVTQ==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.29.8.tgz", + "integrity": "sha512-4S9ksMGVWUshvgK0mKfvZky7leuG5/uoFVwMpAomJ8bMoDJiNHRVmc1EglwW/CmGVSqqWpEbXm9FmbRit22qoA==", "dev": true, "license": "MIT", "dependencies": { @@ -1778,18 +1778,18 @@ } }, "node_modules/@babel/traverse": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.7.tgz", - "integrity": "sha512-EhlfNQtZ+NK22w5BM61ciuiq1m58ed33Wr1Xan//ZRTy6hgjnwyCffRYwzsGXdASJSUJ1guZILsErh1eQcl+zw==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.29.8.tgz", + "integrity": "sha512-I5z7H3bf/41ktsNVLtpN0wAa336HkqIHQ5BuPLEhTkt1jVSyZpeNKIzTgEWmlxjdg81R0IgUCcaE+Ok3NvrfZg==", "dev": true, "license": "MIT", "dependencies": { "@babel/code-frame": "^7.29.7", - "@babel/generator": "^7.29.7", + "@babel/generator": "^7.29.8", "@babel/helper-globals": "^7.29.7", - "@babel/parser": "^7.29.7", + "@babel/parser": "^7.29.8", "@babel/template": "^7.29.7", - "@babel/types": "^7.29.7", + "@babel/types": "^7.29.8", "debug": "^4.3.1" }, "engines": { @@ -1797,9 +1797,9 @@ } }, "node_modules/@babel/types": { - "version": "7.29.7", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.7.tgz", - "integrity": "sha512-4zBIxpPzowiZpusoFkyGVwakdRJUyuH5PxQ/PrqghfdFWWasvnCdPfQXHrenDai+gyLARulZjZowCOj6fjT4pA==", + "version": "7.29.8", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.29.8.tgz", + "integrity": "sha512-Vj1jF3cPfxg7OAfoI7QnVKLoILlm2JF9pnVHrX8qx7AHMiYWT+NDAA7jChlNgRS4WTLc/fD1lXLmPixluj+3Gg==", "dev": true, "license": "MIT", "dependencies": { @@ -1967,9 +1967,9 @@ } }, "node_modules/@esbuild/aix-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.0.tgz", - "integrity": "sha512-lhRUCeuOyJQURhTxl4WkpFTjIsbDayJHih5kZC1giwE+MhIzAb7mEsQMqMf18rHLsrb5qI1tafG20mLxEWcWlA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.28.2.tgz", + "integrity": "sha512-XExcO+dvLKvVtNTibSTBej1NCAbaGhWn9Ww1ZPx80qsahhPFe/8jgWP0IchNe0F3HwkU7n8ejhH8bjonqht8mQ==", "cpu": [ "ppc64" ], @@ -1984,9 +1984,9 @@ } }, "node_modules/@esbuild/android-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.0.tgz", - "integrity": "sha512-wqh0ByljabXLKHeWXYLqoJ5jKC4XBaw6Hk08OfMrCRd2nP2ZQ5eleDZC41XHyCNgktBGYMbqnrJKq/K/lzPMSQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.28.2.tgz", + "integrity": "sha512-kXXoiPVVGQcnIYGOeaovwOURpniDBpSq4A03qkQ+BMQqtGG6HYap3xne9C1O1yo4TR3qxlCX5IqqmX6fFo2Lqg==", "cpu": [ "arm" ], @@ -2001,9 +2001,9 @@ } }, "node_modules/@esbuild/android-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.0.tgz", - "integrity": "sha512-+WzIXQOSaGs33tLEgYPYe/yQHf0WTU0X42Jca3y8NWMbUVhp7rUnw+vAsRC/QiDrdD31IszMrZy+qwPOPjd+rw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.28.2.tgz", + "integrity": "sha512-5YfKeeI8qWfBZIX+u2xZC3Zlb3Os/gLS2sbEKM+I4ZOcsWmHS2WLysCcQZDAFRslDUU5Oiq44gf6PYN1vGwG5A==", "cpu": [ "arm64" ], @@ -2018,9 +2018,9 @@ } }, "node_modules/@esbuild/android-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.0.tgz", - "integrity": "sha512-+VJggoaKhk2VNNqVL7f6S189UzShHC/mR9EE8rDdSkdpN0KflSwWY/gWjDrNxxisg8Fp1ZCD9jLMo4m0OUfeUA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.28.2.tgz", + "integrity": "sha512-O387ite7SzUyCcy3JQX4P4bLtEA7bLLkx+esve5JHnyYfNTxcVpXZo9jhdB0lTKN44gztELTdU7nS8Nr16Fs1Q==", "cpu": [ "x64" ], @@ -2035,9 +2035,9 @@ } }, "node_modules/@esbuild/darwin-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.0.tgz", - "integrity": "sha512-0T+A9WZm+bZ84nZBtk1ckYsOvyA3x7e2Acj1KdVfV4/2tdG4fzUp91YHx+GArWLtwqp77pBXVCPn2We7Letr0Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.28.2.tgz", + "integrity": "sha512-n4KqkOQrraxHJcgjM1RvwbigfQKIKJVpM7xp+KsxiyUSrRdIXnt73VhrPAx0fV44hgfmIVKjxMN9J1t5jySVkw==", "cpu": [ "arm64" ], @@ -2052,9 +2052,9 @@ } }, "node_modules/@esbuild/darwin-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.0.tgz", - "integrity": "sha512-fyzLm/DLDl/84OCfp2f/XQ4flmORsjU7VKt8HLjvIXChJoFFOIL6pLJPH4Yhd1n1gGFF9mPwtlN5Wf82DZs+LQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.28.2.tgz", + "integrity": "sha512-uq6suIWYP37qzGddBKPw5QEQPi6HiLGsO7UmkpfyaYNQ3D+rN6w6WfwH+nuqcGXWvawGwxOEroO4YGnFh95azw==", "cpu": [ "x64" ], @@ -2069,9 +2069,9 @@ } }, "node_modules/@esbuild/freebsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.0.tgz", - "integrity": "sha512-l9GeW5UZBT9k9brBYI+0WDffcRxgHQD8ShN2Ur4xWq/NFzUKm3k5lsH4PdaRgb2w7mI9u61nr2gI2mLI27Nh3Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.28.2.tgz", + "integrity": "sha512-n+I0BTSRIoy+d6RPKnEVwql5UwBJolytvY4mAOIEJorKlqgPII8ix6slVVrfZ5Tnj7glIZvloylbB/EJPMWEXw==", "cpu": [ "arm64" ], @@ -2086,9 +2086,9 @@ } }, "node_modules/@esbuild/freebsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.0.tgz", - "integrity": "sha512-BXoQai/A0wPO6Es3yFJ7APCiKGc1tdAEOgeTNy3SsB491S3aHn4S4r3e976eUnPdU+NbdtmBuLncYir2tMU9Nw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.28.2.tgz", + "integrity": "sha512-78XJTJkvPs0kz2w61301PJjXl4g7q3JqiYMZ/M/yVI73EHBrCRTgkhu9oqG7vPqq+a/yadEW8aD+agKlk5xrmg==", "cpu": [ "x64" ], @@ -2103,9 +2103,9 @@ } }, "node_modules/@esbuild/linux-arm": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.0.tgz", - "integrity": "sha512-CjaaREJagqJp7iTaNQjjidaNbCKYcd4IDkzbwwxtSvjI7NZm79qiHc8HqciMddQ6CKvJT6aBd8lO9kN/ZudLlw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.28.2.tgz", + "integrity": "sha512-XlDnu2q5yoqems+xay6wSAcg9DDD7K9RLKZEBOMZm3ckNpJBvOX20tSfby8KfrrhINDyv9V2YVZKY/SpoGJI8w==", "cpu": [ "arm" ], @@ -2120,9 +2120,9 @@ } }, "node_modules/@esbuild/linux-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.0.tgz", - "integrity": "sha512-RVyzfb3FWsGA55n6WY0MEIEPURL1FcbhFE6BffZEMEekfCzCIMtB5yyDcFnVbTnwk+CLAgTujmV/Lgvih56W+A==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.28.2.tgz", + "integrity": "sha512-pW4AC0P3it8c7do9MVM4p51FzHzdM/TZrerurgRcHJ2WTa1VQ1CIq18xncfpBJw4ojkiZZrKW2yIBWBP92j6Ug==", "cpu": [ "arm64" ], @@ -2137,9 +2137,9 @@ } }, "node_modules/@esbuild/linux-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.0.tgz", - "integrity": "sha512-KBnSTt1kxl9x70q+ydterVdl+Cn0H18ngRMRCEQfrbqdUuntQQ0LoMZv47uB97NljZFzY6HcfqEZ2SAyIUTQBQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.28.2.tgz", + "integrity": "sha512-CYbnj78HsIeA+DhgUKgFCfvNsTHFhMMrinUrMZpDXJXKN8T3XViTZ/+wtHeVxEWY8ewSzTFN+nRmSwO2tZaLUQ==", "cpu": [ "ia32" ], @@ -2154,9 +2154,9 @@ } }, "node_modules/@esbuild/linux-loong64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.0.tgz", - "integrity": "sha512-zpSlUce1mnxzgBADvxKXX5sl8aYQHo2ezvMNI8I0lbblJtp8V4odlm3Yzlj7gPyt3T8ReksE6bK+pT3WD+aJRg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.28.2.tgz", + "integrity": "sha512-buwkd8nsph4R+ajRvw0qM5Hja/TXQow3ptzWO2EbG/cqcIkHloRrdlBtQlshyYGTNFvfkfJ5tpPLVkY4DtsPfQ==", "cpu": [ "loong64" ], @@ -2171,9 +2171,9 @@ } }, "node_modules/@esbuild/linux-mips64el": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.0.tgz", - "integrity": "sha512-2jIfP6mmjkdmeTlsX/9vmdmhBmKADrWqN7zcdtHIeNSCH1SqIoNI63cYsjQR8J+wGa4Y5izRcSHSm8K3QWmk3w==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.28.2.tgz", + "integrity": "sha512-ZVykbDyk7519VwiNb9Lcj9m8XM6v5V9uKPvrEMkkEedVewf+0itkhahp4HDpgERXhwLRpWFypsGbG/J8s0QjJA==", "cpu": [ "mips64el" ], @@ -2188,9 +2188,9 @@ } }, "node_modules/@esbuild/linux-ppc64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.0.tgz", - "integrity": "sha512-bc0FE9wWeC0WBm49IQMPSPILRocGTQt3j5KPCA8os6VprfuJ7KD+5PzESSrJ6GmPIPJK965ZJHTUlSA6GNYEhg==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.28.2.tgz", + "integrity": "sha512-CAXl+Dtd9UUuJd8pKKdwh6MLm3MUMiqMPmhZ3tTSXPqfyQ3vDl6R5hZdZ/kYojK4ofXtdfSv1tFq8XzWx3heNQ==", "cpu": [ "ppc64" ], @@ -2205,9 +2205,9 @@ } }, "node_modules/@esbuild/linux-riscv64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.0.tgz", - "integrity": "sha512-SQPZOwoTTT/HXFXQJG/vBX8sOFagGqvZyXcgLA3NhIqcBv1BJU1d46c0rGcrij2B56Z2rNiSLaZOYW5cUk7yLQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.28.2.tgz", + "integrity": "sha512-GeXCej4IQtU1B+QlDV8W/RRvbzI3O/Stss+/bCXv4lZls5WGRtu2a+3JkA3i4qIUlMXpcHebWpF8AkJhATowuA==", "cpu": [ "riscv64" ], @@ -2222,9 +2222,9 @@ } }, "node_modules/@esbuild/linux-s390x": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.0.tgz", - "integrity": "sha512-SCfR0HN8CEEjnYnySJTd2cw0k9OHB/YFzt5zgJEwa+wL/T/raGWYMBqwDNAC6dqFKmJYZoQBRfHjgwLHGSrn3Q==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.28.2.tgz", + "integrity": "sha512-3H1weTYZPxt/WOhByszQZybS9w5lKzUn1FDMsgEChbHWQwHYQQRfBxgCcZvPhjHfKyJjIievvMmEUawJrdY9Dg==", "cpu": [ "s390x" ], @@ -2239,9 +2239,9 @@ } }, "node_modules/@esbuild/linux-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.0.tgz", - "integrity": "sha512-us0dSb9iFxIi8srnpl931Nvs65it/Jd2a2K3qs7fz2WfGPHqzfzZTfec7oxZJRNPXPnNYZtanmRc4AL/JwVzHQ==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.28.2.tgz", + "integrity": "sha512-4xTZr1FUmSoQW4XIWmit3tzQrUTZM+N3P0XV8xROKYF50XfI7xeO90+1bZvNwxIufQ9hDQVRJH5YhgPVF8A/HQ==", "cpu": [ "x64" ], @@ -2256,9 +2256,9 @@ } }, "node_modules/@esbuild/netbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.0.tgz", - "integrity": "sha512-CR/RYotgtCKwtftMwJlUU7xCVNg3lMYZ0RzTmAHSfLCXw3NtZtNpswLEj/Kkf6kEL3Gw+BpOekRX0BYCtklhUw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.28.2.tgz", + "integrity": "sha512-sSATRjPeDBg3pdgHoQfoYBob11Kk1FGa9lui5RIHZCoCkJa9QKlvl3/vKz2usCmYYjs7ymJR/2Nnsqe+Hjt5nw==", "cpu": [ "arm64" ], @@ -2273,9 +2273,9 @@ } }, "node_modules/@esbuild/netbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.0.tgz", - "integrity": "sha512-nU1yhmYutL+fQ71Kxnhg8uEOdC0pwEW9entHykTgEbna2pw2dkbFSMeqjjyHZoCmt8SBkOSvV+yNmm94aUrrqw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.28.2.tgz", + "integrity": "sha512-lqnzCV+mM0gIADaKihiCg6ifgfU2L3h5E33rNQBN1Y4MaVGnzryzmvvf7UHxprpQdE8hpqLolJ9Rl+SkIRDpyw==", "cpu": [ "x64" ], @@ -2290,9 +2290,9 @@ } }, "node_modules/@esbuild/openbsd-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.0.tgz", - "integrity": "sha512-cXb5vApOsRsxsEl4mcZ1XY3D4DzcoMxR/nnc4IyqYs0rTI8ZKmW6kyyg+11Z8yvgMfAEldKzP7AdP64HnSC/6g==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.28.2.tgz", + "integrity": "sha512-AL2qJILH7lNjrDmCQDvdxMfAUIv8KMNZOvrwAQ8i8//ntL9FflhOyMJ8OZSMBb8/AWXe3/5v5S20y3zCoZWKoQ==", "cpu": [ "arm64" ], @@ -2307,9 +2307,9 @@ } }, "node_modules/@esbuild/openbsd-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.0.tgz", - "integrity": "sha512-8wZM2qqtv9UP3mzy7HiGYNH/zjTA355mpeuA+859TyR+e+Tc08IHYpLJuMsfpDJwoLo1ikIJI8jC3GFjnRClzA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.28.2.tgz", + "integrity": "sha512-QtiuPytchRyC4rwUKhexJdQKvDuZ6hWloi3igqPQNUJCS1/v9EiO3UTOXR6A3FoMo4fnAKbWJdqaIwhOzh8qEw==", "cpu": [ "x64" ], @@ -2324,9 +2324,9 @@ } }, "node_modules/@esbuild/openharmony-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.0.tgz", - "integrity": "sha512-FLGfyizszcef5C3YtoyQDACyg95+dndv79i2EekILBofh5wpCa1KuBqOWKrEHZg3zrL3t5ouE5jgr94vA+Wb2w==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/openharmony-arm64/-/openharmony-arm64-0.28.2.tgz", + "integrity": "sha512-WkhYDmpTjLvGlScA1rwjRUmhl4k8oXR3cIbtqWmELgU/dFeHHlEllxDvdWcNJV9rbzCexB5vz8gtNewWLgCT7Q==", "cpu": [ "arm64" ], @@ -2341,9 +2341,9 @@ } }, "node_modules/@esbuild/sunos-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.0.tgz", - "integrity": "sha512-1ZgjUoEdHZZl/YlV76TSCz9Hqj9h9YmMGAgAPYd+q4SicWNX3G5GCyx9uhQWSLcbvPW8Ni7lj4gDa1T40akdlw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.28.2.tgz", + "integrity": "sha512-GPMSkTOtMnv2U2F8gxe4Io6qmVs+YKyp832Etqqxr0hFngmXQ3rzwytelm3GIn7T4VviRUlf3sOgBOiTdvaf7g==", "cpu": [ "x64" ], @@ -2358,9 +2358,9 @@ } }, "node_modules/@esbuild/win32-arm64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.0.tgz", - "integrity": "sha512-Q9StnDmQ/enxnpxCCLSg0oo4+34B9TdXpuyPeTedN/6+iXBJ4J+zwfQI28u/Jl40nOYAxGoNi7mFP40RUtkmUA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.28.2.tgz", + "integrity": "sha512-PIhhEkE9uPBleRBrQEJpUn7MBnibZzbGzYWPmY3x+YoVg/95zbjB4CxPPOQ8l5tYYM4mMaCthF8/1DIfBQQyWQ==", "cpu": [ "arm64" ], @@ -2375,9 +2375,9 @@ } }, "node_modules/@esbuild/win32-ia32": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.0.tgz", - "integrity": "sha512-zF3ag/gfiCe6U2iczcRzSYJKH1DCI+ByzSENHlM2FcDbEeo5Zd2C86Aq0tKUYAJJ1obRP84ymxIAksZUcdztHA==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.28.2.tgz", + "integrity": "sha512-YmJbfTlvU7Sdn9BB+4PRES4oB6pxgS37MAONj+hBr/cpXS1aBPKXxNnDbu+QCWPj0o9dgyxeq79g6c5P8KeuYA==", "cpu": [ "ia32" ], @@ -2392,9 +2392,9 @@ } }, "node_modules/@esbuild/win32-x64": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.0.tgz", - "integrity": "sha512-pEl1bO9mfAmIC+tW5btTmrKaujg3zGtUmWNdCw/xs70FBjwAL3o9OEKNHvNmnyylD6ubxUERiEhdsL0xBQ9efw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.28.2.tgz", + "integrity": "sha512-5ebpxr3nWMzrL/rnUI755Jkuee0bHL/Gq0WTF9lvcpv73wAp5eu8MfBUgWK9bhWvZjj7yX8etf/8tI8Ney695g==", "cpu": [ "x64" ], @@ -2409,9 +2409,9 @@ } }, "node_modules/@eslint-community/eslint-utils": { - "version": "4.9.1", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.9.1.tgz", - "integrity": "sha512-phrYmNiYppR7znFEdqgfWHXR6NCkZEK7hwWDHZUjit/2/U0r6XvkDl0SYnoM51Hq7FhCGdLDT6zxCCOY1hexsQ==", + "version": "4.10.1", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.10.1.tgz", + "integrity": "sha512-cuadcxVFE8sDK6iWJbs8Sn0av2Nrh2QSGQhVlBW9AaAHqHwjWsZHT8LJ4hFGPh7ASBV2deFdM7H/DPjulmh8rg==", "dev": true, "license": "MIT", "dependencies": { @@ -2466,9 +2466,9 @@ } }, "node_modules/@eslint/config-helpers": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.6.0.tgz", - "integrity": "sha512-ii6Bw9jJ2zi2cWA2Z+9/QZ/+3DX6kwaV5Q986D/CdP3Lap3w/pgQZ373FV7byY/i7L4IRH/G43I5dz1ClsCbpA==", + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@eslint/config-helpers/-/config-helpers-0.7.0.tgz", + "integrity": "sha512-DObd/KKUsU+FaFv4PLxSRenpXfQWmPXXP3pPZ6/K1PCrMu2vQpMDMuQe/BqYeoLcz8ro0bVDF1RxOJgfVEdhUw==", "dev": true, "license": "Apache-2.0", "dependencies": { @@ -3112,23 +3112,84 @@ "@jridgewell/sourcemap-codec": "^1.4.14" } }, + "node_modules/@napi-rs/lzma-linux-x64-gnu": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/@napi-rs/lzma-linux-x64-gnu/-/lzma-linux-x64-gnu-1.5.1.tgz", + "integrity": "sha512-oTXEIha4SsuXdTA4Iyskj0kpdx2yVXdhd75c2v3xGrHFfVMsbhTPZU/nMPL4sWKo4pBHm3aucLaqGlF696dTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "libc": [ + "glibc" + ], + "license": "MIT", + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": "^22.20 || ^24.12 || >=25" + } + }, "node_modules/@napi-rs/wasm-runtime": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.1.4.tgz", - "integrity": "sha512-3NQNNgA1YSlJb/kMH1ildASP9HW7/7kYnRI2szWJaofaS1hWmbGI4H+d3+22aGzXXN9IJ+n+GiFVcGipJP18ow==", + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@napi-rs/wasm-runtime/-/wasm-runtime-1.2.2.tgz", + "integrity": "sha512-JfB4kuJQjaoHuCTseIINHtHWeJnvgEcxjwA5t/Y00ZgaOO1Crz3fjT/p8kT28zA/Caz7oiUMn3d6H2yOVCVwuw==", "dev": true, "license": "MIT", "optional": true, "dependencies": { - "@tybys/wasm-util": "^0.10.1" + "@tybys/wasm-util": "^0.10.3" + }, + "engines": { + "node": "^20.19.0 || ^22.13.0 || >=23.5.0" }, "funding": { "type": "github", "url": "https://github.com/sponsors/Brooooooklyn" }, "peerDependencies": { - "@emnapi/core": "^1.7.1", - "@emnapi/runtime": "^1.7.1" + "@emnapi/core": "^1.7.1 || ^2.0.0-alpha.3", + "@emnapi/runtime": "^1.7.1 || ^2.0.0-alpha.3" + } + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, "node_modules/@pkgjs/parseargs": { @@ -3156,19 +3217,19 @@ } }, "node_modules/@playwright/test": { - "version": "1.60.0", - "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.60.0.tgz", - "integrity": "sha512-O71yZIbAh/PxDMNGns37GHBIfrVkEVyn+AXyIa5dOTfb4/xNvRWV+Vv/NMbNCtODB/pO7vLlF2OTmMVLhmr7Ag==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/@playwright/test/-/test-1.62.1.tgz", + "integrity": "sha512-DTcUc8qii+cpHvtOwggMtBRMjKZHXYWdw8syRYu2vtzuq4Wxphqq4NfCs5Zt44L6mA8rfDfj+PHnxFc/FeK6mQ==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright": "1.60.0" + "playwright": "1.62.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/@pnpm/config.env-replace": { @@ -3202,9 +3263,9 @@ "license": "ISC" }, "node_modules/@pnpm/npm-conf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.2.tgz", - "integrity": "sha512-h104Kh26rR8tm+a3Qkc5S4VLYint3FE48as7+/5oCEcKR2idC/pF1G6AhIXKI+eHPJa/3J9i5z0Al47IeGHPkA==", + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@pnpm/npm-conf/-/npm-conf-3.0.3.tgz", + "integrity": "sha512-//0sR/cow/s4ICQaYoAobOl4aU8cjU6x/V24V7XkKotb9+O+3zySIYp146vpaobYHnxa4pZX8NkV54Z5AwbDKA==", "dev": true, "license": "MIT", "dependencies": { @@ -3337,9 +3398,9 @@ } }, "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.61.0.tgz", - "integrity": "sha512-dnxczajOqt0gesZlN5pGQ1s1imQVrsmCw5G2Ci4oM+0WvNz3pyRnlWrT7McoZIb8VlFwCawdmbWRmxRn7HI+VQ==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.62.4.tgz", + "integrity": "sha512-RrPokAb7dmbxFoeO3TloqHyOjgye8RkBhSqmp4aJMIex4c9r46ZstPnleDQOq1t46VOVjwIuwNogIqbodV1Vvg==", "cpu": [ "arm" ], @@ -3351,9 +3412,9 @@ ] }, "node_modules/@rollup/rollup-android-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.61.0.tgz", - "integrity": "sha512-Bp3JpGP00Vu3f238ivRrjf7z3xSzVPXqCmaJYA9t2c+c8vKYvOzmXF7LkkeUalTEGd6cZcSWe+PFIP3Vy48fRg==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.62.4.tgz", + "integrity": "sha512-JKuJc+pnpks2pjy7L/N3v/cAkZxYlnmuZoD840ldbMI5KDbC4iO9NKwPKYdjYFCMAIIlBzYSFHxIJVYzRo2/8A==", "cpu": [ "arm64" ], @@ -3365,9 +3426,9 @@ ] }, "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.61.0.tgz", - "integrity": "sha512-zaYIpr670mUmmZ1tVzUFplbQbG7h3Gugx3L5FoqhsC2m/YnLlR1a7zVLmXNPy+iY1tFPEbNG+HHBXZGyId0G5w==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.62.4.tgz", + "integrity": "sha512-krw5uS2STmvJ02x0uTXHbqQNuz+9eZ1iw+qXk9dmW2gvV4jV7O2hEoOnuhFrpOPiel1mBFtqbxYZZtC46hXLOw==", "cpu": [ "arm64" ], @@ -3379,9 +3440,9 @@ ] }, "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.61.0.tgz", - "integrity": "sha512-+P49fvkv2dSoeevUW+lgZ/I2JHSsJCK1Lyjj7Cu6E4UHG4tS9XIefzIjo5qhgELjAclnen1rLzK2PMKJdo+Dyg==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.62.4.tgz", + "integrity": "sha512-wsTxtgApb4PrOsNJIm0FZ1h3WvCC+k9uxLJ4ad75hgoS4NiRes2SoJFlDAyMwiUY8IssDqGcHbXuN0sx1tfF1A==", "cpu": [ "x64" ], @@ -3393,9 +3454,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.61.0.tgz", - "integrity": "sha512-l3FAAOyKJXH2ea6KNFN+MMgC/rnE94YGLXs2ehYqDcCoHt1DpvgWX75BhUJxN38XojP7Ul+4H8PRn7EdyqSDrw==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.62.4.tgz", + "integrity": "sha512-GUOnQlyZe3yAXhWOtOMsn5Qkrv5E5mZXa0thbARWi5Ei2szlVXJFQhddZ4HbAzh8q92w5twp+CQvs/eFanz9YQ==", "cpu": [ "arm64" ], @@ -3407,9 +3468,9 @@ ] }, "node_modules/@rollup/rollup-freebsd-x64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.61.0.tgz", - "integrity": "sha512-VokPN3TSctKj65cyCNPaUh4vMFA8awxOot/0sp+4J7ZlNRKQEhXhawqPwajoi8H5ZFt61i0ugZJuTKXBjGJ17Q==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.62.4.tgz", + "integrity": "sha512-/Y7f3QuxjzPKsjA/rfEDa3+0vXqyjmJ50Ln8dPpCmWkKTrUoWHG1cWhTqaAMLob2m2nESWuC7yGrREz019Ztqg==", "cpu": [ "x64" ], @@ -3421,9 +3482,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.61.0.tgz", - "integrity": "sha512-DxH0P3wxm+Yzs/p3zrk9dw1rURu8p0Nv5+MRK/L7OtnLNg5rLZraSBFZ8iUXOd9f2BlhJyEpIZUH/emjq4UJ4g==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.62.4.tgz", + "integrity": "sha512-81wiiX3v7aqy+T+bT61TJ78yJjRquqFFTTbAPt08imfQQzkPIW8t6aJbkTagtCCrXMNc9D66+geqlK7ydLPNqA==", "cpu": [ "arm" ], @@ -3438,9 +3499,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.61.0.tgz", - "integrity": "sha512-T6ZvMNe84kAz6TBWHC7hGAoEtzP1LWYw/AqayGWEF6uISt3Abk/st06LqRD9THd7Xz3NxzurUpzAuEAUbZf+nw==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.62.4.tgz", + "integrity": "sha512-9kmDIvNZqdoHOBZgNtpTBeLWYO/LVipM3H/j62P8848/l/VPEQL6N3uxU9pvP1oZAsXyC2MEnFP3ovRjo7WYNQ==", "cpu": [ "arm" ], @@ -3455,9 +3516,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.61.0.tgz", - "integrity": "sha512-q/4hzvQkDs8b4jIBab1pnLiiM0ayTZsN2amBFPDzuyZxjEd4wDwx0UJFYM3cOZzSf5Kw8fnWSprJzIBMkcR44Q==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.62.4.tgz", + "integrity": "sha512-CcnXHWnXg69g+DX5VWL3FHts3qMRN2uVEHX+BZvGLdd07/gXkn3ePjYtO1LDJvxkGKVHMclKBRa1QUTH+6toYQ==", "cpu": [ "arm64" ], @@ -3472,9 +3533,9 @@ ] }, "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.61.0.tgz", - "integrity": "sha512-vvYWX3akdEAY6km+9wAqFDnk6pQsbJKVnj7xawcvs/+fdlYBGp+U+Qq/lLfpIxYIZvZLHMAKD9HLdacSx/r3dw==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.62.4.tgz", + "integrity": "sha512-iFOibiHnTRuhrWLlRsOQFdZJJIa7S8OwkneJr4ocALP16u5yk6lWLINFwhHaEqBFMsKDUZofLkGos7+CPzGB3g==", "cpu": [ "arm64" ], @@ -3489,9 +3550,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.61.0.tgz", - "integrity": "sha512-DePa5cqOxDP/Zp0VOXpeWaGew5iIv5DXp9NYbzkX5PFQyWVX9184WCTh3hvr/7lhXo8ZVlbFLkz8+o/q1dU6gA==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-gnu/-/rollup-linux-loong64-gnu-4.62.4.tgz", + "integrity": "sha512-XnWYMI7euHlb5a871xPja+Gm7DRCFU+FGRrtS2sMq9N8FvqtpagUy6gD4YOemC5MRk9xbh8+jYMEJbigFQwsgA==", "cpu": [ "loong64" ], @@ -3506,9 +3567,9 @@ ] }, "node_modules/@rollup/rollup-linux-loong64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.61.0.tgz", - "integrity": "sha512-LV8aWMB8UChglMCEzs7RkN0GsH29RJaLLqwm9fCIjlqwxQTiWAqNcc7wjBkH31hV0PU/yVxGYvrYsgfea2qw6g==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loong64-musl/-/rollup-linux-loong64-musl-4.62.4.tgz", + "integrity": "sha512-qGDAlO0U8xedCcsdRm9oaoQY8DAx/QT7uIxJWhCdx0ceIWX783UC9QSYkdpzAe29wNiVfp24+bZdQmn49o45SQ==", "cpu": [ "loong64" ], @@ -3523,9 +3584,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.61.0.tgz", - "integrity": "sha512-QoNSnwQtaeNu5grdBbsL0tt1uyl5EnS8DA8Mr3nluMXbhdQNyhN+G4tBax7VCdxLKj8YJ0/4OO9Ho84jMnJtKA==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-gnu/-/rollup-linux-ppc64-gnu-4.62.4.tgz", + "integrity": "sha512-ru4H6ezD7ysA5EiEK6qkkaEb4modH8CTej6kUy/gQi20u3kB3G7Zn8snXXkeJSCOFKG/rbPPtM/+9Wgas1961w==", "cpu": [ "ppc64" ], @@ -3540,9 +3601,9 @@ ] }, "node_modules/@rollup/rollup-linux-ppc64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.61.0.tgz", - "integrity": "sha512-/zZp5MKapIIApE8trN8qLGNSiRN9TUoaUZ1cmVu4XnVdd5LQLOXTtyi+vtfUbNnT3iyjzpPqYeKXmvJ+gJGYWw==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-ppc64-musl/-/rollup-linux-ppc64-musl-4.62.4.tgz", + "integrity": "sha512-2W4MO5WQVJnbJaZdvDb9rhBDuFU1nKIepPFpJUBsTh2k1YY2g+ODViaWuyOAjQ5cOP7NvrvLzt3wvHOoiAvc7w==", "cpu": [ "ppc64" ], @@ -3557,9 +3618,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.61.0.tgz", - "integrity": "sha512-RbrzcD3aJ1k3UbtMRRBNwojdVVyXjuVAFTfn/xPa6EEl6GE9Sm/akPgFTb9aAC9pMKGJ6CtWxaGrqWcabH+ySg==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.62.4.tgz", + "integrity": "sha512-+fxjfuoAmVMCYV5QyjoIpu0cp5DOiOTeqYFk1AVaxGr+/ravWLX89XfQmptsoWcaVy/TGf2hexzbUOrCQIL1CQ==", "cpu": [ "riscv64" ], @@ -3574,9 +3635,9 @@ ] }, "node_modules/@rollup/rollup-linux-riscv64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.61.0.tgz", - "integrity": "sha512-ZF+onDsBso8PJf1XaG9lB+O9RnBpKGnY6OrzC4CSHrtC1jb6jWLTKK4bRqdoCXHd22gyr2hiYmEAm8Wns/BOCw==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-musl/-/rollup-linux-riscv64-musl-4.62.4.tgz", + "integrity": "sha512-jTn8JfHGL4djjFxPuM06LmNUJDsst2jeVlsd9OmIH6zc5sC9K6rIuO4YajXatLUpBmBKl6b35ro1QZocLi+tcA==", "cpu": [ "riscv64" ], @@ -3591,9 +3652,9 @@ ] }, "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.61.0.tgz", - "integrity": "sha512-Atk0aSIk5Zx2Wuh9dgRQgLP0Koc8hOeYpbWryMXyk8G8/HmPkwPPkMqIIDhrXHHYqfUzSJA/I7IWSBv8xSmRBA==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.62.4.tgz", + "integrity": "sha512-oCJCJL4pXsoDcP2QZ+JVlPTIRc6266zsIaeJJsWImmF7HO0W8nb6HuSgZlMWxJwaPf8ehbSw8yo0EUw925hKsA==", "cpu": [ "s390x" ], @@ -3608,9 +3669,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.61.0.tgz", - "integrity": "sha512-0uMOcf3eZ5K+K4cYHkdxShFMPlPXCOdfDFEFn9dNYAEEd2cVvmOfH7zFgRVoDgmtQ1m9k5q7qfrHzyMAubKYUA==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.62.4.tgz", + "integrity": "sha512-W69hukhZ3KKNRCaMIEzKvcFye42hh0FE1+YoYaf5+Ikacuftoco6yO/xouz0hc5d5W/s3yBro5jRiuEE/Q5vUw==", "cpu": [ "x64" ], @@ -3625,9 +3686,9 @@ ] }, "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.61.0.tgz", - "integrity": "sha512-mvFtE4A/t/7hRJ7X8Ozmu8FsIkAUat2nzl12pgU337BRmq87AQUJztwHz2Zv5/tjo9/C95E66CK03SI/ToEDJw==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.62.4.tgz", + "integrity": "sha512-qiXbGG2jkjXhzXpsFZSR2Xpb8DN/UaxYsbb/STbuR/6fpaDgRmmaq1B/LmtF2wQFOFOSsK2jdE0RZ3a0zHn4QA==", "cpu": [ "x64" ], @@ -3642,9 +3703,9 @@ ] }, "node_modules/@rollup/rollup-openbsd-x64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.61.0.tgz", - "integrity": "sha512-z9b9+aTxvt8n2rNltMPvyaUfB8NJ+CVyOrGK/MdIKHx7B+lXmZpm/XbRsU7Rpf3fRqJ2uS6mBJiJveCtq8LHDg==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openbsd-x64/-/rollup-openbsd-x64-4.62.4.tgz", + "integrity": "sha512-nWeM//hxv8mIo6jD7Hu4o48DVmV9pbV6gsKaWU+4NFyqHoPKwrkRiZGLKUhOBk8qNmDmpwFtPKg80Bo/Tn4xiQ==", "cpu": [ "x64" ], @@ -3656,9 +3717,9 @@ ] }, "node_modules/@rollup/rollup-openharmony-arm64": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.61.0.tgz", - "integrity": "sha512-jXaXFqKMehsOc+g8R6oo33RRC6w07G9jDBxAE5eAKX7mOcCbZloYIPNhfG9Wl+P9O9IWHFO4OJgPi1Ml2qkt7w==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-openharmony-arm64/-/rollup-openharmony-arm64-4.62.4.tgz", + "integrity": "sha512-s62SQ/vgsRSvMwDkOEfTqfgASF0f26ZNaQuTA6Aok5lrikf89yI2W0gFHvZb2Jpgc6N8JnOKZgCK2iciO3CsxQ==", "cpu": [ "arm64" ], @@ -3670,9 +3731,9 @@ ] }, "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.61.0.tgz", - "integrity": "sha512-OXNWVFocS2IA4+QplhTZZ2a+8hPZR7T8KuozsNmJKK8y7cp83StHvGksfHzPG3wczWTczyWHVQuqeiTUbjiyBg==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.62.4.tgz", + "integrity": "sha512-J6wGf8TVGbXJq+HH+ttTvrcfNKPbuZecV6KT1B8I18BC5IURUh5kl4Yl5OEP5eFIUoI5BWxCsyYMhFsDx8kekw==", "cpu": [ "arm64" ], @@ -3684,9 +3745,9 @@ ] }, "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.61.0.tgz", - "integrity": "sha512-AlAbNtBO637LxSldqV43z0FfXoGfl2TW1DgAg/bs7aQswFbDewz2SJm3BUhiGfbOVtW571xbc9p+REdxhyN/Eg==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.62.4.tgz", + "integrity": "sha512-zmfrQd/0wu6oJs8Vq8KwY/YtsKSsLtKe/HwAP4Wqy8LhWjeT55fHRAkOhYQ12wI3ayS4Tt12d5CDRD7N96SAYQ==", "cpu": [ "ia32" ], @@ -3698,9 +3759,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-gnu": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.61.0.tgz", - "integrity": "sha512-QRSrQXyJ1M4tjNXdR0/G/IgV6lzfQQJYBjlWIEYkY2Xs86DRl/iEpQ4blMDjJxSl7n19eDKKXMg0AmuBVYy8pQ==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-gnu/-/rollup-win32-x64-gnu-4.62.4.tgz", + "integrity": "sha512-qPzHqdj9rfUD+w79dtE07zi/kFwKyCJqplp5K5ygeLTp7jLpAoc16OAH39HSmRC9UpozaecsleI8uAdEj6v2yw==", "cpu": [ "x64" ], @@ -3712,9 +3773,9 @@ ] }, "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.61.0.tgz", - "integrity": "sha512-tkuFxhvKO/HlGd0VsINF6vHSYH8AF8W0TcNxKDK6JZmrehngFj78pToc8iemtnvwilDjs2G/qSzYFhe9U8q+fw==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.62.4.tgz", + "integrity": "sha512-zD6NdeWEByGE9QF9vCrlJ5YQB4oq9q91kPZS37Jwj5hOkvR1lTBSpsKhKDw4IJtbQ35LsTS1HD9DZYGKIshU1Q==", "cpu": [ "x64" ], @@ -3726,12 +3787,25 @@ ] }, "node_modules/@sinclair/typebox": { - "version": "0.34.49", - "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.49.tgz", - "integrity": "sha512-brySQQs7Jtn0joV8Xh9ZV/hZb9Ozb0pmazDIASBkYKCjXrXU3mpcFahmK/z4YDhGkQvP9mWJbVyahdtU5wQA+A==", + "version": "0.34.52", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.34.52.tgz", + "integrity": "sha512-XiMQh7qqVlxZzcVD+kkGMNGMzcTrDMLWI7S4x7z1MkCkbDPrekpZXEUK0eZqZFMuHQg2a2DZOcDIh9o5v3Gonw==", "dev": true, "license": "MIT" }, + "node_modules/@sindresorhus/merge-streams": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/merge-streams/-/merge-streams-4.0.0.tgz", + "integrity": "sha512-tlqY9xq5ukxTUZBmoOp+m61cqwQD5pHJtFY3Mn8CA8ps6yghLH/Hw8UPdqg4OLmFW3IFlcXnQNmo/dh8HzXYIQ==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@sinonjs/commons": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", @@ -3769,9 +3843,9 @@ } }, "node_modules/@tybys/wasm-util": { - "version": "0.10.2", - "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.2.tgz", - "integrity": "sha512-RoBvJ2X0wuKlWFIjrwffGw1IqZHKQqzIchKaadZZfnNpsAYp2mM0h36JtPCjNDAHGgYez/15uMBpfGwchhiMgg==", + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.10.3.tgz", + "integrity": "sha512-F3fo1MYrRJYL3zER0OUOmkutjr1Vp23m7OsSgp7nq4SP6OqX6C/56XFIPAl5bt3zaBRjmW7SGz3u/6LwFpYcOg==", "dev": true, "license": "MIT", "optional": true, @@ -3934,13 +4008,13 @@ "license": "MIT" }, "node_modules/@types/node": { - "version": "25.9.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", - "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "version": "26.2.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-26.2.0.tgz", + "integrity": "sha512-5IviulTZeRNp2vAJ514cc/HUlY5nZ9fCbq9DMyC52BrhFZACo3nI0R7qBxhQmo/d27NFe96ur/b7Wwxklda+kg==", "dev": true, "license": "MIT", "dependencies": { - "undici-types": ">=7.24.0 <7.24.7" + "undici-types": "~8.3.0" } }, "node_modules/@types/normalize-package-data": { @@ -4003,9 +4077,9 @@ "license": "MIT" }, "node_modules/@ungap/structured-clone": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.1.tgz", - "integrity": "sha512-mUFwbeTqrVgDQxFveS+df2yfap6iuP20NAKAsBt5jDEoOTDew+zwLAOilHCeQJOVSvmgCX4ogqIrA0mnyr08yQ==", + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.3.tgz", + "integrity": "sha512-60YRaenCQcVjYEKOcG824+DRGGIQ3VKErcBoAEDJZz5bKIs2ZG+X/H9Nk+Q6EVkwJk5QNApxbrc5QtBSwtrXAg==", "dev": true, "license": "ISC" }, @@ -4353,9 +4427,9 @@ ] }, "node_modules/acorn": { - "version": "8.16.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.16.0.tgz", - "integrity": "sha512-UVJyE9MttOsBQIDKw1skb9nAwQuR5wuGD3+82K6JgJlm/Y+KI92oNsMNGZCYdDsVtRHSak0pcV5Dno5+4jh9sw==", + "version": "8.18.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.18.0.tgz", + "integrity": "sha512-lGq+9yr1/GuAWaVYIHRjvvySG5/4VfKIvC8EWxStPdcDh/Ka7FG3twP6v4d5BkravUilhIAsG4Qj83t02LWUPQ==", "dev": true, "license": "MIT", "bin": { @@ -4643,9 +4717,9 @@ } }, "node_modules/axe-core": { - "version": "4.12.0", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.12.0.tgz", - "integrity": "sha512-FTavr/7Ba0IptwGOPxnQvdyW2tAsdLBMTBXz7rKH6xJ2skpyxpBxyHkDdBs4lf69yRqYpkqCdfhnwS8YULGOmg==", + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.13.0.tgz", + "integrity": "sha512-UzGt8zg7Ny8djbYMhxl2zuEevVa7r2gJjYY5Lwr1xM7+XU2nd6CkIWFTVcCIbAP63vSz71NaVyyuSk9lHKcy0A==", "dev": true, "license": "MPL-2.0", "engines": { @@ -4858,9 +4932,9 @@ "license": "MIT" }, "node_modules/baseline-browser-mapping": { - "version": "2.10.33", - "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.10.33.tgz", - "integrity": "sha512-bA6+tcSLpz2tIEdDXZPpPTIuxBcC4+w6SieaYyfigIa4h8GlFxbA17v22Vx3JUtuZQj9SgOsnbK+aTBzyDyEuw==", + "version": "2.11.13", + "resolved": "https://registry.npmjs.org/baseline-browser-mapping/-/baseline-browser-mapping-2.11.13.tgz", + "integrity": "sha512-k9HNuUVMlqVjQ9UHzfPjIqiDbWw7WqT1AoT7GL8VwvF3r0ZfArtgiSPAlmupyNquNgOJHTuH4CKYf8ttMTWBTQ==", "dev": true, "license": "Apache-2.0", "bin": { @@ -5027,16 +5101,16 @@ } }, "node_modules/brace-expansion": { - "version": "5.0.6", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz", - "integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==", + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz", + "integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==", "dev": true, "license": "MIT", "dependencies": { "balanced-match": "^4.0.2" }, "engines": { - "node": "18 || 20 || >=22" + "node": "20 || >=22" } }, "node_modules/braces": { @@ -5053,9 +5127,9 @@ } }, "node_modules/browserslist": { - "version": "4.28.2", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.2.tgz", - "integrity": "sha512-48xSriZYYg+8qXna9kwqjIVzuQxi+KYWp2+5nCYnYKPTr0LvD89Jqk2Or5ogxz0NUMfIjhh2lIUX/LyX9B4oIg==", + "version": "4.28.8", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.28.8.tgz", + "integrity": "sha512-V2NpofLblG64mfOtSgDhOJESZEGogzDMBv/q+W6oc4LXWP/q75eOXoOaaOu1EOadB9U4Bwx/e0yzbvwKH8zalA==", "dev": true, "funding": [ { @@ -5073,11 +5147,11 @@ ], "license": "MIT", "dependencies": { - "baseline-browser-mapping": "^2.10.12", - "caniuse-lite": "^1.0.30001782", - "electron-to-chromium": "^1.5.328", - "node-releases": "^2.0.36", - "update-browserslist-db": "^1.2.3" + "baseline-browser-mapping": "^2.11.12", + "caniuse-lite": "^1.0.30001809", + "electron-to-chromium": "^1.5.402", + "node-releases": "^2.0.53", + "update-browserslist-db": "^1.3.0" }, "bin": { "browserslist": "cli.js" @@ -5217,9 +5291,9 @@ } }, "node_modules/caniuse-lite": { - "version": "1.0.30001793", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001793.tgz", - "integrity": "sha512-iwSsYWaCOoh26cV8NwNRViHlrfUvYsHDfRVcbtmw0Kg6PJIZZXwMkj1442FYLBGkeUf1juAsU3DTfxW579mrPA==", + "version": "1.0.30001809", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001809.tgz", + "integrity": "sha512-xxWVywk6a6Arlk+hymeycyn/VgqEfLDxupvhH/xiY5SJ/18kmi9o6MiO320DCUzypORHLtvh0I4i04tUhCNHNQ==", "dev": true, "funding": [ { @@ -5540,16 +5614,6 @@ "dev": true, "license": "MIT" }, - "node_modules/commander": { - "version": "14.0.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-14.0.3.tgz", - "integrity": "sha512-H+y0Jo/T1RZ9qPP4Eh1pkcQcLRglraJaSLoyOtHxu6AapkjWVCy2Sit1QQ4x3Dng8qDlSsZEet7g5Pq06MvTgw==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=20" - } - }, "node_modules/common-tags": { "version": "1.8.2", "resolved": "https://registry.npmjs.org/common-tags/-/common-tags-1.8.2.tgz", @@ -5612,13 +5676,16 @@ "license": "MIT" }, "node_modules/core-js-compat": { - "version": "3.49.0", - "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.49.0.tgz", - "integrity": "sha512-VQXt1jr9cBz03b331DFDCCP90b3fanciLkgiOoy8SBHy06gNf+vQ1A3WFLqG7I8TipYIKeYK9wxd0tUrvHcOZA==", + "version": "3.50.0", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.50.0.tgz", + "integrity": "sha512-XGpFGbMLHwSt74YLTKho7Ib242qi6O8MSX+sRokV4oz7iKXvQWGYZthjIhjRGMxjzVkAubBO512dKGYcefmX3Q==", "dev": true, "license": "MIT", "dependencies": { - "browserslist": "^4.28.1" + "browserslist": "^4.28.7" + }, + "engines": { + "node": ">=6.4.0" }, "funding": { "type": "opencollective", @@ -6011,9 +6078,9 @@ } }, "node_modules/electron-to-chromium": { - "version": "1.5.364", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.364.tgz", - "integrity": "sha512-G/dYE3+AYhyHwzTwg8UbnXf7zqMERYh7l2jJ3QujhFsH8agSYwtnGAR2aZ7f0AakIKJXd5En/Hre4igIUrdlYw==", + "version": "1.5.404", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.404.tgz", + "integrity": "sha512-3WJtd7/lVq2Jnuz6wed1l9+1ZD2u2Tet1/1NBc4Iedkmgbu+I7YuAqdAQ8T+VZtnwysMsAf3IqSq9D1gyZjA2g==", "dev": true, "license": "ISC" }, @@ -6129,6 +6196,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/es-abstract-get": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-abstract-get/-/es-abstract-get-1.0.0.tgz", + "integrity": "sha512-6PMWXpdhshVvFp+FoWYs1EvG1Nj0tvk0dZM+XcK0xMEM1czRVcP6ohqPWHy6qPagSpC8j4+p89WXlT+xXJs/fg==", + "dev": true, + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.2", + "is-callable": "^1.2.7", + "object-inspect": "^1.13.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/es-define-property": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", @@ -6179,15 +6265,18 @@ } }, "node_modules/es-to-primitive": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.0.tgz", - "integrity": "sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==", + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.3.4.tgz", + "integrity": "sha512-yPDz7wqpg1/mmHLmS3tcfTfbw5f1eryXvyghYBffGdERwe+mV7ZcWzTR8LR17Kvqt3qfPurjlonmnq3MKXIOXw==", "dev": true, "license": "MIT", "dependencies": { + "es-abstract-get": "^1.0.0", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", "is-callable": "^1.2.7", - "is-date-object": "^1.0.5", - "is-symbol": "^1.0.4" + "is-date-object": "^1.1.0", + "is-symbol": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -6197,9 +6286,9 @@ } }, "node_modules/esbuild": { - "version": "0.28.0", - "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.0.tgz", - "integrity": "sha512-sNR9MHpXSUV/XB4zmsFKN+QgVG82Cc7+/aaxJ8Adi8hyOac+EXptIp45QBPaVyX3N70664wRbTcLTOemCAnyqw==", + "version": "0.28.2", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.28.2.tgz", + "integrity": "sha512-HKVLS8dvII+xoKW9kmqxbRKrnWEXfJJr/FZhhJmiqIB0e053QNYFqOBouTMO/k5sID4MvCiUCvv8b9M4h32wIA==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -6210,32 +6299,32 @@ "node": ">=18" }, "optionalDependencies": { - "@esbuild/aix-ppc64": "0.28.0", - "@esbuild/android-arm": "0.28.0", - "@esbuild/android-arm64": "0.28.0", - "@esbuild/android-x64": "0.28.0", - "@esbuild/darwin-arm64": "0.28.0", - "@esbuild/darwin-x64": "0.28.0", - "@esbuild/freebsd-arm64": "0.28.0", - "@esbuild/freebsd-x64": "0.28.0", - "@esbuild/linux-arm": "0.28.0", - "@esbuild/linux-arm64": "0.28.0", - "@esbuild/linux-ia32": "0.28.0", - "@esbuild/linux-loong64": "0.28.0", - "@esbuild/linux-mips64el": "0.28.0", - "@esbuild/linux-ppc64": "0.28.0", - "@esbuild/linux-riscv64": "0.28.0", - "@esbuild/linux-s390x": "0.28.0", - "@esbuild/linux-x64": "0.28.0", - "@esbuild/netbsd-arm64": "0.28.0", - "@esbuild/netbsd-x64": "0.28.0", - "@esbuild/openbsd-arm64": "0.28.0", - "@esbuild/openbsd-x64": "0.28.0", - "@esbuild/openharmony-arm64": "0.28.0", - "@esbuild/sunos-x64": "0.28.0", - "@esbuild/win32-arm64": "0.28.0", - "@esbuild/win32-ia32": "0.28.0", - "@esbuild/win32-x64": "0.28.0" + "@esbuild/aix-ppc64": "0.28.2", + "@esbuild/android-arm": "0.28.2", + "@esbuild/android-arm64": "0.28.2", + "@esbuild/android-x64": "0.28.2", + "@esbuild/darwin-arm64": "0.28.2", + "@esbuild/darwin-x64": "0.28.2", + "@esbuild/freebsd-arm64": "0.28.2", + "@esbuild/freebsd-x64": "0.28.2", + "@esbuild/linux-arm": "0.28.2", + "@esbuild/linux-arm64": "0.28.2", + "@esbuild/linux-ia32": "0.28.2", + "@esbuild/linux-loong64": "0.28.2", + "@esbuild/linux-mips64el": "0.28.2", + "@esbuild/linux-ppc64": "0.28.2", + "@esbuild/linux-riscv64": "0.28.2", + "@esbuild/linux-s390x": "0.28.2", + "@esbuild/linux-x64": "0.28.2", + "@esbuild/netbsd-arm64": "0.28.2", + "@esbuild/netbsd-x64": "0.28.2", + "@esbuild/openbsd-arm64": "0.28.2", + "@esbuild/openbsd-x64": "0.28.2", + "@esbuild/openharmony-arm64": "0.28.2", + "@esbuild/sunos-x64": "0.28.2", + "@esbuild/win32-arm64": "0.28.2", + "@esbuild/win32-ia32": "0.28.2", + "@esbuild/win32-x64": "0.28.2" } }, "node_modules/escalade": { @@ -6275,16 +6364,19 @@ } }, "node_modules/eslint": { - "version": "10.4.1", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.4.1.tgz", - "integrity": "sha512-AyIKhnOBuOAdueD7RB3xB+YeAWScb9jHsJBgH2Hcde8InP5JYhqrRR6iTMHyTEwgENK54Cp44e4v8BwNhsuHuw==", + "version": "10.8.1", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-10.8.1.tgz", + "integrity": "sha512-wqA7W2jbsC/BnV9Iv1UZpKVFkO1AdNoSmYW8NWG4HNOBbkAMvIqDZ27pI2f07dqn583NcIC44ckjAcOXDL1QbQ==", "dev": true, "license": "MIT", + "workspaces": [ + "packages/*" + ], "dependencies": { "@eslint-community/eslint-utils": "^4.8.0", "@eslint-community/regexpp": "^4.12.2", "@eslint/config-array": "^0.23.5", - "@eslint/config-helpers": "^0.6.0", + "@eslint/config-helpers": "^0.7.0", "@eslint/core": "^1.2.1", "@eslint/plugin-kit": "^0.7.2", "@humanfs/node": "^0.16.6", @@ -6308,7 +6400,7 @@ "imurmurhash": "^0.1.4", "is-glob": "^4.0.0", "json-stable-stringify-without-jsonify": "^1.0.1", - "minimatch": "^10.2.4", + "minimatch": "^10.2.5", "natural-compare": "^1.4.0", "optionator": "^0.9.3" }, @@ -6561,6 +6653,36 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-glob": { + "version": "3.3.3", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.3.tgz", + "integrity": "sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==", + "dev": true, + "license": "MIT", + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.8" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "license": "ISC", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", @@ -6576,9 +6698,9 @@ "license": "MIT" }, "node_modules/fast-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.2.tgz", - "integrity": "sha512-rVjf7ArG3LTk+FS6Yw81V1DLuZl1bRbNrev6Tmd/9RaroeeRRJhAt7jg/6YFxbvAQXUCavSoZhPPj6oOx+5KjQ==", + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.1.5.tgz", + "integrity": "sha512-gHwA1O9LDIcKunMKhObS/HimwtehO1nPUECKAu5TpKgaO19fcWEl4bliWe1jWxVFvIXztJjjQ4L8XQ1EU9f7Jw==", "dev": true, "funding": [ { @@ -6592,6 +6714,16 @@ ], "license": "BSD-3-Clause" }, + "node_modules/fastq": { + "version": "1.20.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.20.1.tgz", + "integrity": "sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==", + "dev": true, + "license": "ISC", + "dependencies": { + "reusify": "^1.0.4" + } + }, "node_modules/fb-watchman": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", @@ -6602,24 +6734,6 @@ "bser": "2.1.1" } }, - "node_modules/fdir": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", - "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "picomatch": "^3 || ^4" - }, - "peerDependenciesMeta": { - "picomatch": { - "optional": true - } - } - }, "node_modules/figures": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/figures/-/figures-3.2.0.tgz", @@ -6677,9 +6791,9 @@ "license": "MIT" }, "node_modules/filelist/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -6744,9 +6858,9 @@ } }, "node_modules/flatted": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.2.tgz", - "integrity": "sha512-PjDse7RzhcPkIJwy5t7KPWQSZ9cAbzQXcafsetQoD7sOJRQlGikNbx7yZp2OotDnJyrDcbyRq3Ttb18iYOqkxA==", + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.4.4.tgz", + "integrity": "sha512-5+ybhBZANEJxaH3X5evAFatUxLfEHSr7n6kYJ+1Qd0mUqr4eu9gIf6GDbWHf8RJijHrjjO8G+la14SlL2SeS1Q==", "dev": true, "license": "ISC" }, @@ -6853,18 +6967,21 @@ } }, "node_modules/function.prototype.name": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.8.tgz", - "integrity": "sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==", + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.2.0.tgz", + "integrity": "sha512-jObKIik1P2QjPHP5nz5BaOtUlfgS0fWo8IUByNXkM+o+02sJOi94em77GwJKQSJ3gfPHdgzLNrHc1uokV4P/ew==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.3", - "define-properties": "^1.2.1", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", "functions-have-names": "^1.2.3", - "hasown": "^2.0.2", - "is-callable": "^1.2.7" + "has-property-descriptors": "^1.0.2", + "hasown": "^2.0.4", + "is-callable": "^1.2.7", + "is-document.all": "^1.0.0" }, "engines": { "node": ">= 0.4" @@ -7056,9 +7173,9 @@ "license": "MIT" }, "node_modules/glob/node_modules/brace-expansion": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.1.tgz", - "integrity": "sha512-WR1cURNjuvBLMZBMbqM0UoE+WAfdUcEV1ccD8PVBVOI+Z3ND4+SZbN8RsfT2bMuG1qwz5RFvPukSZm5fF2D5eA==", + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.1.4.tgz", + "integrity": "sha512-hGfVzPxthbf3+2yjg/RBs60cB0FhqBS/zvdV/4wn4/BmN0bNMMHPc4V/BbFieqf1TKAGGAHnY4eSjajCl0f2Xg==", "dev": true, "license": "MIT", "dependencies": { @@ -7108,9 +7225,9 @@ } }, "node_modules/globals": { - "version": "17.6.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-17.6.0.tgz", - "integrity": "sha512-sepffkT8stwnIYbsMBpoCHJuJM5l98FUF2AnE07hfvE0m/qp3R586hw4jF4uadbhvg1ooIdzuu7CsfD2jzCaNA==", + "version": "17.9.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-17.9.0.tgz", + "integrity": "sha512-m/MvAW61QVU5VDNF1Vj8axt016h8w7L5TU1e9zlab7XIttAT2YAlCwl75K1fOqvMM9apmD7lbCIRhpfkhmxhCg==", "dev": true, "license": "MIT", "engines": { @@ -7137,6 +7254,50 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/globby": { + "version": "16.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-16.2.2.tgz", + "integrity": "sha512-NLvV9ubZ6NDsJaOpKPy3cQeJpKi9DcWiyCiFUpJPA0YihRqiE6RWaLUmgNNPr8MgPpLZjnBjSmou7uZBRJv9wA==", + "dev": true, + "license": "MIT", + "dependencies": { + "@sindresorhus/merge-streams": "^4.0.0", + "fast-glob": "^3.3.3", + "ignore": "^7.0.5", + "is-path-inside": "^4.0.0", + "slash": "^5.1.0", + "unicorn-magic": "^0.4.0" + }, + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globby/node_modules/ignore": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.6.tgz", + "integrity": "sha512-BAg6QkE8W+TuQLrrw0Ugr7HegXduRuuj8/ti2kSOc+jz1dmx8/WNcjr6XGnq5YpDWxFwwaavqD0+jIUOKelTsw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 4" + } + }, + "node_modules/globby/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/gopd": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", @@ -7489,16 +7650,6 @@ "dev": true, "license": "ISC" }, - "node_modules/ini": { - "version": "4.1.3", - "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", - "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", - "dev": true, - "license": "ISC", - "engines": { - "node": "^14.17.0 || ^16.13.0 || >=18.0.0" - } - }, "node_modules/inquirer": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/inquirer/-/inquirer-7.3.3.tgz", @@ -7776,6 +7927,22 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/is-document.all": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-document.all/-/is-document.all-1.0.0.tgz", + "integrity": "sha512-+XSoyS05OdBbhFuELhgTCpFNHkpBOJqtsZfUFFpe5QTw+9Sjbh8zitxhQkYAo6wV7e1Vb8cAPvpCk9jGam/82g==", + "dev": true, + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-extglob": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", @@ -8245,9 +8412,9 @@ } }, "node_modules/istanbul-lib-instrument/node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -8837,9 +9004,9 @@ } }, "node_modules/jest-snapshot/node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -8959,9 +9126,9 @@ "license": "MIT" }, "node_modules/js-yaml": { - "version": "3.14.2", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.2.tgz", - "integrity": "sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==", + "version": "3.15.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.15.1.tgz", + "integrity": "sha512-S99WuO3HlhO3XN41EtYUNl9zzXjoJx7QvmipxsJVxtCBT0YHEFy+iOJhjSvrmV12nYhWpZaM8lPHkJm0yUMbag==", "dev": true, "license": "MIT", "dependencies": { @@ -9262,9 +9429,9 @@ "license": "MIT" }, "node_modules/linkify-it": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.1.tgz", - "integrity": "sha512-wVoTjP4Q6R0NW5hiZkVJaFZPWgtXfoGF+6LucL3/FtiNjmcHhYjEr5f1Kqjirc1nBW07J/ZuRFumqr2oqccEWg==", + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/linkify-it/-/linkify-it-5.0.2.tgz", + "integrity": "sha512-ONTm2jCMAVZjgQa/Fy1kScXsuOoF5NPTsoFBdE1KVIZ2vAh/r9+Bqo+0jINCBYnavTPQZz38QzFTme79ENoN3Q==", "dev": true, "funding": [ { @@ -9311,13 +9478,6 @@ "dev": true, "license": "MIT" }, - "node_modules/lodash.sortby": { - "version": "4.7.0", - "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", - "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", - "dev": true, - "license": "MIT" - }, "node_modules/log-symbols": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", @@ -9372,9 +9532,9 @@ } }, "node_modules/make-dir/node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -9408,15 +9568,25 @@ } }, "node_modules/markdown-it": { - "version": "14.1.1", - "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.1.1.tgz", - "integrity": "sha512-BuU2qnTti9YKgK5N+IeMubp14ZUKUUw7yeJbkjtosvHiP0AZ5c8IAgEMk79D0eC8F23r4Ac/q8cAIFdm2FtyoA==", + "version": "14.3.0", + "resolved": "https://registry.npmjs.org/markdown-it/-/markdown-it-14.3.0.tgz", + "integrity": "sha512-RCEsPjR+sr0x+AuYp601tKTkgFG4YEPLCzHST3cQ/fhlJkqAkz1L2/Qbp1j9qw5SBwQHFBoW8+hoN5xssOF0Tw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/markdown-it" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1", - "entities": "^4.4.0", - "linkify-it": "^5.0.0", + "entities": "^4.5.0", + "linkify-it": "^5.0.2", "mdurl": "^2.0.0", "punycode.js": "^2.3.1", "uc.micro": "^2.1.0" @@ -9433,9 +9603,9 @@ "license": "Python-2.0" }, "node_modules/markdownlint": { - "version": "0.40.0", - "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.40.0.tgz", - "integrity": "sha512-UKybllYNheWac61Ia7T6fzuQNDZimFIpCg2w6hHjgV1Qu0w1TV0LlSgryUGzM0bkKQCBhy2FDhEELB73Kb0kAg==", + "version": "0.41.1", + "resolved": "https://registry.npmjs.org/markdownlint/-/markdownlint-0.41.1.tgz", + "integrity": "sha512-qHKeU2E1bdyNAT077go2FVTNXvYcktN5IHtF6XyeD1l0PClxzSp2tUApAV14ORI8DGX4H9bNKZEzelZp4qn8IA==", "dev": true, "license": "MIT", "dependencies": { @@ -9447,81 +9617,107 @@ "micromark-extension-gfm-table": "2.1.1", "micromark-extension-math": "3.1.0", "micromark-util-types": "2.0.2", - "string-width": "8.1.0" + "string-width": "8.2.1" }, "engines": { - "node": ">=20" + "node": ">=22" }, "funding": { "url": "https://github.com/sponsors/DavidAnson" } }, - "node_modules/markdownlint-cli": { - "version": "0.48.0", - "resolved": "https://registry.npmjs.org/markdownlint-cli/-/markdownlint-cli-0.48.0.tgz", - "integrity": "sha512-NkZQNu2E0Q5qLEEHwWj674eYISTLD4jMHkBzDobujXd1kv+yCxi8jOaD/rZoQNW1FBBMMGQpuW5So8B51N/e0A==", + "node_modules/markdownlint-cli2": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/markdownlint-cli2/-/markdownlint-cli2-0.23.2.tgz", + "integrity": "sha512-eUhcnkSpzURo/o4htSqc7LPDszgOOTknhU4eY/sPHvMCLxnTCYscv1gw1/js/idmaZPisv9ECVEIORcllqjTUw==", "dev": true, "license": "MIT", "dependencies": { - "commander": "~14.0.3", - "deep-extend": "~0.6.0", - "ignore": "~7.0.5", - "js-yaml": "~4.1.1", - "jsonc-parser": "~3.3.1", - "jsonpointer": "~5.0.1", - "markdown-it": "~14.1.1", - "markdownlint": "~0.40.0", - "minimatch": "~10.2.4", - "run-con": "~1.3.2", - "smol-toml": "~1.6.0", - "tinyglobby": "~0.2.15" + "globby": "16.2.2", + "js-yaml": "5.2.2", + "jsonc-parser": "3.3.1", + "jsonpointer": "5.0.1", + "markdown-it": "14.3.0", + "markdownlint": "0.41.1", + "markdownlint-cli2-formatter-default": "0.0.6", + "micromatch": "4.0.8", + "smol-toml": "1.7.0" }, "bin": { - "markdownlint": "markdownlint.js" + "markdownlint-cli2": "markdownlint-cli2-bin.mjs" }, "engines": { - "node": ">=20" + "node": ">=22" + }, + "funding": { + "url": "https://github.com/sponsors/DavidAnson" } }, - "node_modules/markdownlint-cli/node_modules/argparse": { + "node_modules/markdownlint-cli2-formatter-default": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/markdownlint-cli2-formatter-default/-/markdownlint-cli2-formatter-default-0.0.6.tgz", + "integrity": "sha512-VVDGKsq9sgzu378swJ0fcHfSicUnMxnL8gnLm/Q4J/xsNJ4e5bA6lvAz7PCzIl0/No0lHyaWdqVD2jotxOSFMQ==", + "dev": true, + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/DavidAnson" + }, + "peerDependencies": { + "markdownlint-cli2": ">=0.0.4" + } + }, + "node_modules/markdownlint-cli2/node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", "dev": true, "license": "Python-2.0" }, - "node_modules/markdownlint-cli/node_modules/ignore": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-7.0.5.tgz", - "integrity": "sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==", - "dev": true, - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "node_modules/markdownlint-cli/node_modules/js-yaml": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", - "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", + "node_modules/markdownlint-cli2/node_modules/js-yaml": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-5.2.2.tgz", + "integrity": "sha512-dayzUzKkJ1MkuUtZglSebU43utNXH0OWQByK9rKOOuYIO8M5TV1y+n8ALMdG0rdzBnfNkOmZEqrURepb0ejqBw==", "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/puzrin" + }, + { + "type": "github", + "url": "https://github.com/sponsors/nodeca" + } + ], "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, "bin": { - "js-yaml": "bin/js-yaml.js" + "js-yaml": "bin/js-yaml.mjs" + } + }, + "node_modules/markdownlint-cli2/node_modules/smol-toml": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.7.0.tgz", + "integrity": "sha512-aqVvWoyO21L23mb+drl4RmMXbf6N7FdHjAhTRA9ZBL7apWBgfWC16KjrASI+1p9GAroljyMHj6fK67i0UiTNvQ==", + "dev": true, + "license": "BSD-3-Clause", + "engines": { + "node": ">= 18" + }, + "funding": { + "url": "https://github.com/sponsors/cyyynthia" } }, "node_modules/markdownlint/node_modules/string-width": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.1.0.tgz", - "integrity": "sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==", + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-8.2.1.tgz", + "integrity": "sha512-IIaP0g3iy9Cyy18w3M9YcaDudujEAVHKt3a3QJg1+sr/oX96TbaGUubG0hJyCjCBThFH+tFpcIyoUHUn1ogaLA==", "dev": true, "license": "MIT", "dependencies": { - "get-east-asian-width": "^1.3.0", - "strip-ansi": "^7.1.0" + "get-east-asian-width": "^1.5.0", + "strip-ansi": "^7.1.2" }, "engines": { "node": ">=20" @@ -9541,9 +9737,9 @@ } }, "node_modules/mdurl": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.0.0.tgz", - "integrity": "sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdurl/-/mdurl-2.1.0.tgz", + "integrity": "sha512-1+HBaOx0zi/dQWht8rNv9MYf9qqpqL/kxI0hXImU6Y547zM6Sni8BQibt7ifgMcYtQg41ao3Ivd6cnSM86inpg==", "dev": true, "license": "MIT" }, @@ -9593,6 +9789,16 @@ "dev": true, "license": "MIT" }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">= 8" + } + }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -10129,6 +10335,33 @@ ], "license": "MIT" }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "license": "MIT", + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/micromatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, "node_modules/mime": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", @@ -10163,13 +10396,13 @@ } }, "node_modules/minimatch": { - "version": "10.2.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz", - "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==", + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "brace-expansion": "^5.0.5" + "brace-expansion": "^5.0.8" }, "engines": { "node": "18 || 20 || >=22" @@ -10268,9 +10501,9 @@ "license": "MIT" }, "node_modules/node-releases": { - "version": "2.0.46", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.46.tgz", - "integrity": "sha512-GYVXHE2KnrzAfsAjl4uP++evGFCrAU1jta4ubEjIG7YWt/64Gqv66a30yKwWczVjA6j3bM4nBwH7Pk1JmDHaxQ==", + "version": "2.0.53", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.53.tgz", + "integrity": "sha512-D9UOmYG3UH1V+ENW56t5QXBwJw1YEY18ruVeus89Rw+SyIgjPkCO84bRzO3uNIYosJbNwiabWVn48o3uJLjxFQ==", "dev": true, "license": "MIT", "engines": { @@ -10324,9 +10557,9 @@ } }, "node_modules/nwsapi": { - "version": "2.2.23", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.23.tgz", - "integrity": "sha512-7wfH4sLbt4M0gCDzGE6vzQBo0bfTKjU7Sfpqy/7gs1qBfYz2vEJH6vXcBKpO3+6Yu1telwd0t9HpyOoLEQQbIQ==", + "version": "2.2.24", + "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.24.tgz", + "integrity": "sha512-7YRhZ3jS45LwmSCT4b2sVFHt/WuovaktDU07QrtOBY2PXskss5a9jfmR9jptyumwXST+rFjrmppMY1KT/yn35A==", "dev": true, "license": "MIT" }, @@ -10486,13 +10719,14 @@ } }, "node_modules/own-keys": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.1.tgz", - "integrity": "sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==", + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/own-keys/-/own-keys-1.0.2.tgz", + "integrity": "sha512-19YVAg7T+WTrxggPukVq7DjTv6+PJ867TmhCvBsYwmbFCsZd344rq2Ld1p0wo8f8Qrrhgp82c6FJRqdXWtSEhg==", "dev": true, "license": "MIT", "dependencies": { - "get-intrinsic": "^1.2.6", + "call-bound": "^1.0.4", + "get-intrinsic": "^1.3.0", "object-keys": "^1.1.1", "safe-push-apply": "^1.0.0" }, @@ -10572,9 +10806,9 @@ "license": "BlueOak-1.0.0" }, "node_modules/package-json/node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -10718,9 +10952,9 @@ "license": "ISC" }, "node_modules/picomatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", - "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.5.tgz", + "integrity": "sha512-RvwwcruNjI1ncT5xRakeyS9Lf8lcItv34KD+aif+VH9kduAyfYBipGh12274xtenIPZ119/R9BdTBa8gAwSh0A==", "dev": true, "license": "MIT", "engines": { @@ -10810,35 +11044,35 @@ } }, "node_modules/playwright": { - "version": "1.60.0", - "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.60.0.tgz", - "integrity": "sha512-hheHdokM8cdqCb0lcE3s+zT4t4W+vvjpGxsZlDnikarzx8tSzMebh3UiFtgqwFwnTnjYQcsyMF8ei2mCO/tpeA==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright/-/playwright-1.62.1.tgz", + "integrity": "sha512-0M+L3LAD8/nm554LOla9Ayx0j0tmFZ0FBcoQ7F1VuVHpM/XpiC8RcDzBQB8W5+hA8L22THxELzeF+2WcUzvcLg==", "dev": true, "license": "Apache-2.0", "dependencies": { - "playwright-core": "1.60.0" + "playwright-core": "1.62.1" }, "bin": { "playwright": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" }, "optionalDependencies": { "fsevents": "2.3.2" } }, "node_modules/playwright-core": { - "version": "1.60.0", - "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.60.0.tgz", - "integrity": "sha512-9bW6zvX/m0lEbgTKJ6YppOKx8H3VOPBMOCFh2irXFOT4BbHgrx5hPjwJYLT40Lu+4qtD36qKc/Hn56StUW57IA==", + "version": "1.62.1", + "resolved": "https://registry.npmjs.org/playwright-core/-/playwright-core-1.62.1.tgz", + "integrity": "sha512-wPYSwEBJY9GHraISXqyqtx0na0LpO3XEX7jNDhntbex7tzUS7kLnZsOlFruFJB4Hi/rhDMjXGqHewDZ68nYZVw==", "dev": true, "license": "Apache-2.0", "bin": { "playwright-core": "cli.js" }, "engines": { - "node": ">=18" + "node": ">=20" } }, "node_modules/playwright/node_modules/fsevents": { @@ -10891,9 +11125,9 @@ } }, "node_modules/prettier": { - "version": "3.8.3", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.8.3.tgz", - "integrity": "sha512-7igPTM53cGHMW8xWuVTydi2KO233VFiTNyF5hLJqpilHfmn8C8gPf+PS7dUT64YcXFbiMGZxS9pCSxL/Dxm/Jw==", + "version": "3.9.6", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.9.6.tgz", + "integrity": "sha512-OpN0zzVdiaiAhxpuuj5efpIS4sY9j7bY6uR5mnj5yPzGkdkjNKSJeUThPb60Jw29QuAZgA4o+/iB49kFiaBX6g==", "dev": true, "license": "MIT", "bin": { @@ -11009,13 +11243,14 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.15.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", - "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "version": "6.15.3", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.3.tgz", + "integrity": "sha512-O9gl3zCl5h5blw1KGUzQKhA5oUXSl8rwUIM5o0S3nCXMliSvy5Dzx7/DJcI+SwgICv+IneSZwhBh1oSyEHA71A==", "dev": true, "license": "BSD-3-Clause", "dependencies": { - "side-channel": "^1.1.0" + "es-define-property": "^1.0.1", + "side-channel": "^1.1.1" }, "engines": { "node": ">=0.6" @@ -11024,6 +11259,27 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, "node_modules/quick-lru": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", @@ -11077,9 +11333,9 @@ }, "node_modules/react-is-19": { "name": "react-is", - "version": "19.2.7", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.7.tgz", - "integrity": "sha512-kZFnouyVv7eP/Phmrlo9FK+zcAdriZJvzxXHF1Sl1P377WSGe2G/JxVolhTrB/jeV47lKImhNUsijjHAAbcl/A==", + "version": "19.2.8", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-19.2.8.tgz", + "integrity": "sha512-s5un28nYxKJw5gvUHyW5PCC28CvBqLu9r3cWgzHT4Vo/5fqqkFcdRYsGcKf50WMPpjjFZS5d76fn3YCo2njKwQ==", "dev": true, "license": "MIT" }, @@ -11367,9 +11623,9 @@ "license": "MIT" }, "node_modules/regjsparser": { - "version": "0.13.1", - "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.1.tgz", - "integrity": "sha512-dLsljMd9sqwRkby8zhO1gSg3PnJIBFid8f4CQj/sXx+7cKx+E7u0PKhZ+U4wmhx7EfmtvnA318oVaIkAB1lRJw==", + "version": "0.13.2", + "resolved": "https://registry.npmjs.org/regjsparser/-/regjsparser-0.13.2.tgz", + "integrity": "sha512-NgRBy2Nx/bE+9F27nVHnqcN5HjyLmecqsqx2PJHu3/IEtADD4WuxuXIVExD5PoSDFVrl78dOonfcOe5O+5nbzQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -11472,10 +11728,21 @@ "dev": true, "license": "ISC" }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "license": "MIT", + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, "node_modules/rollup": { - "version": "4.61.0", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.61.0.tgz", - "integrity": "sha512-T9mWdbWfQtp0B5lv/HX+wrhYsmXRlcWnXXmJbXqKJhlRaoS6KMhq0gpyzW4UJfclcxrEdLnTgjT2NjruLONu0g==", + "version": "4.62.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.62.4.tgz", + "integrity": "sha512-RXOqwaPsBGjMNMa4sQjDjHieHEZDFoj/Rdr46l2MU5DfEs16wHJPC2RPTPHWhNl+M3aI472LLqFkFKut4SblOg==", "dev": true, "license": "MIT", "dependencies": { @@ -11489,31 +11756,32 @@ "npm": ">=8.0.0" }, "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.61.0", - "@rollup/rollup-android-arm64": "4.61.0", - "@rollup/rollup-darwin-arm64": "4.61.0", - "@rollup/rollup-darwin-x64": "4.61.0", - "@rollup/rollup-freebsd-arm64": "4.61.0", - "@rollup/rollup-freebsd-x64": "4.61.0", - "@rollup/rollup-linux-arm-gnueabihf": "4.61.0", - "@rollup/rollup-linux-arm-musleabihf": "4.61.0", - "@rollup/rollup-linux-arm64-gnu": "4.61.0", - "@rollup/rollup-linux-arm64-musl": "4.61.0", - "@rollup/rollup-linux-loong64-gnu": "4.61.0", - "@rollup/rollup-linux-loong64-musl": "4.61.0", - "@rollup/rollup-linux-ppc64-gnu": "4.61.0", - "@rollup/rollup-linux-ppc64-musl": "4.61.0", - "@rollup/rollup-linux-riscv64-gnu": "4.61.0", - "@rollup/rollup-linux-riscv64-musl": "4.61.0", - "@rollup/rollup-linux-s390x-gnu": "4.61.0", - "@rollup/rollup-linux-x64-gnu": "4.61.0", - "@rollup/rollup-linux-x64-musl": "4.61.0", - "@rollup/rollup-openbsd-x64": "4.61.0", - "@rollup/rollup-openharmony-arm64": "4.61.0", - "@rollup/rollup-win32-arm64-msvc": "4.61.0", - "@rollup/rollup-win32-ia32-msvc": "4.61.0", - "@rollup/rollup-win32-x64-gnu": "4.61.0", - "@rollup/rollup-win32-x64-msvc": "4.61.0", + "@napi-rs/lzma-linux-x64-gnu": "1.5.1", + "@rollup/rollup-android-arm-eabi": "4.62.4", + "@rollup/rollup-android-arm64": "4.62.4", + "@rollup/rollup-darwin-arm64": "4.62.4", + "@rollup/rollup-darwin-x64": "4.62.4", + "@rollup/rollup-freebsd-arm64": "4.62.4", + "@rollup/rollup-freebsd-x64": "4.62.4", + "@rollup/rollup-linux-arm-gnueabihf": "4.62.4", + "@rollup/rollup-linux-arm-musleabihf": "4.62.4", + "@rollup/rollup-linux-arm64-gnu": "4.62.4", + "@rollup/rollup-linux-arm64-musl": "4.62.4", + "@rollup/rollup-linux-loong64-gnu": "4.62.4", + "@rollup/rollup-linux-loong64-musl": "4.62.4", + "@rollup/rollup-linux-ppc64-gnu": "4.62.4", + "@rollup/rollup-linux-ppc64-musl": "4.62.4", + "@rollup/rollup-linux-riscv64-gnu": "4.62.4", + "@rollup/rollup-linux-riscv64-musl": "4.62.4", + "@rollup/rollup-linux-s390x-gnu": "4.62.4", + "@rollup/rollup-linux-x64-gnu": "4.62.4", + "@rollup/rollup-linux-x64-musl": "4.62.4", + "@rollup/rollup-openbsd-x64": "4.62.4", + "@rollup/rollup-openharmony-arm64": "4.62.4", + "@rollup/rollup-win32-arm64-msvc": "4.62.4", + "@rollup/rollup-win32-ia32-msvc": "4.62.4", + "@rollup/rollup-win32-x64-gnu": "4.62.4", + "@rollup/rollup-win32-x64-msvc": "4.62.4", "fsevents": "~2.3.2" } }, @@ -11534,20 +11802,28 @@ "node": ">=0.12.0" } }, - "node_modules/run-con": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/run-con/-/run-con-1.3.2.tgz", - "integrity": "sha512-CcfE+mYiTcKEzg0IqS08+efdnH0oJ3zV0wSUFBNrMHMuxCtXvBCLzCJHatwuXDcu/RlhjTziTo/a1ruQik6/Yg==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT", "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~4.1.0", - "minimist": "^1.2.8", - "strip-json-comments": "~3.1.1" - }, - "bin": { - "run-con": "cli.js" + "queue-microtask": "^1.2.2" } }, "node_modules/rxjs": { @@ -11670,9 +11946,9 @@ } }, "node_modules/serialize-javascript": { - "version": "7.0.5", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.0.5.tgz", - "integrity": "sha512-F4LcB0UqUl1zErq+1nYEEzSHJnIwb3AF2XWB94b+afhrekOUijwooAYqFyRbjYkm2PAKBabx6oYv/xDxNi8IBw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-7.1.0.tgz", + "integrity": "sha512-RNEqWOyhhUQYN9V1GfHwu9AR/g+NTciH6Z5u3/no6X3/w+04J2lVDL+svFQVXgXrEGBMG2puMVN3gq2SNGuTGw==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -11752,15 +12028,15 @@ } }, "node_modules/side-channel": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.1.tgz", + "integrity": "sha512-6x6dK6zJdpTzF4sQeNYxwtvBzf6Eg4GtlesS94HOvTudUeyK2WXAaIfmDgsyslYrRBeFIlsi54AYsFGUuhmvrQ==", "dev": true, "license": "MIT", "dependencies": { "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", + "object-inspect": "^1.13.4", + "side-channel-list": "^1.0.1", "side-channel-map": "^1.0.1", "side-channel-weakmap": "^1.0.2" }, @@ -11860,19 +12136,6 @@ "node": ">=20.0.0" } }, - "node_modules/smol-toml": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/smol-toml/-/smol-toml-1.6.1.tgz", - "integrity": "sha512-dWUG8F5sIIARXih1DTaQAX4SsiTXhInKf1buxdY9DIg4ZYPZK5nGM1VRIYmEbDbsHt7USo99xSLFu5Q1IqTmsg==", - "dev": true, - "license": "BSD-3-Clause", - "engines": { - "node": ">= 18" - }, - "funding": { - "url": "https://github.com/sponsors/cyyynthia" - } - }, "node_modules/source-map": { "version": "0.6.1", "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", @@ -12135,19 +12398,20 @@ } }, "node_modules/string.prototype.trim": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.10.tgz", - "integrity": "sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==", + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.11.tgz", + "integrity": "sha512-PwvK7BU+CMTJGYQCTZb5RWXIML92lftJLhQz1tBzgKiqGxJaMlBAa48POXaNAC2s4y8jr3EFqrkF9+44neS46w==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-data-property": "^1.1.4", "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-object-atoms": "^1.0.0", - "has-property-descriptors": "^1.0.2" + "es-abstract": "^1.24.2", + "es-object-atoms": "^1.1.2", + "has-property-descriptors": "^1.0.2", + "safe-regex-test": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -12157,16 +12421,16 @@ } }, "node_modules/string.prototype.trimend": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.9.tgz", - "integrity": "sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==", + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.10.tgz", + "integrity": "sha512-2+3aDAOmPTmuFwjDnmJG2ctEkQKVki7vOSqaxkv42Mowj1V6PnvuwFCRrR5lChUux1TBskPjfkeTOhqczDMxTw==", "dev": true, "license": "MIT", "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.2", + "call-bind": "^1.0.9", + "call-bound": "^1.0.4", "define-properties": "^1.2.1", - "es-object-atoms": "^1.0.0" + "es-object-atoms": "^1.1.2" }, "engines": { "node": ">= 0.4" @@ -12413,9 +12677,9 @@ } }, "node_modules/terser": { - "version": "5.48.0", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.48.0.tgz", - "integrity": "sha512-J/9An6vs9Us6wKRriSFXBWdRZapREHqFzdNUKk0pmu804EMR6dr6winwo7e5JDxN4xahxQsuysyYFwlwj4XN/Q==", + "version": "5.49.2", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.49.2.tgz", + "integrity": "sha512-rGbJiKeQ4WDe3EXlDAIaQcwftVfv2Q8o1awFNfvXolJYKkb1AuZY1RTOmqx4LJXZENbWZA7eIsYGHuEzHsi1nQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -12472,9 +12736,9 @@ "license": "MIT" }, "node_modules/test-exclude/node_modules/brace-expansion": { - "version": "1.1.15", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", - "integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", + "version": "1.1.18", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz", + "integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==", "dev": true, "license": "MIT", "dependencies": { @@ -12524,23 +12788,6 @@ "dev": true, "license": "MIT" }, - "node_modules/tinyglobby": { - "version": "0.2.17", - "resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.17.tgz", - "integrity": "sha512-wXR/dYpcqKmfWpEdZjiKJOwCNFndD0DMnrW/cYjVGttEkBfVgcLFHoNrlj47mjOVic9yyNu65alsgF4NQyTa2g==", - "dev": true, - "license": "MIT", - "dependencies": { - "fdir": "^6.5.0", - "picomatch": "^4.0.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/SuperchupuDev" - } - }, "node_modules/tldts": { "version": "6.1.86", "resolved": "https://registry.npmjs.org/tldts/-/tldts-6.1.86.tgz", @@ -12779,9 +13026,9 @@ } }, "node_modules/undici-types": { - "version": "7.24.6", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", - "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", + "version": "8.3.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz", + "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==", "dev": true, "license": "MIT" }, @@ -12829,6 +13076,19 @@ "node": ">=4" } }, + "node_modules/unicorn-magic": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/unicorn-magic/-/unicorn-magic-0.4.0.tgz", + "integrity": "sha512-wH590V9VNgYH9g3lH9wWjTrUoKsjLF6sGLjhR4sH1LWpLmCOH0Zf7PukhDA8BiS7KHe4oPNkcTHqYkj7SOGUOw==", + "dev": true, + "license": "MIT", + "engines": { + "node": ">=20" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/union": { "version": "0.5.0", "resolved": "https://registry.npmjs.org/union/-/union-0.5.0.tgz", @@ -12914,9 +13174,9 @@ } }, "node_modules/update-browserslist-db": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.2.3.tgz", - "integrity": "sha512-Js0m9cx+qOgDxo0eMiFGEueWztz+d4+M3rGlmKPT+T4IS/jP4ylw3Nwpu6cpTTP8R1MAC1kF4VbdLt3ARf209w==", + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.3.1.tgz", + "integrity": "sha512-ZZ61DsRsOnakl74HAmp3oSN4aXUmEWXf+i/yv0h7tIBfICc3VdrFErQKUUKPgu3AMsTUMbcongALEN4l6GSUrQ==", "dev": true, "funding": [ { @@ -12983,9 +13243,9 @@ } }, "node_modules/update-notifier/node_modules/semver": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.1.tgz", - "integrity": "sha512-rkVq3IXh+4FDGch+KwzX3aV9W3kO54GyEgpvBzSyctDA6Xtd7RJQV1xmXbeQp5v7+VzLOfVqiutSE6GICgPFvg==", + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", "dev": true, "license": "ISC", "bin": { @@ -13217,9 +13477,9 @@ } }, "node_modules/which-typed-array": { - "version": "1.1.21", - "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.21.tgz", - "integrity": "sha512-zbRA8cVm6io/d5W8uIe2hblzN76/Wm3v/yiythQvr+dpBWeqhPSWIDNj4zOyHi4zKbMK6DN34Xsr9jPHJERAEw==", + "version": "1.1.22", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.22.tgz", + "integrity": "sha512-fvO4ExWMFsqyhG3AiPAObMuY1lxaqgYcxbc49CNdWDDECOJNgQyvsOWVwbZc+qf3rzRtxojBK+CMEv0Ld5CYpw==", "dev": true, "license": "MIT", "dependencies": { @@ -13452,9 +13712,9 @@ "license": "MIT" }, "node_modules/workbox-build/node_modules/lru-cache": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", - "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -13479,46 +13739,13 @@ } }, "node_modules/workbox-build/node_modules/source-map": { - "version": "0.8.0-beta.0", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", - "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", - "deprecated": "The work that was done in this beta branch won't be included in future versions", + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0.tgz", + "integrity": "sha512-d8EqvL+k/SOXCreS/SUzg2ciyHqBBLcN/yuRjFsbvVhHTE2pgei7oAhmPM7kWFbkX6OSMQfUq4KbkF3au9lhYQ==", "dev": true, "license": "BSD-3-Clause", - "dependencies": { - "whatwg-url": "^7.0.0" - }, "engines": { - "node": ">= 8" - } - }, - "node_modules/workbox-build/node_modules/tr46": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", - "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", - "dev": true, - "license": "MIT", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/workbox-build/node_modules/webidl-conversions": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", - "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", - "dev": true, - "license": "BSD-2-Clause" - }, - "node_modules/workbox-build/node_modules/whatwg-url": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", - "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", - "dev": true, - "license": "MIT", - "dependencies": { - "lodash.sortby": "^4.7.0", - "tr46": "^1.0.1", - "webidl-conversions": "^4.0.2" + "node": ">= 12" } }, "node_modules/workbox-cacheable-response": { @@ -13611,9 +13838,9 @@ } }, "node_modules/workbox-cli/node_modules/lru-cache": { - "version": "11.5.1", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.1.tgz", - "integrity": "sha512-RPimw/7aMdv2oqRrxKwvZXcPfwBrn/JZ2xYcY9Hus/6LaS3VOAKVWKWgNLCFSiOm1ESXinjsDlidVU7JlnCN2A==", + "version": "11.5.2", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.5.2.tgz", + "integrity": "sha512-4pfM1Ff0x50o0tQwb5ucw/RzNyD0/YJME6IVcStalZuMWxdt3sR3huStTtxz4PUmvZfRguvDejasvQ2kifR11g==", "dev": true, "license": "BlueOak-1.0.0", "engines": { @@ -13881,9 +14108,9 @@ } }, "node_modules/ws": { - "version": "8.21.0", - "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.0.tgz", - "integrity": "sha512-Vsp28b7DRcimFQvrqu2Wek3z1iYxDCWqHYB8Qsnk/S4RfaCQzPGPyBNuVjJV3cd6UiKtUtp6sNM77gWvzcCH+g==", + "version": "8.21.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.21.3.tgz", + "integrity": "sha512-201TZ/kPWxoPr/OKWjquZR1SWKXcvxdH+e1xrx89b3YbmzLMFCLfnaG1HFIgWzJOEWZ7MvpK++odZufgYR50Rw==", "dev": true, "license": "MIT", "engines": { @@ -13960,9 +14187,9 @@ "license": "ISC" }, "node_modules/yargs": { - "version": "17.7.2", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", - "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "version": "17.7.3", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.3.tgz", + "integrity": "sha512-GZtjxm/J/4TSxuL3FNYjCmLktBTnIw/rVmKSIyKeYAZpmJB2ig9VauCC5xsa82GNKVKDAqpOn3KVzNt0zmrU0g==", "dev": true, "license": "MIT", "dependencies": { diff --git a/package.json b/package.json index 9a1dc9a..6be2d77 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,7 @@ "audit:fix": "npm i && npm audit fix", "eslint:check": "eslint ./", "eslint": "eslint --fix ./", - "lint:markdown": "markdownlint \"**/*.md\"", + "lint:markdown": "markdownlint-cli2 \"**/*.md\"", "minify": "esbuild core/scripts/runtime.js --minify --outfile=core/scripts/runtime.min.js && esbuild core/scripts/crispr_scripts.js --minify --outfile=core/scripts/crispr_scripts.min.js", "prettier:check": "prettier --check ./", "prettier": "prettier --write ./", @@ -56,18 +56,18 @@ "license": "GPL-3.0", "homepage": "https://scigrade.com/", "devDependencies": { - "@playwright/test": "^1.60.0", + "@playwright/test": "^1.62.1", "@types/jest": "^30.0.0", - "@types/node": "^25.9.0", + "@types/node": "^26.2.0", "axe-playwright": "^2.2.2", - "esbuild": "^0.28.0", - "eslint": "^10.4.0", - "globals": "^17.6.0", + "esbuild": "^0.28.2", + "eslint": "^10.8.1", + "globals": "^17.9.0", "http-server": "^14.1.1", "jest": "^30.4.2", "jest-environment-jsdom": "^30.4.1", - "markdownlint-cli": "^0.48.0", - "prettier": "^3.8.3", + "markdownlint-cli2": "^0.23.2", + "prettier": "^3.9.6", "workbox-cli": "^7.4.1" } } diff --git a/tests/playwright/submission.spec.js b/tests/playwright/submission.spec.js index 241f527..b526900 100644 --- a/tests/playwright/submission.spec.js +++ b/tests/playwright/submission.spec.js @@ -91,8 +91,8 @@ test.describe("SciGrade Submission Flow", () => { // Wait for feedback to render await expect(page.locator("body")).toContainText(/Mark:/, { timeout: 15000 }); - // Return to assignments (simulates selecting a new assignment) - await page.click("button:has-text('Back to Assignments')"); + // Return to the gene selection screen to start another attempt + await page.click("button:has-text('Back to Gene Selection')"); // Wait for the form to be reset and visible again await page.waitForSelector("#gene_dropdown_selection");