From 5f28658baf33bc62089898ca75e6f751b0c1d2e7 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:19:45 +0000 Subject: [PATCH 001/122] Create super-linter.yml Teste de linting nos ficheiros atuais do yake --- .github/workflows/super-linter.yml | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) create mode 100644 .github/workflows/super-linter.yml diff --git a/.github/workflows/super-linter.yml b/.github/workflows/super-linter.yml new file mode 100644 index 00000000..28d6b416 --- /dev/null +++ b/.github/workflows/super-linter.yml @@ -0,0 +1,29 @@ +# This workflow executes several linters on changed files based on languages used in your code base whenever +# you push a code or open a pull request. +# +# You can adjust the behavior by modifying this file. +# For more information, see: +# https://github.com/github/super-linter +name: Lint Code Base + +on: + push: + branches: [ "master" ] + pull_request: + branches: [ "master" ] +jobs: + run-lint: + runs-on: ubuntu-latest + steps: + - name: Checkout code + uses: actions/checkout@v4 + with: + # Full git history is needed to get a proper list of changed files within `super-linter` + fetch-depth: 0 + + - name: Lint Code Base + uses: github/super-linter@v4 + env: + VALIDATE_ALL_CODEBASE: false + DEFAULT_BRANCH: "master" + GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} From 0e13bc5f823fd0466d80ff483b08bfc0fd38d157 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 6 Nov 2024 13:59:05 +0000 Subject: [PATCH 002/122] Create pylint.yml testes gerais --- .github/workflows/pylint.yml | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) create mode 100644 .github/workflows/pylint.yml diff --git a/.github/workflows/pylint.yml b/.github/workflows/pylint.yml new file mode 100644 index 00000000..c73e032c --- /dev/null +++ b/.github/workflows/pylint.yml @@ -0,0 +1,23 @@ +name: Pylint + +on: [push] + +jobs: + build: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.8", "3.9", "3.10"] + steps: + - uses: actions/checkout@v4 + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v3 + with: + python-version: ${{ matrix.python-version }} + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pylint + - name: Analysing the code with pylint + run: | + pylint $(git ls-files '*.py') From ceef8963836db5c3bfc60a22777256ac0b5786f8 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 6 Nov 2024 17:42:43 +0000 Subject: [PATCH 003/122] =?UTF-8?q?atualiza=C3=A7=C3=A3o=20das=20imagens?= =?UTF-8?q?=20das=20dockers?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker/push_images.sh | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/docker/push_images.sh b/docker/push_images.sh index cbc967c1..e5c693e4 100755 --- a/docker/push_images.sh +++ b/docker/push_images.sh @@ -1,9 +1,8 @@ #!/usr/bin/env bash - DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" # get constants source "$DIR/constants.sh" docker push "$YAKE_IMAGE:$TAG" -docker push "$YAKE_SERVER_IMAGE:$TAG" +docker push "$YAKE_SERVER_IMAGE:$TAG" \ No newline at end of file From e35fb8279273cc5cd1dabda2099aba64961b8e6a Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Fri, 7 Feb 2025 18:58:00 +0000 Subject: [PATCH 004/122] yake.py 60% MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit refatorização inicial do programa principal --- originalfiles/yakeog.py | 88 ++++++++++ tests/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 194 bytes .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 0 -> 20177 bytes tests/yakenew.md | 59 +++++++ yake/__pycache__/__init__.cpython-310.pyc | Bin 0 -> 343 bytes .../datarepresentation.cpython-310.pyc | Bin 0 -> 14498 bytes yake/__pycache__/highlight.cpython-310.pyc | Bin 0 -> 4845 bytes yake/__pycache__/levenshtein.cpython-310.pyc | Bin 0 -> 1296 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 0 -> 4526 bytes yake/__pycache__/yake.cpython-312.pyc | Bin 0 -> 5857 bytes yake/__pycache__/yakenew.cpython-312.pyc | Bin 0 -> 6863 bytes yake/yake.py | 151 ++++++++++++------ 12 files changed, 248 insertions(+), 50 deletions(-) create mode 100644 originalfiles/yakeog.py create mode 100644 tests/__pycache__/__init__.cpython-310.pyc create mode 100644 tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc create mode 100644 tests/yakenew.md create mode 100644 yake/__pycache__/__init__.cpython-310.pyc create mode 100644 yake/__pycache__/datarepresentation.cpython-310.pyc create mode 100644 yake/__pycache__/highlight.cpython-310.pyc create mode 100644 yake/__pycache__/levenshtein.cpython-310.pyc create mode 100644 yake/__pycache__/yake.cpython-310.pyc create mode 100644 yake/__pycache__/yake.cpython-312.pyc create mode 100644 yake/__pycache__/yakenew.cpython-312.pyc diff --git a/originalfiles/yakeog.py b/originalfiles/yakeog.py new file mode 100644 index 00000000..6ec7f59b --- /dev/null +++ b/originalfiles/yakeog.py @@ -0,0 +1,88 @@ +# -*- coding: utf-8 -*- + +"""Main module.""" + +import string +import os +import jellyfish +from .Levenshtein import Levenshtein + +from .datarepresentation import DataCore + +class KeywordExtractor(object): + + def __init__(self, lan="en", n=3, dedupLim=0.9, dedupFunc='seqm', windowsSize=1, top=20, features=None, stopwords=None): + self.lan = lan + + dir_path = os.path.dirname(os.path.realpath(__file__)) + + local_path = os.path.join("StopwordsList", "stopwords_%s.txt" % lan[:2].lower()) + + if os.path.exists(os.path.join(dir_path,local_path)) == False: + local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") + + resource_path = os.path.join(dir_path,local_path) + + if stopwords is None: + try: + with open(resource_path, encoding='utf-8') as stop_fil: + self.stopword_set = set( stop_fil.read().lower().split("\n") ) + except: + print('Warning, read stopword list as ISO-8859-1') + with open(resource_path, encoding='ISO-8859-1') as stop_fil: + self.stopword_set = set( stop_fil.read().lower().split("\n") ) + else: + self.stopword_set = set(stopwords) + + self.n = n + self.top = top + self.dedupLim = dedupLim + self.features = features + self.windowsSize = windowsSize + if dedupFunc == 'jaro_winkler' or dedupFunc == 'jaro': + self.dedu_function = self.jaro + elif dedupFunc.lower() == 'sequencematcher' or dedupFunc.lower() == 'seqm': + self.dedu_function = self.seqm + else: + self.dedu_function = self.levs + + def jaro(self, cand1, cand2): + return jellyfish.jaro_winkler(cand1, cand2 ) + + def levs(self, cand1, cand2): + return 1.-jellyfish.levenshtein_distance(cand1, cand2 ) / max(len(cand1),len(cand2)) + + def seqm(self, cand1, cand2): + return Levenshtein.ratio(cand1, cand2) + + def extract_keywords(self, text): + try: + if not(len(text) > 0): + return [] + + text = text.replace('\n\t',' ') + dc = DataCore(text=text, stopword_set=self.stopword_set, windowsSize=self.windowsSize, n=self.n) + dc.build_single_terms_features(features=self.features) + dc.build_mult_terms_features(features=self.features) + resultSet = [] + todedup = sorted([cc for cc in dc.candidates.values() if cc.isValid()], key=lambda c: c.H) + + if self.dedupLim >= 1.: + return ([ (cand.unique_kw, cand.H) for cand in todedup])[:self.top] + + for cand in todedup: + toadd = True + for (h, candResult) in resultSet: + dist = self.dedu_function(cand.unique_kw, candResult.unique_kw) + if dist > self.dedupLim: + toadd = False + break + if toadd: + resultSet.append( (cand.H, cand) ) + if len(resultSet) == self.top: + break + + return [ (cand.kw,h) for (h,cand) in resultSet] + except Exception as e: + print(f"Warning! Exception: {e} generated by the following text: '{text}' ") + return [] diff --git a/tests/__pycache__/__init__.cpython-310.pyc b/tests/__pycache__/__init__.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..3d4bf687b1f2ef1563f67e924977ca983f980f94 GIT binary patch literal 194 zcmd1j<>g`k0>OOkbUPsZ7{oyaj6jY95EpX*i4=w?h7`tN22G|a>Cn8)5`~h~;u3{| z#N_P6^i+kk{33?(%jU%l45=L%o2~%Bz=$(x<+~i`XIxL_2c6+fi}g*>lIYq;;_lhPbtkw NwF9}T7-TL769CNBFz)~W literal 0 HcmV?d00001 diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8e117d4a5a48336c8fa032320476ccb9cb368d5a GIT binary patch literal 20177 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 V1*$sN*PI-y?ux!gkNbS){Q^cSVJ`px literal 0 HcmV?d00001 diff --git a/yake/__pycache__/datarepresentation.cpython-310.pyc b/yake/__pycache__/datarepresentation.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..b9517e10ee58a62b5c2241d3e838225f168fa231 GIT binary patch literal 14498 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 BO`8A! literal 0 HcmV?d00001 diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..cba61843cce02c920839160b259637e1874bc25f GIT binary patch literal 4845 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 literal 0 HcmV?d00001 diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..80788782e86853b361a232203bb05a6d121f4529 GIT binary patch literal 4526 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 literal 0 HcmV?d00001 diff --git a/yake/__pycache__/yakenew.cpython-312.pyc b/yake/__pycache__/yakenew.cpython-312.pyc new file mode 100644 index 0000000000000000000000000000000000000000..9332d3047b12a0a5ca20b226149888a5247df7f7 GIT binary patch literal 6863 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 hhz|Y*S^tEbe?pCaM!Wxv`aUxsGf*uX2 0): + if not text: return [] - text = text.replace('\n\t',' ') - dc = DataCore(text=text, stopword_set=self.stopword_set, windowsSize=self.windowsSize, n=self.n) + text = text.replace('\n\t', ' ') + dc = DataCore( + text=text, + stopword_set=self.stopword_set, + windowsSize=self.window_size, + n=self.n + ) + dc.build_single_terms_features(features=self.features) dc.build_mult_terms_features(features=self.features) - resultSet = [] - todedup = sorted([cc for cc in dc.candidates.values() if cc.isValid()], key=lambda c: c.H) - - if self.dedupLim >= 1.: - return ([ (cand.unique_kw, cand.H) for cand in todedup])[:self.top] - - for cand in todedup: - toadd = True - for (h, candResult) in resultSet: - dist = self.dedu_function(cand.unique_kw, candResult.unique_kw) - if dist > self.dedupLim: - toadd = False + + result_set = [] + candidates_sorted = sorted( + [cc for cc in dc.candidates.values() if cc.isValid()], + key=lambda c: c.H + ) + + if self.dedup_lim >= 1.0: + return [(cand.unique_kw, cand.H) for cand in candidates_sorted][:self.top] + + for cand in candidates_sorted: + should_add = True + for (h, cand_result) in result_set: + dist = self.dedup_function( + cand.unique_kw, + cand_result.unique_kw + ) + if dist > self.dedup_lim: + should_add = False break - if toadd: - resultSet.append( (cand.H, cand) ) - if len(resultSet) == self.top: + + if should_add: + result_set.append((cand.H, cand)) + if len(result_set) == self.top: break - return [ (cand.kw,h) for (h,cand) in resultSet] + return [(cand.kw, h) for (h, cand) in result_set] + except Exception as e: - print(f"Warning! Exception: {e} generated by the following text: '{text}' ") - return [] + print(f"Warning! Exception: {e} generated by text: '{text}'") + return [] \ No newline at end of file From f678242dd4bb94b41a515ea69de62a4db3e2d7f3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:17:06 +0000 Subject: [PATCH 005/122] Create resultados.yml criado workflow para verificar resultados --- .github/workflows/resultados.yml | 49 ++++++++++++++++++++++++++++++++ 1 file changed, 49 insertions(+) create mode 100644 .github/workflows/resultados.yml diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml new file mode 100644 index 00000000..479d1527 --- /dev/null +++ b/.github/workflows/resultados.yml @@ -0,0 +1,49 @@ +name: Run YAKE Tests + +on: + push: + branches: + - main + pull_request: + branches: + - main + +jobs: + test: + runs-on: ubuntu-latest + + steps: + - name: Checkout code + uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install -r requirements.txt + pip install pytest + + - name: Run tests + id: run-tests + run: | + pytest -v tests/test_yake.py | tee test_output.log + + - name: Verify test results + run: | + if grep -q '6 passed' test_output.log; then + echo "✅ Todos os testes passaram com sucesso!" + exit 0 + else + echo "❌ Alguns testes falharam! Verifique o log para mais detalhes." + exit 1 + + - name: Upload test results (em caso de falha) + if: failure() + uses: actions/upload-artifact@v4 + with: + name: test-logs + path: test_output.log From 729d101b50a512896cc600aecc23fb6782ff7c18 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:22:40 +0000 Subject: [PATCH 006/122] Update resultados.yml MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit atualização resultados.yml --- .github/workflows/resultados.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index 479d1527..d41d014f 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -40,6 +40,7 @@ jobs: else echo "❌ Alguns testes falharam! Verifique o log para mais detalhes." exit 1 + fi - name: Upload test results (em caso de falha) if: failure() From de7bd0f8b247fa30e8a725a183bc3e58a5335189 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 17 Feb 2025 15:30:48 +0000 Subject: [PATCH 007/122] Update resultados.yml atualizado resultados.yml --- .github/workflows/resultados.yml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index d41d014f..6fb24464 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -7,6 +7,8 @@ on: pull_request: branches: - main + workflow_dispatch: + jobs: test: From d179ba352a89524c8dd81b2dedb47ffbd6b9505b Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:30:26 +0000 Subject: [PATCH 008/122] =?UTF-8?q?pyint=20espa=C3=A7os=20+=20atualiza?= =?UTF-8?q?=C3=A7=C3=A3o=20de=20status?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 20177 -> 20177 bytes tests/yakenew.md | 23 +++++++++++++++--- yake/__pycache__/yake.cpython-310.pyc | Bin 4526 -> 4480 bytes yake/yake.py | 21 ++++++++-------- 4 files changed, 30 insertions(+), 14 deletions(-) diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc index 8e117d4a5a48336c8fa032320476ccb9cb368d5a..d711b7af22d04c628997c81732a5887da5bbf2f3 100644 GIT binary patch delta 22 ccmcaOm+|6UM(%uGUM>b85DeP9k^7h*08K~+V*mgE delta 22 ccmcaOm+|6UM(%uGUM>b8SnWP>Blj^s08o+!&;S4c diff --git a/tests/yakenew.md b/tests/yakenew.md index 1f0f05ed..d61e488a 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -51,9 +51,26 @@ Nomes mais descritivos para variáveis temporárias -Status 06/02/2025 +Status semanda 07/02/2025 - Exploração das mencionadas ferramentas puppet e cheff. -(Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) +(Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) (04 e 05 /02/2025) -- Criação de dataset para criar mais testes e poder aprofundar refatorização \ No newline at end of file +- finalização da configuração do pylint (Git Action), que me deu uma série de "code smells" em vários ficheiros. (07/02/2025) + +pylint: Action capaz de avaliar um commit, analizando todos os ficheiros .py, num sistema de pontos de 0 a 10 realçando melhoramentos. + +Planos próxima semana: + +- Criação de novos testes e possivel automatização dos mesmos para puder aprofundar refatorização. + (de 9 a 11 pretendo acabar esta etapa), visto que viajo dia 14 e 15 + +- Caso consigo tempo, começar a tratar de problemas identificados pelo pylint + +Status semana 14/02/2025 + +- Automatização dos testes de resultados + +Planos próxima semana + +- Avançar com refatorização e tratamento de problemas identificados pelo pylint. \ No newline at end of file diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 80788782e86853b361a232203bb05a6d121f4529..d608a47348c67c596c10a4a77b22ecb36e3fb2d8 100644 GIT binary patch delta 212 zcmZ3d+@Q>x&&$ij00gPax1@JXlK%NoVX$l%V9!j{6`!jQt=%oN48vETv|5*YNITESYS@ zSIF45c@19*BV*`dK>2P&&$ij00hcECZ>O$$SdpS2IQnLL@}f=rZD9&MlphErYI&b%^by?!kogA z!;;Gq#lpw{WV7b5=CVbxF*3L_q_Cy1w=krzH#0@CZ_K#B#Q0&dC9@re0u)T1$Su8j z67v;iM&8Zo?2L?zo|7{<-ZA=4j^ONN4BGsRvxSlI&g5)vHDn#$JTUDbdh#9a_lyOT z&+v3J7EX@f-OE@yS&Xlcv3+v~UkW2**y6YRjEr29-wEgla}*^5{ZS+dByO=4mlS2@ arB7BB^cLa+3a~J6FmW()F!BJQ5HkQNKRz7* diff --git a/yake/yake.py b/yake/yake.py index e7fcfcd7..6efb275a 100644 --- a/yake/yake.py +++ b/yake/yake.py @@ -1,7 +1,6 @@ """Module for keyword extraction from text documents.""" import os -import string import jellyfish from .Levenshtein import Levenshtein from .datarepresentation import DataCore @@ -9,7 +8,7 @@ class KeywordExtractor: """Class to extract and process keywords from text.""" - + def __init__( self, lan="en", @@ -22,7 +21,7 @@ def __init__( stopwords=None ): """Initialize the KeywordExtractor with the given parameters. - + Args: lan (str): Language code for stopwords n (int): N-gram size @@ -48,7 +47,7 @@ def __init__( if not os.path.exists(os.path.join(dir_path, local_path)): local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - + resource_path = os.path.join(dir_path, local_path) if stopwords is None: @@ -85,10 +84,10 @@ def seqm(self, cand1, cand2): def extract_keywords(self, text): """Extract keywords from the given text. - + Args: text (str): Input text to extract keywords from - + Returns: list: List of tuples containing (keyword, score) """ @@ -103,10 +102,10 @@ def extract_keywords(self, text): windowsSize=self.window_size, n=self.n ) - + dc.build_single_terms_features(features=self.features) dc.build_mult_terms_features(features=self.features) - + result_set = [] candidates_sorted = sorted( [cc for cc in dc.candidates.values() if cc.isValid()], @@ -126,14 +125,14 @@ def extract_keywords(self, text): if dist > self.dedup_lim: should_add = False break - + if should_add: result_set.append((cand.H, cand)) if len(result_set) == self.top: break return [(cand.kw, h) for (h, cand) in result_set] - + except Exception as e: print(f"Warning! Exception: {e} generated by text: '{text}'") - return [] \ No newline at end of file + return [] From 522d95ae897fb379e4bb8279f4610d7f2ce4dc32 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 15:42:19 +0000 Subject: [PATCH 009/122] link code testes --- tests/yakenew.md | 4 ++-- yake/__pycache__/yake.cpython-310.pyc | Bin 4480 -> 4480 bytes yake/yake.py | 22 ++++++++++++---------- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index d61e488a..c830263c 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -51,7 +51,7 @@ Nomes mais descritivos para variáveis temporárias -Status semanda 07/02/2025 +Status semanda 07/02/2025 //////Refactoring score (3.21) - Exploração das mencionadas ferramentas puppet e cheff. (Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) (04 e 05 /02/2025) @@ -67,7 +67,7 @@ Planos próxima semana: - Caso consigo tempo, começar a tratar de problemas identificados pelo pylint -Status semana 14/02/2025 +Status semana 14/02/2025 //////Refactoring score (3.21) - Automatização dos testes de resultados diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index d608a47348c67c596c10a4a77b22ecb36e3fb2d8..7909d0c6c775f76f5ad75f1e08b1c02744abe0d8 100644 GIT binary patch delta 19 ZcmZorZcygR=jG*M0D>heHgc5-0stx#1abfX delta 19 YcmZorZcygR=jG*M0D{!z8@b8^0VtFNG5`Po diff --git a/yake/yake.py b/yake/yake.py index 6efb275a..558d8520 100644 --- a/yake/yake.py +++ b/yake/yake.py @@ -14,11 +14,11 @@ def __init__( lan="en", n=3, dedup_lim=0.9, - dedup_func='seqm', + dedup_func="seqm", window_size=1, top=20, features=None, - stopwords=None + stopwords=None, ): """Initialize the KeywordExtractor with the given parameters. @@ -52,19 +52,19 @@ def __init__( if stopwords is None: try: - with open(resource_path, encoding='utf-8') as stop_file: + with open(resource_path, encoding="utf-8") as stop_file: self.stopword_set = set(stop_file.read().lower().split("\n")) except UnicodeDecodeError: - print('Warning: reading stopword list as ISO-8859-1') - with open(resource_path, encoding='ISO-8859-1') as stop_file: + print("Warning: reading stopword list as ISO-8859-1") + with open(resource_path, encoding="ISO-8859-1") as stop_file: self.stopword_set = set(stop_file.read().lower().split("\n")) else: self.stopword_set = set(stopwords) # Set deduplication function - if dedup_func in ('jaro_winkler', 'jaro'): + if dedup_func in ("jaro_winkler", "jaro"): self.dedup_function = self.jaro - elif dedup_func.lower() in ('sequencematcher', 'seqm'): + elif dedup_func.lower() in ("sequencematcher", "seqm"): self.dedup_function = self.seqm else: self.dedup_function = self.levs @@ -95,12 +95,12 @@ def extract_keywords(self, text): if not text: return [] - text = text.replace('\n\t', ' ') + text = text.replace("\n", " ") dc = DataCore( text=text, stopword_set=self.stopword_set, windowsSize=self.window_size, - n=self.n + n=self.n, ) dc.build_single_terms_features(features=self.features) @@ -113,7 +113,9 @@ def extract_keywords(self, text): ) if self.dedup_lim >= 1.0: - return [(cand.unique_kw, cand.H) for cand in candidates_sorted][:self.top] + return [(cand.unique_kw, cand.H) for cand in candidates_sorted][ + :self.top + ] for cand in candidates_sorted: should_add = True From bb9c340683b87b2a9e0a7c9621a2336420afe8a8 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:11:51 +0000 Subject: [PATCH 010/122] =?UTF-8?q?Levenshtein=20refatoriza=C3=A7=C3=A3o?= =?UTF-8?q?=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/yakenew.md | 6 +- yake/Levenshtein.py | 74 +++++++++++++------ yake/__pycache__/levenshtein.cpython-310.pyc | Bin 1296 -> 2210 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 4480 -> 4485 bytes 4 files changed, 57 insertions(+), 23 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index c830263c..a8fae428 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -73,4 +73,8 @@ Status semana 14/02/2025 //////Refactoring score (3.21) Planos próxima semana -- Avançar com refatorização e tratamento de problemas identificados pelo pylint. \ No newline at end of file +- Avançar com refatorização e tratamento de problemas identificados pelo pylint. + + + +////// Refactoring score (3.57) \ No newline at end of file diff --git a/yake/Levenshtein.py b/yake/Levenshtein.py index 899d3bff..36da95b9 100644 --- a/yake/Levenshtein.py +++ b/yake/Levenshtein.py @@ -1,39 +1,69 @@ +"""Module providing Levenshtein distance and ratio calculations.""" + import numpy as np -class Levenshtein(object): +class Levenshtein: + """Class for computing Levenshtein distance and similarity ratio.""" @staticmethod - def __ratio(distance, str_length): + def __ratio(distance: float, str_length: int) -> float: + """Calculate the similarity ratio based on distance and string length. + + Args: + distance (float): The Levenshtein distance between two strings. + str_length (int): The length of the longer string. + + Returns: + float: The similarity ratio. + """ return 1 - float(distance) / float(str_length) @staticmethod - def ratio(seq1, seq2): - str_distance = Levenshtein.distance(seq1,seq2) - str_length = max(len(seq1),len(seq2)) - return Levenshtein.__ratio(str_distance,str_length) + def ratio(seq1: str, seq2: str) -> float: + """Compute the similarity ratio between two strings. + + Args: + seq1 (str): The first string. + seq2 (str): The second string. + + Returns: + float: The similarity ratio. + """ + str_distance = Levenshtein.distance(seq1, seq2) + str_length = max(len(seq1), len(seq2)) + return Levenshtein.__ratio(str_distance, str_length) @staticmethod - def distance(seq1, seq2): + def distance(seq1: str, seq2: str) -> int: + """Calculate the Levenshtein distance between two strings. + + Args: + seq1 (str): The first string. + seq2 (str): The second string. + + Returns: + int: The Levenshtein distance. + """ size_x = len(seq1) + 1 size_y = len(seq2) + 1 - matrix = np.zeros ((size_x, size_y)) + matrix = np.zeros((size_x, size_y)) + for x in range(size_x): - matrix [x, 0] = x + matrix[x, 0] = x for y in range(size_y): - matrix [0, y] = y + matrix[0, y] = y for x in range(1, size_x): for y in range(1, size_y): - if seq1[x-1] == seq2[y-1]: - matrix [x,y] = min( - matrix[x-1, y] + 1, - matrix[x-1, y-1], - matrix[x, y-1] + 1 - ) + if seq1[x - 1] == seq2[y - 1]: + cost = 0 else: - matrix [x,y] = min( - matrix[x-1,y] + 1, - matrix[x-1,y-1] + 1, - matrix[x,y-1] + 1 - ) - return (matrix[size_x - 1, size_y - 1]) \ No newline at end of file + cost = 1 + + matrix[x, y] = min( + matrix[x - 1, y] + 1, # Deletion + matrix[x, y - 1] + 1, # Insertion + matrix[x - 1, y - 1] + cost # Substitution + ) + + return int(matrix[size_x - 1, size_y - 1]) diff --git a/yake/__pycache__/levenshtein.cpython-310.pyc b/yake/__pycache__/levenshtein.cpython-310.pyc index 8296e2d4cfc7d13fb2f325a8e4b17ad2cb5e4581..07aa15941d8ce772f0fe7586b39d1944558e74b1 100644 GIT binary patch literal 2210 zcmc&#Pmdcl6t_Kpl1*jRX0o=^ zZlcL4{UF^VMs$Y2kuYD}M9r_iR7E-_I}k?rsA?yY=ilaRnsPc3`ICet*@%9_ zpYTkcDxPGNB~nFM%xRP{Dk7ESG>+1Eni@5ey%%ry>0OPSQvuYF6H^r|au0>xNV!OnEj^r`i`>O+^+HxX-#7-GzP( zUG9NkSfK(fjl@fQ3w02LN22#J_^gt~sXFEK>Z$Z3lAO`}O1|NI6MPv$uhF2Z_N5rf zJC`FfxsI704AVSP-8=LV98*cl#^Z#mr<`Y0JFF=H0u`ucV83|xHdU@0zXR06fe~?_r z{-Y!s<^B74JRS2)$^L^xeKkGl&!Wftqr=|ER_Rv~(3{M3EetJ%&34kDx7VCsullU) z+Liq56Dtq55I5mmBK{!^6nc&eK>LC$h$70d=sO1eC0RINbqi8B7v`nm`ESRTkFTS^ zt8lpl=AV$85a|JcwE}yX2&pa+SyRP)!Sk@{DS4d3Yc9e6U%=~n!lct;rk!zgt{vcu zz8+SRyUK0X6;0zBfY5>A+M2r-YzuWMc8rH-0ec5j>4ONGZ5-hFwaUId>#+rs!Pl&| z5A#n@%4f;&J_4BRgFSW-+e9g$BmO(XK)Rb#a0Uxv9 zO(-Dy$jp@9)fuyTGh5X5(b6eBZ5*GS9V!zs>_Dz2HKEuEX7t!CbXeWV^J@@)`x=F#IO}v|mM9wKZ z2ps!Ld+mugs47+J%sPS4L)CS5GP^VL&3-$xS-oB*Fjliy{ac5SAGlZ^ut)Y_s^=gC z5p+Ph^neH^_!SXcvKjAkLBEiea|<4%(?hvDI4t&Hs%;Pwq6O(P2{D3Qks0kepmX6^ z-38qhp4B~30aV|te3sv2s!p|x(;fqi#Xud8_YtOQf)G@b0w6)s8GS}J2>`IpEd^VP z8uw(7MY_d|FJh&mv?onf={y|Bw69OUle_|czxIM8)j=;fR5Dk=*Es5D!G6{oB{J12 zIEeM9(Qz=2&gGk(_O?}m!TkZ-7h_Wi!#vV)=Hj{VkWDsOUn0?-+aHiYB6nn7!a|d4 zS^$w7Hf5S=Zi#UuHe*u`R;OSEzhOX;c3N(ZiE>P7coJP24y??2xRiFDwdEK`$>Cco zcT5d$U~wP0hah+jrSK8XwPYTFs?c0xYqUlut4qjj>+ygNVql1^%{wSSSs6h$2+*nDBwLWN@Jj8RXZL+yPvMc?)1uW{1M^PL8i9w+-y(E1(;eUKn>G^Gso7(!PXx$7!pQ*U__qE}n`f zGQ6DskByf^I*%_6h2QwE^4gYp3{mPeh#ITW29&p)4c4HWl+iW&HGVU1jXnh(w4crT zq`BMzix%p%D#j1PG)iO`nrav(nHUXFuZ7`o6bK}Z27gYcN diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 7909d0c6c775f76f5ad75f1e08b1c02744abe0d8..8eff0751218a34dada3545b78cd2db3c3a1bcf24 100644 GIT binary patch delta 60 zcmZorZdK;Z=jG*M00QS#Thg~}O0WDJ}9iC>+AhmnJk N?LP<0W?6w`MgX*+4k-Wt delta 55 zcmZowZcygU=jG*M0D>hewxoA$d+-$)Uz{J?LxsxxGkuhlUXMS}SDMk*a J%}N5vi~xa+4P^iT From 79315a726c14f1dd237b19acaff0c823f0258a07 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 16:55:00 +0000 Subject: [PATCH 011/122] clip.py - initial refactoring MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit atualizado status adicionados ficheiros originais para comparações --- originalfiles/Levenshteinog.py | 0 originalfiles/cliog.py | 53 +++++++ originalfiles/highlightog.py | 0 tests/yakenew.md | 2 +- yake/Levenshtein.py | 3 +- yake/__pycache__/highlight.cpython-310.pyc | Bin 4845 -> 4845 bytes yake/__pycache__/levenshtein.cpython-310.pyc | Bin 2210 -> 2210 bytes yake/cli.py | 137 ++++++++++++------- 8 files changed, 146 insertions(+), 49 deletions(-) create mode 100644 originalfiles/Levenshteinog.py create mode 100644 originalfiles/cliog.py create mode 100644 originalfiles/highlightog.py diff --git a/originalfiles/Levenshteinog.py b/originalfiles/Levenshteinog.py new file mode 100644 index 00000000..e69de29b diff --git a/originalfiles/cliog.py b/originalfiles/cliog.py new file mode 100644 index 00000000..03c083f8 --- /dev/null +++ b/originalfiles/cliog.py @@ -0,0 +1,53 @@ +# -*- coding: utf-8 -*- + +"""Console script for yake.""" + +import click +import yake +from tabulate import tabulate + +@click.command() +@click.option("-ti",'--text_input', help='Input text, SURROUNDED by single quotes(\')', required=False) +@click.option("-i",'--input_file', help='Input file', required=False) +@click.option("-l",'--language', default="en", help='Language', required=False) + +@click.option('-n','--ngram-size', default=3, help='Max size of the ngram.', required=False, type=int) +@click.option('-df','--dedup-func', help='Deduplication function.', default='seqm', type=click.Choice(['leve', 'jaro', 'seqm']), required=False) +@click.option('-dl','--dedup-lim', type=float, help='Deduplication limiar.', default=.9, required=False) + +@click.option('-ws','--window-size', type=int, help='Window size.', default=1, required=False) +@click.option('-t','--top', type=int, help='Number of keyphrases to extract', default=10, required=False) +@click.option('-v','--verbose', count=True, required=False) + +def keywords(text_input, input_file, language, ngram_size, verbose=False, dedup_func="seqm", dedup_lim=.9, window_size=1, top=10): + + def run_yake(text_content): + myake = yake.KeywordExtractor(lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, + windowsSize=window_size, top=top) + results = myake.extract_keywords(text_content) + + table = [] + for kw in results: + if (verbose): + table.append({"keyword":kw[0], "score":kw[1]}) + else: + table.append({"keyword":kw[0]}) + + print(tabulate(table, headers="keys")) + + if text_input and input_file: + print("You should specify either an input file or direct text input, but not both!") + exit(1) + elif not text_input and not input_file: + print("You should specify either an input file or direct text input") + exit(1) + else: + if text_input: + run_yake(text_input) + else: + with open(input_file) as fpath: + text_content = fpath.read() + run_yake(text_content) + +if __name__ == "__main__": + keywords() \ No newline at end of file diff --git a/originalfiles/highlightog.py b/originalfiles/highlightog.py new file mode 100644 index 00000000..e69de29b diff --git a/tests/yakenew.md b/tests/yakenew.md index a8fae428..a01ca068 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) \ No newline at end of file +////// Refactoring score (3.57) -> (3.62) 18/02/2025 \ No newline at end of file diff --git a/yake/Levenshtein.py b/yake/Levenshtein.py index 36da95b9..d15dae80 100644 --- a/yake/Levenshtein.py +++ b/yake/Levenshtein.py @@ -2,6 +2,7 @@ import numpy as np + class Levenshtein: """Class for computing Levenshtein distance and similarity ratio.""" @@ -63,7 +64,7 @@ def distance(seq1: str, seq2: str) -> int: matrix[x, y] = min( matrix[x - 1, y] + 1, # Deletion matrix[x, y - 1] + 1, # Insertion - matrix[x - 1, y - 1] + cost # Substitution + matrix[x - 1, y - 1] + cost, # Substitution ) return int(matrix[size_x - 1, size_y - 1]) diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index cba61843cce02c920839160b259637e1874bc25f..945e36fad17fde9b0472561ba72dc2aa4ed72493 100644 GIT binary patch delta 20 acmaE>`c{=YpO=@50SI1g+p>}Skq`hxX9mXr delta 20 acmaE>`c{=YpO=@50SE;1wKsA<5&{4^Aq5@) diff --git a/yake/__pycache__/levenshtein.cpython-310.pyc b/yake/__pycache__/levenshtein.cpython-310.pyc index 07aa15941d8ce772f0fe7586b39d1944558e74b1..7736a287afb159b46e48c770ab9c2b0d1ed86278 100644 GIT binary patch delta 50 zcmZ1^xJZyUpO=@50SJsYZAq`+$ZN{X$hp~>c>^P(*yb-R6PXxQC%3WhWMrG{z>&zv F3;;z749frj delta 50 zcmZ1^xJZyUpO=@50SKfwZb`4%$ZN{X$g$a(c>^P(=;kjh6PXxQCbzNgWMrM}z>&zv F1OPzD45|PC diff --git a/yake/cli.py b/yake/cli.py index 5e3abee0..d0cf5c2b 100644 --- a/yake/cli.py +++ b/yake/cli.py @@ -1,53 +1,96 @@ -# -*- coding: utf-8 -*- - -"""Console script for yake.""" - +import sys import click -import yake from tabulate import tabulate +import yake + @click.command() -@click.option("-ti",'--text_input', help='Input text, SURROUNDED by single quotes(\')', required=False) -@click.option("-i",'--input_file', help='Input file', required=False) -@click.option("-l",'--language', default="en", help='Language', required=False) - -@click.option('-n','--ngram-size', default=3, help='Max size of the ngram.', required=False, type=int) -@click.option('-df','--dedup-func', help='Deduplication function.', default='seqm', type=click.Choice(['leve', 'jaro', 'seqm']), required=False) -@click.option('-dl','--dedup-lim', type=float, help='Deduplication limiar.', default=.9, required=False) - -@click.option('-ws','--window-size', type=int, help='Window size.', default=1, required=False) -@click.option('-t','--top', type=int, help='Number of keyphrases to extract', default=10, required=False) -@click.option('-v','--verbose', count=True, required=False) - -def keywords(text_input, input_file, language, ngram_size, verbose=False, dedup_func="seqm", dedup_lim=.9, window_size=1, top=10): - - def run_yake(text_content): - myake = yake.KeywordExtractor(lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, - windowsSize=window_size, top=top) - results = myake.extract_keywords(text_content) - - table = [] - for kw in results: - if (verbose): - table.append({"keyword":kw[0], "score":kw[1]}) - else: - table.append({"keyword":kw[0]}) - - print(tabulate(table, headers="keys")) - - if text_input and input_file: - print("You should specify either an input file or direct text input, but not both!") - exit(1) - elif not text_input and not input_file: - print("You should specify either an input file or direct text input") - exit(1) - else: - if text_input: - run_yake(text_input) - else: - with open(input_file) as fpath: - text_content = fpath.read() - run_yake(text_content) +@click.option( + "-ti", "--text_input", + help="Input text, SURROUNDED by single quotes(\')", + required=False, +) +@click.option( + "-i", "--input_file", + help="Input file", + required=False, +) +@click.option( + "-l", "--language", + default="en", + help="Language", + required=False, +) + +@click.option( + "-n", "--ngram_size", + default=3, + help="Max size of the ngram", + type=int, +) +@click.option( + "-df", "--dedup_func", + help="Deduplication function", + default="seqm", + type=click.Choice(["leve", "jaro", "seqm"]), +) +@click.option( + "-dl", "--dedup_lim", + help="Deduplication limiar", + default=0.9, + type=float, +) + +@click.option( + "-ws", "--window_size", + help="Window size", + default=1, + type=int, +) +@click.option( + "-t", "--top", + help="Number of keyphrases to extract", + default=10, + type=int, +) +@click.option( + "-v", "--verbose", + count=True, + help="Verbose output", +) + + +def keywords( + text_input, input_file, language, ngram_size, dedup_func, dedup_lim, window_size, top, verbose +): + """Extract keywords using YAKE!""" + + def run_yake(text_content): + extractor = yake.KeywordExtractor( + lan=language, n=ngram_size, dedupLim=dedup_lim, + dedupFunc=dedup_func, windowsSize=window_size, top=top + ) + results = extractor.extract_keywords(text_content) + + table = [ + {"keyword": kw[0], "score": kw[1]} if verbose else {"keyword": kw[0]} + for kw in results + ] + print(tabulate(table, headers="keys")) + + if text_input and input_file: + print("Specify either an input file or direct text input, not both!") + sys.exit(1) + elif not text_input and not input_file: + print("Specify either an input file or direct text input") + sys.exit(1) + + if text_input: + run_yake(text_input) + else: + with open(input_file, encoding="utf-8") as f: + run_yake(f.read()) + if __name__ == "__main__": - keywords() + keywords() From ecddac42e9f58a2e2bd439ed9fb260b070ea5246 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:01:09 +0000 Subject: [PATCH 012/122] removidos ficheiros originais Removidos ficheiros originais, pois estavam a interferir com o score do teste pylint --- originalfiles/Levenshteinog.py | 0 originalfiles/cliog.py | 53 -------------------- originalfiles/highlightog.py | 0 originalfiles/yakeog.py | 88 ---------------------------------- 4 files changed, 141 deletions(-) delete mode 100644 originalfiles/Levenshteinog.py delete mode 100644 originalfiles/cliog.py delete mode 100644 originalfiles/highlightog.py delete mode 100644 originalfiles/yakeog.py diff --git a/originalfiles/Levenshteinog.py b/originalfiles/Levenshteinog.py deleted file mode 100644 index e69de29b..00000000 diff --git a/originalfiles/cliog.py b/originalfiles/cliog.py deleted file mode 100644 index 03c083f8..00000000 --- a/originalfiles/cliog.py +++ /dev/null @@ -1,53 +0,0 @@ -# -*- coding: utf-8 -*- - -"""Console script for yake.""" - -import click -import yake -from tabulate import tabulate - -@click.command() -@click.option("-ti",'--text_input', help='Input text, SURROUNDED by single quotes(\')', required=False) -@click.option("-i",'--input_file', help='Input file', required=False) -@click.option("-l",'--language', default="en", help='Language', required=False) - -@click.option('-n','--ngram-size', default=3, help='Max size of the ngram.', required=False, type=int) -@click.option('-df','--dedup-func', help='Deduplication function.', default='seqm', type=click.Choice(['leve', 'jaro', 'seqm']), required=False) -@click.option('-dl','--dedup-lim', type=float, help='Deduplication limiar.', default=.9, required=False) - -@click.option('-ws','--window-size', type=int, help='Window size.', default=1, required=False) -@click.option('-t','--top', type=int, help='Number of keyphrases to extract', default=10, required=False) -@click.option('-v','--verbose', count=True, required=False) - -def keywords(text_input, input_file, language, ngram_size, verbose=False, dedup_func="seqm", dedup_lim=.9, window_size=1, top=10): - - def run_yake(text_content): - myake = yake.KeywordExtractor(lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, - windowsSize=window_size, top=top) - results = myake.extract_keywords(text_content) - - table = [] - for kw in results: - if (verbose): - table.append({"keyword":kw[0], "score":kw[1]}) - else: - table.append({"keyword":kw[0]}) - - print(tabulate(table, headers="keys")) - - if text_input and input_file: - print("You should specify either an input file or direct text input, but not both!") - exit(1) - elif not text_input and not input_file: - print("You should specify either an input file or direct text input") - exit(1) - else: - if text_input: - run_yake(text_input) - else: - with open(input_file) as fpath: - text_content = fpath.read() - run_yake(text_content) - -if __name__ == "__main__": - keywords() \ No newline at end of file diff --git a/originalfiles/highlightog.py b/originalfiles/highlightog.py deleted file mode 100644 index e69de29b..00000000 diff --git a/originalfiles/yakeog.py b/originalfiles/yakeog.py deleted file mode 100644 index 6ec7f59b..00000000 --- a/originalfiles/yakeog.py +++ /dev/null @@ -1,88 +0,0 @@ -# -*- coding: utf-8 -*- - -"""Main module.""" - -import string -import os -import jellyfish -from .Levenshtein import Levenshtein - -from .datarepresentation import DataCore - -class KeywordExtractor(object): - - def __init__(self, lan="en", n=3, dedupLim=0.9, dedupFunc='seqm', windowsSize=1, top=20, features=None, stopwords=None): - self.lan = lan - - dir_path = os.path.dirname(os.path.realpath(__file__)) - - local_path = os.path.join("StopwordsList", "stopwords_%s.txt" % lan[:2].lower()) - - if os.path.exists(os.path.join(dir_path,local_path)) == False: - local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - - resource_path = os.path.join(dir_path,local_path) - - if stopwords is None: - try: - with open(resource_path, encoding='utf-8') as stop_fil: - self.stopword_set = set( stop_fil.read().lower().split("\n") ) - except: - print('Warning, read stopword list as ISO-8859-1') - with open(resource_path, encoding='ISO-8859-1') as stop_fil: - self.stopword_set = set( stop_fil.read().lower().split("\n") ) - else: - self.stopword_set = set(stopwords) - - self.n = n - self.top = top - self.dedupLim = dedupLim - self.features = features - self.windowsSize = windowsSize - if dedupFunc == 'jaro_winkler' or dedupFunc == 'jaro': - self.dedu_function = self.jaro - elif dedupFunc.lower() == 'sequencematcher' or dedupFunc.lower() == 'seqm': - self.dedu_function = self.seqm - else: - self.dedu_function = self.levs - - def jaro(self, cand1, cand2): - return jellyfish.jaro_winkler(cand1, cand2 ) - - def levs(self, cand1, cand2): - return 1.-jellyfish.levenshtein_distance(cand1, cand2 ) / max(len(cand1),len(cand2)) - - def seqm(self, cand1, cand2): - return Levenshtein.ratio(cand1, cand2) - - def extract_keywords(self, text): - try: - if not(len(text) > 0): - return [] - - text = text.replace('\n\t',' ') - dc = DataCore(text=text, stopword_set=self.stopword_set, windowsSize=self.windowsSize, n=self.n) - dc.build_single_terms_features(features=self.features) - dc.build_mult_terms_features(features=self.features) - resultSet = [] - todedup = sorted([cc for cc in dc.candidates.values() if cc.isValid()], key=lambda c: c.H) - - if self.dedupLim >= 1.: - return ([ (cand.unique_kw, cand.H) for cand in todedup])[:self.top] - - for cand in todedup: - toadd = True - for (h, candResult) in resultSet: - dist = self.dedu_function(cand.unique_kw, candResult.unique_kw) - if dist > self.dedupLim: - toadd = False - break - if toadd: - resultSet.append( (cand.H, cand) ) - if len(resultSet) == self.top: - break - - return [ (cand.kw,h) for (h,cand) in resultSet] - except Exception as e: - print(f"Warning! Exception: {e} generated by the following text: '{text}' ") - return [] From 3d7c317367ee55dcb137387fc3ec4285c2678a3c Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:24:03 +0000 Subject: [PATCH 013/122] cli.py atualizado --- tests/yakenew.md | 2 +- yake/cli.py | 20 ++++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index a01ca068..ba7ec8eb 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) -> (3.62) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.57) -> (3.67) 18/02/2025 \ No newline at end of file diff --git a/yake/cli.py b/yake/cli.py index d0cf5c2b..752f7ec0 100644 --- a/yake/cli.py +++ b/yake/cli.py @@ -1,13 +1,14 @@ +"""CLI para extração de palavras-chave utilizando YAKE!""" + import sys import click from tabulate import tabulate import yake - @click.command() @click.option( "-ti", "--text_input", - help="Input text, SURROUNDED by single quotes(\')", + help="Input text, SURROUNDED by single quotes(')", required=False, ) @click.option( @@ -21,7 +22,6 @@ help="Language", required=False, ) - @click.option( "-n", "--ngram_size", default=3, @@ -40,7 +40,6 @@ default=0.9, type=float, ) - @click.option( "-ws", "--window_size", help="Window size", @@ -58,8 +57,6 @@ count=True, help="Verbose output", ) - - def keywords( text_input, input_file, language, ngram_size, dedup_func, dedup_lim, window_size, top, verbose ): @@ -68,7 +65,7 @@ def keywords( def run_yake(text_content): extractor = yake.KeywordExtractor( lan=language, n=ngram_size, dedupLim=dedup_lim, - dedupFunc=dedup_func, windowsSize=window_size, top=top + dedupFunc=dedup_func, windowSize=window_size, top=top ) results = extractor.extract_keywords(text_content) @@ -88,9 +85,12 @@ def run_yake(text_content): if text_input: run_yake(text_input) else: - with open(input_file, encoding="utf-8") as f: - run_yake(f.read()) - + try: + with open(input_file, encoding="utf-8") as f: + run_yake(f.read()) + except FileNotFoundError: + print(f"File '{input_file}' not found.") + sys.exit(1) if __name__ == "__main__": keywords() From 956bb97b39c04f7cadd81a4ad9151967bc05dba5 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:33:24 +0000 Subject: [PATCH 014/122] trailing whitespaces --- demo/streamlit_app.py | 20 +++++++++--------- pke/yake.py | 1 - setup.py | 2 +- .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 20177 -> 20177 bytes tests/test_yake.py | 2 +- tests/yakenew.md | 2 +- yake/cli.py | 12 +++++------ 7 files changed, 19 insertions(+), 20 deletions(-) diff --git a/demo/streamlit_app.py b/demo/streamlit_app.py index 81648284..b6e9ba90 100644 --- a/demo/streamlit_app.py +++ b/demo/streamlit_app.py @@ -61,17 +61,17 @@ text_lower = text.lower() keywords_list = str(keywords[0][0]) -for m in re.finditer(keywords_list, text_lower): +for m in re.finditer(keywords_list, text_lower): d = dict(start = m.start(), end = m.end(), label = "") ents.append(d) - + for i in range(1, len(keywords)): kwords = str(keywords[i][0]) keywords_list += (', ' + kwords) - for m in re.finditer(kwords, text_lower): + for m in re.finditer(kwords, text_lower): d = dict(start = m.start(), end = m.end(), label = "") ents.append(d) - + #sort the result by ents, as ent rule suggests sort_ents = sorted(ents, key=lambda x: x["start"]) @@ -91,15 +91,15 @@ #tabular data (columns: keywords, score) df = pd.DataFrame(keywords, columns=("keywords","score")) st.table(df) - + else: #create and generate a word cloud image - wordcloud = WordCloud(width = 1000, height = 600, max_font_size = 80, - min_font_size=10, prefer_horizontal=1, + wordcloud = WordCloud(width = 1000, height = 600, max_font_size = 80, + min_font_size=10, prefer_horizontal=1, max_words=numOfKeywords, - background_color="white", - collocations=False, - regexp = r"\w[\w ']+").generate(keywords_list) + background_color="white", + collocations=False, + regexp = r"\w[\w ']+").generate(keywords_list), #display the generated image plt.imshow(wordcloud, interpolation='bilinear') diff --git a/pke/yake.py b/pke/yake.py index 05b23072..8ae38964 100644 --- a/pke/yake.py +++ b/pke/yake.py @@ -174,7 +174,6 @@ def _contexts_building(self, use_stems=False, window=2): if use_stems: words = sentence.stems - buffer = [] # loop through words in sentence for j, word in enumerate(words): diff --git a/setup.py b/setup.py index d1cf7fb7..50fc2f41 100644 --- a/setup.py +++ b/setup.py @@ -60,7 +60,7 @@ version='0.4.8', description="Keyword extraction Python package", long_description=readme, - long_description_content_type='text/markdown', + long_description_content_type='text/markdown', url='https://pypi.python.org/pypi/yake', project_urls={ 'Documentation': 'https://liaad.github.io/yake/', diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc index d711b7af22d04c628997c81732a5887da5bbf2f3..7cc70a9e4088c5a5b6a2a887cdf085bc0651c151 100644 GIT binary patch delta 24 ecmcaOm+|6UM&5j0UM>b8$UM9y{q;uPBYps6JP3gR delta 24 ecmcaOm+|6UM&5j0UM>b85DeO!{(d9x5kCN3sRz3N diff --git a/tests/test_yake.py b/tests/test_yake.py index 27f760d7..712567dd 100644 --- a/tests/test_yake.py +++ b/tests/test_yake.py @@ -20,7 +20,7 @@ def test_phraseless_example(): def test_null_and_blank_example(): pyake = yake.KeywordExtractor() - + result = pyake.extract_keywords("") assert len(result) == 0 diff --git a/tests/yakenew.md b/tests/yakenew.md index ba7ec8eb..267f0d35 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) -> (3.67) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.57) -> (3.71) 18/02/2025 \ No newline at end of file diff --git a/yake/cli.py b/yake/cli.py index 752f7ec0..8a726662 100644 --- a/yake/cli.py +++ b/yake/cli.py @@ -30,14 +30,14 @@ ) @click.option( "-df", "--dedup_func", - help="Deduplication function", - default="seqm", + help="Deduplication function", + default="seqm", type=click.Choice(["leve", "jaro", "seqm"]), ) @click.option( - "-dl", "--dedup_lim", - help="Deduplication limiar", - default=0.9, + "-dl", "--dedup_lim", + help="Deduplication limiar", + default=0.9, type=float, ) @click.option( @@ -64,7 +64,7 @@ def keywords( def run_yake(text_content): extractor = yake.KeywordExtractor( - lan=language, n=ngram_size, dedupLim=dedup_lim, + lan=language, n=ngram_size, dedupLim=dedup_lim, dedupFunc=dedup_func, windowSize=window_size, top=top ) results = extractor.extract_keywords(text_content) From cf3ef992b63277ccfb8b28fda8a6ba21b59b5e18 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 18 Feb 2025 17:57:37 +0000 Subject: [PATCH 015/122] =?UTF-8?q?highlight=20refatoriza=C3=A7=C3=A3o=20i?= =?UTF-8?q?nicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests/yakenew.md | 2 +- yake/__pycache__/highlight.cpython-310.pyc | Bin 4845 -> 4867 bytes yake/highlight.py | 25 ++++++++++++--------- 3 files changed, 16 insertions(+), 11 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index 267f0d35..e152f647 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.57) -> (3.71) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.21) -> (3.85) 18/02/2025 \ No newline at end of file diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index 945e36fad17fde9b0472561ba72dc2aa4ed72493..1876e6a2dad512b4072b0fb62ff508b9de2120c8 100644 GIT binary patch delta 353 zcmaE>+N`FX&&$ij00gH`Zb|o(VPJR+;vfTNAjbiSiFtj?6n0aGz~3ezD*zRBUt7HS1R zqf;1bnM)XIn3@?=n6g=l%xaiwSxOjdm{OP|8A_O%nTjMPZ)cX5)~sPzz*@st!?KX6 zmbr#Gn4yLtizS5>q+{|&=6j5)lP|EiadBl9XXX``B<3YgmSSxXkODbf0!Xm1@-VS5 z@@-zlYRAZExcMa;6C z2)HvcPMdr}@Sv6e&=d{^7G|#h96}tT9K0MZJYq#mKtWBGA~hgY6bd53fW+jTLPktN FOaMy_Q40V7 delta 335 zcmZoxd#kFQ&&$ij00ghLZAn*c@5JcM$XCk%oZ9&Ktoa( zYne+JYM7cCQ<$<@ip*=6YFSDcYnW1)BpI3+OPI2miXZf*d0OBv@E^m{=GEHXmcPV`S9X%*xKh$f&iMgCmQX+Y%^U z#0Mm*%qH`*i%)jo5ua?&&M|p2cP69XW?7z). It defaults to - :highlight_post – Specifies the text that should appear after a highlighted term. (e.g. ). It defaults to + :max_ngram_size - Specifies the maximum ngram size in the keywords. + + :highlight_pre – Specifies the text that should appear before a highlighted term.(e.g. ). + It defaults to + + :highlight_post – Specifies the text that should appear after a highlighted term. (e.g. ). + It defaults to """ self.highlight_pre = highlight_pre @@ -25,10 +30,10 @@ def highlight(self, text, keywords): n_text = '' # extract only the kw - if(len(keywords) > 0): + if len(keywords) > 0: kw_list = keywords - if(type(keywords[0]) == tuple): + if isinstance(keywords[0], tuple): kw_list = [x[0] for x in keywords] text = text.strip() @@ -44,7 +49,7 @@ def format_one_gram_text(self, text, relevant_words_array): relevant_words_array = [kw.lower() for kw in relevant_words_array] try: for tk in range(len(text_tokens)): - kw = re.sub('[!",:.;?()]$|^[!",:.;?()]|\W["!,:.;?()]', '', text_tokens[tk]) + kw = re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', text_tokens[tk]) if kw.lower() in relevant_words_array: text_tokens[tk] = text_tokens[tk].replace(kw, self.highlight_pre + kw + self.highlight_post) except: @@ -126,7 +131,7 @@ def find_more_relevant(self, y, text_tokens, n_gram, relevant_words_array, kw_l for i in range(n_gram): temporary_list.append(text_tokens[y:y + i + 1]) - k = re.sub('''[!",:.;?()]$|^[!",':.;?()]|\W["!,:.;?()]''', '', ' '.join(temporary_list[i])) + k = re.sub('''[!",:.;?()]$|^[!",':.;?()]|\\W["!,:.;?()]''', '', ' '.join(temporary_list[i])) if k.lower() in relevant_words_array: temporary_list_two.append(k) @@ -145,6 +150,6 @@ def find_more_relevant(self, y, text_tokens, n_gram, relevant_words_array, kw_l def replace_token(self, text_tokens, y, n_gram_word_list): txt = ' '.join(text_tokens[y:y + len(n_gram_word_list[0].split(' '))]) - new_expression = txt.replace(re.sub('[!",:.;?()]$|^[!",:.;?()]|\W["!,:.;?()]', '', txt), self.highlight_pre + n_gram_word_list[0] + self.highlight_post) + new_expression = txt.replace(re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', txt), self.highlight_pre + n_gram_word_list[0] + self.highlight_post) y += len(n_gram_word_list[0].split(' ')) return y, new_expression \ No newline at end of file From 2aadc643df6afe6acc58783b776f7670d9c01c8e Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:20:14 +0000 Subject: [PATCH 016/122] highlight.py lines --- tests/yakenew.md | 2 +- yake/__pycache__/highlight.cpython-310.pyc | Bin 4867 -> 4929 bytes yake/highlight.py | 142 +++++++++++---------- 3 files changed, 77 insertions(+), 67 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index e152f647..22d8cfc8 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,4 @@ Planos próxima semana -////// Refactoring score (3.21) -> (3.85) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.21) -> (3.94) 18/02/2025 \ No newline at end of file diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index 1876e6a2dad512b4072b0fb62ff508b9de2120c8..cf0ad6a2597f9f2ca3f38954006ba5ac1d3105fb 100644 GIT binary patch delta 1713 zcmZux-H#Jh6rXeFb~>HTPTOI(%Ps=5u?JG_2=N8;Kt?IcM%Y_ntfF z{(k42s}uJptYBckQ1E&9_BTt{w|s2@z)6vXqfiuQ;I#M_Cd306wVfm0V)>m~6gpAh z9IQ5Gi{dL7632*cpIY%2DvK2lmzF&z@-9cBNjBO4aCkEIxKF--0THNQ!Z9&LU&CK; zT7j)%js7w=f-!^}QBh(71q)vt48XB!Jj$X){F<1uG~A%0yeM~nEC#gk%ydK|m8)0b zDjZSHZ5M~Nt*iUF%IS#GR(OId7m~N}i=tf6Z!34y4w0(|m5ak?6hB3kDE00fDDs_G zd}t^xX&YSaz$vAWY)-xuuzFcu8}H>T2FwY3Z}$=_*PZ3c(sB(Ys`yLAE*KBNSpbYn zQN-ukS=cEO$#QON+w}h8fkRV;b4Lp?LjN#z3S`|N&2f=Qj*H{^fHi~;DHK(D zeJ~%Eu)px)l@sqw6;Gv9vIWRkubBl<3EJ?|3eqsBubefag&(aF)@;pu70pquAg_yv!}&o^C-L_T=T@9g4{D9my?SX-!0c_Od?+x zVlrV_UMhJ`SMy6Uci1lRoB6|Ps#Xr8QYG^0-Sk3GKVR`Zw^VI(wWz*=-`-#MNar{m zB&qvQ!Vgi&bf5$a1x3ClCWA)vU}ND(y9rs;SuoZKH9=dqsD^83jmwIz=T&2l5S(D0 z5nW~!A&)fNq{rJdV#_?cqJea?V2~L7k%je1u2|?}erL=zxAg%_i;^{9r7^O<^X`^t zTIE%)vsZYc4Uxw6Yswy-%dp1|$<_?PRA+F!hl7d%f@k1 zNcTvZmCn1QdQPgHVkZ0g{+Rd23`q2^p@a@9N+rsph&>i17Nmi&NaXW4vsLk9_GwGH zOE}_oRTFA%ay3%h)Ky)|X-92gHe*K19;IP_Qe7;rxKClnl6|VBaS}n#-X<<|uv&+e zJ~WBuo|E26t-K%`Z&3C8(5d*nHr1#^%a7ZW=Q@`>7GkqOoCM3|S7RWu7*`BHoVaXK zPPa=XGnY|Rg=7zz7?c>E7tq>Oqsvj(s5VLqHLr{r%jE6;-MXGd+Z~k9L^UpR6*eL+ vqqMpCE%AHqZc#!L+NgAePy)uEdQP`c-Zb-!pt(SMah=66n-@RZGobzjGHrSw delta 1623 zcmah}O>7%Q6rMLbJG)+Q){f)E`6+arv~ISFlK!Zrg%D5^DXJnOp+eKrhG?sGej3L~ z$6H!OV>PItR{T~SsW&8B9HEp-2&7(UPyAiDAw}ZEtrx_N0};GgCpo}@wdU>2dvD+K z_ue<}N$Fag9R zJ~OkKgE5T_Y21XHFhORE>PK_$%O|8ESr2ItX-ab0l4gP6+b)nM)s|6mr7%OP42b@n zClPI=q|t;rm;4L~tZ8+Dm*KE_!o&9d;?VQMFT6Au%nIG8z)?r7V-~x-x>OA;wQe1E zHtlNp+FV?|9;+{{{J@C*e;QH_JfM(;93t_7Zm=!RC^*1C{caug^5~MnWoZAe)gk)? zyr!1y{V=XRwvQFf1yWDrvScbU5ehU(-Hmx<##Fipma5GW#y=A&9SCw%;ai5wvuyPu(Wy+unra%_FA=>wtA?$11@x z6HjBOk;baIGO;yj?P+Vb>N%O)&T>rV)D>p{`qV?Gi`{`M zed>WT)KTw{9a!h|wCF?dVh@Uh5GA_Q8;!+{gs|n6Yi@=2DP!Ijn@29H3};gp=%rD1=p4?Ep(JkUY%PI;fgq@zH`65 z!Q+*+x#eqONZXSHNAyl-5uGSTan&j)bU&HqXCk|SLl@oAxsapJLLRxxlYVDu7j$8- zDICEw2RqSn^vC{haMb88^M(W6t*u90q=;wO;C}C%WOTiM8+}?;yf)9p{JUiNLf!Jh z8!?ymEiw<08S!`Q$oi1h)9anmY=BHhwr)2N$#+f-tC?tK^p)WA^h`p1P5zy8keU`5 zOtU_Cq1eB}`F-+DeLApx1?0t<3)>gMz#E}vGE?xr`ZO~)oD_dAe!j_Ts{$vH*oTL} zZPh+$>OoY97qtk~q3kQ;r}Xw;1wVnh4O}%J1;eZ2LNDzG7smnJ$Ww}=ArCg=TNFnG z*64nwU;UbG^K^%GeUjm@sQ%0zn3Swx#H?XPM#Lm*8c1a>jR-G7G7Ky|4C$aADlC6%VGQD9E1PudHW1YH*6C#b}L-f5T#~1N*%pG{{cQJMnM1o diff --git a/yake/highlight.py b/yake/highlight.py index 8dada811..14f339a5 100644 --- a/yake/highlight.py +++ b/yake/highlight.py @@ -3,74 +3,73 @@ DEFAULT_HIGHLIGHT_PRE = "" DEFAULT_HIGHLIGHT_POST = "" -class TextHighlighter(): - def __init__(self, max_ngram_size, - highlight_pre = DEFAULT_HIGHLIGHT_PRE, highlight_post = DEFAULT_HIGHLIGHT_POST): +class TextHighlighter: + def __init__( + self, + max_ngram_size, + highlight_pre=DEFAULT_HIGHLIGHT_PRE, + highlight_post=DEFAULT_HIGHLIGHT_POST, + ): """ - TextHighlighter constructor. Define highlight text snippets + TextHighlighter constructor. Define highlight text snippets. :max_ngram_size - Specifies the maximum ngram size in the keywords. - - :highlight_pre – Specifies the text that should appear before a highlighted term.(e.g. ). - It defaults to - - :highlight_post – Specifies the text that should appear after a highlighted term. (e.g. ). - It defaults to + :highlight_pre – Specifies the text before a highlighted term. Defaults to . + :highlight_post – Specifies the text after a highlighted term. Defaults to . """ - self.highlight_pre = highlight_pre self.highlight_post = highlight_post self.max_ngram_size = max_ngram_size def highlight(self, text, keywords): - """ - Returns the highlighted text snippets of matching text in the original data - """ - - n_text = '' - # extract only the kw + """Returns the highlighted text snippets of matching text in the original data.""" + n_text = "" if len(keywords) > 0: kw_list = keywords - if isinstance(keywords[0], tuple): kw_list = [x[0] for x in keywords] - text = text.strip() if self.max_ngram_size == 1: n_text = self.format_one_gram_text(text, kw_list) elif self.max_ngram_size > 1: n_text = self.format_n_gram_text(text, kw_list, self.max_ngram_size) - return n_text def format_one_gram_text(self, text, relevant_words_array): - text_tokens = text.replace('\n',' ').split(' ') + """Formats text for one-gram highlighting.""" + text_tokens = text.replace("\n", " ").split(" ") relevant_words_array = [kw.lower() for kw in relevant_words_array] try: for tk in range(len(text_tokens)): - kw = re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', text_tokens[tk]) + kw = re.sub( + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', text_tokens[tk] + ) if kw.lower() in relevant_words_array: - text_tokens[tk] = text_tokens[tk].replace(kw, self.highlight_pre + kw + self.highlight_post) - except: + text_tokens[tk] = text_tokens[tk].replace( + kw, f"{self.highlight_pre}{kw}{self.highlight_post}" + ) + except Exception: pass - new_text = ' '.join(text_tokens) - return new_text + return " ".join(text_tokens) def format_n_gram_text(self, text, relevant_words_array, n_gram): - text_tokens = text.replace('\n',' ').split(' ') + """Formats text for n-gram highlighting.""" + text_tokens = text.replace("\n", " ").split(" ") relevant_words_array = [kw.lower() for kw in relevant_words_array] y = 0 final_splited_text = [] - while y < len(text_tokens): + while y < len(text_tokens): splited_n_gram_kw_list = [] n_gram_kw_list = [] - n_gram_word_list, splited_n_gram_kw_list = self.find_more_relevant(y, text_tokens, n_gram, relevant_words_array, n_gram_kw_list, splited_n_gram_kw_list) - if n_gram_word_list: + n_gram_word_list, splited_n_gram_kw_list = self.find_more_relevant( + y, text_tokens, n_gram, relevant_words_array, n_gram_kw_list, splited_n_gram_kw_list + ) - if len(n_gram_word_list[0].split(' ')) == 1: + if n_gram_word_list: + if len(n_gram_word_list[0].split(" ")) == 1: y, new_expression = self.replace_token(text_tokens, y, n_gram_word_list) final_splited_text.append(new_expression) else: @@ -78,22 +77,35 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): splited_n_gram_kw_list = [] splited_one = n_gram_word_list[0].split() - for len_kw in range(0, len(splited_one)): - kw_list, splited_n_gram_kw_list = self.find_more_relevant(y+len_kw, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_kw_list) - min_score_word = min(kw_list, key=lambda x: relevant_words_array.index(x.lower())) + for len_kw in range(len(splited_one)): + kw_list, splited_n_gram_kw_list = self.find_more_relevant( + y + len_kw, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_kw_list + ) + + min_score_word = min( + kw_list, key=lambda x: relevant_words_array.index(x.lower()) + ) if kw_list.index(min_score_word) == 0: term_list = [min_score_word] y, new_expression = self.replace_token(text_tokens, y, term_list) final_splited_text.append(new_expression) - elif kw_list.index(min_score_word) >= 1: - index_of_more_relevant = splited_n_gram_kw_list[0].index(min_score_word.split()[0]) - temporal_kw = ' '.join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + index_of_more_relevant = splited_n_gram_kw_list[0].index( + min_score_word.split()[0] + ) + temporal_kw = " ".join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + if temporal_kw in relevant_words_array: try: - if relevant_words_array.index(temporal_kw) > relevant_words_array.index(final_splited_text[-1] +' '+temporal_kw) and not re.findall(self.highlight_pre, final_splited_text[-1]): - term_list = [final_splited_text[-1] +' '+temporal_kw] + last_item = final_splited_text[-1] + combined_kw = f"{last_item} {temporal_kw}" + if ( + relevant_words_array.index(temporal_kw) + > relevant_words_array.index(combined_kw) + and not re.findall(self.highlight_pre, last_item) + ): + term_list = [combined_kw] del final_splited_text[-1] y -= 1 y, new_expression = self.replace_token(text_tokens, y, term_list) @@ -106,50 +118,48 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): term_list = [temporal_kw] y, new_expression = self.replace_token(text_tokens, y, term_list) final_splited_text.append(new_expression) - else: for tmp_kw in splited_n_gram_kw_list[0][:index_of_more_relevant]: if tmp_kw in relevant_words_array: - term_list = [tmp_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) - final_splited_text.append(new_expression) + term_list = [tmp_kw] + y, new_expression = self.replace_token(text_tokens, y, term_list) + final_splited_text.append(new_expression) else: final_splited_text.append(text_tokens[y]) y += 1 - else: final_splited_text.append(text_tokens[y]) y += 1 - new_text = ' '.join(final_splited_text) - - return new_text - + return " ".join(final_splited_text) - def find_more_relevant(self, y, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_word_list): + def find_more_relevant( + self, y, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_word_list + ): + """Finds the most relevant n-gram words.""" temporary_list = [] temporary_list_two = [] for i in range(n_gram): - - temporary_list.append(text_tokens[y:y + i + 1]) - k = re.sub('''[!",:.;?()]$|^[!",':.;?()]|\\W["!,:.;?()]''', '', ' '.join(temporary_list[i])) - + temporary_list.append(text_tokens[y : y + i + 1]) + k = re.sub( + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', " ".join(temporary_list[i]) + ) if k.lower() in relevant_words_array: temporary_list_two.append(k) - n_gram_word_list = sorted(temporary_list_two, key=lambda x: relevant_words_array.index(x.lower())) - - try: - kw_list.append(n_gram_word_list[0]) - splited_n_gram_word_list.append(n_gram_word_list[0].split()) - except: - pass + if temporary_list_two: + kw_list.append( + sorted(temporary_list_two, key=lambda x: relevant_words_array.index(x.lower()))[0] + ) + splited_n_gram_word_list.append(kw_list[0].split()) return kw_list, splited_n_gram_word_list - def replace_token(self, text_tokens, y, n_gram_word_list): - txt = ' '.join(text_tokens[y:y + len(n_gram_word_list[0].split(' '))]) - - new_expression = txt.replace(re.sub('[!",:.;?()]$|^[!",:.;?()]|\\W["!,:.;?()]', '', txt), self.highlight_pre + n_gram_word_list[0] + self.highlight_post) - y += len(n_gram_word_list[0].split(' ')) - return y, new_expression \ No newline at end of file + """Replaces tokens in text with highlighted versions.""" + txt = " ".join(text_tokens[y : y + len(n_gram_word_list[0].split(" "))]) + kw_cleaned = re.sub(r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', "", txt) + new_expression = txt.replace( + kw_cleaned, f"{self.highlight_pre}{n_gram_word_list[0]}{self.highlight_post}" + ) + + return y + len(n_gram_word_list[0].split(" ")), new_expression From 56b48b2d7fc8fab3262bddb0d2f7fea9060eecf0 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 20 Feb 2025 16:49:08 +0000 Subject: [PATCH 017/122] highlight.py docstrings --- yake/__pycache__/highlight.cpython-310.pyc | Bin 4929 -> 5348 bytes yake/highlight.py | 62 +++++++++++++++------ 2 files changed, 45 insertions(+), 17 deletions(-) diff --git a/yake/__pycache__/highlight.cpython-310.pyc b/yake/__pycache__/highlight.cpython-310.pyc index cf0ad6a2597f9f2ca3f38954006ba5ac1d3105fb..5c3e7bb05f19e6dc4da2244f8343f531594f49b8 100644 GIT binary patch delta 1455 zcmZ8gL2TSa6!qA%_N>?IY?4j3p+KxONwrCuZki^bZ3Prap^B(PTNPEbO5J#}>%{SH z$8I-Sd7DT*fH*+V91$Y90WCsNg?fY{Ata6nIQYVaJK~B^mOtL4LF{Ut|9rps|G)po zPe%VJnzd|Jm*BU4{c)vdXxBWgp>>QDLQy3Op>#9Owm z0ISB_itF26;#&}y{G!A z&a;6Uk|S?tB4r1`=yZNc{ScM-6SZDQ%DdRiUZNGcW>Lm!tZWqxKCR6ZQpq;fyjlfD zQ;G3%&Gn0fH?`SRj3_Jeue5@CLex3Rf6|^aa)h8~5!saYbcO$^O`Aff(4q*=FT6xv zM3lQ^1YO}Dkr~v_e<1I5{~TquNo4LIM_oy6A$FPHNY9{Q&eIh@$It}d)%)=l zx;??a)=#1=|6OO9SD`p&0yJm&Us{0=8U_AA=Gwrx@M{9ZNMdrJ(!SzUbIn7eRF5XS_J3bwZ7`i|{+Oh}K@b8CyV9=bI@PSxSwg~fiR3a)4n6NzHg zU#P$r!6x{R#&5^jWa0}~>kBK5P7$XCRaC98D3-&%+g-GI@uHela@DAei zD=^`|^F(9;MqiTLlno?rnh?r(s9$Xk?RPTs$TPdpiIbx2l7J}z(*hDbPut68z_%;> zv;6a}^2HZ~DL$PdVI#smD?qfC9T$*vdJwEw4Qec;4jYC|G1F;lGSUgbJ11bAmvWcJ z4;xqp=V!12aRy`2wr4;J0YP#bT9JD6MJ|KT82_eway|)@1UwJySP9p{SYK%@EPB-T zA@3XD?M&!U%o*@Kh85%hhLb*uuJf^;Emb6EXZUwLrNKPuAvcX9Oa@mGchp@MuWtyD Lfm7h4y+{8AsB}*D delta 1089 zcmYLHO>Ep$5cWL3wY^@iyFYHy1VP;>P32T6w023yjT|uQbwkRMPd+<%Yi;Hfppz|R02F_ zOu7cSEs_f)-8-m^>}XzUY5u(h(0E_d5?I$Fv1e!cK2Y%{&Y7RUB>rG_L{PxX)=VY8 zuu*Sx(zu=UPz}Y92qfXW$TiXYb}-<-cH37$2t(ozKiDH=;#$R{BtkXcx8X6I)*9-PYdKC~Ye9 zuvYNp4!k{#zZXVe7!BtXI5_JlIFEOo-H}NuLzxUrUC(;16|TJ%h4YJewRlMcMf|$B zaON5I2MiM&WZsCAC~UP9{~q@(gCCIN`ri49ZZ4j59ziLq|;Og ziyI=uBZFcrsBxGfD%_`S131kEPuPz&m&QqKyOiWSuopJRsApsM%+et^{WKR@V>rby z#W1M;KeE)bWc!Tm(*&E-_-17cSIX66Gi>7#4lH$?^>YkNo#Fvf0e)G2vNX@?NrvYc zCh^Del@tH-!`$2=>G}jxG6$o?42>L(+r5`61%LowtJaPUt{7bQB1QJ}bR+HAtLsbk zRwGOrk-C7pPPIBmzAs3+4#7Cn4fs=ar@+rBb}EzO@O|&dsB4w2%g&GzWDev(;csxr JHT=dq^A87=)+zu1 diff --git a/yake/highlight.py b/yake/highlight.py index 14f339a5..13d4bee9 100644 --- a/yake/highlight.py +++ b/yake/highlight.py @@ -23,7 +23,13 @@ def __init__( self.max_ngram_size = max_ngram_size def highlight(self, text, keywords): - """Returns the highlighted text snippets of matching text in the original data.""" + """ + Highlights keywords in the given text. + + :param text: The original text to be processed. + :param keywords: A list of keywords to highlight. Each keyword can be a string or a tuple where the first element is the keyword. + :return: The text with highlighted keywords. + """ n_text = "" if len(keywords) > 0: kw_list = keywords @@ -32,7 +38,7 @@ def highlight(self, text, keywords): text = text.strip() if self.max_ngram_size == 1: n_text = self.format_one_gram_text(text, kw_list) - elif self.max_ngram_size > 1: + else: n_text = self.format_n_gram_text(text, kw_list, self.max_ngram_size) return n_text @@ -49,8 +55,9 @@ def format_one_gram_text(self, text, relevant_words_array): text_tokens[tk] = text_tokens[tk].replace( kw, f"{self.highlight_pre}{kw}{self.highlight_post}" ) - except Exception: - pass + except re.error as e: + import logging + logging.error(f"Regex error: {e}") return " ".join(text_tokens) def format_n_gram_text(self, text, relevant_words_array, n_gram): @@ -70,7 +77,9 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): if n_gram_word_list: if len(n_gram_word_list[0].split(" ")) == 1: - y, new_expression = self.replace_token(text_tokens, y, n_gram_word_list) + y, new_expression = self.replace_token( + text_tokens, y, n_gram_word_list + ) final_splited_text.append(new_expression) else: kw_list = [] @@ -79,7 +88,8 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): for len_kw in range(len(splited_one)): kw_list, splited_n_gram_kw_list = self.find_more_relevant( - y + len_kw, text_tokens, n_gram, relevant_words_array, kw_list, splited_n_gram_kw_list + y + len_kw, text_tokens, n_gram, + relevant_words_array, kw_list, splited_n_gram_kw_list ) min_score_word = min( @@ -88,13 +98,17 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): if kw_list.index(min_score_word) == 0: term_list = [min_score_word] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) elif kw_list.index(min_score_word) >= 1: index_of_more_relevant = splited_n_gram_kw_list[0].index( min_score_word.split()[0] ) - temporal_kw = " ".join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + temporal_kw = " ".join( + splited_n_gram_kw_list[0][:index_of_more_relevant] + ) if temporal_kw in relevant_words_array: try: @@ -108,21 +122,30 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): term_list = [combined_kw] del final_splited_text[-1] y -= 1 - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) else: term_list = [temporal_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) - except: + except Exception as e: + print(f"Error: {e}") term_list = [temporal_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) else: for tmp_kw in splited_n_gram_kw_list[0][:index_of_more_relevant]: if tmp_kw in relevant_words_array: term_list = [tmp_kw] - y, new_expression = self.replace_token(text_tokens, y, term_list) + y, new_expression = self.replace_token( + text_tokens, y, term_list + ) final_splited_text.append(new_expression) else: final_splited_text.append(text_tokens[y]) @@ -130,6 +153,7 @@ def format_n_gram_text(self, text, relevant_words_array, n_gram): else: final_splited_text.append(text_tokens[y]) y += 1 + return " ".join(final_splited_text) def find_more_relevant( @@ -139,9 +163,11 @@ def find_more_relevant( temporary_list = [] temporary_list_two = [] for i in range(n_gram): - temporary_list.append(text_tokens[y : y + i + 1]) + temporary_list.append(text_tokens[y: y + i + 1]) k = re.sub( - r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', " ".join(temporary_list[i]) + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', '', " ".join( + temporary_list[i] + ) ) if k.lower() in relevant_words_array: temporary_list_two.append(k) @@ -156,8 +182,10 @@ def find_more_relevant( def replace_token(self, text_tokens, y, n_gram_word_list): """Replaces tokens in text with highlighted versions.""" - txt = " ".join(text_tokens[y : y + len(n_gram_word_list[0].split(" "))]) - kw_cleaned = re.sub(r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', "", txt) + txt = " ".join(text_tokens[y: y + len(n_gram_word_list[0].split(" "))]) + kw_cleaned = re.sub( + r'[!",:.;?()]$|^[!",:.;?()]|\W[!",:.;?()]', "", txt + ) new_expression = txt.replace( kw_cleaned, f"{self.highlight_pre}{n_gram_word_list[0]}{self.highlight_post}" ) From 9a13e29935373336d002e244209b32c1046284a0 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 20 Feb 2025 17:47:47 +0000 Subject: [PATCH 018/122] =?UTF-8?q?datarepresentation.py=20formata=C3=A7?= =?UTF-8?q?=C3=A3o=20inicial?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit highligths.py 90% --- tests/yakenew.md | 5 +- .../datarepresentation.cpython-310.pyc | Bin 14498 -> 15712 bytes yake/__pycache__/highlight.cpython-310.pyc | Bin 5348 -> 5359 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 4485 -> 4485 bytes yake/datarepresentation.py | 158 +++++++++++------- yake/highlight.py | 16 +- yake/yake.py | 12 +- 7 files changed, 114 insertions(+), 77 deletions(-) diff --git a/tests/yakenew.md b/tests/yakenew.md index 22d8cfc8..a1bb11b6 100644 --- a/tests/yakenew.md +++ b/tests/yakenew.md @@ -77,4 +77,7 @@ Planos próxima semana -////// Refactoring score (3.21) -> (3.94) 18/02/2025 \ No newline at end of file +////// Refactoring score (3.21) -> (3.94) 18/02/2025 + + +////// Refactoring score (3.94) -> (4.15) 18/02/2025 \ No newline at end of file diff --git a/yake/__pycache__/datarepresentation.cpython-310.pyc b/yake/__pycache__/datarepresentation.cpython-310.pyc index b9517e10ee58a62b5c2241d3e838225f168fa231..c13b6280935c1bfb5c79692f1faf24c84db78ae4 100644 GIT binary patch literal 15712 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 +

Applications

+

Levenshtein distance is commonly used in:

+
    +
  • Spell checking and correction
  • +
  • DNA sequence alignment
  • +
  • Plagiarism detection
  • +
  • Fuzzy string matching
  • +
  • Natural language processing
  • +
  • Record linkage and data deduplication
  • +

On this page

\ No newline at end of file diff --git a/docs/docs/core/Levenshtein.txt b/docs/docs/core/Levenshtein.txt index 9073f71a..b4bcb0c8 100644 --- a/docs/docs/core/Levenshtein.txt +++ b/docs/docs/core/Levenshtein.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","core","Levenshtein"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/Levenshtein","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/Levenshtein","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","SU1MzOoLewueq23UVEOqf",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","Levenshtein"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/Levenshtein","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/Levenshtein","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","4_sg_dP2wxm0_sFMuuxbU",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] @@ -47,7 +47,7 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 3a:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] 3b:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] 17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#levenshtein","title":"Levenshtein"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#static-methods","title":"Static Methods"},{"depth":2,"url":"#usage-guide","title":"Usage Guide"},{"depth":3,"url":"#distance-calculation","title":"Distance Calculation"},{"depth":3,"url":"#similarity-ratio","title":"Similarity Ratio"},{"depth":2,"url":"#algorithm-explanation","title":"Algorithm Explanation"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#performance-considerations","title":"Performance Considerations"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"levenshtein","children":[["$","a",null,{"data-card":"","href":"#levenshtein","className":"peer","children":"Levenshtein"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" Levenshtein"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Class for computing Levenshtein distance and similarity ratio.\"\"\""}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class offers methods to measure the difference between two strings and calculate their similarity."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"static-methods","children":[["$","a",null,{"data-card":"","href":"#static-methods","className":"peer","children":"Static Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"ratio-private","children":[["$","$L31",null,{"children":["$","code",null,{"children":"__ratio(distance, str_length)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" __ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", str_length: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the similarity ratio based on distance and string length."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" distance (float): The Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_length (int): The length of the longer string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"ratio","children":[["$","$L31",null,{"children":["$","code",null,{"children":"ratio(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Compute the similarity ratio between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(seq1, seq2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_length "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.__ratio(str_distance, str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"distance","children":[["$","$L31",null,{"children":["$","code",null,{"children":"distance(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" distance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: The Levenshtein distance."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.zeros((size_x, size_y))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq1[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq2[y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" min"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deletion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Insertion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Substitution"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(matrix[size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-guide","children":[["$","a",null,{"data-card":"","href":"#usage-guide","className":"peer","children":"Usage Guide"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"distance-calculation","children":[["$","a",null,{"data-card":"","href":"#distance-calculation","className":"peer","children":"Distance Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the edit distance between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 3"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-ratio","children":[["$","a",null,{"data-card":"","href":"#similarity-ratio","className":"peer","children":"Similarity Ratio"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the similarity ratio between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 0.5714"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"algorithm-explanation","children":[["$","a",null,{"data-card":"","href":"#algorithm-explanation","className":"peer","children":"Algorithm Explanation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["Initialize a matrix of size ",["$","code",null,{"children":"(len(seq1)+1) × (len(seq2)+1)"}]]}],"\n",["$","li",null,{"children":"Fill the first row and column with increasing integers (0, 1, 2, ...)"}],"\n",["$","li",null,{"children":["For each cell in the matrix:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"If the corresponding characters match, the cost is 0; otherwise, it's 1"}],"\n",["$","li",null,{"children":["Calculate the minimum cost from three possible operations:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Deletion: Value from the cell above + 1"}],"\n",["$","li",null,{"children":"Insertion: Value from the cell to the left + 1"}],"\n",["$","li",null,{"children":"Substitution: Value from the diagonal cell + cost"}],"\n"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","li",null,{"children":"The bottom-right cell contains the final Levenshtein distance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" numpy "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Test strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"neural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate distance and similarity"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Strings:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"1: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"2: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Example output:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Strings:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 1: 'natural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 2: 'neural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Levenshtein distance: 3"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Similarity ratio: 0.8889"}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"performance-considerations","children":[["$","a",null,{"data-card":"","href":"#performance-considerations","className":"peer","children":"Performance Considerations"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Time Complexity: O(m×n) where m and n are the lengths of the input strings"}],"\n",["$","li",null,{"children":"Space Complexity: O(m×n) due to the matrix storage"}],"\n",["$","li",null,{"children":"For very long strings, consider using optimized variants or approximate algorithms"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For efficient matrix operations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] +2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","title":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""},{"depth":1,"url":"#levenshtein","title":"Levenshtein"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#static-methods","title":"Static Methods"},{"depth":2,"url":"#usage-guide","title":"Usage Guide"},{"depth":3,"url":"#distance-calculation","title":"Distance Calculation"},{"depth":3,"url":"#similarity-ratio","title":"Similarity Ratio"},{"depth":2,"url":"#algorithm-explanation","title":"Algorithm Explanation"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#performance-considerations","title":"Performance Considerations"},{"depth":2,"url":"#dependencies","title":"Dependencies"},{"depth":2,"url":"#applications","title":"Applications"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","children":[["$","a",null,{"data-card":"","href":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","className":"peer","children":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"levenshtein","children":[["$","a",null,{"data-card":"","href":"#levenshtein","className":"peer","children":"Levenshtein"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" Levenshtein"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Class for computing Levenshtein distance and similarity ratio.\"\"\""}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class offers methods to measure the difference between two strings and calculate their similarity."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"static-methods","children":[["$","a",null,{"data-card":"","href":"#static-methods","className":"peer","children":"Static Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"ratio-private","children":[["$","$L31",null,{"children":["$","code",null,{"children":"__ratio(distance, str_length)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" __ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", str_length: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the similarity ratio based on distance and string length."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" distance (float): The Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_length (int): The length of the longer string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"ratio","children":[["$","$L31",null,{"children":["$","code",null,{"children":"ratio(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Compute the similarity ratio between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(seq1, seq2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_length "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.__ratio(str_distance, str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"distance","children":[["$","$L31",null,{"children":["$","code",null,{"children":"distance(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" distance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: The Levenshtein distance."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.zeros((size_x, size_y))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq1[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq2[y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" min"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deletion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Insertion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Substitution"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(matrix[size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-guide","children":[["$","a",null,{"data-card":"","href":"#usage-guide","className":"peer","children":"Usage Guide"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"distance-calculation","children":[["$","a",null,{"data-card":"","href":"#distance-calculation","className":"peer","children":"Distance Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the edit distance between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 3"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-ratio","children":[["$","a",null,{"data-card":"","href":"#similarity-ratio","className":"peer","children":"Similarity Ratio"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the similarity ratio between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 0.5714"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"algorithm-explanation","children":[["$","a",null,{"data-card":"","href":"#algorithm-explanation","className":"peer","children":"Algorithm Explanation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["Initialize a matrix of size ",["$","code",null,{"children":"(len(seq1)+1) × (len(seq2)+1)"}]]}],"\n",["$","li",null,{"children":"Fill the first row and column with increasing integers (0, 1, 2, ...)"}],"\n",["$","li",null,{"children":["For each cell in the matrix:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"If the corresponding characters match, the cost is 0; otherwise, it's 1"}],"\n",["$","li",null,{"children":["Calculate the minimum cost from three possible operations:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Deletion: Value from the cell above + 1"}],"\n",["$","li",null,{"children":"Insertion: Value from the cell to the left + 1"}],"\n",["$","li",null,{"children":"Substitution: Value from the diagonal cell + cost"}],"\n"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","li",null,{"children":"The bottom-right cell contains the final Levenshtein distance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" numpy "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Test strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"neural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate distance and similarity"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Strings:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"1: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"2: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Example output:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Strings:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 1: 'natural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 2: 'neural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Levenshtein distance: 3"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Similarity ratio: 0.8889"}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"performance-considerations","children":[["$","a",null,{"data-card":"","href":"#performance-considerations","className":"peer","children":"Performance Considerations"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Time Complexity: O(m×n) where m and n are the lengths of the input strings"}],"\n",["$","li",null,{"children":"Space Complexity: O(m×n) due to the matrix storage"}],"\n",["$","li",null,{"children":"For very long strings, consider using optimized variants or approximate algorithms"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For efficient matrix operations"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"applications","children":[["$","a",null,{"data-card":"","href":"#applications","className":"peer","children":"Applications"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Levenshtein distance is commonly used in:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Spell checking and correction"}],"\n",["$","li",null,{"children":"DNA sequence alignment"}],"\n",["$","li",null,{"children":"Plagiarism detection"}],"\n",["$","li",null,{"children":"Fuzzy string matching"}],"\n",["$","li",null,{"children":"Natural language processing"}],"\n",["$","li",null,{"children":"Record linkage and data deduplication"}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] 1a:null 1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 19:null diff --git a/docs/docs/core/highlight.html b/docs/docs/core/highlight.html index d1618d8b..f9405d12 100644 --- a/docs/docs/core/highlight.html +++ b/docs/docs/core/highlight.html @@ -1,4 +1,8 @@ -
YAKE!
Core

TextHighlighter

+
YAKE!

Class Definitions

NgramData

-

+

A data class to store n-gram processing results containing:

  • word_list: List of extracted words
  • split_kw_list: List of split keywords for processing

TextHighlighter

-

+

Parameters:

  • max_ngram_size (int): Maximum size of n-grams to consider for highlighting
  • @@ -33,9 +37,9 @@

  • highlight_post (str, optional): Text to insert after highlighted terms (default: </kw>)

Core Methods

-

+

Helper Methods

-

+

Usage Example

On this page

\ No newline at end of file +

On this page

\ No newline at end of file diff --git a/docs/docs/core/highlight.txt b/docs/docs/core/highlight.txt index c4157f2f..0a46afdb 100644 --- a/docs/docs/core/highlight.txt +++ b/docs/docs/core/highlight.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","core","highlight"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/highlight","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/highlight","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Y0jlqs3q3k8VQ74tAQWey",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","highlight"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/highlight","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/highlight","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","NeSGWNmXZOZ8KPM6HtxT3",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] @@ -47,7 +47,7 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 3f:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] 40:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] 17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#texthighlighter","title":"TextHighlighter"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definitions","title":"Class Definitions"},{"depth":3,"url":"#ngramdata","title":"NgramData"},{"depth":3,"url":"#texthighlighter-1","title":"TextHighlighter"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter","children":[["$","a",null,{"data-card":"","href":"#texthighlighter","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Module for highlighting text based on keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Provides functionality to highlight specific keywords in text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclasses "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclass"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" typing "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" List"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definitions","children":[["$","a",null,{"data-card":"","href":"#class-definitions","className":"peer","children":"Class Definitions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"ngramdata","children":[["$","a",null,{"data-card":"","href":"#ngramdata","className":"peer","children":"NgramData"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"ngram_data","children":[["$","$L31",null,{"children":["$","code",null,{"children":"NgramData"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@dataclass"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" NgramData"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Data structure to hold n-gram processing results.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_list: List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_kw_list: List[List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":"A data class to store n-gram processing results containing:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word_list"}],": List of extracted words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"split_kw_list"}],": List of split keywords for processing"]}],"\n"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter-1","children":[["$","a",null,{"data-card":"","href":"#texthighlighter-1","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(max_ngram_size, highlight_pre=DEFAULT_HIGHLIGHT_PRE, highlight_post=DEFAULT_HIGHLIGHT_POST)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TextHighlighter constructor. Define highlight text snippets."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" max_ngram_size: Specifies the maximum ngram size in the keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_pre: Specifies the text before a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_post: Specifies the text after a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"max_ngram_size"}]," (int): Maximum size of n-grams to consider for highlighting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_pre"}]," (str, optional): Text to insert before highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_post"}]," (str, optional): Text to insert after highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"highlight","children":[["$","$L31",null,{"children":["$","code",null,{"children":"highlight(text, keywords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" highlight"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, keywords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Highlights keywords in the given text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The original text to be processed."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords: A list of keywords to highlight."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Each keyword can be a string or a tuple where the first element is the keyword."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" The text with highlighted keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" isinstance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"tuple"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.strip()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_one_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_n_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_one_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_one_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_one_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for one-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tk, token "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", token)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens[tk] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" token.replace("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.error "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" e:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging.error("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Regex error: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"%s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", e)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_n_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_n_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_n_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for n-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" while"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".find_relevant_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list, splited_n_gram_kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".process_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, y, n_gram_word_list, context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(new_expression)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(text_tokens[y])"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(final_splited_text)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"find_relevant_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"find_relevant_ngrams(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" find_relevant_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Finds relevant n-grams in the text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing n-gram word list and split n-gram keyword list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._find_more_relevant_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"process_ngrams(text_tokens, position, n_gram_word_list, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" process_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Processes n-grams and updates the final text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context: Dictionary containing split n-gram keywords,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant words array, and final split text"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".replace_token("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, n_gram_word_list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ctx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._create_ngram_context("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_multi_word_ngrams_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, ctx"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"replace_token","children":[["$","$L31",null,{"children":["$","code",null,{"children":"replace_token(text_tokens, position, n_gram_word_list)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" replace_token"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Replaces tokens in text with highlighted versions."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", text_tokens[position]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", txt)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt.replace("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens, new_expression"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"find_more_relevant_helper","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_find_more_relevant_helper(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _find_more_relevant_helper"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Helper method for finding relevant n-gram words."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" NgramData containing keyword list and split n-gram word list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list.append(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(temporary_list[i]),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two.append(k)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sorted_temp "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: relevant_words_array.index(x.lower())"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list.append(sorted_temp["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list.append(kw_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list, splited_n_gram_word_list"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"create_ngram_context","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_create_ngram_context(n_gram_word_list, splited_n_gram_kw_list, relevant_words_array, final_splited_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _create_ngram_context"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_kw_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates a context object for n-gram processing."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" splited_n_gram_kw_list: List of split n-gram keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" final_splited_text: List of processed text tokens"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Dictionary with context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n_gram_word_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n_gram_word_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sample text to process"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"natural language processing\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"artificial intelligence\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"computers\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize the highlighter with maximum n-gram size of 3"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get highlighted text"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighted_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(highlighted_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Custom highlighting markers"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" custom_highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(custom_highlighted)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language.\""}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations in text processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"logging"}],": For error handling and reporting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dataclasses"}],": For defining the ",["$","code",null,{"children":"NgramData"}]," dataclass"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"typing"}],": For type annotations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3e",null,{"items":"$undefined"}]]}]]}],["$","$L3f",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L40",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] +2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","title":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""},{"depth":1,"url":"#texthighlighter","title":"TextHighlighter"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definitions","title":"Class Definitions"},{"depth":3,"url":"#ngramdata","title":"NgramData"},{"depth":3,"url":"#texthighlighter-1","title":"TextHighlighter"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","children":[["$","a",null,{"data-card":"","href":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","className":"peer","children":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter","children":[["$","a",null,{"data-card":"","href":"#texthighlighter","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Module for highlighting text based on keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Provides functionality to highlight specific keywords in text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclasses "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclass"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" typing "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" List"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definitions","children":[["$","a",null,{"data-card":"","href":"#class-definitions","className":"peer","children":"Class Definitions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"ngramdata","children":[["$","a",null,{"data-card":"","href":"#ngramdata","className":"peer","children":"NgramData"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"ngram_data","children":[["$","$L31",null,{"children":["$","code",null,{"children":"NgramData"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@dataclass"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" NgramData"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Data structure to hold n-gram processing results.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_list: List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_kw_list: List[List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":"A data class to store n-gram processing results containing:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word_list"}],": List of extracted words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"split_kw_list"}],": List of split keywords for processing"]}],"\n"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter-1","children":[["$","a",null,{"data-card":"","href":"#texthighlighter-1","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(max_ngram_size, highlight_pre=DEFAULT_HIGHLIGHT_PRE, highlight_post=DEFAULT_HIGHLIGHT_POST)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TextHighlighter constructor. Define highlight text snippets."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" max_ngram_size: Specifies the maximum ngram size in the keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_pre: Specifies the text before a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_post: Specifies the text after a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"max_ngram_size"}]," (int): Maximum size of n-grams to consider for highlighting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_pre"}]," (str, optional): Text to insert before highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_post"}]," (str, optional): Text to insert after highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"highlight","children":[["$","$L31",null,{"children":["$","code",null,{"children":"highlight(text, keywords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" highlight"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, keywords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Highlights keywords in the given text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The original text to be processed."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords: A list of keywords to highlight."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Each keyword can be a string or a tuple where the first element is the keyword."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" The text with highlighted keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" isinstance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"tuple"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.strip()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_one_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_n_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_one_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_one_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_one_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for one-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tk, token "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", token)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens[tk] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" token.replace("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.error "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" e:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging.error("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Regex error: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"%s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", e)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_n_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_n_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_n_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for n-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" while"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".find_relevant_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list, splited_n_gram_kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".process_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, y, n_gram_word_list, context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(new_expression)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(text_tokens[y])"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(final_splited_text)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"find_relevant_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"find_relevant_ngrams(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" find_relevant_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Finds relevant n-grams in the text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing n-gram word list and split n-gram keyword list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._find_more_relevant_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"process_ngrams(text_tokens, position, n_gram_word_list, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" process_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Processes n-grams and updates the final text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context: Dictionary containing split n-gram keywords,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant words array, and final split text"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".replace_token("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, n_gram_word_list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ctx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._create_ngram_context("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_multi_word_ngrams_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, ctx"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"replace_token","children":[["$","$L31",null,{"children":["$","code",null,{"children":"replace_token(text_tokens, position, n_gram_word_list)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" replace_token"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Replaces tokens in text with highlighted versions."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", text_tokens[position]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", txt)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt.replace("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens, new_expression"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"find_more_relevant_helper","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_find_more_relevant_helper(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _find_more_relevant_helper"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Helper method for finding relevant n-gram words."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" NgramData containing keyword list and split n-gram word list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list.append(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(temporary_list[i]),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two.append(k)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sorted_temp "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: relevant_words_array.index(x.lower())"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list.append(sorted_temp["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list.append(kw_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list, splited_n_gram_word_list"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"create_ngram_context","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_create_ngram_context(n_gram_word_list, splited_n_gram_kw_list, relevant_words_array, final_splited_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _create_ngram_context"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_kw_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates a context object for n-gram processing."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" splited_n_gram_kw_list: List of split n-gram keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" final_splited_text: List of processed text tokens"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Dictionary with context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n_gram_word_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n_gram_word_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sample text to process"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"natural language processing\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"artificial intelligence\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"computers\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize the highlighter with maximum n-gram size of 3"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get highlighted text"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighted_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(highlighted_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Custom highlighting markers"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" custom_highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(custom_highlighted)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language.\""}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations in text processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"logging"}],": For error handling and reporting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dataclasses"}],": For defining the ",["$","code",null,{"children":"NgramData"}]," dataclass"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"typing"}],": For type annotations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3e",null,{"items":"$undefined"}]]}]]}],["$","$L3f",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L40",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] 1a:null 1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 19:null diff --git a/docs/docs/core/yake.html b/docs/docs/core/yake.html index 5237cab6..3d470d41 100644 --- a/docs/docs/core/yake.html +++ b/docs/docs/core/yake.html @@ -1,4 +1,8 @@ -
YAKE!
Core

KeywordExtractor

+
YAKE!

The KeywordExtractor class provides an interface to extract and process keywords from text documents using statistical features and deduplication.

Class Definition

-

+

Parameters:

  • lan (str, optional): Language for stopwords (default: "en")
  • @@ -25,7 +29,7 @@

    <
  • stopwords (set, optional): Custom stopwords set (default: None, loads from language file)

Core Methods

-

+

Parameters:

Helper Methods

-

+

Similarity Functions

-

+

Usage Examples

Basic Usage

On this page

\ No newline at end of file +

On this page

\ No newline at end of file diff --git a/docs/docs/core/yake.txt b/docs/docs/core/yake.txt index 558ef9f1..46253154 100644 --- a/docs/docs/core/yake.txt +++ b/docs/docs/core/yake.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","core","yake"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/yake","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/yake","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","8mwkndFGm2bayWYAoIidb",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","yake"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/yake","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/yake","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","YEhx10j7CLf2IgqJWdu0n",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] @@ -47,7 +47,7 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 3d:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] 3e:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] 17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#keywordextractor","title":"KeywordExtractor"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definition","title":"Class Definition"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#similarity-functions","title":"Similarity Functions"},{"depth":2,"url":"#usage-examples","title":"Usage Examples"},{"depth":3,"url":"#basic-usage","title":"Basic Usage"},{"depth":3,"url":"#customized-usage","title":"Customized Usage"},{"depth":2,"url":"#deduplication-functions","title":"Deduplication Functions"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"keywordextractor","children":[["$","a",null,{"data-card":"","href":"#keywordextractor","className":"peer","children":"KeywordExtractor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Module for keyword extraction from text documents.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" .Levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class provides an interface to extract and process keywords from text documents using statistical features and deduplication."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definition","children":[["$","a",null,{"data-card":"","href":"#class-definition","className":"peer","children":"Class Definition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(**kwargs)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"**"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kwargs):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize the KeywordExtractor with configuration parameters.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.9"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"20"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._load_stopwords(kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._get_dedup_function("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lan"}]," (str, optional): Language for stopwords (default: \"en\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int, optional): Maximum n-gram size (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_lim"}]," (float, optional): Deduplication similarity threshold (default: 0.9)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_func"}]," (str, optional): Deduplication function to use (default: \"seqm\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"window_size"}]," (int, optional): Window size for co-occurrence (default: 1)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"top"}]," (int, optional): Maximum number of keywords to return (default: 20)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"features"}]," (dict, optional): Custom features for keyword scoring (default: None)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopwords"}]," (set, optional): Custom stopwords set (default: None, loads from language file)"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"extract_keywords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"extract_keywords(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Extract keywords from text.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a config dictionary for DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" core_config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"stopword_set"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"core_config)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_single_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_mult_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc.is_valid()], "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c: c.h"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted]["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" : "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" h, cand_result "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function(cand.unique_kw, cand_result.unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" >"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set.append((cand.h, cand))"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(result_set) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.kw, h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (h, cand) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The text to extract keywords from"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A list of tuples containing (keyword, score) pairs, sorted by relevance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"load_stopwords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_load_stopwords(stopwords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _load_stopwords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stopwords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Load stopwords from file or use provided set.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stopwords)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dir_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.dirname(os.path.realpath("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"__file__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'lan'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":".txt\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.exists(os.path.join(dir_path, local_path)):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_noLang.txt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" resource_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join(dir_path, local_path)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"utf-8\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" UnicodeDecodeError"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Warning: reading stopword list as ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_dedup_function","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_get_dedup_function(func_name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _get_dedup_function"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, func_name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Retrieve the appropriate deduplication function.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro_winkler\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sequencematcher\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }.get(func_name.lower(), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".levs)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-functions","children":[["$","a",null,{"data-card":"","href":"#similarity-functions","className":"peer","children":"Similarity Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"jaro","children":[["$","$L31",null,{"children":["$","code",null,{"children":"jaro(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" jaro"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.jaro(cand1, cand2)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"levs","children":[["$","$L31",null,{"children":["$","code",null,{"children":"levs(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" levs"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(cand1, cand2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand2))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"seqm","children":[["$","$L31",null,{"children":["$","code",null,{"children":"seqm(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" seqm"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(cand1, cand2)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-examples","children":[["$","a",null,{"data-card":"","href":"#usage-examples","className":"peer","children":"Usage Examples"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-usage","children":[["$","a",null,{"data-card":"","href":"#basic-usage","className":"peer","children":"Basic Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"concerned with the interactions between computers and human language, in particular how to program computers"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"to process and analyze large amounts of natural language data."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Simple example with default parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the keywords and their scores"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"customized-usage","children":[["$","a",null,{"data-card":"","href":"#customized-usage","className":"peer","children":"Customized Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a custom stopwords set"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"the\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"an\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"in\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"on\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"at\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"of\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"for\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"with\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Language"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Maximum n-gram size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_lim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.8"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication threshold"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_func"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication function"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" window_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Window size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Number of keywords to extract"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" stopwords"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Machine learning is the study of computer algorithms that improve automatically through experience.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the top 10 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"deduplication-functions","children":[["$","a",null,{"data-card":"","href":"#deduplication-functions","className":"peer","children":"Deduplication Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," supports multiple string similarity algorithms for deduplication:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Jaro-Winkler"}]," (\"jaro\", \"jaro_winkler\"): Based on character matches with higher weights for prefix matches"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Levenshtein Ratio"}]," (\"levs\"): Based on Levenshtein edit distance normalized by string length"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"SequenceMatcher"}]," (\"seqm\", \"sequencematcher\"): Based on Python's difflib sequence matching algorithm"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"os"}],": For file operations and path handling"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For Jaro-Winkler string similarity"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"yake.data.DataCore"}],": For core data representation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":".Levenshtein"}],": For Levenshtein distance and ratio calculations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3c",null,{"items":"$undefined"}]]}]]}],["$","$L3d",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3e",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] +2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","title":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""},{"depth":1,"url":"#keywordextractor-class","title":"KeywordExtractor Class"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definition","title":"Class Definition"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#similarity-functions","title":"Similarity Functions"},{"depth":2,"url":"#usage-examples","title":"Usage Examples"},{"depth":3,"url":"#basic-usage","title":"Basic Usage"},{"depth":3,"url":"#customized-usage","title":"Customized Usage"},{"depth":2,"url":"#deduplication-functions","title":"Deduplication Functions"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","children":[["$","a",null,{"data-card":"","href":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","className":"peer","children":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"keywordextractor-class","children":[["$","a",null,{"data-card":"","href":"#keywordextractor-class","className":"peer","children":"KeywordExtractor Class"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Module for keyword extraction from text documents.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" .Levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class provides an interface to extract and process keywords from text documents using statistical features and deduplication."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definition","children":[["$","a",null,{"data-card":"","href":"#class-definition","className":"peer","children":"Class Definition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(**kwargs)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"**"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kwargs):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize the KeywordExtractor with configuration parameters.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.9"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"20"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._load_stopwords(kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._get_dedup_function("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lan"}]," (str, optional): Language for stopwords (default: \"en\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int, optional): Maximum n-gram size (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_lim"}]," (float, optional): Deduplication similarity threshold (default: 0.9)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_func"}]," (str, optional): Deduplication function to use (default: \"seqm\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"window_size"}]," (int, optional): Window size for co-occurrence (default: 1)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"top"}]," (int, optional): Maximum number of keywords to return (default: 20)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"features"}]," (dict, optional): Custom features for keyword scoring (default: None)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopwords"}]," (set, optional): Custom stopwords set (default: None, loads from language file)"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"extract_keywords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"extract_keywords(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Extract keywords from text.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a config dictionary for DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" core_config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"stopword_set"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"core_config)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_single_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_mult_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc.is_valid()], "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c: c.h"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted]["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" : "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" h, cand_result "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function(cand.unique_kw, cand_result.unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" >"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set.append((cand.h, cand))"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(result_set) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.kw, h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (h, cand) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The text to extract keywords from"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A list of tuples containing (keyword, score) pairs, sorted by relevance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"load_stopwords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_load_stopwords(stopwords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _load_stopwords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stopwords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Load stopwords from file or use provided set.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stopwords)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dir_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.dirname(os.path.realpath("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"__file__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'lan'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":".txt\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.exists(os.path.join(dir_path, local_path)):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_noLang.txt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" resource_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join(dir_path, local_path)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"utf-8\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" UnicodeDecodeError"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Warning: reading stopword list as ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_dedup_function","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_get_dedup_function(func_name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _get_dedup_function"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, func_name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Retrieve the appropriate deduplication function.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro_winkler\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sequencematcher\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }.get(func_name.lower(), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".levs)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-functions","children":[["$","a",null,{"data-card":"","href":"#similarity-functions","className":"peer","children":"Similarity Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"jaro","children":[["$","$L31",null,{"children":["$","code",null,{"children":"jaro(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" jaro"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.jaro(cand1, cand2)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"levs","children":[["$","$L31",null,{"children":["$","code",null,{"children":"levs(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" levs"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(cand1, cand2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand2))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"seqm","children":[["$","$L31",null,{"children":["$","code",null,{"children":"seqm(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" seqm"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(cand1, cand2)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-examples","children":[["$","a",null,{"data-card":"","href":"#usage-examples","className":"peer","children":"Usage Examples"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-usage","children":[["$","a",null,{"data-card":"","href":"#basic-usage","className":"peer","children":"Basic Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"concerned with the interactions between computers and human language, in particular how to program computers"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"to process and analyze large amounts of natural language data."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Simple example with default parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the keywords and their scores"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"customized-usage","children":[["$","a",null,{"data-card":"","href":"#customized-usage","className":"peer","children":"Customized Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a custom stopwords set"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"the\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"an\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"in\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"on\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"at\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"of\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"for\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"with\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Language"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Maximum n-gram size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_lim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.8"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication threshold"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_func"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication function"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" window_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Window size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Number of keywords to extract"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" stopwords"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Machine learning is the study of computer algorithms that improve automatically through experience.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the top 10 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"deduplication-functions","children":[["$","a",null,{"data-card":"","href":"#deduplication-functions","className":"peer","children":"Deduplication Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," supports multiple string similarity algorithms for deduplication:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Jaro-Winkler"}]," (\"jaro\", \"jaro_winkler\"): Based on character matches with higher weights for prefix matches"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Levenshtein Ratio"}]," (\"levs\"): Based on Levenshtein edit distance normalized by string length"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"SequenceMatcher"}]," (\"seqm\", \"sequencematcher\"): Based on Python's difflib sequence matching algorithm"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"os"}],": For file operations and path handling"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For Jaro-Winkler string similarity"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"yake.data.DataCore"}],": For core data representation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":".Levenshtein"}],": For Levenshtein distance and ratio calculations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3c",null,{"items":"$undefined"}]]}]]}],["$","$L3d",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3e",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] 1a:null 1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] 19:null diff --git a/docs/docs/data/composedword.html b/docs/docs/data/composedword.html index de79bfd6..b65f817d 100644 --- a/docs/docs/data/composedword.html +++ b/docs/docs/data/composedword.html @@ -1,4 +1,4 @@ -
YAKE!
Data

ComposedWord

+
YAKE!
Data

ComposedWord

The ComposedWord class represents multi-word terms in YAKE (Yet Another Keyword Extractor), providing the foundation for analyzing and scoring potential keyword phrases.

Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

@@ -151,4 +151,4 @@

On this page

\ No newline at end of file +

On this page

\ No newline at end of file diff --git a/docs/docs/data/composedword.txt b/docs/docs/data/composedword.txt index 2e0503f8..532063d7 100644 --- a/docs/docs/data/composedword.txt +++ b/docs/docs/data/composedword.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","composedword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/composedword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/composedword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","SEYzMi6rqNU1zUbQdPA1t",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","composedword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/composedword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/composedword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","kUzGCAYuNhwRBUUtxnCTq",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/docs/data/core.html b/docs/docs/data/core.html deleted file mode 100644 index 3df9a5c8..00000000 --- a/docs/docs/data/core.html +++ /dev/null @@ -1,118 +0,0 @@ -
YAKE!
Data

DataCore

-

The DataCore class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction.

-
-

Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

-
-

Class Overview

-
class DataCore:
-    def __init__(self, text, stopword_set, config=None):
-        # Initialize the data core with text and configuration
-

The DataCore class processes text documents to identify potential keywords based on statistical features and contextual relationships.

-

Constructor

-

-

Parameters:

-
    -
  • text (str): The input text to analyze for keyword extraction
  • -
  • stopword_set (set): A set of stopwords to filter out non-content words
  • -
  • config (dict, optional): Configuration options including: -
      -
    • windows_size (int): Size of word window for co-occurrence (default: 2)
    • -
    • n (int): Maximum length of keyword phrases (default: 3)
    • -
    • tags_to_discard (set): POS tags to ignore (default: d)
    • -
    • exclude (set): Characters to exclude (default: string.punctuation)
    • -
    -
  • -
-

Example:

-
from yake.datarepresentation import DataCore
-import string
- 
-# Initialize with default configuration
-data = DataCore("Sample text for analysis", stopword_set)
- 
-# Initialize with custom configuration
-config = {
-    "windows_size": 3,
-    "n": 4,
-    "tags_to_discard": {"u", "d", "p"},
-    "exclude": set(string.punctuation)
-}
-data = DataCore("Sample text for analysis", stopword_set, config)
-

Core Methods

-

-

Public API Methods

-

-

Property Accessors

-

The DataCore class includes various property accessors for backward compatibility:

-

Configuration Properties

-
    -
  • exclude: Characters to exclude from processing
  • -
  • tags_to_discard: Part-of-speech tags to ignore during analysis
  • -
  • stopword_set: Set of stopwords to filter out
  • -
  • g: DirectedGraph representing term co-occurrences
  • -
-
# Examples
-excluded_chars = data.exclude
-ignored_tags = data.tags_to_discard
-stopwords = data.stopword_set
-graph = data.g
-

Text Statistics Properties

-
    -
  • number_of_sentences: Count of sentences in the processed text
  • -
  • number_of_words: Total number of words processed
  • -
-
# Examples
-sentence_count = data.number_of_sentences
-word_count = data.number_of_words
-

Collection Properties

-
    -
  • terms: Dictionary of SingleWord objects representing individual terms
  • -
  • candidates: Dictionary of ComposedWord objects representing keyword candidates
  • -
  • sentences_obj: Processed sentence objects
  • -
  • sentences_str: Raw sentence strings from the original text
  • -
  • freq_ns: Frequency of n-grams by length
  • -
-
# Examples
-all_terms = data.terms
-all_candidates = data.candidates
-processed_sentences = data.sentences_obj
-raw_sentences = data.sentences_str
-ngram_frequencies = data.freq_ns
-

Complete Usage Example

-
from yake.datarepresentation import DataCore
-from yake.stopwordremover import StopwordRemover
- 
-# Initialize stopwords
-stopword_remover = StopwordRemover("en")
-stopword_set = stopword_remover.get_stopword_set()
- 
-# Create DataCore instance
-text = "Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language."
-data = DataCore(text, stopword_set)
- 
-# Build features for keyword extraction
-data.build_single_terms_features()
-data.build_mult_terms_features()
- 
-# Extract top candidates
-candidates = [(cand.unique_kw, cand.h) for cand in data.candidates.values() if cand.is_valid()]
-candidates.sort(key=lambda x: x[1])  # Sort by score (lower is better in YAKE)
- 
-# Print top 5 keywords
-for keyword, score in candidates[:5]:
-    print(f"{keyword}: {score:.4f}")
-

Dependencies

-

The DataCore class relies on:

-
    -
  • string: For punctuation constants
  • -
  • networkx: For graph representation (co-occurrences)
  • -
  • numpy: For statistical calculations
  • -
  • segtok: For tokenization
  • -
  • Internal utility modules: -
      -
    • utils: For pre-filtering and tokenization
    • -
    • single_word: For representing individual terms
    • -
    • composed_word: For representing multi-word candidates
    • -
    -
  • -

On this page

\ No newline at end of file diff --git a/docs/docs/data/datacore.html b/docs/docs/data/datacore.html new file mode 100644 index 00000000..8d4709a7 --- /dev/null +++ b/docs/docs/data/datacore.html @@ -0,0 +1,118 @@ +
YAKE!
Data

DataCore

+

The DataCore class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction.

+
+

Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

+
+

Class Overview

+
class DataCore:
+    def __init__(self, text, stopword_set, config=None):
+        # Initialize the data core with text and configuration
+

The DataCore class processes text documents to identify potential keywords based on statistical features and contextual relationships.

+

Constructor

+

+

Parameters:

+
    +
  • text (str): The input text to analyze for keyword extraction
  • +
  • stopword_set (set): A set of stopwords to filter out non-content words
  • +
  • config (dict, optional): Configuration options including: +
      +
    • windows_size (int): Size of word window for co-occurrence (default: 2)
    • +
    • n (int): Maximum length of keyword phrases (default: 3)
    • +
    • tags_to_discard (set): POS tags to ignore (default: d)
    • +
    • exclude (set): Characters to exclude (default: string.punctuation)
    • +
    +
  • +
+

Example:

+
from yake.datarepresentation import DataCore
+import string
+ 
+# Initialize with default configuration
+data = DataCore("Sample text for analysis", stopword_set)
+ 
+# Initialize with custom configuration
+config = {
+    "windows_size": 3,
+    "n": 4,
+    "tags_to_discard": {"u", "d", "p"},
+    "exclude": set(string.punctuation)
+}
+data = DataCore("Sample text for analysis", stopword_set, config)
+

Core Methods

+

+

Public API Methods

+

+

Property Accessors

+

The DataCore class includes various property accessors for backward compatibility:

+

Configuration Properties

+
    +
  • exclude: Characters to exclude from processing
  • +
  • tags_to_discard: Part-of-speech tags to ignore during analysis
  • +
  • stopword_set: Set of stopwords to filter out
  • +
  • g: DirectedGraph representing term co-occurrences
  • +
+
# Examples
+excluded_chars = data.exclude
+ignored_tags = data.tags_to_discard
+stopwords = data.stopword_set
+graph = data.g
+

Text Statistics Properties

+
    +
  • number_of_sentences: Count of sentences in the processed text
  • +
  • number_of_words: Total number of words processed
  • +
+
# Examples
+sentence_count = data.number_of_sentences
+word_count = data.number_of_words
+

Collection Properties

+
    +
  • terms: Dictionary of SingleWord objects representing individual terms
  • +
  • candidates: Dictionary of ComposedWord objects representing keyword candidates
  • +
  • sentences_obj: Processed sentence objects
  • +
  • sentences_str: Raw sentence strings from the original text
  • +
  • freq_ns: Frequency of n-grams by length
  • +
+
# Examples
+all_terms = data.terms
+all_candidates = data.candidates
+processed_sentences = data.sentences_obj
+raw_sentences = data.sentences_str
+ngram_frequencies = data.freq_ns
+

Complete Usage Example

+
from yake.datarepresentation import DataCore
+from yake.stopwordremover import StopwordRemover
+ 
+# Initialize stopwords
+stopword_remover = StopwordRemover("en")
+stopword_set = stopword_remover.get_stopword_set()
+ 
+# Create DataCore instance
+text = "Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language."
+data = DataCore(text, stopword_set)
+ 
+# Build features for keyword extraction
+data.build_single_terms_features()
+data.build_mult_terms_features()
+ 
+# Extract top candidates
+candidates = [(cand.unique_kw, cand.h) for cand in data.candidates.values() if cand.is_valid()]
+candidates.sort(key=lambda x: x[1])  # Sort by score (lower is better in YAKE)
+ 
+# Print top 5 keywords
+for keyword, score in candidates[:5]:
+    print(f"{keyword}: {score:.4f}")
+

Dependencies

+

The DataCore class relies on:

+
    +
  • string: For punctuation constants
  • +
  • networkx: For graph representation (co-occurrences)
  • +
  • numpy: For statistical calculations
  • +
  • segtok: For tokenization
  • +
  • Internal utility modules: +
      +
    • utils: For pre-filtering and tokenization
    • +
    • single_word: For representing individual terms
    • +
    • composed_word: For representing multi-word candidates
    • +
    +
  • +

On this page

\ No newline at end of file diff --git a/docs/docs/data/core.txt b/docs/docs/data/datacore.txt similarity index 96% rename from docs/docs/data/core.txt rename to docs/docs/data/datacore.txt index 0546b309..cd66a23b 100644 --- a/docs/docs/data/core.txt +++ b/docs/docs/data/datacore.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","core"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/core","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/core","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","pBKNw9wyvDYBP7CiPT9qr",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","datacore"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/datacore","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/datacore","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Lw-dwezEjojj4N6ZTlN6P",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/docs/data/singleword.html b/docs/docs/data/singleword.html index f436c7f9..65c28b46 100644 --- a/docs/docs/data/singleword.html +++ b/docs/docs/data/singleword.html @@ -1,4 +1,4 @@ -
YAKE!
Data

SingleWord

+
YAKE!
\ No newline at end of file +
\ No newline at end of file diff --git a/docs/docs/data/singleword.txt b/docs/docs/data/singleword.txt index e2d6a45e..eb4c8371 100644 --- a/docs/docs/data/singleword.txt +++ b/docs/docs/data/singleword.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","singleword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/singleword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/singleword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","qy9CSh4RC_BzjuAjciiHl",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","singleword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/singleword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/singleword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","tr4vhxH0kS7Q1lGGl0Y4u",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/docs/data/utils.html b/docs/docs/data/utils.html index e8590eb3..0205ef81 100644 --- a/docs/docs/data/utils.html +++ b/docs/docs/data/utils.html @@ -1,4 +1,4 @@ -
YAKE!
Data

Utils

+
YAKE!
Data

Utils

The utils module provides essential text processing functions for YAKE (Yet Another Keyword Extractor), handling tokenization, normalization, and classification of textual elements.

Info: This documentation provides interactive code views for each function. Click on a function name to view its implementation.

@@ -99,4 +99,4 @@

re: For regular expression operations
  • segtok.segmenter: For sentence segmentation
  • segtok.tokenizer: For tokenization and contraction handling
  • -

    On this page

    \ No newline at end of file +

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/utils.txt b/docs/docs/data/utils.txt index 3e5f0320..9006c5eb 100644 --- a/docs/docs/data/utils.txt +++ b/docs/docs/data/utils.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] @@ -23,9 +23,9 @@ f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595 1b:I[4911,[],"AsyncMetadataOutlet"] 1d:I[9665,[],"ViewportBoundary"] 1f:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["","docs","data","utils"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/utils","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/core.mdx","type":"page","name":"Core","description":"$undefined","icon":"$undefined","url":"/docs/data/core","$ref":{"file":"data/core.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/utils","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","-GriRkXk9VRMRd-dGSuKT",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","utils"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/utils","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/utils","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","g6e_OIDW49VJw3tERUFnQ",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} 20:"$Sreact.suspense" 21:I[4911,[],"AsyncMetadata"] 23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] diff --git a/docs/index.html b/docs/index.html index 6456e005..1c3d83e4 100644 --- a/docs/index.html +++ b/docs/index.html @@ -1 +1 @@ -

    Hello

    Open /docs and see the documentation.

    \ No newline at end of file +

    Hello

    Open /docs and see the documentation.

    \ No newline at end of file diff --git a/docs/index.txt b/docs/index.txt index a323ac8a..e27c5752 100644 --- a/docs/index.txt +++ b/docs/index.txt @@ -1,5 +1,5 @@ 1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-26014324ed35ee65.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] +2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] 3:I[7555,[],""] 4:I[1295,[],""] 5:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"NavProvider"] @@ -17,9 +17,9 @@ f:I[9665,[],"MetadataBoundary"] 14:I[4911,[],"AsyncMetadataOutlet"] 16:I[9665,[],"ViewportBoundary"] 18:I[6614,[],""] -:HL["/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/_next/static/css/b4795857488dee5e.css","style"] -0:{"P":null,"b":"RfGowQr-OlMihovSd7bEL","p":"","c":["",""],"i":false,"f":[[["",{"children":["(home)",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/_next/static/css/b4795857488dee5e.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_d65c78","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["(home)",["$","$1","c",{"children":[null,["$","$L5",null,{"transparentMode":"$undefined","children":["$","main",null,{"id":"nd-home-layout","children":[["$","$L6",null,{"children":[["$","$L7",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],"$undefined",["$","ul",null,{"className":"flex flex-row items-center gap-2 px-6 max-sm:hidden","children":[]}],["$","div",null,{"className":"flex flex-row items-center justify-end gap-1.5 flex-1","children":[["$","$L8",null,{"className":"lg:hidden","hideIfDisabled":true}],["$","$L9",null,{"className":"w-full max-w-[240px] max-lg:hidden","hideIfDisabled":true}],["$","$La",null,{"className":"max-lg:hidden","mode":"$undefined"}],null]}],["$","ul",null,{"className":"flex flex-row items-center","children":[[],["$","$Lb",null,{"className":"lg:hidden","children":[["$","$Lc",null,{"aria-label":"Toggle Menu","className":"group -me-2","enableHover":"$undefined","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-down size-3 transition-transform duration-300 group-data-[state=open]:rotate-180","aria-hidden":"true","children":[["$","path","qrunsl",{"d":"m6 9 6 6 6-6"}],"$undefined"]}]}],["$","$Ld",null,{"className":"sm:flex-row sm:items-center sm:justify-end","children":[[],["$","div",null,{"className":"-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$La",null,{"mode":"$undefined"}]]}]]}]]}]]}]]}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]],"className":"flex flex-1 flex-col pt-14"}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"className":"flex flex-1 flex-col justify-center text-center","children":[["$","h1",null,{"className":"mb-4 text-2xl font-bold","children":"Hello"}],["$","p",null,{"className":"text-fd-muted-foreground","children":["Open"," ",["$","$Le",null,{"href":"/docs","className":"text-fd-foreground font-semibold underline","children":"/docs"}]," ","and see the documentation."]}]]}],["$","$Lf",null,{"children":"$L10"}],null,["$","$L11",null,{"children":["$L12","$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","DYVh9YM6rkXxWE6J6MU1v",{"children":[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$18","$undefined"],"s":false,"S":true} +:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] +:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] +0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["",""],"i":false,"f":[[["",{"children":["(home)",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["(home)",["$","$1","c",{"children":[null,["$","$L5",null,{"transparentMode":"$undefined","children":["$","main",null,{"id":"nd-home-layout","children":[["$","$L6",null,{"children":[["$","$L7",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],"$undefined",["$","ul",null,{"className":"flex flex-row items-center gap-2 px-6 max-sm:hidden","children":[]}],["$","div",null,{"className":"flex flex-row items-center justify-end gap-1.5 flex-1","children":[["$","$L8",null,{"className":"lg:hidden","hideIfDisabled":true}],["$","$L9",null,{"className":"w-full max-w-[240px] max-lg:hidden","hideIfDisabled":true}],["$","$La",null,{"className":"max-lg:hidden","mode":"$undefined"}],null]}],["$","ul",null,{"className":"flex flex-row items-center","children":[[],["$","$Lb",null,{"className":"lg:hidden","children":[["$","$Lc",null,{"aria-label":"Toggle Menu","className":"group -me-2","enableHover":"$undefined","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-down size-3 transition-transform duration-300 group-data-[state=open]:rotate-180","aria-hidden":"true","children":[["$","path","qrunsl",{"d":"m6 9 6 6 6-6"}],"$undefined"]}]}],["$","$Ld",null,{"className":"sm:flex-row sm:items-center sm:justify-end","children":[[],["$","div",null,{"className":"-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$La",null,{"mode":"$undefined"}]]}]]}]]}]]}]]}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]],"className":"flex flex-1 flex-col pt-14"}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"className":"flex flex-1 flex-col justify-center text-center","children":[["$","h1",null,{"className":"mb-4 text-2xl font-bold","children":"Hello"}],["$","p",null,{"className":"text-fd-muted-foreground","children":["Open"," ",["$","$Le",null,{"href":"/docs","className":"text-fd-foreground font-semibold underline","children":"/docs"}]," ","and see the documentation."]}]]}],["$","$Lf",null,{"children":"$L10"}],null,["$","$L11",null,{"children":["$L12","$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","WzdSACzHwvrajktiygNPS",{"children":[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$18","$undefined"],"s":false,"S":true} 19:"$Sreact.suspense" 1a:I[4911,[],"AsyncMetadata"] 10:["$","$19",null,{"fallback":null,"children":["$","$L1a",null,{"promise":"$@1b"}]}] From 771f4ca2d115d335de8912ed94777991df21227b Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 18:50:51 +0100 Subject: [PATCH 061/122] =?UTF-8?q?cortes=20e=20organiza=C3=A7=C3=A3o=20de?= =?UTF-8?q?=20reposit=C3=B3rio?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MANIFEST.in | 11 - README.md | 373 ++----- docs-site/README.md | 15 +- docs-site/next.config.mjs | 4 +- docs/404.html | 1 - AUTHORS.rst => docs/AUTHORS.rst | 0 CONTRIBUTING.rst => docs/CONTRIBUTING.rst | 0 .../static/chunks/176-a0a1cf5d9e7b7a9e.js | 1 - .../static/chunks/318-23c47eb018ec8a69.js | 1 - .../static/chunks/323.3d40b3f10e4f6645.js | 10 - .../static/chunks/477.c67b77b0908a8d3c.js | 1 - .../chunks/4bd1b696-bad170bae81532a4.js | 1 - .../static/chunks/534-bbb1ba4032b129a8.js | 1 - .../static/chunks/595-993b621b2225d9dc.js | 1 - .../static/chunks/684-db277683248699e5.js | 1 - .../static/chunks/728.0a8f45173f3a857c.js | 1 - .../static/chunks/874-0cb5402bc7a91b88.js | 1 - .../static/chunks/882-90fa2d4319e1517d.js | 1 - .../static/chunks/886.9b81414a450ef20f.js | 1 - .../static/chunks/920-aed94374b29ba4e2.js | 1 - .../static/chunks/996.84f6c850bac17e1e.js | 1 - .../static/chunks/997-04a205149f54dcb1.js | 1 - .../app/(home)/layout-dd16dd94e0ac6dfb.js | 1 - .../app/(home)/page-ff294463e6438f3b.js | 1 - .../app/_not-found/page-1dda221cd75e58ca.js | 1 - .../docs/[[...slug]]/page-2caa2683c2838a7d.js | 1 - .../app/docs/layout-6d9e86ce9d5501d3.js | 1 - .../chunks/app/layout-c6241da76fad0b40.js | 1 - .../chunks/framework-f593a28cde54158e.js | 1 - .../static/chunks/main-5ab622ad5f4fefa1.js | 1 - .../chunks/main-app-d5ad76d309db59c9.js | 1 - .../chunks/pages/_app-da15c11dea942c36.js | 1 - .../chunks/pages/_error-cc3f077a18ea1793.js | 1 - .../chunks/polyfills-42372ed130431b0a.js | 1 - .../static/chunks/webpack-2d20c2f079869833.js | 1 - docs/_next/static/css/0d177ebb9848c15c.css | 1 - .../static/media/26a46d62cd723877-s.woff2 | Bin 18820 -> 0 bytes .../static/media/55c55f0601d81cf3-s.woff2 | Bin 25908 -> 0 bytes .../static/media/581909926a08bbc8-s.woff2 | Bin 19072 -> 0 bytes .../static/media/6d93bde91c0c2823-s.woff2 | Bin 74316 -> 0 bytes .../static/media/97e0cb1ae144a2a9-s.woff2 | Bin 11220 -> 0 bytes .../static/media/a34f9d1faa5f3315-s.p.woff2 | Bin 48556 -> 0 bytes .../static/media/df0a9ae256c0569c-s.woff2 | Bin 10280 -> 0 bytes .../vvyse3XSZUANbPbQ3_ktG/_buildManifest.js | 1 - .../vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js | 1 - docs/docs.html | 259 ----- docs/docs.txt | 85 -- docs/docs/core/Levenshtein.html | 95 -- docs/docs/core/Levenshtein.txt | 55 -- docs/docs/core/highlight.html | 77 -- docs/docs/core/highlight.txt | 55 -- docs/docs/core/yake.html | 106 -- docs/docs/core/yake.txt | 55 -- docs/docs/data/composedword.html | 154 --- docs/docs/data/composedword.txt | 55 -- docs/docs/data/datacore.html | 118 --- docs/docs/data/datacore.txt | 55 -- docs/docs/data/singleword.html | 126 --- docs/docs/data/singleword.txt | 55 -- docs/docs/data/utils.html | 102 -- docs/docs/data/utils.txt | 55 -- docs/index.html | 1 - docs/index.txt | 30 - strategy.ini => docs/strategy.ini | 0 microsoft.gpg | Bin 641 -> 0 bytes requirements.txt | 5 +- yake/datarepresentation.py | 916 ------------------ 67 files changed, 62 insertions(+), 2841 deletions(-) delete mode 100644 MANIFEST.in delete mode 100644 docs/404.html rename AUTHORS.rst => docs/AUTHORS.rst (100%) rename CONTRIBUTING.rst => docs/CONTRIBUTING.rst (100%) delete mode 100644 docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js delete mode 100644 docs/_next/static/chunks/318-23c47eb018ec8a69.js delete mode 100644 docs/_next/static/chunks/323.3d40b3f10e4f6645.js delete mode 100644 docs/_next/static/chunks/477.c67b77b0908a8d3c.js delete mode 100644 docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js delete mode 100644 docs/_next/static/chunks/534-bbb1ba4032b129a8.js delete mode 100644 docs/_next/static/chunks/595-993b621b2225d9dc.js delete mode 100644 docs/_next/static/chunks/684-db277683248699e5.js delete mode 100644 docs/_next/static/chunks/728.0a8f45173f3a857c.js delete mode 100644 docs/_next/static/chunks/874-0cb5402bc7a91b88.js delete mode 100644 docs/_next/static/chunks/882-90fa2d4319e1517d.js delete mode 100644 docs/_next/static/chunks/886.9b81414a450ef20f.js delete mode 100644 docs/_next/static/chunks/920-aed94374b29ba4e2.js delete mode 100644 docs/_next/static/chunks/996.84f6c850bac17e1e.js delete mode 100644 docs/_next/static/chunks/997-04a205149f54dcb1.js delete mode 100644 docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js delete mode 100644 docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js delete mode 100644 docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js delete mode 100644 docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js delete mode 100644 docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js delete mode 100644 docs/_next/static/chunks/app/layout-c6241da76fad0b40.js delete mode 100644 docs/_next/static/chunks/framework-f593a28cde54158e.js delete mode 100644 docs/_next/static/chunks/main-5ab622ad5f4fefa1.js delete mode 100644 docs/_next/static/chunks/main-app-d5ad76d309db59c9.js delete mode 100644 docs/_next/static/chunks/pages/_app-da15c11dea942c36.js delete mode 100644 docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js delete mode 100644 docs/_next/static/chunks/polyfills-42372ed130431b0a.js delete mode 100644 docs/_next/static/chunks/webpack-2d20c2f079869833.js delete mode 100644 docs/_next/static/css/0d177ebb9848c15c.css delete mode 100644 docs/_next/static/media/26a46d62cd723877-s.woff2 delete mode 100644 docs/_next/static/media/55c55f0601d81cf3-s.woff2 delete mode 100644 docs/_next/static/media/581909926a08bbc8-s.woff2 delete mode 100644 docs/_next/static/media/6d93bde91c0c2823-s.woff2 delete mode 100644 docs/_next/static/media/97e0cb1ae144a2a9-s.woff2 delete mode 100644 docs/_next/static/media/a34f9d1faa5f3315-s.p.woff2 delete mode 100644 docs/_next/static/media/df0a9ae256c0569c-s.woff2 delete mode 100644 docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js delete mode 100644 docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js delete mode 100644 docs/docs.html delete mode 100644 docs/docs.txt delete mode 100644 docs/docs/core/Levenshtein.html delete mode 100644 docs/docs/core/Levenshtein.txt delete mode 100644 docs/docs/core/highlight.html delete mode 100644 docs/docs/core/highlight.txt delete mode 100644 docs/docs/core/yake.html delete mode 100644 docs/docs/core/yake.txt delete mode 100644 docs/docs/data/composedword.html delete mode 100644 docs/docs/data/composedword.txt delete mode 100644 docs/docs/data/datacore.html delete mode 100644 docs/docs/data/datacore.txt delete mode 100644 docs/docs/data/singleword.html delete mode 100644 docs/docs/data/singleword.txt delete mode 100644 docs/docs/data/utils.html delete mode 100644 docs/docs/data/utils.txt delete mode 100644 docs/index.html delete mode 100644 docs/index.txt rename strategy.ini => docs/strategy.ini (100%) delete mode 100644 microsoft.gpg delete mode 100644 yake/datarepresentation.py diff --git a/MANIFEST.in b/MANIFEST.in deleted file mode 100644 index 021f78aa..00000000 --- a/MANIFEST.in +++ /dev/null @@ -1,11 +0,0 @@ -include AUTHORS.rst -include CONTRIBUTING.rst -include LICENSE -include README.rst - -recursive-include tests * -recursive-exclude * __pycache__ -recursive-exclude * *.py[co] - -recursive-include yake/StopwordsList *.txt -recursive-include docs *.rst conf.py Makefile make.bat *.jpg *.png *.gif diff --git a/README.md b/README.md index ceccb29d..ce4e5597 100644 --- a/README.md +++ b/README.md @@ -1,358 +1,101 @@ -# Yet Another Keyword Extractor (Yake) +# YAKE! (Yet Another Keyword Extractor) -Unsupervised Approach for Automatic Keyword Extraction using Text Features. +[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) -YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app. +YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. -## Main Features +## Features -* Unsupervised approach -* Corpus-Independent -* Domain and Language Independent -* Single-Document +- 🚀 Unsupervised approach +- 🌐 Language and domain independent +- 📄 Single-document focused +- 🧠 No training or dictionaries required -## Benchmark - -For Benchmark results check out our paper published on Information Science Journal (see the references section). - -## Rationale - -Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. - -## Where can I find YAKE!? -YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords). - -## Installing YAKE! - -There are three installation alternatives. - -- To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our [simple YAKE! Docker image](#cli-image). This container will allow you to run text extraction as a command, and then exit. -- To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our [RESTful API server image](#rest-api-image). This container/server *will run in the background*. -- To install YAKE! straight "on the metal" or you want to integrate it in your Python app, you can [install it and its dependencies](#standalone-installation). - - -### Option 1. YAKE as a CLI utility inside a Docker container - -First, install Docker. Ubuntu users, please see our [script below](#installing-docker) for a complete installation script. - -Then, run: +## Quick Installation ```bash -docker run liaad/yake:latest -ti "Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system." -``` -*Example text from Wikipedia* - - -### Option 2. REST API Server in a Docker container - -This install will provide you a mirror of the original REST API of YAKE! available [here](https://boiling-castle-88317.herokuapp.com). - -```bash -docker run -p 5000:5000 -d liaad/yake-server:latest -``` - -After it starts up, the container will run in the background, at http://127.0.0.1:5000. To access the YAKE! API documentation, go to http://127.0.0.1:5000/apidocs/. - -You can test the RESTful API using `curl`: - -```bash -curl -X POST "http://localhost:5000/yake/" -H "accept: application/json" -H "Content-Type: application/json" \ --d @- <<'EOF' -{ - "language": "en", - "max_ngram_size": 3, - "number_of_keywords": 10, - "text": "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ..." -} -EOF -``` -*Example text from Wikipedia* - - -### Option 3. Standalone Installation (for development or integration) - -#### Requirements - -Python3 - -#### Installation - -To install Yake using pip: - -``` bash pip install git+https://github.com/LIAAD/yake ``` -To upgrade using pip: - -``` bash -pip install git+https://github.com/LIAAD/yake –-upgrade -``` -#### Usage (Command line) - -How to use it on your favorite command line -``` bash -Usage: yake [OPTIONS] - -Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. -``` -### Usage (Python) +## Basic Usage -How to use it on Python - -``` python +```python import yake -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ -"was founded by Goldbloom and Ben Hamner in 2010. "\ -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ -"it has managed to stay well ahead of them by focusing on its specific niche. "\ -"The service is basically the de facto home for running data science and machine learning competitions. "\ -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ -"will keep the service running - likely under its current name. While the acquisition is probably more about "\ -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ -"share this code on the platform (the company previously called them 'scripts'). "\ -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ -"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " -``` +text = "YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text." -#### assuming default parameters -```bash +# Simple usage with default parameters kw_extractor = yake.KeywordExtractor() keywords = kw_extractor.extract_keywords(text) -for kw in keywords: - print(kw) -``` +for kw, score in keywords: + print(f"{kw} ({score})") -#### specifying parameters -```bash -language = "en" -max_ngram_size = 3 -deduplication_threshold = 0.9 -deduplication_algo = 'seqm' -windowSize = 1 -numOfKeywords = 20 +# With custom parameters +custom_kw_extractor = yake.KeywordExtractor( + lan="en", # language + n=3, # ngram size + dedupLim=0.9, # deduplication threshold + dedupFunc='seqm', # deduplication function + windowsSize=1, # context window + top=10, # number of keywords to extract + features=None # custom features +) -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_threshold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None) keywords = custom_kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) ``` -#### Output -The lower the score, the more relevant the keyword is. -``` bash -('google', 0.026580863364597897) -('kaggle', 0.0289005976239829) -('ceo anthony goldbloom', 0.029946071606210194) -('san francisco', 0.048810837074825336) -('anthony goldbloom declined', 0.06176910090701819) -('google cloud platform', 0.06261974476422487) -('co-founder ceo anthony', 0.07357749587020043) -('acquiring kaggle', 0.08723571551039863) -('ceo anthony', 0.08915156857226395) -('anthony goldbloom', 0.09123482372372106) -('machine learning', 0.09147989238151344) -('kaggle co-founder ceo', 0.093805063905847) -('data', 0.097574333771058) -('google cloud', 0.10260128641464673) -('machine learning competitions', 0.10773000650607861) -('francisco this week', 0.11519915079240485) -('platform', 0.1183512305596321) -('conference in san', 0.12392066376108138) -('service', 0.12546743261462942) -('goldbloom', 0.14611408778815776) -``` - -### Highlighting Feature -Highlighting feature will tag every keyword in the text with the default tag ``. - -``` python +## Multilingual Support -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size = 3) -th.highlight(text, keywords) +YAKE! supports multiple languages. Example with Portuguese text: -``` -#### Output -By default, keywords will be highlighted using the tag 'kw'. -``` -Sources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that google is hosting its Cloud Next conference in san francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the acquisition is happening. google itself declined 'to comment on rumors'. -..... -..... +```python +text_pt = "YAKE! é um extrator de palavras-chave automático não supervisionado." +custom_kw_extractor = yake.KeywordExtractor(lan="pt") +keywords = custom_kw_extractor.extract_keywords(text_pt) ``` +## Text Highlighting -### Custom Highlighting Feature -Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag `` makes use of an hyphotetical function `my_class` whose purpose would be to highlight in white colour or the relevant keywords. +YAKE! includes a highlighting feature to mark keywords in text: -#### Output ```python - from yake.highlight import TextHighlighter -th = TextHighlighter(max_ngram_size = 3, highlight_pre = "", highlight_post= "") -th.highlight(text, keywords) -``` -``` -self.highlight_postSources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that google is hosting self.highlight_postits Cloud Next conference in san francisco this week, the official announcement could come as early self.highlight_postas tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the self.highlight_postacquisition is happening. google itself declined 'to comment on rumors'. -..... -..... -``` +th = TextHighlighter(max_ngram_size=3) +highlighted_text = th.highlight(text, keywords) -### Languages others than English -While English (`en`) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text. -``` bash -text = ''' -"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui. -A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto. -''' - -custom_kw_extractor = yake.KeywordExtractor(lan="pt") -keywords = custom_kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) +# With custom HTML tags +custom_th = TextHighlighter( + max_ngram_size=3, + highlight_pre="", + highlight_post="" +) ``` -#### Output -``` bash -('conta-me histórias', 0.006225012963810038) -('liaad do inesc', 0.01899063587015275) -('inesc tec', 0.01995432290332246) -('conta-me', 0.04513273690417472) -('histórias', 0.04513273690417472) -('prémio arquivo.pt', 0.05749361520927859) -('liaad', 0.07738867367929901) -('inesc', 0.07738867367929901) -('tec', 0.08109398065524037) -('xutos inspiram projeto', 0.08720742489353424) -('inspiram projeto premiado', 0.08720742489353424) -('adam jatwot docente', 0.09407053486771558) -('arquivo.pt', 0.10261392141666957) -('alípio jorge', 0.12190479662535166) -('ciências da universidade', 0.12368384021490342) -('ricardo campos investigador', 0.12789997272332762) -('politécnico de tomar', 0.13323587141127738) -('arian pasquali', 0.13323587141127738) -('vitor mangaravite', 0.13323587141127738) -('preservados da web', 0.13596322680882506) -``` - -## Related projects - -### YAKE! Mobile APP -YAKE! is now available on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake) - -### `pke` - python keyphrase extraction - -https://github.com/boudinfl/pke - `pke` is an **open source** python-based **keyphrase extraction** toolkit. It -provides an end-to-end keyphrase extraction pipeline in which each component can -be easily modified or extended to develop new models. `pke` also allows for -easy benchmarking of state-of-the-art keyphrase extraction models, and -ships with supervised models trained on the SemEval-2010 dataset (http://aclweb.org/anthology/S10-1004). - -Credits to https://github.com/boudinfl - -### `SparkNLP` - State of the Art Natural Language Processing framework -https://github.com/JohnSnowLabs/spark-nlp - `SparkNLP` from [John Snow Labs](https://www.johnsnowlabs.com/) is an open source framework with full Python, Scala, and Java Support. Check [their documentation](https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction), [demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/) and [google colab](https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb). A video on how to use spark nlp with yake can also be found here: https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code - -### `General Index` by Archive.org -https://archive.org/details/GeneralIndex - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in [Nature](https://www.nature.com/articles/d41586-021-02895-8). -### `textacy` - NLP, before and after spaCy +## Where to Find YAKE! -https://github.com/chartbeat-labs/textacy - `textacy` is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE. +- 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) +- 🔌 Documentation site: [Documentation](http://github.io/yakerf/docs/) +- 📦 Python package: [GitHub](https://github.com/LIAAD/yake_demo) -Credits to https://github.com/chartbeat-labs +## Citation - +If you use YAKE in your research, please cite: -### `Annif` - Tool for automated subject indexing and classification -https://github.com/NatLibFi/Annif/ - `Annif` is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website http://annif.org/. - -### `Portulan Clarin` - Services and data for researchers, innovators, students and language professionals -https://portulanclarin.net/workbench/liaad-yake/ - `Portulan Clarin` is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website https://portulanclarin.net/. - -## How to install Docker - -Here is the "just copy and paste" installations script for Docker in Ubuntu. Enjoy. - -```bash -# Install dependencies -sudo apt-get update -sudo apt-get install \ - apt-transport-https \ - ca-certificates \ - curl \ - software-properties-common - -# Add Docker repo -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -sudo apt-key fingerprint 0EBFCD88 -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" -sudo apt-get update - -# Install Docker -sudo apt-get install -y docker-ce - -# Start Docker Daemon -sudo service docker start - -# Add yourself to the Docker user group, otherwise docker will complain that -# it does not know if the Docker Daemon is running -sudo usermod -aG docker ${USER} - -# Install docker-compose -sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -source ~/.bashrc -docker-compose --version -echo "Done!" +``` +Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). +YAKE! Keyword Extraction from Single Documents using Multiple Local Features. +Information Sciences Journal. Elsevier, Vol 509, pp 257-289. ``` -Credits to https://github.com/silvae86 for the Docker scripts. - -## References -Please cite the following works when using YAKE - -In-depth journal paper at Information Sciences Journal - -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) - -ECIR'18 Best Short Paper - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) +``` +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). +A Text Feature Based Automatic Keyword Extraction Method for Single Documents. +ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. +``` ## Awards -[ECIR'18](http://ecir2018.org) Best Short Paper + +🏆 [ECIR'18](http://ecir2018.org) Best Short Paper \ No newline at end of file diff --git a/docs-site/README.md b/docs-site/README.md index 9f468772..4bf5dfc1 100644 --- a/docs-site/README.md +++ b/docs-site/README.md @@ -1,9 +1,6 @@ # docs-site -This is a Next.js application generated with -[Create Fumadocs](https://github.com/fuma-nama/fumadocs). - -Run development server: +To access Documentation site run development server inside de docs-site folder: ```bash npm run dev @@ -14,13 +11,3 @@ yarn dev ``` Open http://localhost:3000 with your browser to see the result. - -## Learn More - -To learn more about Next.js and Fumadocs, take a look at the following -resources: - -- [Next.js Documentation](https://nextjs.org/docs) - learn about Next.js - features and API. -- [Learn Next.js](https://nextjs.org/learn) - an interactive Next.js tutorial. -- [Fumadocs](https://fumadocs.vercel.app) - learn about Fumadocs diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index 8b4c79a7..201541a6 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -5,9 +5,7 @@ const withMDX = createMDX(); /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, - output: 'export', - basePath: '/docs-site', // nome do repositório - assetPrefix: '/docs-site', // garante que os estilos/scripts carregam corretamente + output: 'export', }; export default withMDX(config); diff --git a/docs/404.html b/docs/404.html deleted file mode 100644 index f2fb0d22..00000000 --- a/docs/404.html +++ /dev/null @@ -1 +0,0 @@ -404: This page could not be found.

    404

    This page could not be found.

    \ No newline at end of file diff --git a/AUTHORS.rst b/docs/AUTHORS.rst similarity index 100% rename from AUTHORS.rst rename to docs/AUTHORS.rst diff --git a/CONTRIBUTING.rst b/docs/CONTRIBUTING.rst similarity index 100% rename from CONTRIBUTING.rst rename to docs/CONTRIBUTING.rst diff --git a/docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js b/docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js deleted file mode 100644 index 708bd3ef..00000000 --- a/docs/_next/static/chunks/176-a0a1cf5d9e7b7a9e.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[176],{244:(e,t,r)=>{"use strict";function n(e,t,r){let{includePage:n=!0,includeSeparator:i=!1,includeRoot:o}=r,a=[];return t.forEach((e,r)=>{if("separator"===e.type&&i&&a.push({name:e.name}),"folder"===e.type){let n=t.at(r+1);if(n&&e.index===n)return;if(e.root){a=[];return}a.push({name:e.name,url:e.index?.url})}"page"===e.type&&n&&a.push({name:e.name,url:e.url})}),o&&a.unshift({name:e.name,url:"object"==typeof o?o.url:void 0}),a}r.d(t,{Pp:()=>n,oe:()=>function e(t,r){let n;for(let i of(r.endsWith("/")&&(r=r.slice(0,-1)),t)){if("separator"===i.type&&(n=i),"folder"===i.type){if(i.index?.url===r){let e=[];return n&&e.push(n),e.push(i,i.index),e}let t=e(i.children,r);if(t)return t.unshift(i),n&&t.unshift(n),t}if("page"===i.type&&i.url===r){let e=[];return n&&e.push(n),e.push(i),e}}return null}}),r(9189),r(2115)},263:(e,t,r)=>{"use strict";r.d(t,{G:()=>d,c:()=>u});var n=r(5155),i=r(2115),o=r(344),a=r(5547),l=r(3259);let s=(0,o.q6)("SidebarContext");function u(){return s.use()}function d(e){let{children:t}=e,r=(0,i.useRef)(!0),[u,d]=(0,i.useState)(!1),[c,f]=(0,i.useState)(!1),m=(0,o.a8)();return(0,l.T)(m,()=>{r.current&&d(!1),r.current=!0}),(0,n.jsx)(s.Provider,{value:(0,i.useMemo)(()=>({open:u,setOpen:d,collapsed:c,setCollapsed:f,closeOnRedirect:r}),[u,c]),children:(0,n.jsx)(a.GB,{open:u,onOpenChange:d,children:t})})}},901:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return n}});let n=r(8229)._(r(2115)).default.createContext(null)},1193:(e,t)=>{"use strict";function r(e){var t;let{config:r,src:n,width:i,quality:o}=e,a=o||(null==(t=r.qualities)?void 0:t.reduce((e,t)=>Math.abs(t-75){"use strict";r.d(t,{D:()=>u,N:()=>d});var n=r(2115),i=(e,t,r,n,i,o,a,l)=>{let s=document.documentElement,u=["light","dark"];function d(t){var r;(Array.isArray(e)?e:[e]).forEach(e=>{let r="class"===e,n=r&&o?i.map(e=>o[e]||e):i;r?(s.classList.remove(...n),s.classList.add(o&&o[t]?o[t]:t)):s.setAttribute(e,t)}),r=t,l&&u.includes(r)&&(s.style.colorScheme=r)}if(n)d(n);else try{let e=localStorage.getItem(t)||r,n=a&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;d(n)}catch(e){}},o=["light","dark"],a="(prefers-color-scheme: dark)",l=n.createContext(void 0),s={setTheme:e=>{},themes:[]},u=()=>{var e;return null!=(e=n.useContext(l))?e:s},d=e=>n.useContext(l)?n.createElement(n.Fragment,null,e.children):n.createElement(f,{...e}),c=["light","dark"],f=e=>{let{forcedTheme:t,disableTransitionOnChange:r=!1,enableSystem:i=!0,enableColorScheme:s=!0,storageKey:u="theme",themes:d=c,defaultTheme:f=i?"system":"light",attribute:y="data-theme",value:v,children:b,nonce:_,scriptProps:w}=e,[x,S]=n.useState(()=>p(u,f)),[j,C]=n.useState(()=>"system"===x?g():x),E=v?Object.values(v):d,P=n.useCallback(e=>{let t=e;if(!t)return;"system"===e&&i&&(t=g());let n=v?v[t]:t,a=r?h(_):null,l=document.documentElement,u=e=>{"class"===e?(l.classList.remove(...E),n&&l.classList.add(n)):e.startsWith("data-")&&(n?l.setAttribute(e,n):l.removeAttribute(e))};if(Array.isArray(y)?y.forEach(u):u(y),s){let e=o.includes(f)?f:null,r=o.includes(t)?t:e;l.style.colorScheme=r}null==a||a()},[_]),O=n.useCallback(e=>{let t="function"==typeof e?e(x):e;S(t);try{localStorage.setItem(u,t)}catch(e){}},[x]),k=n.useCallback(e=>{C(g(e)),"system"===x&&i&&!t&&P("system")},[x,t]);n.useEffect(()=>{let e=window.matchMedia(a);return e.addListener(k),k(e),()=>e.removeListener(k)},[k]),n.useEffect(()=>{let e=e=>{e.key===u&&(e.newValue?S(e.newValue):O(f))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[O]),n.useEffect(()=>{P(null!=t?t:x)},[t,x]);let M=n.useMemo(()=>({theme:x,setTheme:O,forcedTheme:t,resolvedTheme:"system"===x?j:x,themes:i?[...d,"system"]:d,systemTheme:i?j:void 0}),[x,O,t,j,i,d]);return n.createElement(l.Provider,{value:M},n.createElement(m,{forcedTheme:t,storageKey:u,attribute:y,enableSystem:i,enableColorScheme:s,defaultTheme:f,value:v,themes:d,nonce:_,scriptProps:w}),b)},m=n.memo(e=>{let{forcedTheme:t,storageKey:r,attribute:o,enableSystem:a,enableColorScheme:l,defaultTheme:s,value:u,themes:d,nonce:c,scriptProps:f}=e,m=JSON.stringify([o,r,s,t,d,u,a,l]).slice(1,-1);return n.createElement("script",{...f,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(i.toString(),")(").concat(m,")")}})}),p=(e,t)=>{let r;try{r=localStorage.getItem(e)||void 0}catch(e){}return r||t},h=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},g=e=>(e||(e=window.matchMedia(a)),e.matches?"dark":"light")},1469:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return s},getImageProps:function(){return l}});let n=r(8229),i=r(8883),o=r(3063),a=n._(r(1193));function l(e){let{props:t}=(0,i.getImgProps)(e,{defaultLoader:a.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs-site/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let s=o.Image},2464:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AmpStateContext",{enumerable:!0,get:function(){return n}});let n=r(8229)._(r(2115)).default.createContext({})},3063:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Image",{enumerable:!0,get:function(){return _}});let n=r(8229),i=r(6966),o=r(5155),a=i._(r(2115)),l=n._(r(7650)),s=n._(r(5564)),u=r(8883),d=r(5840),c=r(6752);r(3230);let f=r(901),m=n._(r(1193)),p=r(6654),h={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs-site/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1};function g(e,t,r,n,i,o,a){let l=null==e?void 0:e.src;e&&e["data-loaded-src"]!==l&&(e["data-loaded-src"]=l,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&i(!0),null==r?void 0:r.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let n=!1,i=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>n,isPropagationStopped:()=>i,persist:()=>{},preventDefault:()=>{n=!0,t.preventDefault()},stopPropagation:()=>{i=!0,t.stopPropagation()}})}(null==n?void 0:n.current)&&n.current(e)}}))}function y(e){return a.use?{fetchPriority:e}:{fetchpriority:e}}let v=(0,a.forwardRef)((e,t)=>{let{src:r,srcSet:n,sizes:i,height:l,width:s,decoding:u,className:d,style:c,fetchPriority:f,placeholder:m,loading:h,unoptimized:v,fill:b,onLoadRef:_,onLoadingCompleteRef:w,setBlurComplete:x,setShowAltText:S,sizesInput:j,onLoad:C,onError:E,...P}=e,O=(0,a.useCallback)(e=>{e&&(E&&(e.src=e.src),e.complete&&g(e,m,_,w,x,v,j))},[r,m,_,w,x,E,v,j]),k=(0,p.useMergedRef)(t,O);return(0,o.jsx)("img",{...P,...y(f),loading:h,width:s,height:l,decoding:u,"data-nimg":b?"fill":"1",className:d,style:c,sizes:i,srcSet:n,src:r,ref:k,onLoad:e=>{g(e.currentTarget,m,_,w,x,v,j)},onError:e=>{S(!0),"empty"!==m&&x(!0),E&&E(e)}})});function b(e){let{isAppRouter:t,imgAttributes:r}=e,n={as:"image",imageSrcSet:r.srcSet,imageSizes:r.sizes,crossOrigin:r.crossOrigin,referrerPolicy:r.referrerPolicy,...y(r.fetchPriority)};return t&&l.default.preload?(l.default.preload(r.src,n),null):(0,o.jsx)(s.default,{children:(0,o.jsx)("link",{rel:"preload",href:r.srcSet?void 0:r.src,...n},"__nimg-"+r.src+r.srcSet+r.sizes)})}let _=(0,a.forwardRef)((e,t)=>{let r=(0,a.useContext)(f.RouterContext),n=(0,a.useContext)(c.ImageConfigContext),i=(0,a.useMemo)(()=>{var e;let t=h||n||d.imageConfigDefault,r=[...t.deviceSizes,...t.imageSizes].sort((e,t)=>e-t),i=t.deviceSizes.sort((e,t)=>e-t),o=null==(e=t.qualities)?void 0:e.sort((e,t)=>e-t);return{...t,allSizes:r,deviceSizes:i,qualities:o}},[n]),{onLoad:l,onLoadingComplete:s}=e,p=(0,a.useRef)(l);(0,a.useEffect)(()=>{p.current=l},[l]);let g=(0,a.useRef)(s);(0,a.useEffect)(()=>{g.current=s},[s]);let[y,_]=(0,a.useState)(!1),[w,x]=(0,a.useState)(!1),{props:S,meta:j}=(0,u.getImgProps)(e,{defaultLoader:m.default,imgConf:i,blurComplete:y,showAltText:w});return(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(v,{...S,unoptimized:j.unoptimized,placeholder:j.placeholder,fill:j.fill,onLoadRef:p,onLoadingCompleteRef:g,setBlurComplete:_,setShowAltText:x,sizesInput:e.sizes,ref:t}),j.priority?(0,o.jsx)(b,{isAppRouter:!r,imgAttributes:S}):null]})});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3259:(e,t,r)=>{"use strict";r.d(t,{T:()=>n.T});var n=r(5936);r(9189)},3834:(e,t,r)=>{"use strict";r.d(t,{RootProvider:()=>w});var n=r(5155),i=r(1362),o=r(2115),a=r(4315),l=r(263),s=r(8169),u=r(8265),d=r(9697),c=r(344);let f=(0,o.lazy)(()=>Promise.all([r.e(534),r.e(920),r.e(477)]).then(r.bind(r,477)));function m(e){let{children:t,dir:r="ltr",theme:o={},search:u,i18n:d}=e,c=t;return(null==u?void 0:u.enabled)!==!1&&(c=(0,n.jsx)(s.YL,{SearchDialog:f,...u,children:c})),(null==o?void 0:o.enabled)!==!1&&(c=(0,n.jsx)(i.N,{attribute:"class",defaultTheme:"system",enableSystem:!0,disableTransitionOnChange:!0,...o,children:c})),d&&(c=(0,n.jsx)(p,{...d,children:c})),(0,n.jsx)(a.FX,{dir:r,children:(0,n.jsx)(l.G,{children:c})})}function p(e){let{locales:t=[],locale:r,onLocaleChange:i,...a}=e,l=(0,c.rd)(),s=(0,c.a8)(),f=(0,u.J)(e=>{if(i)return i(e);let t=s.split("/").filter(e=>e.length>0);t[0]!==r?t.unshift(e):t[0]=e,l.push("/".concat(t.join("/"))),l.refresh()});return(0,n.jsx)(d.gJ.Provider,{value:(0,o.useMemo)(()=>({locale:r,locales:t,text:{...d.Cr,...a.translations},onChange:f}),[r,t,f,a.translations]),children:a.children})}var h=r(9600);r(9189);var g=r(8999),y=r(6874),v=r(1469),b=r.n(v);function _(e){let{children:t}=e;return(0,n.jsx)(h.Uy,{usePathname:g.usePathname,useRouter:g.useRouter,useParams:g.useParams,Link:y,Image:b(),children:t})}function w(e){return(0,n.jsx)(_,{children:(0,n.jsx)(m,{...e,children:e.children})})}r(8693),r(1339)},5029:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(2115),i=n.useLayoutEffect,o=n.useEffect;function a(e){let{headManager:t,reduceComponentsToState:r}=e;function a(){if(t&&t.mountedInstances){let i=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(i,e))}}return i(()=>{var r;return null==t||null==(r=t.mountedInstances)||r.add(e.children),()=>{var r;null==t||null==(r=t.mountedInstances)||r.delete(e.children)}}),i(()=>(t&&(t._pendingUpdate=a),()=>{t&&(t._pendingUpdate=a)})),o(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},5100:(e,t)=>{"use strict";function r(e){let{widthInt:t,heightInt:r,blurWidth:n,blurHeight:i,blurDataURL:o,objectFit:a}=e,l=n?40*n:t,s=i?40*i:r,u=l&&s?"viewBox='0 0 "+l+" "+s+"'":"";return"%3Csvg xmlns='http://www.w3.org/2000/svg' "+u+"%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='"+(u?"none":"contain"===a?"xMidYMid":"cover"===a?"xMidYMid slice":"none")+"' style='filter: url(%23b);' href='"+o+"'/%3E%3C/svg%3E"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImageBlurSvg",{enumerable:!0,get:function(){return r}})},5299:e=>{e.exports={style:{fontFamily:"'Inter', 'Inter Fallback'",fontStyle:"normal"},className:"__className_62dcf0"}},5547:(e,t,r)=>{"use strict";r.d(t,{GB:()=>s,Pg:()=>d,x2:()=>u}),r(9189);var n=r(2115),i=r(3795),o=r(5155),a=(0,n.createContext)(null);function l(){let e=(0,n.useContext)(a);if(!e)throw Error("Missing sidebar provider");return e}function s(e){let[t,r]=void 0===e.open?(0,n.useState)(!1):[e.open,e.onOpenChange];return(0,o.jsx)(a.Provider,{value:(0,n.useMemo)(()=>({open:t,setOpen:null!=r?r:()=>void 0}),[t,r]),children:e.children})}function u(e){let{as:t,...r}=e,{open:n,setOpen:i}=l();return(0,o.jsx)(null!=t?t:"button",{"aria-label":"Toggle Sidebar","data-open":n,onClick:()=>{i(!n)},...r})}function d(e){let{as:t,blockScrollingWidth:r,removeScrollOn:a=r?"(width < ".concat(r,"px)"):void 0,...s}=e,{open:u}=l(),[d,c]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{if(!a)return;let e=window.matchMedia(a),t=()=>{c(e.matches)};return t(),e.addEventListener("change",t),()=>{e.removeEventListener("change",t)}},[a]),(0,o.jsx)(i.A,{as:null!=t?t:"aside","data-open":u,enabled:!!(d&&u),...s,children:s.children})}},5564:(e,t,r)=>{"use strict";var n=r(9509);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return g},defaultHead:function(){return f}});let i=r(8229),o=r(6966),a=r(5155),l=o._(r(2115)),s=i._(r(5029)),u=r(2464),d=r(2830),c=r(7544);function f(e){void 0===e&&(e=!1);let t=[(0,a.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,a.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function m(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(3230);let p=["name","httpEquiv","charSet","itemProp"];function h(e,t){let{inAmpMode:r}=t;return e.reduce(m,[]).reverse().concat(f(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return i=>{let o=!0,a=!1;if(i.key&&"number"!=typeof i.key&&i.key.indexOf("$")>0){a=!0;let t=i.key.slice(i.key.indexOf("$")+1);e.has(t)?o=!1:e.add(t)}switch(i.type){case"title":case"base":t.has(i.type)?o=!1:t.add(i.type);break;case"meta":for(let e=0,t=p.length;e{let i=e.key||t;if(n.env.__NEXT_OPTIMIZE_FONTS&&!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,l.default.cloneElement(e,t)}return l.default.cloneElement(e,{key:i})})}let g=function(e){let{children:t}=e,r=(0,l.useContext)(u.AmpStateContext),n=(0,l.useContext)(d.HeadManagerContext);return(0,a.jsx)(s.default,{reduceComponentsToState:h,headManager:n,inAmpMode:(0,c.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5840:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{VALID_LOADERS:function(){return r},imageConfigDefault:function(){return n}});let r=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:void 0,unoptimized:!1}},5936:(e,t,r)=>{"use strict";r.d(t,{T:()=>i});var n=r(2115);function i(e,t,r=function e(t,r){if(Array.isArray(t)&&Array.isArray(r))return r.length!==t.length||t.some((t,n)=>e(t,r[n]));if("object"==typeof t&&t&&"object"==typeof r&&r){let n=Object.keys(t),i=Object.keys(r);return n.length!==i.length||n.some(n=>e(t[n],r[n]))}return t!==r}){let[o,a]=(0,n.useState)(e);r(o,e)&&(t(e,o),a(e))}},6752:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageConfigContext",{enumerable:!0,get:function(){return o}});let n=r(8229)._(r(2115)),i=r(5840),o=n.default.createContext(i.imageConfigDefault)},7544:(e,t)=>{"use strict";function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},8169:(e,t,r)=>{"use strict";r.d(t,{$A:()=>a,YL:()=>s});var n=r(5155),i=r(2115);let o=(0,r(344).q6)("SearchContext",{enabled:!1,hotKey:[],setOpenSearch:()=>void 0});function a(){return o.use()}function l(){let[e,t]=(0,i.useState)("⌘");return(0,i.useEffect)(()=>{window.navigator.userAgent.includes("Windows")&&t("Ctrl")},[]),e}function s(e){let{SearchDialog:t,children:r,preload:a=!0,options:s,hotKey:u=[{key:e=>e.metaKey||e.ctrlKey,display:(0,n.jsx)(l,{})},{key:"k",display:"K"}],links:d}=e,[c,f]=(0,i.useState)(!a&&void 0);return(0,i.useEffect)(()=>{let e=e=>{u.every(t=>"string"==typeof t.key?e.key===t.key:t.key(e))&&(f(!0),e.preventDefault())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[u]),(0,n.jsxs)(o.Provider,{value:(0,i.useMemo)(()=>({enabled:!0,hotKey:u,setOpenSearch:f}),[u]),children:[void 0!==c&&(0,n.jsx)(t,{open:c,onOpenChange:f,links:d,...s}),r]})}},8265:(e,t,r)=>{"use strict";r.d(t,{J:()=>i}),r(9189);var n=r(2115);function i(e){let t=(0,n.useRef)(e);return t.current=e,(0,n.useCallback)(function(){for(var e=arguments.length,r=Array(e),n=0;n{"use strict";r.d(t,{L:()=>d,TreeContextProvider:()=>u,t:()=>c});var n=r(5155),i=r(344),o=r(2115),a=r(244);let l=(0,i.q6)("TreeContext"),s=(0,i.q6)("PathContext",[]);function u(e){var t,r,u;let d=(0,o.useRef)(0),c=(0,i.a8)(),f=(0,o.useMemo)(()=>e.tree,[null!=(t=e.tree.$id)?t:e.tree]),m=(0,o.useMemo)(()=>{var e;return null!=(e=(0,a.oe)(f.children,c))?e:[]},[f,c]),p=null!=(r=m.findLast(e=>"folder"===e.type&&e.root))?r:f;return null!=p.$id||(p.$id=String(d.current++)),(0,n.jsx)(l.Provider,{value:(0,o.useMemo)(()=>({root:p}),[p]),children:(0,n.jsx)(s.Provider,{value:m,children:e.children})})}function d(){return s.use()}function c(){return l.use("You must wrap this component under ")}},8883:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getImgProps",{enumerable:!0,get:function(){return s}}),r(3230);let n=r(5100),i=r(5840),o=["-moz-initial","fill","none","scale-down",void 0];function a(e){return void 0!==e.default}function l(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function s(e,t){var r,s;let u,d,c,{src:f,sizes:m,unoptimized:p=!1,priority:h=!1,loading:g,className:y,quality:v,width:b,height:_,fill:w=!1,style:x,overrideSrc:S,onLoad:j,onLoadingComplete:C,placeholder:E="empty",blurDataURL:P,fetchPriority:O,decoding:k="async",layout:M,objectFit:R,objectPosition:T,lazyBoundary:A,lazyRoot:z,...I}=e,{imgConf:L,showAltText:D,blurComplete:N,defaultLoader:F}=t,G=L||i.imageConfigDefault;if("allSizes"in G)u=G;else{let e=[...G.deviceSizes,...G.imageSizes].sort((e,t)=>e-t),t=G.deviceSizes.sort((e,t)=>e-t),n=null==(r=G.qualities)?void 0:r.sort((e,t)=>e-t);u={...G,allSizes:e,deviceSizes:t,qualities:n}}if(void 0===F)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let U=I.loader||F;delete I.loader,delete I.srcSet;let q="__next_img_default"in U;if(q){if("custom"===u.loader)throw Object.defineProperty(Error('Image with src "'+f+'" is missing "loader" prop.\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader'),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=U;U=t=>{let{config:r,...n}=t;return e(n)}}if(M){"fill"===M&&(w=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[M];e&&(x={...x,...e});let t={responsive:"100vw",fill:"100vw"}[M];t&&!m&&(m=t)}let W="",B=l(b),K=l(_);if((s=f)&&"object"==typeof s&&(a(s)||void 0!==s.src)){let e=a(f)?f.default:f;if(!e.src)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!e.height||!e.width)throw Object.defineProperty(Error("An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received "+JSON.stringify(e)),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(d=e.blurWidth,c=e.blurHeight,P=P||e.blurDataURL,W=e.src,!w)if(B||K){if(B&&!K){let t=B/e.width;K=Math.round(e.height*t)}else if(!B&&K){let t=K/e.height;B=Math.round(e.width*t)}}else B=e.width,K=e.height}let V=!h&&("lazy"===g||void 0===g);(!(f="string"==typeof f?f:W)||f.startsWith("data:")||f.startsWith("blob:"))&&(p=!0,V=!1),u.unoptimized&&(p=!0),q&&!u.dangerouslyAllowSVG&&f.split("?",1)[0].endsWith(".svg")&&(p=!0);let $=l(v),H=Object.assign(w?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:R,objectPosition:T}:{},D?{}:{color:"transparent"},x),J=N||"empty"===E?null:"blur"===E?'url("data:image/svg+xml;charset=utf-8,'+(0,n.getImageBlurSvg)({widthInt:B,heightInt:K,blurWidth:d,blurHeight:c,blurDataURL:P||"",objectFit:H.objectFit})+'")':'url("'+E+'")',X=o.includes(H.objectFit)?"fill"===H.objectFit?"100% 100%":"cover":H.objectFit,Y=J?{backgroundSize:X,backgroundPosition:H.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:J}:{},Z=function(e){let{config:t,src:r,unoptimized:n,width:i,quality:o,sizes:a,loader:l}=e;if(n)return{src:r,srcSet:void 0,sizes:void 0};let{widths:s,kind:u}=function(e,t,r){let{deviceSizes:n,allSizes:i}=e;if(r){let e=/(^|\s)(1?\d?\d)vw/g,t=[];for(let n;n=e.exec(r);)t.push(parseInt(n[2]));if(t.length){let e=.01*Math.min(...t);return{widths:i.filter(t=>t>=n[0]*e),kind:"w"}}return{widths:i,kind:"w"}}return"number"!=typeof t?{widths:n,kind:"w"}:{widths:[...new Set([t,2*t].map(e=>i.find(t=>t>=e)||i[i.length-1]))],kind:"x"}}(t,i,a),d=s.length-1;return{sizes:a||"w"!==u?a:"100vw",srcSet:s.map((e,n)=>l({config:t,src:r,quality:o,width:e})+" "+("w"===u?e:n+1)+u).join(", "),src:l({config:t,src:r,quality:o,width:s[d]})}}({config:u,src:f,unoptimized:p,width:B,quality:$,sizes:m,loader:U});return{props:{...I,loading:V?"lazy":g,fetchPriority:O,width:B,height:K,decoding:k,className:y,style:{...H,...Y},sizes:Z.sizes,srcSet:Z.srcSet,src:S||Z.src},meta:{unoptimized:p,priority:h,placeholder:E,fill:w}}}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/318-23c47eb018ec8a69.js b/docs/_next/static/chunks/318-23c47eb018ec8a69.js deleted file mode 100644 index 67876725..00000000 --- a/docs/_next/static/chunks/318-23c47eb018ec8a69.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[318],{5455:(e,t,r)=>{r.d(t,{$:()=>n});function n(e,t,r=!0){return e.endsWith("/")&&(e=e.slice(0,-1)),t.endsWith("/")&&(t=t.slice(0,-1)),e===t||r&&t.startsWith(`${e}/`)}},7328:(e,t,r)=>{function n(e,t,r){if(!t.has(e))throw TypeError("attempted to "+r+" private field on non-instance");return t.get(e)}function l(e,t){var r=n(e,t,"get");return r.get?r.get.call(e):r.value}function a(e,t,r){var l=n(e,t,"set");if(l.set)l.set.call(e,r);else{if(!l.writable)throw TypeError("attempted to set read only private field");l.value=r}return r}r.d(t,{N:()=>d});var o,i=r(2115),u=r(6081),c=r(6101),f=r(9708),s=r(5155);function d(e){let t=e+"CollectionProvider",[r,n]=(0,u.A)(t),[l,a]=r(t,{collectionRef:{current:null},itemMap:new Map}),o=e=>{let{scope:t,children:r}=e,n=i.useRef(null),a=i.useRef(new Map).current;return(0,s.jsx)(l,{scope:t,itemMap:a,collectionRef:n,children:r})};o.displayName=t;let d=e+"CollectionSlot",p=(0,f.TL)(d),m=i.forwardRef((e,t)=>{let{scope:r,children:n}=e,l=a(d,r),o=(0,c.s)(t,l.collectionRef);return(0,s.jsx)(p,{ref:o,children:n})});m.displayName=d;let h=e+"CollectionItemSlot",v="data-radix-collection-item",y=(0,f.TL)(h),w=i.forwardRef((e,t)=>{let{scope:r,children:n,...l}=e,o=i.useRef(null),u=(0,c.s)(t,o),f=a(h,r);return i.useEffect(()=>(f.itemMap.set(o,{ref:o,...l}),()=>void f.itemMap.delete(o))),(0,s.jsx)(y,{...{[v]:""},ref:u,children:n})});return w.displayName=h,[{Provider:o,Slot:m,ItemSlot:w},function(t){let r=a(e+"CollectionConsumer",t);return i.useCallback(()=>{let e=r.collectionRef.current;if(!e)return[];let t=Array.from(e.querySelectorAll("[".concat(v,"]")));return Array.from(r.itemMap.values()).sort((e,r)=>t.indexOf(e.ref.current)-t.indexOf(r.ref.current))},[r.collectionRef,r.itemMap])},n]}var p=new WeakMap;function m(e,t){if("at"in Array.prototype)return Array.prototype.at.call(e,t);let r=function(e,t){let r=e.length,n=h(t),l=n>=0?n:r+n;return l<0||l>=r?-1:l}(e,t);return -1===r?void 0:e[r]}function h(e){return e!=e||0===e?0:Math.trunc(e)}o=new WeakMap},9949:(e,t,r)=>{r.r(t),r.d(t,{default:()=>o});var n=r(9600),l=r(2115),a=r(5155),o=(0,l.forwardRef)(({href:e="#",external:t=!(e.startsWith("/")||e.startsWith("#")||e.startsWith(".")),prefetch:r,...l},o)=>t?(0,a.jsx)("a",{ref:o,href:e,rel:"noreferrer noopener",target:"_blank",...l,children:l.children}):(0,a.jsx)(n.N_,{ref:o,href:e,prefetch:r,...l}));o.displayName="Link",r(9189)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/323.3d40b3f10e4f6645.js b/docs/_next/static/chunks/323.3d40b3f10e4f6645.js deleted file mode 100644 index e06acf52..00000000 --- a/docs/_next/static/chunks/323.3d40b3f10e4f6645.js +++ /dev/null @@ -1,10 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[323],{323:(e,t,r)=>{r.d(t,{createStaticClient:()=>tm});var n=r(3522);let o={arabic:"ar",armenian:"am",bulgarian:"bg",czech:"cz",danish:"dk",dutch:"nl",english:"en",finnish:"fi",french:"fr",german:"de",greek:"gr",hungarian:"hu",indian:"in",indonesian:"id",irish:"ie",italian:"it",lithuanian:"lt",nepali:"np",norwegian:"no",portuguese:"pt",romanian:"ro",russian:"ru",serbian:"rs",slovenian:"ru",spanish:"es",swedish:"se",tamil:"ta",turkish:"tr",ukrainian:"uk",sanskrit:"sk"},i={dutch:/[^A-Za-zàèéìòóù0-9_'-]+/gim,english:/[^A-Za-zàèéìòóù0-9_'-]+/gim,french:/[^a-z0-9äâàéèëêïîöôùüûœç-]+/gim,italian:/[^A-Za-zàèéìòóù0-9_'-]+/gim,norwegian:/[^a-z0-9_æøåÆØÅäÄöÖüÜ]+/gim,portuguese:/[^a-z0-9à-úÀ-Ú]/gim,russian:/[^a-z0-9а-яА-ЯёЁ]+/gim,spanish:/[^a-z0-9A-Zá-úÁ-ÚñÑüÜ]+/gim,swedish:/[^a-z0-9_åÅäÄöÖüÜ-]+/gim,german:/[^a-z0-9A-ZäöüÄÖÜß]+/gim,finnish:/[^a-z0-9äöÄÖ]+/gim,danish:/[^a-z0-9æøåÆØÅ]+/gim,hungarian:/[^a-z0-9áéíóöőúüűÁÉÍÓÖŐÚÜŰ]+/gim,romanian:/[^a-z0-9ăâîșțĂÂÎȘȚ]+/gim,serbian:/[^a-z0-9čćžšđČĆŽŠĐ]+/gim,turkish:/[^a-z0-9çÇğĞıİöÖşŞüÜ]+/gim,lithuanian:/[^a-z0-9ąčęėįšųūžĄČĘĖĮŠŲŪŽ]+/gim,arabic:/[^a-z0-9أ-ي]+/gim,nepali:/[^a-z0-9अ-ह]+/gim,irish:/[^a-z0-9áéíóúÁÉÍÓÚ]+/gim,indian:/[^a-z0-9अ-ह]+/gim,armenian:/[^a-z0-9ա-ֆ]+/gim,greek:/[^a-z0-9α-ωά-ώ]+/gim,indonesian:/[^a-z0-9]+/gim,ukrainian:/[^a-z0-9а-яА-ЯіїєІЇЄ]+/gim,slovenian:/[^a-z0-9螚ȎŠ]+/gim,bulgarian:/[^a-z0-9а-яА-Я]+/gim,tamil:/[^a-z0-9அ-ஹ]+/gim,sanskrit:/[^a-z0-9A-Zāīūṛḷṃṁḥśṣṭḍṇṅñḻḹṝ]+/gim,czech:/[^A-Z0-9a-zěščřžýáíéúůóťďĚŠČŘŽÝÁÍÉÓÚŮŤĎ-]+/gim},s=Object.keys(o);var a=r(9509);let l=Date.now().toString().slice(5),u=0,c=BigInt(1e3),f=BigInt(1e6),d=BigInt(1e9);function h(e,t){if(t.length<65535)Array.prototype.push.apply(e,t);else{let r=t.length;for(let n=0;n({...e,document:{...e.document,...t.reduce((e,t)=>{let r=t.split("."),n=r.pop(),o=e;for(let e of r)o[e]=o[e]??{},o=o[e];return o[n]=null,e},e.document)}}))}function N(e){return Array.isArray(e)?e.some(e=>N(e)):e?.constructor?.name==="AsyncFunction"}let D="intersection"in new Set,v="union"in new Set;function _(e,t){return v?e?e.union(t):t:new Set(e?[...e,...t]:t)}let A=s.join("\n - "),E={NO_LANGUAGE_WITH_CUSTOM_TOKENIZER:"Do not pass the language option to create when using a custom tokenizer.",LANGUAGE_NOT_SUPPORTED:`Language "%s" is not supported. -Supported languages are: - - ${A}`,INVALID_STEMMER_FUNCTION_TYPE:"config.stemmer property must be a function.",MISSING_STEMMER:'As of version 1.0.0 @orama/orama does not ship non English stemmers by default. To solve this, please explicitly import and specify the "%s" stemmer from the package @orama/stemmers. See https://docs.orama.com/open-source/text-analysis/stemming for more information.',CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY:"Custom stop words array must only contain strings.",UNSUPPORTED_COMPONENT:'Unsupported component "%s".',COMPONENT_MUST_BE_FUNCTION:'The component "%s" must be a function.',COMPONENT_MUST_BE_FUNCTION_OR_ARRAY_FUNCTIONS:'The component "%s" must be a function or an array of functions.',INVALID_SCHEMA_TYPE:'Unsupported schema type "%s" at "%s". Expected "string", "boolean" or "number" or array of them.',DOCUMENT_ID_MUST_BE_STRING:'Document id must be of type "string". Got "%s" instead.',DOCUMENT_ALREADY_EXISTS:'A document with id "%s" already exists.',DOCUMENT_DOES_NOT_EXIST:'A document with id "%s" does not exists.',MISSING_DOCUMENT_PROPERTY:'Missing searchable property "%s".',INVALID_DOCUMENT_PROPERTY:'Invalid document property "%s": expected "%s", got "%s"',UNKNOWN_INDEX:'Invalid property name "%s". Expected a wildcard string ("*") or array containing one of the following properties: %s',INVALID_BOOST_VALUE:"Boost value must be a number greater than, or less than 0.",INVALID_FILTER_OPERATION:"You can only use one operation per filter, you requested %d.",SCHEMA_VALIDATION_FAILURE:'Cannot insert document due schema validation failure on "%s" property.',INVALID_SORT_SCHEMA_TYPE:'Unsupported sort schema type "%s" at "%s". Expected "string" or "number".',CANNOT_SORT_BY_ARRAY:'Cannot configure sort for "%s" because it is an array (%s).',UNABLE_TO_SORT_ON_UNKNOWN_FIELD:'Unable to sort on unknown field "%s". Allowed fields: %s',SORT_DISABLED:"Sort is disabled. Please read the documentation at https://docs.oramasearch for more information.",UNKNOWN_GROUP_BY_PROPERTY:'Unknown groupBy property "%s".',INVALID_GROUP_BY_PROPERTY:'Invalid groupBy property "%s". Allowed types: "%s", but given "%s".',UNKNOWN_FILTER_PROPERTY:'Unknown filter property "%s".',INVALID_VECTOR_SIZE:'Vector size must be a number greater than 0. Got "%s" instead.',INVALID_VECTOR_VALUE:'Vector value must be a number greater than 0. Got "%s" instead.',INVALID_INPUT_VECTOR:`Property "%s" was declared as a %s-dimensional vector, but got a %s-dimensional vector instead. -Input vectors must be of the size declared in the schema, as calculating similarity between vectors of different sizes can lead to unexpected results.`,WRONG_SEARCH_PROPERTY_TYPE:'Property "%s" is not searchable. Only "string" properties are searchable.',FACET_NOT_SUPPORTED:'Facet doens\'t support the type "%s".',INVALID_DISTANCE_SUFFIX:'Invalid distance suffix "%s". Valid suffixes are: cm, m, km, mi, yd, ft.',INVALID_SEARCH_MODE:'Invalid search mode "%s". Valid modes are: "fulltext", "vector", "hybrid".',MISSING_VECTOR_AND_SECURE_PROXY:"No vector was provided and no secure proxy was configured. Please provide a vector or configure an Orama Secure Proxy to perform hybrid search.",MISSING_TERM:'"term" is a required parameter when performing hybrid search. Please provide a search term.',INVALID_VECTOR_INPUT:'Invalid "vector" property. Expected an object with "value" and "property" properties, but got "%s" instead.',PLUGIN_CRASHED:"A plugin crashed during initialization. Please check the error message for more information:",PLUGIN_SECURE_PROXY_NOT_FOUND:`Could not find '@orama/secure-proxy-plugin' installed in your Orama instance. -Please install it before proceeding with creating an answer session. -Read more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy -`,PLUGIN_SECURE_PROXY_MISSING_CHAT_MODEL:`Could not find a chat model defined in the secure proxy plugin configuration. -Please provide a chat model before proceeding with creating an answer session. -Read more at https://docs.orama.com/open-source/plugins/plugin-secure-proxy#plugin-secure-proxy -`,ANSWER_SESSION_LAST_MESSAGE_IS_NOT_ASSISTANT:"The last message in the session is not an assistant message. Cannot regenerate non-assistant messages.",PLUGIN_COMPONENT_CONFLICT:'The component "%s" is already defined. The plugin "%s" is trying to redefine it.'};function k(e,...t){let r=Error(function(e,...t){return e.replace(/%(?:(?\d+)\$)?(?-?\d*\.?\d*)(?[dfs])/g,function(...e){let{width:r,type:n,position:o}=e[e.length-1],i=o?t[Number.parseInt(o)-1]:t.shift(),s=""===r?0:Number.parseInt(r);switch(n){case"d":return i.toString().padStart(s,"0");case"f":{let e=i,[t,n]=r.split(".").map(e=>Number.parseFloat(e));return"number"==typeof n&&n>=0&&(e=e.toFixed(n)),"number"==typeof t&&t>=0?e.toString().padStart(s,"0"):e.toString()}case"s":return s<0?i.toString().padEnd(-s," "):i.toString().padStart(s," ");default:return i}})}(E[e]??`Unsupported Orama Error code: ${e}`,...t));return r.code=e,"captureStackTrace"in Error.prototype&&Error.captureStackTrace(r),r}function P(e){return{raw:Number(e),formatted:g(e)}}function x(e){if(e.id){if("string"!=typeof e.id)throw k("DOCUMENT_ID_MUST_BE_STRING",typeof e.id);return e.id}return y()}let R={string:!1,number:!1,boolean:!1,enum:!1,geopoint:!1,"string[]":!0,"number[]":!0,"boolean[]":!0,"enum[]":!0},M={"string[]":"string","number[]":"number","boolean[]":"boolean","enum[]":"enum"};function C(e){return"string"==typeof e&&/^vector\[\d+\]$/.test(e)}function z(e){return"string"==typeof e&&R[e]}function U(e){let t=Number(e.slice(7,-1));switch(!0){case isNaN(t):throw k("INVALID_VECTOR_VALUE",e);case t<=0:throw k("INVALID_VECTOR_SIZE",e);default:return t}}function L(e){return{internalIdToId:e.internalIdToId}}function B(e,t){let{internalIdToId:r}=t;e.internalDocumentIDStore.idToInternalId.clear(),e.internalDocumentIDStore.internalIdToId=[];let n=r.length;for(let t=0;te.internalIdToId.length?V(e,t.toString()):t}function F(e,t){if(e.internalIdToId.length{for(let i of e)await i(t,r,n,o)})();for(let i of e)i(t,r,n,o)}function et(e,t,r,n){if(e.some(N))return(async()=>{for(let o of e)await o(t,r,n)})();for(let o of e)o(t,r,n)}class er{k;v;l=null;r=null;h=1;constructor(e,t){this.k=e,this.v=new Set(t)}updateHeight(){this.h=Math.max(er.getHeight(this.l),er.getHeight(this.r))+1}static getHeight(e){return e?e.h:0}getBalanceFactor(){return er.getHeight(this.l)-er.getHeight(this.r)}rotateLeft(){let e=this.r;return this.r=e.l,e.l=this,this.updateHeight(),e.updateHeight(),e}rotateRight(){let e=this.l;return this.l=e.r,e.r=this,this.updateHeight(),e.updateHeight(),e}toJSON(){return{k:this.k,v:Array.from(this.v),l:this.l?this.l.toJSON():null,r:this.r?this.r.toJSON():null,h:this.h}}static fromJSON(e){let t=new er(e.k,e.v);return t.l=e.l?er.fromJSON(e.l):null,t.r=e.r?er.fromJSON(e.r):null,t.h=e.h,t}}class en{root=null;insertCount=0;constructor(e,t){void 0!==e&&void 0!==t&&(this.root=new er(e,t))}insert(e,t,r=1e3){this.root=this.insertNode(this.root,e,t,r)}insertMultiple(e,t,r=1e3){for(let n of t)this.insert(e,n,r)}rebalance(){this.root&&(this.root=this.rebalanceNode(this.root))}toJSON(){return{root:this.root?this.root.toJSON():null,insertCount:this.insertCount}}static fromJSON(e){let t=new en;return t.root=e.root?er.fromJSON(e.root):null,t.insertCount=e.insertCount||0,t}insertNode(e,t,r,n){if(null===e)return new er(t,[r]);let o=[],i=e,s=null;for(;null!==i;)if(o.push({parent:s,node:i}),ti.k))return i.v.add(r),e;else if(null===i.r){i.r=new er(t,[r]),o.push({parent:i,node:i.r});break}else s=i,i=i.r;let a=!1;this.insertCount++%n==0&&(a=!0);for(let t=o.length-1;t>=0;t--){let{parent:r,node:n}=o[t];if(n.updateHeight(),a){let t=this.rebalanceNode(n);r?r.l===n?r.l=t:r.r===n&&(r.r=t):e=t}}return e}rebalanceNode(e){let t=e.getBalanceFactor();if(t>1){if(e.l&&e.l.getBalanceFactor()>=0)return e.rotateRight();else if(e.l)return e.l=e.l.rotateLeft(),e.rotateRight()}if(t<-1){if(e.r&&0>=e.r.getBalanceFactor())return e.rotateLeft();else if(e.r)return e.r=e.r.rotateRight(),e.rotateLeft()}return e}find(e){let t=this.findNodeByKey(e);return t?t.v:null}contains(e){return null!==this.find(e)}getSize(){let e=0,t=[],r=this.root;for(;r||t.length>0;){for(;r;)t.push(r),r=r.l;r=t.pop(),e++,r=r.r}return e}isBalanced(){if(!this.root)return!0;let e=[this.root];for(;e.length>0;){let t=e.pop();if(Math.abs(t.getBalanceFactor())>1)return!1;t.l&&e.push(t.l),t.r&&e.push(t.r)}return!0}remove(e){this.root=this.removeNode(this.root,e)}removeDocument(e,t){let r=this.findNodeByKey(e);r&&(1===r.v.size?this.root=this.removeNode(this.root,e):r.v=new Set([...r.v.values()].filter(e=>e!==t)))}findNodeByKey(e){let t=this.root;for(;t;)if(et.k))return t;t=t.r}return null}removeNode(e,t){if(null===e)return null;let r=[],n=e;for(;null!==n&&n.k!==t;)r.push(n),n=t=0;t--){let n=r[t];n.updateHeight();let o=this.rebalanceNode(n);if(t>0){let e=r[t-1];e.l===n?e.l=o:e.r===n&&(e.r=o)}else e=o}return e}rangeSearch(e,t){let r=new Set,n=[],o=this.root;for(;o||n.length>0;){for(;o;)n.push(o),o=o.l;if((o=n.pop()).k>=e&&o.k<=t&&(r=_(r,o.v)),o.k>t)break;o=o.r}return r}greaterThan(e,t=!1){let r=new Set,n=[],o=this.root;for(;o||n.length>0;){for(;o;)n.push(o),o=o.r;if(o=n.pop(),t&&o.k>=e||!t&&o.k>e)r=_(r,o.v);else if(o.k<=e)break;o=o.l}return r}lessThan(e,t=!1){let r=new Set,n=[],o=this.root;for(;o||n.length>0;){for(;o;)n.push(o),o=o.l;if(o=n.pop(),t&&o.k<=e||!t&&o.ke)break;o=o.r}return r}}class eo{numberToDocumentId;constructor(){this.numberToDocumentId=new Map}insert(e,t){this.numberToDocumentId.has(e)?this.numberToDocumentId.get(e).add(t):this.numberToDocumentId.set(e,new Set([t]))}find(e){let t=this.numberToDocumentId.get(e);return t?Array.from(t):null}remove(e){this.numberToDocumentId.delete(e)}removeDocument(e,t){let r=this.numberToDocumentId.get(t);r&&(r.delete(e),0===r.size&&this.numberToDocumentId.delete(t))}contains(e){return this.numberToDocumentId.has(e)}getSize(){let e=0;for(let t of this.numberToDocumentId.values())e+=t.size;return e}filter(e){let t=Object.keys(e);if(1!==t.length)throw Error("Invalid operation");let r=t[0];switch(r){case"eq":{let t=e[r],n=this.numberToDocumentId.get(t);return n?Array.from(n):[]}case"in":{let t=e[r],n=new Set;for(let e of t){let t=this.numberToDocumentId.get(e);if(t)for(let e of t)n.add(e)}return Array.from(n)}case"nin":{let t=new Set(e[r]),n=new Set;for(let[e,r]of this.numberToDocumentId.entries())if(!t.has(e))for(let e of r)n.add(e);return Array.from(n)}default:throw Error("Invalid operation")}}filterArr(e){let t=Object.keys(e);if(1!==t.length)throw Error("Invalid operation");let r=t[0];switch(r){case"containsAll":{let t=e[r].map(e=>this.numberToDocumentId.get(e)??new Set);if(0===t.length)return[];return Array.from(t.reduce((e,t)=>new Set([...e].filter(e=>t.has(e)))))}case"containsAny":{let t=e[r].map(e=>this.numberToDocumentId.get(e)??new Set);if(0===t.length)return[];return Array.from(t.reduce((e,t)=>new Set([...e,...t])))}default:throw Error("Invalid operation")}}static fromJSON(e){if(!e.numberToDocumentId)throw Error("Invalid Flat Tree JSON");let t=new eo;for(let[r,n]of e.numberToDocumentId)t.numberToDocumentId.set(r,new Set(n));return t}toJSON(){return{numberToDocumentId:Array.from(this.numberToDocumentId.entries()).map(([e,t])=>[e,Array.from(t)])}}}function ei(e,t,r){let n=function(e,t,r){if(r<0)return -1;if(e===t)return 0;let n=e.length,o=t.length;if(0===n)return o<=r?o:-1;if(0===o)return n<=r?n:-1;let i=Math.abs(n-o);if(e.startsWith(t))return i<=r?i:-1;if(t.startsWith(e))return 0;if(i>r)return -1;let s=[];for(let e=0;e<=n;e++){s[e]=[e];for(let t=1;t<=o;t++)s[e][t]=0===e?t:0}for(let i=1;i<=n;i++){let n=1/0;for(let r=1;r<=o;r++)e[i-1]===t[r-1]?s[i][r]=s[i-1][r-1]:s[i][r]=Math.min(s[i-1][r]+1,s[i][r-1]+1,s[i-1][r-1]+1),n=Math.min(n,s[i][r]);if(n>r)return -1}return s[n][o]<=r?s[n][o]:-1}(e,t,r);return{distance:n,isBounded:n>=0}}class es{k;s;c=new Map;d=new Set;e;w="";constructor(e,t,r){this.k=e,this.s=t,this.e=r}updateParent(e){this.w=e.w+this.s}addDocument(e){this.d.add(e)}removeDocument(e){return this.d.delete(e)}findAllWords(e,t,r,n){let o=[this];for(;o.length>0;){let i=o.pop();if(i.e){let{w:o,d:s}=i;if(r&&o!==t)continue;if(null!==b(e,o))if(n){if(!(Math.abs(t.length-o.length)<=n)||!ei(t,o,n).isBounded)continue;e[o]=[]}else e[o]=[];if(null!=b(e,o)&&s.size>0){let t=e[o];for(let e of s)t.includes(e)||t.push(e)}}i.c.size>0&&o.push(...i.c.values())}return e}insert(e,t){let r=this,n=0,o=e.length;for(;n0;){let{node:t,index:r,tolerance:s}=i.pop();if(t.w.startsWith(e)){t.findAllWords(o,e,!1,0);continue}if(s<0)continue;if(t.e){let{w:r,d:i}=t;if(r&&(ei(e,r,n).isBounded&&(o[r]=[]),void 0!==b(o,r)&&i.size>0)){let e=new Set(o[r]);for(let t of i)e.add(t);o[r]=Array.from(e)}}if(r>=e.length)continue;let a=e[r];if(t.c.has(a)){let e=t.c.get(a);i.push({node:e,index:r+1,tolerance:s})}for(let[e,n]of(i.push({node:t,index:r+1,tolerance:s-1}),t.c))i.push({node:n,index:r,tolerance:s-1}),e!==a&&i.push({node:n,index:r+1,tolerance:s-1})}}find(e){let{term:t,exact:r,tolerance:n}=e;if(n&&!r){let e={};return this._findLevenshtein(t,0,n,n,e),e}{let e=this,o=0,i=t.length;for(;o0&&0===t.c.size&&!t.e&&0===t.d.size;){let{parent:e,character:r}=n.pop();e.c.delete(r),t=e}return!0}removeDocumentByWord(e,t,r=!0){if(!e)return!0;let n=this,o=e.length;for(let i=0;i[e,t.toJSON()])}}static fromJSON(e){let t=new es(e.k,e.s,e.e);return t.w=e.w,t.d=new Set(e.d),t.c=new Map(e?.c?.map(([e,t])=>[e,es.fromJSON(t)])),t}}class ea extends es{constructor(){super("","",!1)}static fromJSON(e){let t=new ea;return t.w=e.w,t.s=e.s,t.e=e.e,t.k=e.k,t.d=new Set(e.d),t.c=new Map(e.c?.map(([e,t])=>[e,es.fromJSON(t)])),t}toJSON(){return super.toJSON()}}class el{point;docIDs;left;right;parent;constructor(e,t){this.point=e,this.docIDs=new Set(t),this.left=null,this.right=null,this.parent=null}toJSON(){return{point:this.point,docIDs:Array.from(this.docIDs),left:this.left?this.left.toJSON():null,right:this.right?this.right.toJSON():null}}static fromJSON(e,t=null){let r=new el(e.point,e.docIDs);return r.parent=t,e.left&&(r.left=el.fromJSON(e.left,r)),e.right&&(r.right=el.fromJSON(e.right,r)),r}}class eu{root;nodeMap;constructor(){this.root=null,this.nodeMap=new Map}getPointKey(e){return`${e.lon},${e.lat}`}insert(e,t){let r=this.getPointKey(e),n=this.nodeMap.get(r);if(n)return void t.forEach(e=>n.docIDs.add(e));let o=new el(e,t);if(this.nodeMap.set(r,o),null==this.root){this.root=o;return}let i=this.root,s=0;for(;;){if(0==s%2)if(e.lon0;){let{node:n,depth:o}=s.pop();if(null==n)continue;let l=i(e,n.point);(r?l<=t:l>t)&&a.push({point:n.point,docIDs:Array.from(n.docIDs)}),null!=n.left&&s.push({node:n.left,depth:o+1}),null!=n.right&&s.push({node:n.right,depth:o+1})}return n&&a.sort((t,r)=>{let o=i(e,t.point),s=i(e,r.point);return"asc"===n.toLowerCase()?o-s:s-o}),a}searchByPolygon(e,t=!0,r=null,n=!1){let o=[{node:this.root,depth:0}],i=[];for(;o.length>0;){let{node:r,depth:n}=o.pop();if(null==r)continue;null!=r.left&&o.push({node:r.left,depth:n+1}),null!=r.right&&o.push({node:r.right,depth:n+1});let s=eu.isPointInPolygon(e,r.point);(s&&t||!s&&!t)&&i.push({point:r.point,docIDs:Array.from(r.docIDs)})}let s=eu.calculatePolygonCentroid(e);if(r){let e=n?eu.vincentyDistance:eu.haversineDistance;i.sort((t,n)=>{let o=e(s,t.point),i=e(s,n.point);return"asc"===r.toLowerCase()?o-i:i-o})}return i}toJSON(){return{root:this.root?this.root.toJSON():null}}static fromJSON(e){let t=new eu;return e.root&&(t.root=el.fromJSON(e.root),t.buildNodeMap(t.root)),t}buildNodeMap(e){if(null==e)return;let t=this.getPointKey(e.point);this.nodeMap.set(t,e),e.left&&this.buildNodeMap(e.left),e.right&&this.buildNodeMap(e.right)}static calculatePolygonCentroid(e){let t=0,r=0,n=0,o=e.length;for(let i=0,s=o-1;io!=u>o&&n<(l-i)*(o-a)/(u-a)+i&&(r=!r)}return r}static haversineDistance(e,t){let r=Math.PI/180,n=e.lat*r,o=t.lat*r,i=(t.lat-e.lat)*r,s=(t.lon-e.lon)*r,a=Math.sin(i/2)*Math.sin(i/2)+Math.cos(n)*Math.cos(o)*Math.sin(s/2)*Math.sin(s/2);return 2*Math.atan2(Math.sqrt(a),Math.sqrt(1-a))*6371e3}static vincentyDistance(e,t){let r,n,o,i,s,a,l,u=1/298.257223563,c=(1-1/298.257223563)*6378137,f=Math.PI/180,d=e.lat*f,h=t.lat*f,p=(t.lon-e.lon)*f,g=Math.atan((1-u)*Math.tan(d)),m=Math.atan((1-u)*Math.tan(h)),y=Math.sin(g),b=Math.cos(g),S=Math.sin(m),I=Math.cos(m),w=p,O=1e3;do{let e=Math.sin(w),t=Math.cos(w);if(0===(n=Math.sqrt(I*e*(I*e)+(b*S-y*I*t)*(b*S-y*I*t))))return 0;i=Math.atan2(n,o=y*S+b*I*t),isNaN(l=o-2*y*S/(a=1-(s=b*I*e/n)*s))&&(l=0);let c=u/16*a*(4+u*(4-3*a));r=w,w=p+(1-c)*u*s*(i+c*n*(l+c*o*(-1+2*l*l)))}while(Math.abs(w-r)>1e-12&&--O>0);if(0===O)return NaN;let T=a*(0x24ffb2985f71-c*c)/(c*c),N=1+T/16384*(4096+T*(-768+T*(320-175*T))),D=T/1024*(256+T*(-128+T*(74-47*T)));return c*N*(i-D*n*(l+D/4*(o*(-1+2*l*l)-D/6*l*(-3+4*n*n)*(-3+4*l*l))))}}class ec{true;false;constructor(){this.true=new Set,this.false=new Set}insert(e,t){t?this.true.add(e):this.false.add(e)}delete(e,t){t?this.true.delete(e):this.false.delete(e)}getSize(){return this.true.size+this.false.size}toJSON(){return{true:Array.from(this.true),false:Array.from(this.false)}}static fromJSON(e){let t=new ec;return t.true=new Set(e.true),t.false=new Set(e.false),t}}class ef{size;vectors=new Map;constructor(e){this.size=e}add(e,t){t instanceof Float32Array||(t=new Float32Array(t));let r=ed(t,this.size);this.vectors.set(e,[r,t])}remove(e){this.vectors.delete(e)}find(e,t,r){return e instanceof Float32Array||(e=new Float32Array(e)),function(e,t,r,n,o){let i=ed(e,n),s=[];for(let a of t||r.keys()){let t=r.get(a);if(!t)continue;let l=t[0],u=t[1],c=0;for(let t=0;t=o&&s.push([a,f])}return s}(e,r,this.vectors,this.size,t)}toJSON(){let e=[];for(let[t,[r,n]]of this.vectors)e.push([t,[r,Array.from(n)]]);return{size:this.size,vectors:e}}static fromJSON(e){let t=new ef(e.size);for(let[r,[n,o]]of e.vectors)t.vectors.set(r,[n,new Float32Array(o)]);return t}}function ed(e,t){let r=0;for(let n=0;n1?e.avgFieldLength[t]=(e.avgFieldLength[t]*n-e.fieldLengths[t][o])/(n-1):e.avgFieldLength[t]=void 0,e.fieldLengths[t][o]=void 0,e.frequencies[t][o]=void 0}function em(e,t,r){e.tokenOccurrences[t][r]--}function ey(e,t,r,n,o,i,s,a,l,u,c){if(C(s)){var f,d,h,p,g;return f=t,d=r,h=i,p=0,g=o,void f.vectorIndexes[d].node.add(g,h)}let m=n=>{let{type:i,node:s}=t.indexes[r];switch(i){case"Bool":s[n?"true":"false"].add(o);break;case"AVL":{let e=c?.avlRebalanceThreshold??1;s.insert(n,o,e);break}case"Radix":{let i=l.tokenize(n,a,r,!1);for(let n of(e.insertDocumentScoreParameters(t,r,o,i,u),i))e.insertTokenScoreParameters(t,r,o,i,n),s.insert(n,o);break}case"Flat":s.insert(n,o);break;case"BKD":s.insert(n,[o])}};if(!z(s))return m(i);let y=i.length;for(let e=0;e0&&g.set(o,!0);let y=h.length;for(let t=0;t[e,t]).sort((e,t)=>t[1]-e[1]);if(0===y.length)return[];if(1===f)return y;if(0===f){if(1===h)return y;for(let e of d)if(!g.get(e))return[];return y.filter(([e])=>{let t=p.get(e);return!!t&&Array.from(t.values()).some(e=>e===h)})}let b=y.filter(([e])=>{let t=p.get(e);return!!t&&Array.from(t.values()).some(e=>e===h)});if(b.length>0){let e=y.filter(([e])=>!b.some(([t])=>t===e)),t=Math.ceil(e.length*f);return[...b,...e.slice(0,t)]}return y}function eO(e,t,r,n){let o=Object.keys(r),i=o.reduce((e,t)=>({[t]:new Set,...e}),{});for(let s of o){let o=r[s];if(void 0===e.indexes[s])throw k("UNKNOWN_FILTER_PROPERTY",s);let{node:a,type:l,isArray:u}=e.indexes[s];if("Bool"===l){let e=o?a.true:a.false;i[s]=_(i[s],e);continue}if("BKD"===l){let e;if("radius"in o)e="radius";else if("polygon"in o)e="polygon";else throw Error(`Invalid operation ${o}`);if("radius"===e){let{value:t,coordinates:r,unit:n="m",inside:l=!0,highPrecision:u=!1}=o[e],c=function(e,t){let r=O[t];if(void 0===r)throw Error(k("INVALID_DISTANCE_SUFFIX",e).message);return e*r}(t,n),f=a.searchByRadius(r,c,l,void 0,u);i[s]=e_(i[s],f)}else{let{coordinates:t,inside:r=!0,highPrecision:n=!1}=o[e],l=a.searchByPolygon(t,r,void 0,n);i[s]=e_(i[s],l)}continue}if("Radix"===l&&("string"==typeof o||Array.isArray(o))){for(let e of[o].flat())for(let r of t.tokenize(e,n,s)){let e=a.find({term:r,exact:!0});i[s]=function(e,t){e||(e=new Set);let r=Object.keys(t),n=r.length;for(let o=0;o1)throw k("INVALID_FILTER_OPERATION",c.length);if("Flat"===l){let e=new Set(u?a.filterArr(o):a.filter(o));i[s]=_(i[s],e);continue}if("AVL"===l){let e,t=c[0],r=o[t];switch(t){case"gt":e=a.greaterThan(r,!1);break;case"gte":e=a.greaterThan(r,!0);break;case"lt":e=a.lessThan(r,!1);break;case"lte":e=a.lessThan(r,!0);break;case"eq":e=a.find(r)??new Set;break;case"between":{let[t,n]=r;e=a.rangeSearch(t,n);break}default:throw k("INVALID_FILTER_OPERATION",t)}i[s]=_(i[s],e)}}return function(...e){if(0===e.length)return new Set;if(1===e.length)return e[0];if(2===e.length){let t=e[0],r=e[1];if(D)return t.intersection(r);let n=new Set,o=t.size!r.orderedDocsToRemove.has(e[0])),r.orderedDocsToRemove.clear())}function eC(e,t,r){if(!e.enabled)return;let n=e.sorts[t],o=V(e.sharedInternalDocumentStore,r);n.docs.get(o)&&(n.docs.delete(o),n.orderedDocsToRemove.set(o,!0))}function ez(e,t,r){if(!e.enabled)throw k("SORT_DISABLED");let n=r.property,o="DESC"===r.order,i=e.sorts[n];if(!i)throw k("UNABLE_TO_SORT_ON_UNKNOWN_FIELD",n,e.sortableProperties.join(", "));return eM(e,n),ek(e),t.sort((t,r)=>{let n=i.docs.get(V(e.sharedInternalDocumentStore,t[0])),s=i.docs.get(V(e.sharedInternalDocumentStore,r[0])),a=void 0!==n,l=void 0!==s;return a||l?a?l?o?s-n:n-s:-1:1:0}),t}function eU(e){return e.enabled?e.sortableProperties:[]}function eL(e){return e.enabled?e.sortablePropertiesWithTypes:{}}function eB(e,t){if(!t.enabled)return{enabled:!1};let r=Object.keys(t.sorts).reduce((e,r)=>{let{docs:n,orderedDocs:o,type:i}=t.sorts[r];return e[r]={docs:new Map(Object.entries(n).map(([e,t])=>[+e,t])),orderedDocsToRemove:new Map,orderedDocs:o,type:i},e},{});return{sharedInternalDocumentStore:e,language:t.language,sortableProperties:t.sortableProperties,sortablePropertiesWithTypes:t.sortablePropertiesWithTypes,sorts:r,enabled:!0,isSorted:t.isSorted}}function eV(e){if(!e.enabled)return{enabled:!1};for(let t of Object.keys(e.sorts))eM(e,t);ek(e);let t=Object.keys(e.sorts).reduce((t,r)=>{let{docs:n,orderedDocs:o,type:i}=e.sorts[r];return t[r]={docs:Object.fromEntries(n.entries()),orderedDocs:o,type:i},t},{});return{language:e.language,sortableProperties:e.sortableProperties,sortablePropertiesWithTypes:e.sortablePropertiesWithTypes,sorts:t,enabled:e.enabled,isSorted:e.isSorted}}let eF=[65,65,65,65,65,65,65,67,69,69,69,69,73,73,73,73,69,78,79,79,79,79,79,null,79,85,85,85,85,89,80,115,97,97,97,97,97,97,97,99,101,101,101,101,105,105,105,105,101,110,111,111,111,111,111,null,111,117,117,117,117,121,112,121,65,97,65,97,65,97,67,99,67,99,67,99,67,99,68,100,68,100,69,101,69,101,69,101,69,101,69,101,71,103,71,103,71,103,71,103,72,104,72,104,73,105,73,105,73,105,73,105,73,105,73,105,74,106,75,107,107,76,108,76,108,76,108,76,108,76,108,78,110,78,110,78,110,110,78,110,79,111,79,111,79,111,79,111,82,114,82,114,82,114,83,115,83,115,83,115,83,115,84,116,84,116,84,116,85,117,85,117,85,117,85,117,85,117,85,117,87,119,89,121,89,90,122,90,122,90,122,115],eW={ational:"ate",tional:"tion",enci:"ence",anci:"ance",izer:"ize",bli:"ble",alli:"al",entli:"ent",eli:"e",ousli:"ous",ization:"ize",ation:"ate",ator:"ate",alism:"al",iveness:"ive",fulness:"ful",ousness:"ous",aliti:"al",iviti:"ive",biliti:"ble",logi:"log"},ej={icate:"ic",ative:"",alize:"al",iciti:"ic",ical:"ic",ful:"",ness:""},e$="[aeiouy]",eJ="[^aeiou][^aeiouy]*",eG=e$+"[aeiou]*",eY="^("+eJ+")?"+eG+eJ,eH="^("+eJ+")?"+eG+eJ+"("+eG+")?$",eK="^("+eJ+")?"+eG+eJ+eG+eJ,eq="^("+eJ+")?"+e$;function eX(e){let t,r,n,o,i,s;if(e.length<3)return e;let a=e.substring(0,1);if("y"==a&&(e=a.toUpperCase()+e.substring(1)),o=/^(.+?)([^s])s$/,(n=/^(.+?)(ss|i)es$/).test(e)?e=e.replace(n,"$1$2"):o.test(e)&&(e=e.replace(o,"$1$2")),o=/^(.+?)(ed|ing)$/,(n=/^(.+?)eed$/).test(e)){let t=n.exec(e);(n=new RegExp(eY)).test(t[1])&&(n=/.$/,e=e.replace(n,""))}else o.test(e)&&(t=o.exec(e)[1],(o=new RegExp(eq)).test(t)&&(e=t,o=/(at|bl|iz)$/,i=RegExp("([^aeiouylsz])\\1$"),s=RegExp("^"+eJ+e$+"[^aeiouwxy]$"),o.test(e)?e+="e":i.test(e)?(n=/.$/,e=e.replace(n,"")):s.test(e)&&(e+="e")));if((n=/^(.+?)y$/).test(e)){let r=n.exec(e);t=r?.[1],n=new RegExp(eq),t&&n.test(t)&&(e=t+"i")}if((n=/^(.+?)(ational|tional|enci|anci|izer|bli|alli|entli|eli|ousli|ization|ation|ator|alism|iveness|fulness|ousness|aliti|iviti|biliti|logi)$/).test(e)){let o=n.exec(e);t=o?.[1],r=o?.[2],n=new RegExp(eY),t&&n.test(t)&&(e=t+eW[r])}if((n=/^(.+?)(icate|ative|alize|iciti|ical|ful|ness)$/).test(e)){let o=n.exec(e);t=o?.[1],r=o?.[2],n=new RegExp(eY),t&&n.test(t)&&(e=t+ej[r])}if(o=/^(.+?)(s|t)(ion)$/,(n=/^(.+?)(al|ance|ence|er|ic|able|ible|ant|ement|ment|ent|ou|ism|ate|iti|ous|ive|ize)$/).test(e)){let r=n.exec(e);t=r?.[1],n=new RegExp(eK),t&&n.test(t)&&(e=t)}else if(o.test(e)){let r=o.exec(e);t=r?.[1]??""+r?.[2]??"",(o=new RegExp(eK)).test(t)&&(e=t)}if((n=/^(.+?)e$/).test(e)){let r=n.exec(e);t=r?.[1],n=new RegExp(eK),o=new RegExp(eH),i=RegExp("^"+eJ+e$+"[^aeiouwxy]$"),t&&(n.test(t)||o.test(t)&&!i.test(t))&&(e=t)}return n=/ll$/,o=new RegExp(eK),n.test(e)&&o.test(e)&&(n=/.$/,e=e.replace(n,"")),"y"==a&&(e=a.toLowerCase()+e.substring(1)),e}function eZ(e,t,r=!0){let n=`${this.language}:${e}:${t}`;return r&&this.normalizationCache.has(n)?this.normalizationCache.get(n):this.stopWords?.includes(t)?(r&&this.normalizationCache.set(n,""),""):(this.stemmer&&!this.stemmerSkipProperties.has(e)&&(t=this.stemmer(t)),t=function(e){let t=[];for(let n=0;n383?r:eF[r-192]||r}return String.fromCharCode(...t)}(t),r&&this.normalizationCache.set(n,t),t)}function eQ(e,t,r,n=!0){let o;if(t&&t!==this.language)throw k("LANGUAGE_NOT_SUPPORTED",t);if("string"!=typeof e)return[e];let s=this.normalizeToken.bind(this,r??"");if(r&&this.tokenizeSkipProperties.has(r))o=[s(e,n)];else{let t=i[this.language];o=e.toLowerCase().split(t).map(e=>s(e,n)).filter(Boolean)}let a=function(e){for(;""===e[e.length-1];)e.pop();for(;""===e[0];)e.shift();return e}(o);return this.allowDuplicates?a:Array.from(new Set(a))}function e0(e={}){let t,r;if(e.language){if(!s.includes(e.language))throw k("LANGUAGE_NOT_SUPPORTED",e.language)}else e.language="english";if(e.stemming||e.stemmer&&!("stemming"in e))if(e.stemmer){if("function"!=typeof e.stemmer)throw k("INVALID_STEMMER_FUNCTION_TYPE");t=e.stemmer}else if("english"===e.language)t=eX;else throw k("MISSING_STEMMER",e.language);if(!1!==e.stopWords){if(r=[],Array.isArray(e.stopWords))r=e.stopWords;else if("function"==typeof e.stopWords)r=e.stopWords(r);else if(e.stopWords)throw k("CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY");if(!Array.isArray(r))throw k("CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY");for(let e of r)if("string"!=typeof e)throw k("CUSTOM_STOP_WORDS_MUST_BE_FUNCTION_OR_ARRAY")}let n={tokenize:eQ,language:e.language,stemmer:t,stemmerSkipProperties:new Set(e.stemmerSkipProperties?[e.stemmerSkipProperties].flat():[]),tokenizeSkipProperties:new Set(e.tokenizeSkipProperties?[e.tokenizeSkipProperties].flat():[]),stopWords:r,allowDuplicates:!!e.allowDuplicates,normalizeToken:eZ,normalizationCache:new Map};return n.tokenize=eQ.bind(n),n.normalizeToken=eZ,n}function e1(e,t,r,n,o){let i=e.validateSchema(t,e.schema);if(i)throw createError("SCHEMA_VALIDATION_FAILURE",i);return isAsyncFunction(e.beforeInsert)||isAsyncFunction(e.afterInsert)||isAsyncFunction(e.index.beforeInsert)||isAsyncFunction(e.index.insert)||isAsyncFunction(e.index.afterInsert)?e2(e,t,r,n,o):function(e,t,r,n,o){let{index:i,docs:s}=e.data,a=e.getDocumentIndexId(t);if("string"!=typeof a)throw createError("DOCUMENT_ID_MUST_BE_STRING",typeof a);let l=getInternalDocumentId(e.internalDocumentIDStore,a);if(!e.documentsStore.store(s,a,l,t))throw createError("DOCUMENT_ALREADY_EXISTS",a);let u=e.documentsStore.count(s);n||runSingleHook(e.beforeInsert,e,a,t);let c=e.index.getSearchableProperties(i),f=e.index.getSearchablePropertiesWithTypes(i),d=e.getDocumentProperties(t,c);for(let[e,t]of Object.entries(d))void 0!==t&&e5(typeof t,f[e],e,t);return function(e,t,r,n,o,i,s,a){for(let s of r){let r=n[s];if(void 0===r)continue;let l=e.index.getSearchablePropertiesWithTypes(e.data.index)[s],u=getInternalDocumentId(e.internalDocumentIDStore,t);e.index.beforeInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o),e.index.insert(e.index,e.data.index,s,t,u,r,l,i,e.tokenizer,o,a),e.index.afterInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o)}let l=e.sorter.getSortableProperties(e.data.sorting),u=e.getDocumentProperties(s,l);for(let r of l){let n=u[r];if(void 0===n)continue;let o=e.sorter.getSortablePropertiesWithTypes(e.data.sorting)[r];e.sorter.insert(e.data.sorting,r,t,n,o,i)}}(e,a,c,d,u,r,t,o),n||runSingleHook(e.afterInsert,e,a,t),trackInsertion(e),a}(e,t,r,n,o)}Symbol("orama.insertions"),Symbol("orama.removals"),globalThis.process?.emitWarning;let e9=new Set(["enum","enum[]"]),e7=new Set(["string","number"]);async function e2(e,t,r,n,o){let{index:i,docs:s}=e.data,a=e.getDocumentIndexId(t);if("string"!=typeof a)throw createError("DOCUMENT_ID_MUST_BE_STRING",typeof a);let l=getInternalDocumentId(e.internalDocumentIDStore,a);if(!e.documentsStore.store(s,a,l,t))throw createError("DOCUMENT_ALREADY_EXISTS",a);let u=e.documentsStore.count(s);n||await runSingleHook(e.beforeInsert,e,a,t);let c=e.index.getSearchableProperties(i),f=e.index.getSearchablePropertiesWithTypes(i),d=e.getDocumentProperties(t,c);for(let[e,t]of Object.entries(d))void 0!==t&&e5(typeof t,f[e],e,t);return await e3(e,a,c,d,u,r,t,o),n||await runSingleHook(e.afterInsert,e,a,t),trackInsertion(e),a}function e5(e,t,r,n){if(!(isGeoPointType(t)&&"object"==typeof n&&"number"==typeof n.lon&&"number"==typeof n.lat||isVectorType(t)&&Array.isArray(n)||isArrayType(t)&&Array.isArray(n))&&!(e9.has(t)&&e7.has(e))&&e!==t)throw createError("INVALID_DOCUMENT_PROPERTY",r,t,e)}async function e3(e,t,r,n,o,i,s,a){for(let s of r){let r=n[s];if(void 0===r)continue;let l=e.index.getSearchablePropertiesWithTypes(e.data.index)[s];await e.index.beforeInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o);let u=e.internalDocumentIDStore.idToInternalId.get(t);await e.index.insert(e.index,e.data.index,s,t,u,r,l,i,e.tokenizer,o,a),await e.index.afterInsert?.(e.data.index,s,t,r,l,i,e.tokenizer,o)}let l=e.sorter.getSortableProperties(e.data.sorting),u=e.getDocumentProperties(s,l);for(let r of l){let n=u[r];if(void 0===n)continue;let o=e.sorter.getSortablePropertiesWithTypes(e.data.sorting)[r];e.sorter.insert(e.data.sorting,r,t,n,o,i)}}async function e6(e,t,r,n){let o=!0,{index:i,docs:s}=e.data,a=e.documentsStore.get(s,t);if(!a)return!1;let l=getInternalDocumentId(e.internalDocumentIDStore,t),u=getDocumentIdFromInternalId(e.internalDocumentIDStore,l),c=e.documentsStore.count(s);n||await runSingleHook(e.beforeRemove,e,u);let f=e.index.getSearchableProperties(i),d=e.index.getSearchablePropertiesWithTypes(i),h=e.getDocumentProperties(a,f);for(let n of f){let i=h[n];if(void 0===i)continue;let s=d[n];await e.index.beforeRemove?.(e.data.index,n,u,i,s,r,e.tokenizer,c),await e.index.remove(e.index,e.data.index,n,t,l,i,s,r,e.tokenizer,c)||(o=!1),await e.index.afterRemove?.(e.data.index,n,u,i,s,r,e.tokenizer,c)}let p=await e.sorter.getSortableProperties(e.data.sorting),g=await e.getDocumentProperties(a,p);for(let r of p)void 0!==g[r]&&e.sorter.remove(e.data.sorting,r,t);return n||await runSingleHook(e.afterRemove,e,u),e.documentsStore.remove(e.data.docs,t,l),trackRemoval(e),o}let e8="fulltext";function e4(e,t){return e[1]-t[1]}function te(e,t){return t[1]-e[1]}function tt(e,t,r){let n={},o=t.map(([e])=>e),i=e.documentsStore.getMultiple(e.data.docs,o),s=Object.keys(r),a=e.index.getSearchablePropertiesWithTypes(e.data.index);for(let e of s){let t;if("number"===a[e]){let{ranges:n}=r[e],o=n.length,i=Array.from({length:o});for(let e=0;e{for(let o of e){let e=`${o.from}-${o.to}`;!r?.has(e)&&n>=o.from&&n<=o.to&&(void 0===t[e]?t[e]=1:(t[e]++,r?.add(e)))}}}function tn(e,t,r){let n="boolean"===t?"false":"";return t=>{let o=t?.toString()??n;r?.has(o)||(e[o]=(e[o]??0)+1,r?.add(o))}}let to={reducer:(e,t,r,n)=>(t[n]=r,t),getInitialValue:e=>Array.from({length:e})},ti=["string","number","boolean"];function ts(e,t,r){let n=r.properties,o=n.length,i=e.index.getSearchablePropertiesWithTypes(e.data.index);for(let e=0;eF(e.internalDocumentIDStore,t)),a=e.documentsStore.getMultiple(e.data.docs,s),l=a.length,u=r.maxResult||Number.MAX_SAFE_INTEGER,c=[],f={};for(let e=0;e=u||(s.indexes.push(e),s.count++,r.perValue[i]=s,o.add(n))}c.push(Array.from(o)),f[t]=r}let d=function e(t,r=0){if(r+1===t.length)return t[r].map(e=>[e]);let n=t[r],o=e(t,r+1),i=[];for(let e of n)for(let t of o){let r=[e];h(r,t),i.push(r)}return i}(c),p=d.length,g=[];for(let e=0;e{let n=t.get(r);return void 0!==n&&t.set(r,0),n===e.length})})(i).sort((e,t)=>e-t),0!==o.indexes.length&&g.push(o)}let m=g.length,y=Array.from({length:m});for(let e=0;e({id:s[e],score:t[e][1],document:a[e]})),l=o.reducer.bind(null,n.values),u=o.getInitialValue(n.indexes.length),c=i.reduce(l,u);y[e]={values:n.values,result:c}}return y}function ta(e,t,r){let n,o,{term:i,properties:s}=t,a=e.data.index,l=e.caches.propertiesToSearch;if(!l){let t=e.index.getSearchablePropertiesWithTypes(a);l=(l=e.index.getSearchableProperties(a)).filter(e=>t[e].startsWith("string")),e.caches.propertiesToSearch=l}if(s&&"*"!==s){for(let e of s)if(!l.includes(e))throw k("UNKNOWN_INDEX",e,l.join(", "));l=l.filter(e=>s.includes(e))}Object.keys(t.where??{}).length>0&&(n=e.index.searchByWhereClause(a,e.tokenizer,t.where,r));let u=void 0!==t.threshold&&null!==t.threshold?t.threshold:1;if(i||s){let s=e.documentsStore.count(e.data.docs);o=e.index.search(a,i||"",e.tokenizer,r,l,t.exact||!1,t.tolerance||0,t.boost||{},function(e){let t=e??{};return t.k=t.k??tl.k,t.b=t.b??tl.b,t.d=t.d??tl.d,t}(t.relevance),s,n,u)}else o=(n?Array.from(n):Object.keys(e.documentsStore.getAll(e.data.docs))).map(e=>[+e,0]);return o}let tl={k:1.2,b:.75,d:.5};function tu(e,t,r){let n,o=t.vector;if(o&&(!("value"in o)||!("property"in o)))throw k("INVALID_VECTOR_INPUT",Object.keys(o).join(", "));let i=e.data.index.vectorIndexes[o.property],s=i.node.size;if(o?.value.length!==s){if(o?.property===void 0||o?.value.length===void 0)throw k("INVALID_INPUT_VECTOR","undefined",s,"undefined");throw k("INVALID_INPUT_VECTOR",o.property,s,o.value.length)}let a=e.data.index;return Object.keys(t.where??{}).length>0&&(n=e.index.searchByWhereClause(a,e.tokenizer,t.where,r)),i.node.find(o.value,t.similarity??.8,n)}function tc(e){return e[1]}function tf(e,t,r){let n=t.mode??e8;if(n===e8){let n=m();function o(){let o,i=Object.keys(e.data.index.vectorIndexes),s=t.facets&&Object.keys(t.facets).length>0,{limit:a=10,offset:l=0,distinctOn:u,includeVectors:c=!1}=t,f=!0===t.preflight,d=ta(e,t,r);if(t.sortBy)if("function"==typeof t.sortBy){let r=d.map(([e])=>e),n=e.documentsStore.getMultiple(e.data.docs,r).map((e,t)=>[d[t][0],d[t][1],e]);n.sort(t.sortBy),d=n.map(([e,t])=>[e,t])}else d=e.sorter.sortBy(e.data.sorting,d,t.sortBy).map(([t,r])=>[V(e.internalDocumentIDStore,t),r]);else d=d.sort(S);f||(o=u?function(e,t,r,n,o){let i=e.data.docs,s=new Map,a=[],l=new Set,u=t.length,c=0;for(let f=0;f=r+n)))break}return a}(e,d,l,a,u):td(e,d,l,a));let h={elapsed:{formatted:"",raw:0},hits:[],count:d.length};return void 0!==o&&(h.hits=o.filter(Boolean),c||T(h,i)),s&&(h.facets=tt(e,d,t.facets)),t.groupBy&&(h.groups=ts(e,d,t.groupBy)),h.elapsed=e.formatElapsedTime(m()-n),h}async function i(){e.beforeSearch&&await et(e.beforeSearch,e,t,r);let n=o();return e.afterSearch&&await ee(e.afterSearch,e,t,r,n),n}return e.beforeSearch?.length||e.afterSearch?.length?i():o()}if("vector"===n)return function(e,t,r="english"){let n=m();function o(){let o=tu(e,t,r).sort(S),i=[];t.facets&&Object.keys(t.facets).length>0&&(i=tt(e,o,t.facets));let s=t.vector.property,a=t.includeVectors??!1,l=t.limit??10,u=t.offset??0,c=Array.from({length:l});for(let t=0;t[e,r/t])}(ta(e,t,r)),o=tu(e,t,r),i=t.hybridWeights;return function(e,t,r,n){var o;let i=Math.max.apply(Math,e.map(tc)),s=Math.max.apply(Math,t.map(tc)),{text:a,vector:l}=n&&n.text&&n.vector?n:(o=0,{text:.5,vector:.5}),u=new Map,c=e.length,f=(e,t)=>e*a+t*l;for(let t=0;tt[1]-e[1])}(n,o,t.term??"",i)}(e,t,void 0);t.facets&&Object.keys(t.facets).length>0&&(r=tt(e,i,t.facets)),t.groupBy&&(o=ts(e,i,t.groupBy));let s=td(e,i,t.offset??0,t.limit??10).filter(Boolean),a=m(),l={count:i.length,elapsed:{raw:Number(a-n),formatted:g(a-n)},hits:s,...r?{facets:r}:{},...o?{groups:o}:{}};return t.includeVectors||T(l,Object.keys(e.data.index.vectorIndexes)),l}async function i(){e.beforeSearch&&await et(e.beforeSearch,e,t,void 0);let n=o();return e.afterSearch&&await ee(e.afterSearch,e,t,r,n),n}return e.beforeSearch?.length||e.afterSearch?.length?i():o()}(e,t);throw k("INVALID_SEARCH_MODE",n)}function td(e,t,r,n){let o=e.data.docs,i=Array.from({length:n}),s=new Set;for(let a=r;a({type:"page",content:e.document.title,id:e.document.url,url:e.document.url}))}async function tg(e,t,r,o={}){let i={where:(0,n.B)({tag:r,...o.where}),groupBy:{properties:["page_id"],maxResult:8,...o.groupBy}};t.length>0&&(i={...i,term:t,properties:["content","keywords"],...o,where:i.where,groupBy:i.groupBy});let s=await tf(e,i),a=[];for(let t of s.groups??[]){let r=t.values[0],n=await e.documentsStore.get(e.data.docs,r);if(n)for(let e of(a.push({id:r,type:"page",content:n.content,url:n.url}),t.result))"page"!==e.document.type&&a.push({id:e.document.id.toString(),content:e.document.content,type:e.document.type,url:e.document.url})}return a}function tm({from:e="/api/search",initOrama:t=e=>(function({schema:e,sort:t,language:r,components:n,id:o,plugins:i}){for(let t of(n||(n={}),i??[])){if(!("getComponents"in t)||"function"!=typeof t.getComponents)continue;let r=t.getComponents(e);for(let e of Object.keys(r))if(n[e])throw k("PLUGIN_COMPONENT_CONFLICT",e,t.name);n={...n,...r}}o||(o=y());let s=n.tokenizer,a=n.index,l=n.documentsStore,u=n.sorter;if(s=s?s.tokenize?s:e0(s):e0({language:r??"english"}),n.tokenizer&&r)throw k("NO_LANGUAGE_WITH_CUSTOM_TOKENIZER");let c={idToInternalId:new Map,internalIdToId:[],save:L,load:B};a||={create:function e(t,r,n,o,i=""){for(let[s,a]of(o||(o={sharedInternalDocumentStore:r,indexes:{},vectorIndexes:{},searchableProperties:[],searchablePropertiesWithTypes:{},frequencies:{},tokenOccurrences:{},avgFieldLength:{},fieldLengths:{}}),Object.entries(n))){let n=`${i}${i?".":""}${s}`;if("object"==typeof a&&!Array.isArray(a)){e(t,r,a,o,n);continue}if(C(a))o.searchableProperties.push(n),o.searchablePropertiesWithTypes[n]=a,o.vectorIndexes[n]={type:"Vector",node:new ef(U(a)),isArray:!1};else{let e=/\[/.test(a);switch(a){case"boolean":case"boolean[]":o.indexes[n]={type:"Bool",node:new ec,isArray:e};break;case"number":case"number[]":o.indexes[n]={type:"AVL",node:new en(0,[]),isArray:e};break;case"string":case"string[]":o.indexes[n]={type:"Radix",node:new ea,isArray:e},o.avgFieldLength[n]=0,o.frequencies[n]={},o.tokenOccurrences[n]={},o.fieldLengths[n]={};break;case"enum":case"enum[]":o.indexes[n]={type:"Flat",node:new eo,isArray:e};break;case"geopoint":o.indexes[n]={type:"BKD",node:new eu,isArray:e};break;default:throw k("INVALID_SCHEMA_TYPE",Array.isArray(a)?"array":a,n)}o.searchableProperties.push(n),o.searchablePropertiesWithTypes[n]=a}}return o},insert:ey,remove:eS,insertDocumentScoreParameters:eh,insertTokenScoreParameters:ep,removeDocumentScoreParameters:eg,removeTokenScoreParameters:em,calculateResultScores:eI,search:ew,searchByWhereClause:eO,getSearchableProperties:eT,getSearchablePropertiesWithTypes:eN,load:eD,save:ev},u||={create:eA,insert:eE,remove:eC,save:eV,load:eB,sortBy:ez,getSortableProperties:eU,getSortablePropertiesWithTypes:eL},l||={create:W,get:j,getMultiple:$,getAll:J,store:G,remove:Y,count:H,load:K,save:q};var f=n;let d={formatElapsedTime:P,getDocumentIndexId:x,getDocumentProperties:I,validateSchema:function e(t,r){for(let[n,o]of Object.entries(r)){let r=t[n];if(void 0!==r&&("geopoint"!==o||"object"!=typeof r||"number"!=typeof r.lon||"number"!=typeof r.lat)&&("enum"!==o||"string"!=typeof r&&"number"!=typeof r)){if("enum[]"===o&&Array.isArray(r)){let e=r.length;for(let t=0;t{for(let r of e)await r(t)})();for(let r of e)r(t)}(S,b),b})({schema:{_:"string"},language:e})}){let r=new Map,n=async function(){let n=await fetch(e);if(!n.ok)throw Error(`failed to fetch exported search indexes from ${e}, make sure the search database is exported and available for client.`);let o=await n.json();if("i18n"===o.type)for(let[e,n]of Object.entries(o.data)){let o=await t(e);th(o,n),r.set(e,{type:n.type,db:o})}else{let e=await t();th(e,o),r.set("",{type:o.type,db:e})}}();return{async search(e,t,o){await n;let i=r.get(t??"");return i?"simple"===i.type?tp(i,e):tg(i.db,e,o):[]}}}r(9189)},3522:(e,t,r)=>{r.d(t,{B:()=>function e(t,r=!1){for(let n of Object.keys(t))void 0===t[n]&&delete t[n],r&&"object"==typeof t[n]&&null!==t[n]?e(t[n],r):r&&Array.isArray(t[n])&&t[n].forEach(t=>e(t,r));return t}})}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/477.c67b77b0908a8d3c.js b/docs/_next/static/chunks/477.c67b77b0908a8d3c.js deleted file mode 100644 index 1666ba26..00000000 --- a/docs/_next/static/chunks/477.c67b77b0908a8d3c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[477],{477:(e,t,n)=>{n.r(t),n.d(t,{default:()=>ex});var r,a=n(5155),o=n(5936);n(9189);var l=n(2115),s=n(3259),i=n(9697),d=n(3536);let u=(0,d.A)("text",[["path",{d:"M15 18H3",key:"olowqp"}],["path",{d:"M17 6H3",key:"16j9eg"}],["path",{d:"M21 12H3",key:"2avoz0"}]]),c=(0,d.A)("hash",[["line",{x1:"4",x2:"20",y1:"9",y2:"9",key:"4lhtct"}],["line",{x1:"4",x2:"20",y1:"15",y2:"15",key:"vyu0kd"}],["line",{x1:"10",x2:"8",y1:"3",y2:"21",key:"1ggp8o"}],["line",{x1:"16",x2:"14",y1:"3",y2:"21",key:"weycgp"}]]),f=(0,d.A)("file-text",[["path",{d:"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z",key:"1rqfz7"}],["path",{d:"M14 2v4a2 2 0 0 0 2 2h4",key:"tnqrlb"}],["path",{d:"M10 9H8",key:"b1mrlr"}],["path",{d:"M16 13H8",key:"t4e002"}],["path",{d:"M16 17H8",key:"z1uh3a"}]]),p=(0,d.A)("loader-circle",[["path",{d:"M21 12a9 9 0 1 1-6.219-8.56",key:"13zald"}]]);var m=n(7543),x=n(9688),g=n(263),h=n(7936),v=n(5185),y=n(6101),b=n(6081),w=n(1285),j=n(5845),N=n(9178),k=n(7900),D=(n(4378),n(8905)),C=n(3655),R=n(2293),I=n(3795),E=n(8168),A=n(9708),O="Dialog",[P,_]=(0,b.A)(O),[M,F]=P(O),S=e=>{let{__scopeDialog:t,children:n,open:r,defaultOpen:o,onOpenChange:s,modal:i=!0}=e,d=l.useRef(null),u=l.useRef(null),[c,f]=(0,j.i)({prop:r,defaultProp:null!=o&&o,onChange:s,caller:O});return(0,a.jsx)(M,{scope:t,triggerRef:d,contentRef:u,contentId:(0,w.B)(),titleId:(0,w.B)(),descriptionId:(0,w.B)(),open:c,onOpenChange:f,onOpenToggle:l.useCallback(()=>f(e=>!e),[f]),modal:i,children:n})};S.displayName=O;var z="DialogTrigger";l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(z,n),l=(0,y.s)(t,o.triggerRef);return(0,a.jsx)(C.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":o.open,"aria-controls":o.contentId,"data-state":$(o.open),...r,ref:l,onClick:(0,v.m)(e.onClick,o.onOpenToggle)})}).displayName=z;var[T,q]=P("DialogPortal",{forceMount:void 0}),H="DialogOverlay",Q=l.forwardRef((e,t)=>{let n=q(H,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,l=F(H,e.__scopeDialog);return l.modal?(0,a.jsx)(D.C,{present:r||l.open,children:(0,a.jsx)(B,{...o,ref:t})}):null});Q.displayName=H;var L=(0,A.TL)("DialogOverlay.RemoveScroll"),B=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(H,n);return(0,a.jsx)(I.A,{as:L,allowPinchZoom:!0,shards:[o.contentRef],children:(0,a.jsx)(C.sG.div,{"data-state":$(o.open),...r,ref:t,style:{pointerEvents:"auto",...r.style}})})}),G="DialogContent",W=l.forwardRef((e,t)=>{let n=q(G,e.__scopeDialog),{forceMount:r=n.forceMount,...o}=e,l=F(G,e.__scopeDialog);return(0,a.jsx)(D.C,{present:r||l.open,children:l.modal?(0,a.jsx)(V,{...o,ref:t}):(0,a.jsx)(U,{...o,ref:t})})});W.displayName=G;var V=l.forwardRef((e,t)=>{let n=F(G,e.__scopeDialog),r=l.useRef(null),o=(0,y.s)(t,n.contentRef,r);return l.useEffect(()=>{let e=r.current;if(e)return(0,E.Eq)(e)},[]),(0,a.jsx)(Z,{...e,ref:o,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,v.m)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),null==(t=n.triggerRef.current)||t.focus()}),onPointerDownOutside:(0,v.m)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;(2===t.button||n)&&e.preventDefault()}),onFocusOutside:(0,v.m)(e.onFocusOutside,e=>e.preventDefault())})}),U=l.forwardRef((e,t)=>{let n=F(G,e.__scopeDialog),r=l.useRef(!1),o=l.useRef(!1);return(0,a.jsx)(Z,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var a,l;null==(a=e.onCloseAutoFocus)||a.call(e,t),t.defaultPrevented||(r.current||null==(l=n.triggerRef.current)||l.focus(),t.preventDefault()),r.current=!1,o.current=!1},onInteractOutside:t=>{var a,l;null==(a=e.onInteractOutside)||a.call(e,t),t.defaultPrevented||(r.current=!0,"pointerdown"===t.detail.originalEvent.type&&(o.current=!0));let s=t.target;(null==(l=n.triggerRef.current)?void 0:l.contains(s))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&o.current&&t.preventDefault()}})}),Z=l.forwardRef((e,t)=>{let{__scopeDialog:n,trapFocus:r,onOpenAutoFocus:o,onCloseAutoFocus:s,...i}=e,d=F(G,n),u=l.useRef(null),c=(0,y.s)(t,u);return(0,R.Oh)(),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(k.n,{asChild:!0,loop:!0,trapped:r,onMountAutoFocus:o,onUnmountAutoFocus:s,children:(0,a.jsx)(N.qW,{role:"dialog",id:d.contentId,"aria-describedby":d.descriptionId,"aria-labelledby":d.titleId,"data-state":$(d.open),...i,ref:c,onDismiss:()=>d.onOpenChange(!1)})}),(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(er,{titleId:d.titleId}),(0,a.jsx)(ea,{contentRef:u,descriptionId:d.descriptionId})]})]})}),J="DialogTitle",K=l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(J,n);return(0,a.jsx)(C.sG.h2,{id:o.titleId,...r,ref:t})});K.displayName=J;var X="DialogDescription";l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(X,n);return(0,a.jsx)(C.sG.p,{id:o.descriptionId,...r,ref:t})}).displayName=X;var Y="DialogClose";function $(e){return e?"open":"closed"}l.forwardRef((e,t)=>{let{__scopeDialog:n,...r}=e,o=F(Y,n);return(0,a.jsx)(C.sG.button,{type:"button",...r,ref:t,onClick:(0,v.m)(e.onClick,()=>o.onOpenChange(!1))})}).displayName=Y;var ee="DialogTitleWarning",[et,en]=(0,b.q)(ee,{contentName:G,titleName:J,docsSlug:"dialog"}),er=e=>{let{titleId:t}=e,n=en(ee),r="`".concat(n.contentName,"` requires a `").concat(n.titleName,"` for the component to be accessible for screen reader users.\n\nIf you want to hide the `").concat(n.titleName,"`, you can wrap it with our VisuallyHidden component.\n\nFor more information, see https://radix-ui.com/primitives/docs/components/").concat(n.docsSlug);return l.useEffect(()=>{t&&(document.getElementById(t)||console.error(r))},[r,t]),null},ea=e=>{let{contentRef:t,descriptionId:n}=e,r=en("DialogDescriptionWarning"),a="Warning: Missing `Description` or `aria-describedby={undefined}` for {".concat(r.contentName,"}.");return l.useEffect(()=>{var e;let r=null==(e=t.current)?void 0:e.getAttribute("aria-describedby");n&&r&&(document.getElementById(n)||console.warn(a))},[a,t,n]),null},eo=n(2085),el=n(8265),es=n(344);function ei(e){let{open:t,onOpenChange:n,footer:r,links:o=[],search:s,onSearchChange:d,isLoading:u,...c}=e,{text:f}=(0,i.s9)(),p=(0,l.useMemo)(()=>o.map(e=>{let[t,n]=e;return{type:"page",id:t,content:t,url:n}}),[o]);return(0,a.jsxs)(S,{open:t,onOpenChange:n,children:[(0,a.jsx)(Q,{className:"fixed inset-0 z-50 bg-black/30 backdrop-blur-sm data-[state=closed]:animate-fd-fade-out data-[state=open]:animate-fd-fade-in"}),(0,a.jsxs)(W,{"aria-describedby":void 0,className:"fixed left-1/2 top-[10vh] z-50 w-[98vw] max-w-screen-sm -translate-x-1/2 rounded-lg border bg-fd-popover text-fd-popover-foreground shadow-lg data-[state=closed]:animate-fd-dialog-out data-[state=open]:animate-fd-dialog-in",children:[(0,a.jsx)(K,{className:"hidden",children:f.search}),(0,a.jsxs)("div",{className:"flex flex-row items-center gap-2 px-3",children:[(0,a.jsx)(ec,{isLoading:null!=u&&u}),(0,a.jsx)("input",{value:s,onChange:e=>{d(e.target.value)},placeholder:f.search,className:"w-0 flex-1 bg-transparent py-3 text-base placeholder:text-fd-muted-foreground focus-visible:outline-none"}),(0,a.jsx)("button",{type:"button","aria-label":"Close Search",onClick:()=>n(!1),className:(0,x.QP)((0,h.r)({color:"outline",className:"text-xs p-1.5"})),children:"Esc"})]}),"empty"!==c.results||p.length>0?(0,a.jsx)(eu,{items:"empty"===c.results?p:c.results,onSelect:()=>n(!1)}):null,r?(0,a.jsx)("div",{className:"mt-auto flex flex-col border-t p-3",children:r}):null]})]})}let ed={text:(0,a.jsx)(u,{className:"size-4 text-fd-muted-foreground"}),heading:(0,a.jsx)(c,{className:"size-4 text-fd-muted-foreground"}),page:(0,a.jsx)(f,{className:"size-4 text-fd-muted-foreground"})};function eu(e){let{items:t,onSelect:n,...r}=e,[o,s]=(0,l.useState)(),{text:d}=(0,i.s9)(),u=(0,es.rd)(),c=(0,g.c)();t.length>0&&(!o||t.every(e=>e.id!==o))&&s(t[0].id);let f=e=>{var t;let{external:r,url:a}=e;r?null==(t=window.open(a,"_blank"))||t.focus():u.push(a),null==n||n(a),c.setOpen(!1)},p=(0,el.J)(e=>{if(("ArrowDown"===e.key||"ArrowUp"==e.key)&&(s(n=>{var r,a;let o=t.findIndex(e=>e.id===n);return -1===o?null==(r=t.at(0))?void 0:r.id:null==(a=t.at(("ArrowDown"===e.key?o+1:o-1)%t.length))?void 0:a.id}),e.preventDefault()),"Enter"===e.key){let n=t.find(e=>e.id===o);n&&f(n),e.preventDefault()}});return(0,l.useEffect)(()=>(window.addEventListener("keydown",p),()=>{window.removeEventListener("keydown",p)}),[p]),(0,a.jsxs)("div",{...r,className:(0,x.QP)("flex max-h-[460px] flex-col overflow-y-auto border-t p-2",r.className),children:[0===t.length?(0,a.jsx)("div",{className:"py-12 text-center text-sm",children:d.searchNoResult}):null,t.map(e=>(0,a.jsxs)(ef,{value:e.id,active:o,onActiveChange:s,onClick:()=>{f(e)},children:["page"!==e.type?(0,a.jsx)("div",{role:"none",className:"ms-2 h-full min-h-10 w-px bg-fd-border"}):null,ed[e.type],(0,a.jsx)("p",{className:"w-0 flex-1 truncate",children:e.content})]},e.id))]})}function ec(e){let{isLoading:t}=e;return(0,a.jsxs)("div",{className:"relative size-4",children:[(0,a.jsx)(p,{className:(0,x.QP)("absolute size-full animate-spin text-fd-primary transition-opacity",!t&&"opacity-0")}),(0,a.jsx)(m.A,{className:(0,x.QP)("absolute size-full text-fd-muted-foreground transition-opacity",t&&"opacity-0")})]})}function ef(e){let{active:t,onActiveChange:n,value:r,...o}=e;return(0,a.jsx)("button",{ref:(0,l.useCallback)(e=>{t===r&&e&&e.scrollIntoView({block:"nearest"})},[t,r]),type:"button","aria-selected":t===r,onPointerMove:()=>n(r),...o,className:(0,x.QP)("flex min-h-10 select-none flex-row items-center gap-2.5 rounded-lg px-2 text-start text-sm",t===r&&"bg-fd-accent text-fd-accent-foreground",o.className),children:o.children})}let ep=(0,eo.F)("rounded-md border px-2 py-0.5 text-xs font-medium text-fd-muted-foreground transition-colors",{variants:{active:{true:"bg-fd-accent text-fd-accent-foreground"}}});function em(e){let{tag:t,onTagChange:n,items:r,allowClear:o,...l}=e;return(0,a.jsxs)("div",{...l,className:(0,x.QP)("flex flex-row items-center gap-1 flex-wrap",l.className),children:[r.map(e=>{var r;return(0,a.jsx)("button",{type:"button","data-active":t===e.value,className:(0,x.QP)(ep({active:t===e.value}),null==(r=e.props)?void 0:r.className),onClick:()=>{t===e.value&&o?n(void 0):n(e.value)},tabIndex:-1,...e.props,children:e.name},e.value)}),l.children]})}function ex(e){var t;let{defaultTag:d,tags:u,api:c,delayMs:f,type:p="fetch",allowClear:m=!1,...x}=e,{locale:g}=(0,i.s9)(),[h,v]=(0,l.useState)(d),{search:y,setSearch:b,query:w}=function(e,t,a,s=100,i=!1,d){let[u,c]=(0,l.useState)(""),[f,p]=(0,l.useState)("empty"),[m,x]=(0,l.useState)(),[g,h]=(0,l.useState)(!1),v=function(e,t=1e3){let[n,r]=(0,l.useState)(e),a=(0,l.useRef)(void 0);if(0===t)return e;if(e!==n&&a.current?.value!==e){a.current&&clearTimeout(a.current.handler);let n=window.setTimeout(()=>{r(e)},t);a.current={value:e,handler:n}}return n}(u,s),y=(0,l.useRef)(void 0);return(0,o.T)((void 0)??[e,v,t,a],()=>{y.current&&(y.current(),y.current=void 0),h(!0);let o=!1;y.current=()=>{o=!0},(async function(){if(0===v.length&&!i)return"empty";if("fetch"===e.type){let{fetchDocs:r}=await n.e(996).then(n.bind(n,1615));return r(v,t,a,e)}if("algolia"===e.type){let{index:t,type:r,...o}=e,{searchDocs:l}=await n.e(728).then(n.bind(n,6728));return l(t,v,a,o)}if("orama-cloud"===e.type){let{searchDocs:t}=await n.e(886).then(n.bind(n,8886));return t(v,a,e)}let{createStaticClient:o}=await n.e(323).then(n.bind(n,323));return r||(r=o(e)),r.search(v,t,a)})().then(e=>{o||(x(void 0),p(e))}).catch(e=>{x(e)}).finally(()=>{h(!1)})}),{search:u,setSearch:c,query:{isLoading:g,data:f,error:m}}}("fetch"===p?{type:"fetch",api:c}:{type:"static",from:c},g,h,f);return(0,s.T)(d,e=>{v(e)}),(0,a.jsx)(ei,{search:y,onSearchChange:b,isLoading:w.isLoading,results:null!=(t=w.data)?t:[],...x,footer:u?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(em,{tag:h,onTagChange:v,items:u,allowClear:m}),x.footer]}):x.footer})}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js b/docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js deleted file mode 100644 index 1e657c9e..00000000 --- a/docs/_next/static/chunks/4bd1b696-bad170bae81532a4.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[441],{9248:(e,n,t)=>{var r,l=t(9509),a=t(6206),o=t(2115),u=t(7650);function i(e){var n="https://react.dev/errors/"+e;if(1I||(e.current=R[I],R[I]=null,I--)}function H(e,n){R[++I]=e.current,e.current=n}var V=U(null),Q=U(null),$=U(null),B=U(null);function W(e,n){switch(H($,n),H(Q,e),H(V,null),n.nodeType){case 9:case 11:e=(e=n.documentElement)&&(e=e.namespaceURI)?si(e):0;break;default:if(e=n.tagName,n=n.namespaceURI)e=ss(n=si(n),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j(V),H(V,e)}function q(){j(V),j(Q),j($)}function K(e){null!==e.memoizedState&&H(B,e);var n=V.current,t=ss(n,e.type);n!==t&&(H(Q,e),H(V,t))}function Y(e){Q.current===e&&(j(V),j(Q)),B.current===e&&(j(B),sZ._currentValue=A)}function X(e){if(void 0===nO)try{throw Error()}catch(e){var n=e.stack.trim().match(/\n( *(at )?)/);nO=n&&n[1]||"",nA=-1)":-1l||i[r]!==s[l]){var c="\n"+i[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{G=!1,Error.prepareStackTrace=t}return(t=e?e.displayName||e.name:"")?X(t):""}function J(e){try{var n="";do n+=function(e){switch(e.tag){case 26:case 27:case 5:return X(e.type);case 16:return X("Lazy");case 13:return X("Suspense");case 19:return X("SuspenseList");case 0:case 15:return Z(e.type,!1);case 11:return Z(e.type.render,!1);case 1:return Z(e.type,!0);case 31:return X("Activity");default:return""}}(e),e=e.return;while(e);return n}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}var ee=Object.prototype.hasOwnProperty,en=a.unstable_scheduleCallback,et=a.unstable_cancelCallback,er=a.unstable_shouldYield,el=a.unstable_requestPaint,ea=a.unstable_now,eo=a.unstable_getCurrentPriorityLevel,eu=a.unstable_ImmediatePriority,ei=a.unstable_UserBlockingPriority,es=a.unstable_NormalPriority,ec=a.unstable_LowPriority,ef=a.unstable_IdlePriority,ed=a.log,ep=a.unstable_setDisableYieldValue,em=null,eh=null;function eg(e){if("function"==typeof ed&&ep(e),eh&&"function"==typeof eh.setStrictMode)try{eh.setStrictMode(em,e)}catch(e){}}var ey=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(ev(e)/eb|0)|0},ev=Math.log,eb=Math.LN2,ek=256,ew=4194304;function eS(e){var n=42&e;if(0!==n)return n;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function ex(e,n,t){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var u=0x7ffffff&r;return 0!==u?0!=(r=u&~a)?l=eS(r):0!=(o&=u)?l=eS(o):t||0!=(t=u&~e)&&(l=eS(t)):0!=(u=r&~a)?l=eS(u):0!==o?l=eS(o):t||0!=(t=r&~e)&&(l=eS(t)),0===l?0:0!==n&&n!==l&&0==(n&a)&&((a=l&-l)>=(t=n&-n)||32===a&&0!=(4194048&t))?n:l}function eE(e,n){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&n)}function eC(){var e=ek;return 0==(4194048&(ek<<=1))&&(ek=256),e}function ez(){var e=ew;return 0==(0x3c00000&(ew<<=1))&&(ew=4194304),e}function eP(e){for(var n=[],t=0;31>t;t++)n.push(e);return n}function eN(e,n){e.pendingLanes|=n,0x10000000!==n&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function eL(e,n,t){e.pendingLanes|=n,e.suspendedLanes&=~n;var r=31-ey(n);e.entangledLanes|=n,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&t}function eT(e,n){var t=e.entangledLanes|=n;for(e=e.entanglements;t;){var r=31-ey(t),l=1<=te),tr=!1;function tl(e,n){switch(e){case"keyup":return -1!==n9.indexOf(n.keyCode);case"keydown":return 229!==n.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function ta(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var to=!1,tu={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function ti(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===n?!!tu[e.type]:"textarea"===n}function ts(e,n,t,r){nv?nb?nb.push(r):nb=[r]:nv=r,0<(n=i4(n,"onChange")).length&&(t=new nH("onChange","change",null,t,r),e.push({event:t,listeners:n}))}var tc=null,tf=null;function td(e){iX(e,0)}function tp(e){if(e9(eW(e)))return e}function tm(e,n){if("change"===e)return n}var th=!1;if(nE){if(nE){var tg="oninput"in document;if(!tg){var ty=document.createElement("div");ty.setAttribute("oninput","return;"),tg="function"==typeof ty.oninput}r=tg}else r=!1;th=r&&(!document.documentMode||9=n)return{node:r,offset:n-e};e=t}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=tz(r)}}function tN(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var n=e7(e.document);n instanceof e.HTMLIFrameElement;){try{var t="string"==typeof n.contentWindow.location.href}catch(e){t=!1}if(t)e=n.contentWindow;else break;n=e7(e.document)}return n}function tL(e){var n=e&&e.nodeName&&e.nodeName.toLowerCase();return n&&("input"===n&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===n||"true"===e.contentEditable)}var tT=nE&&"documentMode"in document&&11>=document.documentMode,t_=null,tF=null,tD=null,tM=!1;function tO(e,n,t){var r=t.window===t?t.document:9===t.nodeType?t:t.ownerDocument;tM||null==t_||t_!==e7(r)||(r="selectionStart"in(r=t_)&&tL(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},tD&&tC(tD,r)||(tD=r,0<(r=i4(tF,"onSelect")).length&&(n=new nH("onSelect","select",null,n,t),e.push({event:n,listeners:r}),n.target=t_)))}function tA(e,n){var t={};return t[e.toLowerCase()]=n.toLowerCase(),t["Webkit"+e]="webkit"+n,t["Moz"+e]="moz"+n,t}var tR={animationend:tA("Animation","AnimationEnd"),animationiteration:tA("Animation","AnimationIteration"),animationstart:tA("Animation","AnimationStart"),transitionrun:tA("Transition","TransitionRun"),transitionstart:tA("Transition","TransitionStart"),transitioncancel:tA("Transition","TransitionCancel"),transitionend:tA("Transition","TransitionEnd")},tI={},tU={};function tj(e){if(tI[e])return tI[e];if(!tR[e])return e;var n,t=tR[e];for(n in t)if(t.hasOwnProperty(n)&&n in tU)return tI[e]=t[n];return e}nE&&(tU=document.createElement("div").style,"AnimationEvent"in window||(delete tR.animationend.animation,delete tR.animationiteration.animation,delete tR.animationstart.animation),"TransitionEvent"in window||delete tR.transitionend.transition);var tH=tj("animationend"),tV=tj("animationiteration"),tQ=tj("animationstart"),t$=tj("transitionrun"),tB=tj("transitionstart"),tW=tj("transitioncancel"),tq=tj("transitionend"),tK=new Map,tY="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function tX(e,n){tK.set(e,n),eG(n,[e])}tY.push("scrollEnd");var tG=new WeakMap;function tZ(e,n){if("object"==typeof e&&null!==e){var t=tG.get(e);return void 0!==t?t:(n={value:e,source:n,stack:J(n)},tG.set(e,n),n)}return{value:e,source:n,stack:J(n)}}var tJ=[],t0=0,t1=0;function t2(){for(var e=t0,n=t1=t0=0;n>=o,l-=o,rh=1<<32-ey(n)+l|t<h?(g=f,f=null):g=f.sibling;var y=p(l,f,u[h],i);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&n(l,f),o=a(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===u.length)return t(l,f),rx&&ry(l,h),s;if(null===f){for(;hg?(y=h,h=null):y=h.sibling;var b=p(l,h,v.value,s);if(null===b){null===h&&(h=y);break}e&&h&&null===b.alternate&&n(l,h),o=a(b,o,g),null===f?c=b:f.sibling=b,f=b,h=y}if(v.done)return t(l,h),rx&&ry(l,g),c;if(null===h){for(;!v.done;g++,v=u.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return rx&&ry(l,g),c}for(h=r(h);!v.done;g++,v=u.next())null!==(v=m(h,l,g,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return n(l,e)}),rx&&ry(l,g),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return u(s,c,lf(f),v);if(f.$$typeof===S)return u(s,c,rB(s,f),v);lp(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(t(s,c.sibling),(v=l(c,f)).return=s):(t(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):t(s,c)}(u,s,c,f);return ls=null,v}catch(e){if(e===r7||e===ln)throw e;var b=re(29,e,null,u.mode);return b.lanes=f,b.return=u,b}finally{}}}var lg=lh(!0),ly=lh(!1),lv=!1;function lb(e){e.updateQueue={baseState:e.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,lanes:0,hiddenCallbacks:null},callbacks:null}}function lk(e,n){e=e.updateQueue,n.updateQueue===e&&(n.updateQueue={baseState:e.baseState,firstBaseUpdate:e.firstBaseUpdate,lastBaseUpdate:e.lastBaseUpdate,shared:e.shared,callbacks:null})}function lw(e){return{lane:e,tag:0,payload:null,callback:null,next:null}}function lS(e,n,t){var r=e.updateQueue;if(null===r)return null;if(r=r.shared,0!=(2&uz)){var l=r.pending;return null===l?n.next=n:(n.next=l.next,l.next=n),r.pending=n,n=t5(e),t6(e,null,t),n}return t3(e,r,n,t),t5(e)}function lx(e,n,t){if(null!==(n=n.updateQueue)&&(n=n.shared,0!=(4194048&t))){var r=n.lanes;r&=e.pendingLanes,t|=r,n.lanes=t,eT(e,t)}}function lE(e,n){var t=e.updateQueue,r=e.alternate;if(null!==r&&t===(r=r.updateQueue)){var l=null,a=null;if(null!==(t=t.firstBaseUpdate)){do{var o={lane:t.lane,tag:t.tag,payload:t.payload,callback:null,next:null};null===a?l=a=o:a=a.next=o,t=t.next}while(null!==t);null===a?l=a=n:a=a.next=n}else l=a=n;t={baseState:r.baseState,firstBaseUpdate:l,lastBaseUpdate:a,shared:r.shared,callbacks:r.callbacks},e.updateQueue=t;return}null===(e=t.lastBaseUpdate)?t.firstBaseUpdate=n:e.next=n,t.lastBaseUpdate=n}var lC=!1;function lz(){if(lC){var e=r2;if(null!==e)throw e}}function lP(e,n,t,r){lC=!1;var l=e.updateQueue;lv=!1;var a=l.firstBaseUpdate,o=l.lastBaseUpdate,u=l.shared.pending;if(null!==u){l.shared.pending=null;var i=u,s=i.next;i.next=null,null===o?a=s:o.next=s,o=i;var c=e.alternate;null!==c&&(u=(c=c.updateQueue).lastBaseUpdate)!==o&&(null===u?c.firstBaseUpdate=s:u.next=s,c.lastBaseUpdate=i)}if(null!==a){var f=l.baseState;for(o=0,c=s=i=null,u=a;;){var d=-0x20000001&u.lane,m=d!==u.lane;if(m?(uL&d)===d:(r&d)===d){0!==d&&d===r1&&(lC=!0),null!==c&&(c=c.next={lane:0,tag:u.tag,payload:u.payload,callback:null,next:null});e:{var h=e,g=u;switch(d=n,g.tag){case 1:if("function"==typeof(h=g.payload)){f=h.call(t,f,d);break e}f=h;break e;case 3:h.flags=-65537&h.flags|128;case 0:if(null==(d="function"==typeof(h=g.payload)?h.call(t,f,d):h))break e;f=p({},f,d);break e;case 2:lv=!0}}null!==(d=u.callback)&&(e.flags|=64,m&&(e.flags|=8192),null===(m=l.callbacks)?l.callbacks=[d]:m.push(d))}else m={lane:d,tag:u.tag,payload:u.payload,callback:u.callback,next:null},null===c?(s=c=m,i=f):c=c.next=m,o|=d;if(null===(u=u.next))if(null===(u=l.shared.pending))break;else u=(m=u).next,m.next=null,l.lastBaseUpdate=m,l.shared.pending=null}null===c&&(i=f),l.baseState=i,l.firstBaseUpdate=s,l.lastBaseUpdate=c,null===a&&(l.shared.lanes=0),uR|=o,e.lanes=o,e.memoizedState=f}}function lN(e,n){if("function"!=typeof e)throw Error(i(191,e));e.call(n)}function lL(e,n){var t=e.callbacks;if(null!==t)for(e.callbacks=null,e=0;ea?a:8;var o=M.T,u={};M.T=u,a2(e,!1,n,t);try{var i=l(),s=M.S;if(null!==s&&s(u,i),null!==i&&"object"==typeof i&&"function"==typeof i.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},i.then(function(){f.status="fulfilled",f.value=r;for(var e=0;e title"))),sl(a,r,t),a[eO]=e,eK(a),r=a;break e;case"link":var o=sQ("link","href",l).get(r+(t.href||""));if(o){for(var u=0;u<\/script>",a=a.removeChild(a.firstChild);break;case"select":a="string"==typeof r.is?o.createElement("select",{is:r.is}):o.createElement("select"),r.multiple?a.multiple=!0:r.size&&(a.size=r.size);break;default:a="string"==typeof r.is?o.createElement(l,{is:r.is}):o.createElement(l)}}a[eO]=n,a[eA]=r;e:for(o=n.child;null!==o;){if(5===o.tag||6===o.tag)a.appendChild(o.stateNode);else if(4!==o.tag&&27!==o.tag&&null!==o.child){o.child.return=o,o=o.child;continue}if(o===n)break;for(;null===o.sibling;){if(null===o.return||o.return===n)break e;o=o.return}o.sibling.return=o.return,o=o.sibling}switch(n.stateNode=a,sl(a,l,r),l){case"button":case"input":case"select":case"textarea":r=!!r.autoFocus;break;case"img":r=!0;break;default:r=!1}r&&oj(n)}}return oB(n),oH(n,n.type,null===e?null:e.memoizedProps,n.pendingProps,t),null;case 6:if(e&&null!=n.stateNode)e.memoizedProps!==r&&oj(n);else{if("string"!=typeof r&&null===n.stateNode)throw Error(i(166));if(e=$.current,rT(n)){if(e=n.stateNode,t=n.memoizedProps,r=null,null!==(l=rw))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eO]=n,(e=!!(e.nodeValue===t||null!==r&&!0===r.suppressHydrationWarning||se(e.nodeValue,t)))||rP(n,!0)}else(e=su(e).createTextNode(r))[eO]=n,n.stateNode=e}return oB(n),null;case 13:if(r=n.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rT(n),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(i(318));if(!(l=null!==(l=n.memoizedState)?l.dehydrated:null))throw Error(i(317));l[eO]=n}else r_(),0==(128&n.flags)&&(n.memoizedState=null),n.flags|=4;oB(n),l=!1}else l=rF(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&n.flags)return lj(n),n;return lj(n),null}}if(lj(n),0!=(128&n.flags))return n.lanes=t,n;return t=null!==r,e=null!==e&&null!==e.memoizedState,t&&(r=n.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool),a=null,null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)),t!==e&&t&&(n.child.flags|=8192),oQ(n,n.updateQueue),oB(n),null;case 4:return q(),null===e&&i0(n.stateNode.containerInfo),oB(n),null;case 10:return rI(n.type),oB(n),null;case 19:if(j(lH),null===(l=n.memoizedState))return oB(n),null;if(r=0!=(128&n.flags),null===(a=l.rendering))if(r)o$(l,!1);else{if(0!==uA||null!==e&&0!=(128&e.flags))for(e=n.child;null!==e;){if(null!==(a=lV(e))){for(n.flags|=128,o$(l,!1),e=a.updateQueue,n.updateQueue=e,oQ(n,e),n.subtreeFlags=0,e=t,t=n.child;null!==t;)rr(t,e),t=t.sibling;return H(lH,1&lH.current|2),n.child}e=e.sibling}null!==l.tail&&ea()>uW&&(n.flags|=128,r=!0,o$(l,!1),n.lanes=4194304)}else{if(!r)if(null!==(e=lV(a))){if(n.flags|=128,r=!0,e=e.updateQueue,n.updateQueue=e,oQ(n,e),o$(l,!0),null===l.tail&&"hidden"===l.tailMode&&!a.alternate&&!rx)return oB(n),null}else 2*ea()-l.renderingStartTime>uW&&0x20000000!==t&&(n.flags|=128,r=!0,o$(l,!1),n.lanes=4194304);l.isBackwards?(a.sibling=n.child,n.child=a):(null!==(e=l.last)?e.sibling=a:n.child=a,l.last=a)}if(null!==l.tail)return n=l.tail,l.rendering=n,l.tail=n.sibling,l.renderingStartTime=ea(),n.sibling=null,e=lH.current,H(lH,r?1&e|2:1&e),n;return oB(n),null;case 22:case 23:return lj(n),lM(),r=null!==n.memoizedState,null!==e?null!==e.memoizedState!==r&&(n.flags|=8192):r&&(n.flags|=8192),r?0!=(0x20000000&t)&&0==(128&n.flags)&&(oB(n),6&n.subtreeFlags&&(n.flags|=8192)):oB(n),null!==(t=n.updateQueue)&&oQ(n,t.retryQueue),t=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(t=e.memoizedState.cachePool.pool),r=null,null!==n.memoizedState&&null!==n.memoizedState.cachePool&&(r=n.memoizedState.cachePool.pool),r!==t&&(n.flags|=2048),null!==e&&j(r8),null;case 24:return t=null,null!==e&&(t=e.memoizedState.cache),n.memoizedState.cache!==t&&(n.flags|=2048),rI(rX),oB(n),null;case 25:case 30:return null}throw Error(i(156,n.tag))}(n.alternate,n,uO);if(null!==t){uN=t;return}if(null!==(n=n.sibling)){uN=n;return}uN=n=e}while(null!==n);0===uA&&(uA=5)}function ih(e,n){do{var t=function(e,n){switch(rk(n),n.tag){case 1:return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 3:return rI(rX),q(),0!=(65536&(e=n.flags))&&0==(128&e)?(n.flags=-65537&e|128,n):null;case 26:case 27:case 5:return Y(n),null;case 13:if(lj(n),null!==(e=n.memoizedState)&&null!==e.dehydrated){if(null===n.alternate)throw Error(i(340));r_()}return 65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 19:return j(lH),null;case 4:return q(),null;case 10:return rI(n.type),null;case 22:case 23:return lj(n),lM(),null!==e&&j(r8),65536&(e=n.flags)?(n.flags=-65537&e|128,n):null;case 24:return rI(rX),null;default:return null}}(e.alternate,e);if(null!==t){t.flags&=32767,uN=t;return}if(null!==(t=e.return)&&(t.flags|=32768,t.subtreeFlags=0,t.deletions=null),!n&&null!==(e=e.sibling)){uN=e;return}uN=e=t}while(null!==e);uA=6,uN=null}function ig(e,n,t,r,l,a,o,u,s){e.cancelPendingCommit=null;do iw();while(0!==uY);if(0!=(6&uz))throw Error(i(327));if(null!==n){if(n===e.current)throw Error(i(177));if(!function(e,n,t,r,l,a){var o=e.pendingLanes;e.pendingLanes=t,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=t,e.entangledLanes&=t,e.errorRecoveryDisabledLanes&=t,e.shellSuspendCounter=0;var u=e.entanglements,i=e.expirationTimes,s=e.hiddenUpdates;for(t=o&~t;0g&&(o=g,g=h,h=o);var y=tP(u,h),v=tP(u,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=u;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof u.focus&&u.focus(),u=0;ut?32:t,M.T=null,t=u0,u0=null;var a=uX,o=uZ;if(uY=0,uG=uX=null,uZ=0,0!=(6&uz))throw Error(i(331));var u=uz;if(uz|=4,uS(a.current),uh(a,a.current,o,t),uz=u,iR(0,!1),eh&&"function"==typeof eh.onPostCommitFiberRoot)try{eh.onPostCommitFiberRoot(em,a)}catch(e){}return!0}finally{O.p=l,M.T=r,ik(e,n)}}function ix(e,n,t){n=tZ(t,n),n=of(e.stateNode,n,2),null!==(e=lS(e,n,2))&&(eN(e,2),iA(e))}function iE(e,n,t){if(3===e.tag)ix(e,e,t);else for(;null!==n;){if(3===n.tag){ix(n,e,t);break}if(1===n.tag){var r=n.stateNode;if("function"==typeof n.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===uK||!uK.has(r))){e=tZ(t,e),null!==(r=lS(n,t=od(2),2))&&(op(t,r,n,e),eN(r,2),iA(r));break}}n=n.return}}function iC(e,n,t){var r=e.pingCache;if(null===r){r=e.pingCache=new uC;var l=new Set;r.set(n,l)}else void 0===(l=r.get(n))&&(l=new Set,r.set(n,l));l.has(t)||(uM=!0,l.add(t),e=iz.bind(null,e,n,t),n.then(e,e))}function iz(e,n,t){var r=e.pingCache;null!==r&&r.delete(n),e.pingedLanes|=e.suspendedLanes&t,e.warmLanes&=~t,uP===e&&(uL&t)===t&&(4===uA||3===uA&&(0x3c00000&uL)===uL&&300>ea()-uB?0==(2&uz)&&ir(e,0):uU|=t,uH===uL&&(uH=0)),iA(e)}function iP(e,n){0===n&&(n=ez()),null!==(e=t8(e,n))&&(eN(e,n),iA(e))}function iN(e){var n=e.memoizedState,t=0;null!==n&&(t=n.retryLane),iP(e,t)}function iL(e,n){var t=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(t=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(i(314))}null!==r&&r.delete(n),iP(e,t)}var iT=null,i_=null,iF=!1,iD=!1,iM=!1,iO=0;function iA(e){e!==i_&&null===e.next&&(null===i_?iT=i_=e:i_=i_.next=e),iD=!0,iF||(iF=!0,sh(function(){0!=(6&uz)?en(eu,iI):iU()}))}function iR(e,n){if(!iM&&iD){iM=!0;do for(var t=!1,r=iT;null!==r;){if(!n)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,u=r.pingedLanes;a=0xc000095&(a=(1<<31-ey(42|e)+1)-1&(l&~(o&~u)))?0xc000095&a|1:a?2|a:0}0!==a&&(t=!0,iV(r,a))}else a=uL,0==(3&(a=ex(r,r===uP?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||eE(r,a)||(t=!0,iV(r,a));r=r.next}while(t);iM=!1}}function iI(){iU()}function iU(){iD=iF=!1;var e,n=0;0!==iO&&(((e=window.event)&&"popstate"===e.type?e===sf||(sf=e,0):(sf=null,1))||(n=iO),iO=0);for(var t=ea(),r=null,l=iT;null!==l;){var a=l.next,o=ij(l,t);0===o?(l.next=null,null===r?iT=a:r.next=a,null===a&&(i_=r)):(r=l,(0!==n||0!=(3&o))&&(iD=!0)),l=a}0!==uY&&5!==uY||iR(n,!1)}function ij(e,n){for(var t=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0r){t=r;var o=e.ownerDocument;if(1&t&&sC(o.documentElement),2&t&&sC(o.body),4&t)for(sC(t=o.head),o=t.firstChild;o;){var u=o.nextSibling,i=o.nodeName;o[eV]||"SCRIPT"===i||"STYLE"===i||"LINK"===i&&"stylesheet"===o.rel.toLowerCase()||t.removeChild(o),o=u}}if(0===l){e.removeChild(a),cw(n);return}l--}else"$"===t||"$?"===t||"$!"===t?l++:r=t.charCodeAt(0)-48;else r=0;t=a}while(t);cw(n)}function sb(e){var n=e.firstChild;for(n&&10===n.nodeType&&(n=n.nextSibling);n;){var t=n;switch(n=n.nextSibling,t.nodeName){case"HTML":case"HEAD":case"BODY":sb(t),eQ(t);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===t.rel.toLowerCase())continue}e.removeChild(t)}}function sk(e){return"$!"===e.data||"$?"===e.data&&"complete"===e.ownerDocument.readyState}function sw(e){for(;null!=e;e=e.nextSibling){var n=e.nodeType;if(1===n||3===n)break;if(8===n){if("$"===(n=e.data)||"$!"===n||"$?"===n||"F!"===n||"F"===n)break;if("/$"===n)return null}}return e}var sS=null;function sx(e){e=e.previousSibling;for(var n=0;e;){if(8===e.nodeType){var t=e.data;if("$"===t||"$!"===t||"$?"===t){if(0===n)return e;n--}else"/$"===t&&n++}e=e.previousSibling}return null}function sE(e,n,t){switch(n=su(t),e){case"html":if(!(e=n.documentElement))throw Error(i(452));return e;case"head":if(!(e=n.head))throw Error(i(453));return e;case"body":if(!(e=n.body))throw Error(i(454));return e;default:throw Error(i(451))}}function sC(e){for(var n=e.attributes;n.length;)e.removeAttributeNode(n[0]);eQ(e)}var sz=new Map,sP=new Set;function sN(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var sL=O.d;O.d={f:function(){var e=sL.f(),n=ie();return e||n},r:function(e){var n=eB(e);null!==n&&5===n.tag&&"form"===n.type?aK(n):sL.r(e)},D:function(e){sL.D(e),s_("dns-prefetch",e,null)},C:function(e,n){sL.C(e,n),s_("preconnect",e,n)},L:function(e,n,t){if(sL.L(e,n,t),sT&&e&&n){var r='link[rel="preload"][as="'+nn(n)+'"]';"image"===n&&t&&t.imageSrcSet?(r+='[imagesrcset="'+nn(t.imageSrcSet)+'"]',"string"==typeof t.imageSizes&&(r+='[imagesizes="'+nn(t.imageSizes)+'"]')):r+='[href="'+nn(e)+'"]';var l=r;switch(n){case"style":l=sD(e);break;case"script":l=sA(e)}sz.has(l)||(e=p({rel:"preload",href:"image"===n&&t&&t.imageSrcSet?void 0:e,as:n},t),sz.set(l,e),null!==sT.querySelector(r)||"style"===n&&sT.querySelector(sM(l))||"script"===n&&sT.querySelector(sR(l))||(sl(n=sT.createElement("link"),"link",e),eK(n),sT.head.appendChild(n)))}},m:function(e,n){if(sL.m(e,n),sT&&e){var t=n&&"string"==typeof n.as?n.as:"script",r='link[rel="modulepreload"][as="'+nn(t)+'"][href="'+nn(e)+'"]',l=r;switch(t){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=sA(e)}if(!sz.has(l)&&(e=p({rel:"modulepreload",href:e},n),sz.set(l,e),null===sT.querySelector(r))){switch(t){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(sT.querySelector(sR(l)))return}sl(t=sT.createElement("link"),"link",e),eK(t),sT.head.appendChild(t)}}},X:function(e,n){if(sL.X(e,n),sT&&e){var t=eq(sT).hoistableScripts,r=sA(e),l=t.get(r);l||((l=sT.querySelector(sR(r)))||(e=p({src:e,async:!0},n),(n=sz.get(r))&&sH(e,n),eK(l=sT.createElement("script")),sl(l,"link",e),sT.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},t.set(r,l))}},S:function(e,n,t){if(sL.S(e,n,t),sT&&e){var r=eq(sT).hoistableStyles,l=sD(e);n=n||"default";var a=r.get(l);if(!a){var o={loading:0,preload:null};if(a=sT.querySelector(sM(l)))o.loading=5;else{e=p({rel:"stylesheet",href:e,"data-precedence":n},t),(t=sz.get(l))&&sj(e,t);var u=a=sT.createElement("link");eK(u),sl(u,"link",e),u._p=new Promise(function(e,n){u.onload=e,u.onerror=n}),u.addEventListener("load",function(){o.loading|=1}),u.addEventListener("error",function(){o.loading|=2}),o.loading|=4,sU(a,n,sT)}a={type:"stylesheet",instance:a,count:1,state:o},r.set(l,a)}}},M:function(e,n){if(sL.M(e,n),sT&&e){var t=eq(sT).hoistableScripts,r=sA(e),l=t.get(r);l||((l=sT.querySelector(sR(r)))||(e=p({src:e,async:!0,type:"module"},n),(n=sz.get(r))&&sH(e,n),eK(l=sT.createElement("script")),sl(l,"link",e),sT.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},t.set(r,l))}}};var sT="undefined"==typeof document?null:document;function s_(e,n,t){if(sT&&"string"==typeof n&&n){var r=nn(n);r='link[rel="'+e+'"][href="'+r+'"]',"string"==typeof t&&(r+='[crossorigin="'+t+'"]'),sP.has(r)||(sP.add(r),e={rel:e,crossOrigin:t,href:n},null===sT.querySelector(r)&&(sl(n=sT.createElement("link"),"link",e),eK(n),sT.head.appendChild(n)))}}function sF(e,n,t,r){var l=(l=$.current)?sN(l):null;if(!l)throw Error(i(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof t.precedence&&"string"==typeof t.href?(n=sD(t.href),(r=(t=eq(l).hoistableStyles).get(n))||(r={type:"style",instance:null,count:0,state:null},t.set(n,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===t.rel&&"string"==typeof t.href&&"string"==typeof t.precedence){e=sD(t.href);var a,o,u,s,c=eq(l).hoistableStyles,f=c.get(e);if(f||(l=l.ownerDocument||l,f={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,f),(c=l.querySelector(sM(e)))&&!c._p&&(f.instance=c,f.state.loading=5),sz.has(e)||(t={rel:"preload",as:"style",href:t.href,crossOrigin:t.crossOrigin,integrity:t.integrity,media:t.media,hrefLang:t.hrefLang,referrerPolicy:t.referrerPolicy},sz.set(e,t),c||(a=l,o=e,u=t,s=f.state,a.querySelector('link[rel="preload"][as="style"]['+o+"]")?s.loading=1:(s.preload=o=a.createElement("link"),o.addEventListener("load",function(){return s.loading|=1}),o.addEventListener("error",function(){return s.loading|=2}),sl(o,"link",u),eK(o),a.head.appendChild(o))))),n&&null===r)throw Error(i(528,""));return f}if(n&&null!==r)throw Error(i(529,""));return null;case"script":return n=t.async,"string"==typeof(t=t.src)&&n&&"function"!=typeof n&&"symbol"!=typeof n?(n=sA(t),(r=(t=eq(l).hoistableScripts).get(n))||(r={type:"script",instance:null,count:0,state:null},t.set(n,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(i(444,e))}}function sD(e){return'href="'+nn(e)+'"'}function sM(e){return'link[rel="stylesheet"]['+e+"]"}function sO(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function sA(e){return'[src="'+nn(e)+'"]'}function sR(e){return"script[async]"+e}function sI(e,n,t){if(n.count++,null===n.instance)switch(n.type){case"style":var r=e.querySelector('style[data-href~="'+nn(t.href)+'"]');if(r)return n.instance=r,eK(r),r;var l=p({},t,{"data-href":t.href,"data-precedence":t.precedence,href:null,precedence:null});return eK(r=(e.ownerDocument||e).createElement("style")),sl(r,"style",l),sU(r,t.precedence,e),n.instance=r;case"stylesheet":l=sD(t.href);var a=e.querySelector(sM(l));if(a)return n.state.loading|=4,n.instance=a,eK(a),a;r=sO(t),(l=sz.get(l))&&sj(r,l),eK(a=(e.ownerDocument||e).createElement("link"));var o=a;return o._p=new Promise(function(e,n){o.onload=e,o.onerror=n}),sl(a,"link",r),n.state.loading|=4,sU(a,t.precedence,e),n.instance=a;case"script":if(a=sA(t.src),l=e.querySelector(sR(a)))return n.instance=l,eK(l),l;return r=t,(l=sz.get(a))&&sH(r=p({},t),l),eK(l=(e=e.ownerDocument||e).createElement("script")),sl(l,"link",r),e.head.appendChild(l),n.instance=l;case"void":return null;default:throw Error(i(443,n.type))}return"stylesheet"===n.type&&0==(4&n.state.loading)&&(r=n.instance,n.state.loading|=4,sU(r,t.precedence,e)),n.instance}function sU(e,n,t){for(var r=t.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=r.length?r[r.length-1]:null,a=l,o=0;o title"):null)}function sB(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var sW=null;function sq(){}function sK(){if(this.count--,0===this.count){if(this.stylesheets)sX(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var sY=null;function sX(e,n){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sY=new Map,n.forEach(sG,e),sY=null,sK.call(e))}function sG(e,n){if(!(4&n.state.loading)){var t=sY.get(e);if(t)var r=t.get(null);else{t=new Map,sY.set(e,t);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{t.d(r,{B:()=>i});var o,n=t(2115),a=t(2712),l=(o||(o=t.t(n,2)))[" useId ".trim().toString()]||(()=>void 0),s=0;function i(e){let[r,t]=n.useState(l());return(0,a.N)(()=>{e||t(e=>e??String(s++))},[e]),e||(r?`radix-${r}`:"")}},2085:(e,r,t)=>{t.d(r,{F:()=>l});var o=t(2596);let n=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,a=o.$,l=(e,r)=>t=>{var o;if((null==r?void 0:r.variants)==null)return a(e,null==t?void 0:t.class,null==t?void 0:t.className);let{variants:l,defaultVariants:s}=r,i=Object.keys(l).map(e=>{let r=null==t?void 0:t[e],o=null==s?void 0:s[e];if(null===r)return null;let a=n(r)||n(o);return l[e][a]}),d=t&&Object.entries(t).reduce((e,r)=>{let[t,o]=r;return void 0===o||(e[t]=o),e},{});return a(e,i,null==r||null==(o=r.compoundVariants)?void 0:o.reduce((e,r)=>{let{class:t,className:o,...n}=r;return Object.entries(n).every(e=>{let[r,t]=e;return Array.isArray(t)?t.includes({...s,...d}[r]):({...s,...d})[r]===t})?[...e,t,o]:e},[]),null==t?void 0:t.class,null==t?void 0:t.className)}},2596:(e,r,t)=>{t.d(r,{$:()=>o});function o(){for(var e,r,t=0,o="",n=arguments.length;t{t.d(r,{N:()=>n});var o=t(2115),n=globalThis?.document?o.useLayoutEffect:()=>{}},3536:(e,r,t)=>{t.d(r,{A:()=>c});var o=t(2115);let n=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),a=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,t)=>t?t.toUpperCase():r.toLowerCase()),l=e=>{let r=a(e);return r.charAt(0).toUpperCase()+r.slice(1)},s=function(){for(var e=arguments.length,r=Array(e),t=0;t!!e&&""!==e.trim()&&t.indexOf(e)===r).join(" ").trim()};var i={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let d=(0,o.forwardRef)((e,r)=>{let{color:t="currentColor",size:n=24,strokeWidth:a=2,absoluteStrokeWidth:l,className:d="",children:c,iconNode:u,...m}=e;return(0,o.createElement)("svg",{ref:r,...i,width:n,height:n,stroke:t,strokeWidth:l?24*Number(a)/Number(n):a,className:s("lucide",d),...m},[...u.map(e=>{let[r,t]=e;return(0,o.createElement)(r,t)}),...Array.isArray(c)?c:[c]])}),c=(e,r)=>{let t=(0,o.forwardRef)((t,a)=>{let{className:i,...c}=t;return(0,o.createElement)(d,{ref:a,iconNode:r,className:s("lucide-".concat(n(l(e))),"lucide-".concat(e),i),...c})});return t.displayName=l(e),t}},3655:(e,r,t)=>{t.d(r,{hO:()=>i,sG:()=>s});var o=t(2115),n=t(7650),a=t(9708),l=t(5155),s=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,r)=>{let t=(0,a.TL)(`Primitive.${r}`),n=o.forwardRef((e,o)=>{let{asChild:n,...a}=e;return"undefined"!=typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,l.jsx)(n?t:r,{...a,ref:o})});return n.displayName=`Primitive.${r}`,{...e,[r]:n}},{});function i(e,r){e&&n.flushSync(()=>e.dispatchEvent(r))}},5185:(e,r,t)=>{t.d(r,{m:()=>o});function o(e,r,{checkForDefaultPrevented:t=!0}={}){return function(o){if(e?.(o),!1===t||!o.defaultPrevented)return r?.(o)}}},5845:(e,r,t)=>{t.d(r,{i:()=>s});var o,n=t(2115),a=t(2712),l=(o||(o=t.t(n,2)))[" useInsertionEffect ".trim().toString()]||a.N;function s({prop:e,defaultProp:r,onChange:t=()=>{},caller:o}){let[a,s,i]=function({defaultProp:e,onChange:r}){let[t,o]=n.useState(e),a=n.useRef(t),s=n.useRef(r);return l(()=>{s.current=r},[r]),n.useEffect(()=>{a.current!==t&&(s.current?.(t),a.current=t)},[t,a]),[t,o,s]}({defaultProp:r,onChange:t}),d=void 0!==e,c=d?e:a;{let r=n.useRef(void 0!==e);n.useEffect(()=>{let e=r.current;if(e!==d){let r=d?"controlled":"uncontrolled";console.warn(`${o} is changing from ${e?"controlled":"uncontrolled"} to ${r}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`)}r.current=d},[d,o])}return[c,n.useCallback(r=>{if(d){let t="function"==typeof r?r(e):r;t!==e&&i.current?.(t)}else s(r)},[d,e,s,i])]}Symbol("RADIX:SYNC_STATE")},6081:(e,r,t)=>{t.d(r,{A:()=>l,q:()=>a});var o=t(2115),n=t(5155);function a(e,r){let t=o.createContext(r),a=e=>{let{children:r,...a}=e,l=o.useMemo(()=>a,Object.values(a));return(0,n.jsx)(t.Provider,{value:l,children:r})};return a.displayName=e+"Provider",[a,function(n){let a=o.useContext(t);if(a)return a;if(void 0!==r)return r;throw Error(`\`${n}\` must be used within \`${e}\``)}]}function l(e,r=[]){let t=[],a=()=>{let r=t.map(e=>o.createContext(e));return function(t){let n=t?.[e]||r;return o.useMemo(()=>({[`__scope${e}`]:{...t,[e]:n}}),[t,n])}};return a.scopeName=e,[function(r,a){let l=o.createContext(a),s=t.length;t=[...t,a];let i=r=>{let{scope:t,children:a,...i}=r,d=t?.[e]?.[s]||l,c=o.useMemo(()=>i,Object.values(i));return(0,n.jsx)(d.Provider,{value:c,children:a})};return i.displayName=r+"Provider",[i,function(t,n){let i=n?.[e]?.[s]||l,d=o.useContext(i);if(d)return d;if(void 0!==a)return a;throw Error(`\`${t}\` must be used within \`${r}\``)}]},function(...e){let r=e[0];if(1===e.length)return r;let t=()=>{let t=e.map(e=>({useScope:e(),scopeName:e.scopeName}));return function(e){let n=t.reduce((r,{useScope:t,scopeName:o})=>{let n=t(e)[`__scope${o}`];return{...r,...n}},{});return o.useMemo(()=>({[`__scope${r.scopeName}`]:n}),[n])}};return t.scopeName=r.scopeName,t}(a,...r)]}},6101:(e,r,t)=>{t.d(r,{s:()=>l,t:()=>a});var o=t(2115);function n(e,r){if("function"==typeof e)return e(r);null!=e&&(e.current=r)}function a(...e){return r=>{let t=!1,o=e.map(e=>{let o=n(e,r);return t||"function"!=typeof o||(t=!0),o});if(t)return()=>{for(let r=0;r{t.d(r,{r:()=>o});let o=(0,t(2085).F)("inline-flex items-center justify-center rounded-md p-2 text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50",{variants:{color:{primary:"bg-fd-primary text-fd-primary-foreground hover:bg-fd-primary/80",outline:"border hover:bg-fd-accent hover:text-fd-accent-foreground",ghost:"hover:bg-fd-accent hover:text-fd-accent-foreground",secondary:"border bg-fd-secondary text-fd-secondary-foreground hover:bg-fd-accent hover:text-fd-accent-foreground"},size:{sm:"gap-1 p-1 text-xs",icon:"p-1.5 [&_svg]:size-5","icon-sm":"p-1.5 [&_svg]:size-4.5"}}})},8905:(e,r,t)=>{t.d(r,{C:()=>l});var o=t(2115),n=t(6101),a=t(2712),l=e=>{let{present:r,children:t}=e,l=function(e){var r,t;let[n,l]=o.useState(),i=o.useRef(null),d=o.useRef(e),c=o.useRef("none"),[u,m]=(r=e?"mounted":"unmounted",t={mounted:{UNMOUNT:"unmounted",ANIMATION_OUT:"unmountSuspended"},unmountSuspended:{MOUNT:"mounted",ANIMATION_END:"unmounted"},unmounted:{MOUNT:"mounted"}},o.useReducer((e,r)=>{let o=t[e][r];return null!=o?o:e},r));return o.useEffect(()=>{let e=s(i.current);c.current="mounted"===u?e:"none"},[u]),(0,a.N)(()=>{let r=i.current,t=d.current;if(t!==e){let o=c.current,n=s(r);e?m("MOUNT"):"none"===n||(null==r?void 0:r.display)==="none"?m("UNMOUNT"):t&&o!==n?m("ANIMATION_OUT"):m("UNMOUNT"),d.current=e}},[e,m]),(0,a.N)(()=>{if(n){var e;let r,t=null!=(e=n.ownerDocument.defaultView)?e:window,o=e=>{let o=s(i.current).includes(e.animationName);if(e.target===n&&o&&(m("ANIMATION_END"),!d.current)){let e=n.style.animationFillMode;n.style.animationFillMode="forwards",r=t.setTimeout(()=>{"forwards"===n.style.animationFillMode&&(n.style.animationFillMode=e)})}},a=e=>{e.target===n&&(c.current=s(i.current))};return n.addEventListener("animationstart",a),n.addEventListener("animationcancel",o),n.addEventListener("animationend",o),()=>{t.clearTimeout(r),n.removeEventListener("animationstart",a),n.removeEventListener("animationcancel",o),n.removeEventListener("animationend",o)}}m("ANIMATION_END")},[n,m]),{isPresent:["mounted","unmountSuspended"].includes(u),ref:o.useCallback(e=>{i.current=e?getComputedStyle(e):null,l(e)},[])}}(r),i="function"==typeof t?t({present:l.isPresent}):o.Children.only(t),d=(0,n.s)(l.ref,function(e){var r,t;let o=null==(r=Object.getOwnPropertyDescriptor(e.props,"ref"))?void 0:r.get,n=o&&"isReactWarning"in o&&o.isReactWarning;return n?e.ref:(n=(o=null==(t=Object.getOwnPropertyDescriptor(e,"ref"))?void 0:t.get)&&"isReactWarning"in o&&o.isReactWarning)?e.props.ref:e.props.ref||e.ref}(i));return"function"==typeof t||l.isPresent?o.cloneElement(i,{ref:d}):null};function s(e){return(null==e?void 0:e.animationName)||"none"}l.displayName="Presence"},9033:(e,r,t)=>{t.d(r,{c:()=>n});var o=t(2115);function n(e){let r=o.useRef(e);return o.useEffect(()=>{r.current=e}),o.useMemo(()=>(...e)=>r.current?.(...e),[])}},9688:(e,r,t)=>{t.d(r,{QP:()=>ed});let o=e=>{let r=s(e),{conflictingClassGroups:t,conflictingClassGroupModifiers:o}=e;return{getClassGroupId:e=>{let t=e.split("-");return""===t[0]&&1!==t.length&&t.shift(),n(t,r)||l(e)},getConflictingClassGroupIds:(e,r)=>{let n=t[e]||[];return r&&o[e]?[...n,...o[e]]:n}}},n=(e,r)=>{if(0===e.length)return r.classGroupId;let t=e[0],o=r.nextPart.get(t),a=o?n(e.slice(1),o):void 0;if(a)return a;if(0===r.validators.length)return;let l=e.join("-");return r.validators.find(({validator:e})=>e(l))?.classGroupId},a=/^\[(.+)\]$/,l=e=>{if(a.test(e)){let r=a.exec(e)[1],t=r?.substring(0,r.indexOf(":"));if(t)return"arbitrary.."+t}},s=e=>{let{theme:r,classGroups:t}=e,o={nextPart:new Map,validators:[]};for(let e in t)i(t[e],o,e,r);return o},i=(e,r,t,o)=>{e.forEach(e=>{if("string"==typeof e){(""===e?r:d(r,e)).classGroupId=t;return}if("function"==typeof e)return c(e)?void i(e(o),r,t,o):void r.validators.push({validator:e,classGroupId:t});Object.entries(e).forEach(([e,n])=>{i(n,d(r,e),t,o)})})},d=(e,r)=>{let t=e;return r.split("-").forEach(e=>{t.nextPart.has(e)||t.nextPart.set(e,{nextPart:new Map,validators:[]}),t=t.nextPart.get(e)}),t},c=e=>e.isThemeGetter,u=e=>{if(e<1)return{get:()=>void 0,set:()=>{}};let r=0,t=new Map,o=new Map,n=(n,a)=>{t.set(n,a),++r>e&&(r=0,o=t,t=new Map)};return{get(e){let r=t.get(e);return void 0!==r?r:void 0!==(r=o.get(e))?(n(e,r),r):void 0},set(e,r){t.has(e)?t.set(e,r):n(e,r)}}},m=e=>{let{prefix:r,experimentalParseClassName:t}=e,o=e=>{let r,t=[],o=0,n=0,a=0;for(let l=0;la?r-a:void 0}};if(r){let e=r+":",t=o;o=r=>r.startsWith(e)?t(r.substring(e.length)):{isExternal:!0,modifiers:[],hasImportantModifier:!1,baseClassName:r,maybePostfixModifierPosition:void 0}}if(t){let e=o;o=r=>t({className:r,parseClassName:e})}return o},p=e=>e.endsWith("!")?e.substring(0,e.length-1):e.startsWith("!")?e.substring(1):e,f=e=>{let r=Object.fromEntries(e.orderSensitiveModifiers.map(e=>[e,!0]));return e=>{if(e.length<=1)return e;let t=[],o=[];return e.forEach(e=>{"["===e[0]||r[e]?(t.push(...o.sort(),e),o=[]):o.push(e)}),t.push(...o.sort()),t}},b=e=>({cache:u(e.cacheSize),parseClassName:m(e),sortModifiers:f(e),...o(e)}),g=/\s+/,h=(e,r)=>{let{parseClassName:t,getClassGroupId:o,getConflictingClassGroupIds:n,sortModifiers:a}=r,l=[],s=e.trim().split(g),i="";for(let e=s.length-1;e>=0;e-=1){let r=s[e],{isExternal:d,modifiers:c,hasImportantModifier:u,baseClassName:m,maybePostfixModifierPosition:p}=t(r);if(d){i=r+(i.length>0?" "+i:i);continue}let f=!!p,b=o(f?m.substring(0,p):m);if(!b){if(!f||!(b=o(m))){i=r+(i.length>0?" "+i:i);continue}f=!1}let g=a(c).join(":"),h=u?g+"!":g,v=h+b;if(l.includes(v))continue;l.push(v);let y=n(b,f);for(let e=0;e0?" "+i:i)}return i};function v(){let e,r,t=0,o="";for(;t{let r;if("string"==typeof e)return e;let t="";for(let o=0;o{let r=r=>r[e]||[];return r.isThemeGetter=!0,r},x=/^\[(?:(\w[\w-]*):)?(.+)\]$/i,k=/^\((?:(\w[\w-]*):)?(.+)\)$/i,N=/^\d+\/\d+$/,z=/^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/,E=/\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/,j=/^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/,C=/^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/,M=/^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/,O=e=>N.test(e),$=e=>!!e&&!Number.isNaN(Number(e)),A=e=>!!e&&Number.isInteger(Number(e)),P=e=>e.endsWith("%")&&$(e.slice(0,-1)),S=e=>z.test(e),_=()=>!0,I=e=>E.test(e)&&!j.test(e),T=()=>!1,R=e=>C.test(e),W=e=>M.test(e),L=e=>!G(e)&&!Z(e),U=e=>ee(e,en,T),G=e=>x.test(e),D=e=>ee(e,ea,I),F=e=>ee(e,el,$),V=e=>ee(e,et,T),q=e=>ee(e,eo,W),B=e=>ee(e,ei,R),Z=e=>k.test(e),Q=e=>er(e,ea),X=e=>er(e,es),Y=e=>er(e,et),H=e=>er(e,en),J=e=>er(e,eo),K=e=>er(e,ei,!0),ee=(e,r,t)=>{let o=x.exec(e);return!!o&&(o[1]?r(o[1]):t(o[2]))},er=(e,r,t=!1)=>{let o=k.exec(e);return!!o&&(o[1]?r(o[1]):t)},et=e=>"position"===e||"percentage"===e,eo=e=>"image"===e||"url"===e,en=e=>"length"===e||"size"===e||"bg-size"===e,ea=e=>"length"===e,el=e=>"number"===e,es=e=>"family-name"===e,ei=e=>"shadow"===e;Symbol.toStringTag;let ed=function(e,...r){let t,o,n,a=function(s){return o=(t=b(r.reduce((e,r)=>r(e),e()))).cache.get,n=t.cache.set,a=l,l(s)};function l(e){let r=o(e);if(r)return r;let a=h(e,t);return n(e,a),a}return function(){return a(v.apply(null,arguments))}}(()=>{let e=w("color"),r=w("font"),t=w("text"),o=w("font-weight"),n=w("tracking"),a=w("leading"),l=w("breakpoint"),s=w("container"),i=w("spacing"),d=w("radius"),c=w("shadow"),u=w("inset-shadow"),m=w("text-shadow"),p=w("drop-shadow"),f=w("blur"),b=w("perspective"),g=w("aspect"),h=w("ease"),v=w("animate"),y=()=>["auto","avoid","all","avoid-page","page","left","right","column"],x=()=>["center","top","bottom","left","right","top-left","left-top","top-right","right-top","bottom-right","right-bottom","bottom-left","left-bottom"],k=()=>[...x(),Z,G],N=()=>["auto","hidden","clip","visible","scroll"],z=()=>["auto","contain","none"],E=()=>[Z,G,i],j=()=>[O,"full","auto",...E()],C=()=>[A,"none","subgrid",Z,G],M=()=>["auto",{span:["full",A,Z,G]},A,Z,G],I=()=>[A,"auto",Z,G],T=()=>["auto","min","max","fr",Z,G],R=()=>["start","end","center","between","around","evenly","stretch","baseline","center-safe","end-safe"],W=()=>["start","end","center","stretch","center-safe","end-safe"],ee=()=>["auto",...E()],er=()=>[O,"auto","full","dvw","dvh","lvw","lvh","svw","svh","min","max","fit",...E()],et=()=>[e,Z,G],eo=()=>[...x(),Y,V,{position:[Z,G]}],en=()=>["no-repeat",{repeat:["","x","y","space","round"]}],ea=()=>["auto","cover","contain",H,U,{size:[Z,G]}],el=()=>[P,Q,D],es=()=>["","none","full",d,Z,G],ei=()=>["",$,Q,D],ed=()=>["solid","dashed","dotted","double"],ec=()=>["normal","multiply","screen","overlay","darken","lighten","color-dodge","color-burn","hard-light","soft-light","difference","exclusion","hue","saturation","color","luminosity"],eu=()=>[$,P,Y,V],em=()=>["","none",f,Z,G],ep=()=>["none",$,Z,G],ef=()=>["none",$,Z,G],eb=()=>[$,Z,G],eg=()=>[O,"full",...E()];return{cacheSize:500,theme:{animate:["spin","ping","pulse","bounce"],aspect:["video"],blur:[S],breakpoint:[S],color:[_],container:[S],"drop-shadow":[S],ease:["in","out","in-out"],font:[L],"font-weight":["thin","extralight","light","normal","medium","semibold","bold","extrabold","black"],"inset-shadow":[S],leading:["none","tight","snug","normal","relaxed","loose"],perspective:["dramatic","near","normal","midrange","distant","none"],radius:[S],shadow:[S],spacing:["px",$],text:[S],"text-shadow":[S],tracking:["tighter","tight","normal","wide","wider","widest"]},classGroups:{aspect:[{aspect:["auto","square",O,G,Z,g]}],container:["container"],columns:[{columns:[$,G,Z,s]}],"break-after":[{"break-after":y()}],"break-before":[{"break-before":y()}],"break-inside":[{"break-inside":["auto","avoid","avoid-page","avoid-column"]}],"box-decoration":[{"box-decoration":["slice","clone"]}],box:[{box:["border","content"]}],display:["block","inline-block","inline","flex","inline-flex","table","inline-table","table-caption","table-cell","table-column","table-column-group","table-footer-group","table-header-group","table-row-group","table-row","flow-root","grid","inline-grid","contents","list-item","hidden"],sr:["sr-only","not-sr-only"],float:[{float:["right","left","none","start","end"]}],clear:[{clear:["left","right","both","none","start","end"]}],isolation:["isolate","isolation-auto"],"object-fit":[{object:["contain","cover","fill","none","scale-down"]}],"object-position":[{object:k()}],overflow:[{overflow:N()}],"overflow-x":[{"overflow-x":N()}],"overflow-y":[{"overflow-y":N()}],overscroll:[{overscroll:z()}],"overscroll-x":[{"overscroll-x":z()}],"overscroll-y":[{"overscroll-y":z()}],position:["static","fixed","absolute","relative","sticky"],inset:[{inset:j()}],"inset-x":[{"inset-x":j()}],"inset-y":[{"inset-y":j()}],start:[{start:j()}],end:[{end:j()}],top:[{top:j()}],right:[{right:j()}],bottom:[{bottom:j()}],left:[{left:j()}],visibility:["visible","invisible","collapse"],z:[{z:[A,"auto",Z,G]}],basis:[{basis:[O,"full","auto",s,...E()]}],"flex-direction":[{flex:["row","row-reverse","col","col-reverse"]}],"flex-wrap":[{flex:["nowrap","wrap","wrap-reverse"]}],flex:[{flex:[$,O,"auto","initial","none",G]}],grow:[{grow:["",$,Z,G]}],shrink:[{shrink:["",$,Z,G]}],order:[{order:[A,"first","last","none",Z,G]}],"grid-cols":[{"grid-cols":C()}],"col-start-end":[{col:M()}],"col-start":[{"col-start":I()}],"col-end":[{"col-end":I()}],"grid-rows":[{"grid-rows":C()}],"row-start-end":[{row:M()}],"row-start":[{"row-start":I()}],"row-end":[{"row-end":I()}],"grid-flow":[{"grid-flow":["row","col","dense","row-dense","col-dense"]}],"auto-cols":[{"auto-cols":T()}],"auto-rows":[{"auto-rows":T()}],gap:[{gap:E()}],"gap-x":[{"gap-x":E()}],"gap-y":[{"gap-y":E()}],"justify-content":[{justify:[...R(),"normal"]}],"justify-items":[{"justify-items":[...W(),"normal"]}],"justify-self":[{"justify-self":["auto",...W()]}],"align-content":[{content:["normal",...R()]}],"align-items":[{items:[...W(),{baseline:["","last"]}]}],"align-self":[{self:["auto",...W(),{baseline:["","last"]}]}],"place-content":[{"place-content":R()}],"place-items":[{"place-items":[...W(),"baseline"]}],"place-self":[{"place-self":["auto",...W()]}],p:[{p:E()}],px:[{px:E()}],py:[{py:E()}],ps:[{ps:E()}],pe:[{pe:E()}],pt:[{pt:E()}],pr:[{pr:E()}],pb:[{pb:E()}],pl:[{pl:E()}],m:[{m:ee()}],mx:[{mx:ee()}],my:[{my:ee()}],ms:[{ms:ee()}],me:[{me:ee()}],mt:[{mt:ee()}],mr:[{mr:ee()}],mb:[{mb:ee()}],ml:[{ml:ee()}],"space-x":[{"space-x":E()}],"space-x-reverse":["space-x-reverse"],"space-y":[{"space-y":E()}],"space-y-reverse":["space-y-reverse"],size:[{size:er()}],w:[{w:[s,"screen",...er()]}],"min-w":[{"min-w":[s,"screen","none",...er()]}],"max-w":[{"max-w":[s,"screen","none","prose",{screen:[l]},...er()]}],h:[{h:["screen",...er()]}],"min-h":[{"min-h":["screen","none",...er()]}],"max-h":[{"max-h":["screen",...er()]}],"font-size":[{text:["base",t,Q,D]}],"font-smoothing":["antialiased","subpixel-antialiased"],"font-style":["italic","not-italic"],"font-weight":[{font:[o,Z,F]}],"font-stretch":[{"font-stretch":["ultra-condensed","extra-condensed","condensed","semi-condensed","normal","semi-expanded","expanded","extra-expanded","ultra-expanded",P,G]}],"font-family":[{font:[X,G,r]}],"fvn-normal":["normal-nums"],"fvn-ordinal":["ordinal"],"fvn-slashed-zero":["slashed-zero"],"fvn-figure":["lining-nums","oldstyle-nums"],"fvn-spacing":["proportional-nums","tabular-nums"],"fvn-fraction":["diagonal-fractions","stacked-fractions"],tracking:[{tracking:[n,Z,G]}],"line-clamp":[{"line-clamp":[$,"none",Z,F]}],leading:[{leading:[a,...E()]}],"list-image":[{"list-image":["none",Z,G]}],"list-style-position":[{list:["inside","outside"]}],"list-style-type":[{list:["disc","decimal","none",Z,G]}],"text-alignment":[{text:["left","center","right","justify","start","end"]}],"placeholder-color":[{placeholder:et()}],"text-color":[{text:et()}],"text-decoration":["underline","overline","line-through","no-underline"],"text-decoration-style":[{decoration:[...ed(),"wavy"]}],"text-decoration-thickness":[{decoration:[$,"from-font","auto",Z,D]}],"text-decoration-color":[{decoration:et()}],"underline-offset":[{"underline-offset":[$,"auto",Z,G]}],"text-transform":["uppercase","lowercase","capitalize","normal-case"],"text-overflow":["truncate","text-ellipsis","text-clip"],"text-wrap":[{text:["wrap","nowrap","balance","pretty"]}],indent:[{indent:E()}],"vertical-align":[{align:["baseline","top","middle","bottom","text-top","text-bottom","sub","super",Z,G]}],whitespace:[{whitespace:["normal","nowrap","pre","pre-line","pre-wrap","break-spaces"]}],break:[{break:["normal","words","all","keep"]}],wrap:[{wrap:["break-word","anywhere","normal"]}],hyphens:[{hyphens:["none","manual","auto"]}],content:[{content:["none",Z,G]}],"bg-attachment":[{bg:["fixed","local","scroll"]}],"bg-clip":[{"bg-clip":["border","padding","content","text"]}],"bg-origin":[{"bg-origin":["border","padding","content"]}],"bg-position":[{bg:eo()}],"bg-repeat":[{bg:en()}],"bg-size":[{bg:ea()}],"bg-image":[{bg:["none",{linear:[{to:["t","tr","r","br","b","bl","l","tl"]},A,Z,G],radial:["",Z,G],conic:[A,Z,G]},J,q]}],"bg-color":[{bg:et()}],"gradient-from-pos":[{from:el()}],"gradient-via-pos":[{via:el()}],"gradient-to-pos":[{to:el()}],"gradient-from":[{from:et()}],"gradient-via":[{via:et()}],"gradient-to":[{to:et()}],rounded:[{rounded:es()}],"rounded-s":[{"rounded-s":es()}],"rounded-e":[{"rounded-e":es()}],"rounded-t":[{"rounded-t":es()}],"rounded-r":[{"rounded-r":es()}],"rounded-b":[{"rounded-b":es()}],"rounded-l":[{"rounded-l":es()}],"rounded-ss":[{"rounded-ss":es()}],"rounded-se":[{"rounded-se":es()}],"rounded-ee":[{"rounded-ee":es()}],"rounded-es":[{"rounded-es":es()}],"rounded-tl":[{"rounded-tl":es()}],"rounded-tr":[{"rounded-tr":es()}],"rounded-br":[{"rounded-br":es()}],"rounded-bl":[{"rounded-bl":es()}],"border-w":[{border:ei()}],"border-w-x":[{"border-x":ei()}],"border-w-y":[{"border-y":ei()}],"border-w-s":[{"border-s":ei()}],"border-w-e":[{"border-e":ei()}],"border-w-t":[{"border-t":ei()}],"border-w-r":[{"border-r":ei()}],"border-w-b":[{"border-b":ei()}],"border-w-l":[{"border-l":ei()}],"divide-x":[{"divide-x":ei()}],"divide-x-reverse":["divide-x-reverse"],"divide-y":[{"divide-y":ei()}],"divide-y-reverse":["divide-y-reverse"],"border-style":[{border:[...ed(),"hidden","none"]}],"divide-style":[{divide:[...ed(),"hidden","none"]}],"border-color":[{border:et()}],"border-color-x":[{"border-x":et()}],"border-color-y":[{"border-y":et()}],"border-color-s":[{"border-s":et()}],"border-color-e":[{"border-e":et()}],"border-color-t":[{"border-t":et()}],"border-color-r":[{"border-r":et()}],"border-color-b":[{"border-b":et()}],"border-color-l":[{"border-l":et()}],"divide-color":[{divide:et()}],"outline-style":[{outline:[...ed(),"none","hidden"]}],"outline-offset":[{"outline-offset":[$,Z,G]}],"outline-w":[{outline:["",$,Q,D]}],"outline-color":[{outline:et()}],shadow:[{shadow:["","none",c,K,B]}],"shadow-color":[{shadow:et()}],"inset-shadow":[{"inset-shadow":["none",u,K,B]}],"inset-shadow-color":[{"inset-shadow":et()}],"ring-w":[{ring:ei()}],"ring-w-inset":["ring-inset"],"ring-color":[{ring:et()}],"ring-offset-w":[{"ring-offset":[$,D]}],"ring-offset-color":[{"ring-offset":et()}],"inset-ring-w":[{"inset-ring":ei()}],"inset-ring-color":[{"inset-ring":et()}],"text-shadow":[{"text-shadow":["none",m,K,B]}],"text-shadow-color":[{"text-shadow":et()}],opacity:[{opacity:[$,Z,G]}],"mix-blend":[{"mix-blend":[...ec(),"plus-darker","plus-lighter"]}],"bg-blend":[{"bg-blend":ec()}],"mask-clip":[{"mask-clip":["border","padding","content","fill","stroke","view"]},"mask-no-clip"],"mask-composite":[{mask:["add","subtract","intersect","exclude"]}],"mask-image-linear-pos":[{"mask-linear":[$]}],"mask-image-linear-from-pos":[{"mask-linear-from":eu()}],"mask-image-linear-to-pos":[{"mask-linear-to":eu()}],"mask-image-linear-from-color":[{"mask-linear-from":et()}],"mask-image-linear-to-color":[{"mask-linear-to":et()}],"mask-image-t-from-pos":[{"mask-t-from":eu()}],"mask-image-t-to-pos":[{"mask-t-to":eu()}],"mask-image-t-from-color":[{"mask-t-from":et()}],"mask-image-t-to-color":[{"mask-t-to":et()}],"mask-image-r-from-pos":[{"mask-r-from":eu()}],"mask-image-r-to-pos":[{"mask-r-to":eu()}],"mask-image-r-from-color":[{"mask-r-from":et()}],"mask-image-r-to-color":[{"mask-r-to":et()}],"mask-image-b-from-pos":[{"mask-b-from":eu()}],"mask-image-b-to-pos":[{"mask-b-to":eu()}],"mask-image-b-from-color":[{"mask-b-from":et()}],"mask-image-b-to-color":[{"mask-b-to":et()}],"mask-image-l-from-pos":[{"mask-l-from":eu()}],"mask-image-l-to-pos":[{"mask-l-to":eu()}],"mask-image-l-from-color":[{"mask-l-from":et()}],"mask-image-l-to-color":[{"mask-l-to":et()}],"mask-image-x-from-pos":[{"mask-x-from":eu()}],"mask-image-x-to-pos":[{"mask-x-to":eu()}],"mask-image-x-from-color":[{"mask-x-from":et()}],"mask-image-x-to-color":[{"mask-x-to":et()}],"mask-image-y-from-pos":[{"mask-y-from":eu()}],"mask-image-y-to-pos":[{"mask-y-to":eu()}],"mask-image-y-from-color":[{"mask-y-from":et()}],"mask-image-y-to-color":[{"mask-y-to":et()}],"mask-image-radial":[{"mask-radial":[Z,G]}],"mask-image-radial-from-pos":[{"mask-radial-from":eu()}],"mask-image-radial-to-pos":[{"mask-radial-to":eu()}],"mask-image-radial-from-color":[{"mask-radial-from":et()}],"mask-image-radial-to-color":[{"mask-radial-to":et()}],"mask-image-radial-shape":[{"mask-radial":["circle","ellipse"]}],"mask-image-radial-size":[{"mask-radial":[{closest:["side","corner"],farthest:["side","corner"]}]}],"mask-image-radial-pos":[{"mask-radial-at":x()}],"mask-image-conic-pos":[{"mask-conic":[$]}],"mask-image-conic-from-pos":[{"mask-conic-from":eu()}],"mask-image-conic-to-pos":[{"mask-conic-to":eu()}],"mask-image-conic-from-color":[{"mask-conic-from":et()}],"mask-image-conic-to-color":[{"mask-conic-to":et()}],"mask-mode":[{mask:["alpha","luminance","match"]}],"mask-origin":[{"mask-origin":["border","padding","content","fill","stroke","view"]}],"mask-position":[{mask:eo()}],"mask-repeat":[{mask:en()}],"mask-size":[{mask:ea()}],"mask-type":[{"mask-type":["alpha","luminance"]}],"mask-image":[{mask:["none",Z,G]}],filter:[{filter:["","none",Z,G]}],blur:[{blur:em()}],brightness:[{brightness:[$,Z,G]}],contrast:[{contrast:[$,Z,G]}],"drop-shadow":[{"drop-shadow":["","none",p,K,B]}],"drop-shadow-color":[{"drop-shadow":et()}],grayscale:[{grayscale:["",$,Z,G]}],"hue-rotate":[{"hue-rotate":[$,Z,G]}],invert:[{invert:["",$,Z,G]}],saturate:[{saturate:[$,Z,G]}],sepia:[{sepia:["",$,Z,G]}],"backdrop-filter":[{"backdrop-filter":["","none",Z,G]}],"backdrop-blur":[{"backdrop-blur":em()}],"backdrop-brightness":[{"backdrop-brightness":[$,Z,G]}],"backdrop-contrast":[{"backdrop-contrast":[$,Z,G]}],"backdrop-grayscale":[{"backdrop-grayscale":["",$,Z,G]}],"backdrop-hue-rotate":[{"backdrop-hue-rotate":[$,Z,G]}],"backdrop-invert":[{"backdrop-invert":["",$,Z,G]}],"backdrop-opacity":[{"backdrop-opacity":[$,Z,G]}],"backdrop-saturate":[{"backdrop-saturate":[$,Z,G]}],"backdrop-sepia":[{"backdrop-sepia":["",$,Z,G]}],"border-collapse":[{border:["collapse","separate"]}],"border-spacing":[{"border-spacing":E()}],"border-spacing-x":[{"border-spacing-x":E()}],"border-spacing-y":[{"border-spacing-y":E()}],"table-layout":[{table:["auto","fixed"]}],caption:[{caption:["top","bottom"]}],transition:[{transition:["","all","colors","opacity","shadow","transform","none",Z,G]}],"transition-behavior":[{transition:["normal","discrete"]}],duration:[{duration:[$,"initial",Z,G]}],ease:[{ease:["linear","initial",h,Z,G]}],delay:[{delay:[$,Z,G]}],animate:[{animate:["none",v,Z,G]}],backface:[{backface:["hidden","visible"]}],perspective:[{perspective:[b,Z,G]}],"perspective-origin":[{"perspective-origin":k()}],rotate:[{rotate:ep()}],"rotate-x":[{"rotate-x":ep()}],"rotate-y":[{"rotate-y":ep()}],"rotate-z":[{"rotate-z":ep()}],scale:[{scale:ef()}],"scale-x":[{"scale-x":ef()}],"scale-y":[{"scale-y":ef()}],"scale-z":[{"scale-z":ef()}],"scale-3d":["scale-3d"],skew:[{skew:eb()}],"skew-x":[{"skew-x":eb()}],"skew-y":[{"skew-y":eb()}],transform:[{transform:[Z,G,"","none","gpu","cpu"]}],"transform-origin":[{origin:k()}],"transform-style":[{transform:["3d","flat"]}],translate:[{translate:eg()}],"translate-x":[{"translate-x":eg()}],"translate-y":[{"translate-y":eg()}],"translate-z":[{"translate-z":eg()}],"translate-none":["translate-none"],accent:[{accent:et()}],appearance:[{appearance:["none","auto"]}],"caret-color":[{caret:et()}],"color-scheme":[{scheme:["normal","dark","light","light-dark","only-dark","only-light"]}],cursor:[{cursor:["auto","default","pointer","wait","text","move","help","not-allowed","none","context-menu","progress","cell","crosshair","vertical-text","alias","copy","no-drop","grab","grabbing","all-scroll","col-resize","row-resize","n-resize","e-resize","s-resize","w-resize","ne-resize","nw-resize","se-resize","sw-resize","ew-resize","ns-resize","nesw-resize","nwse-resize","zoom-in","zoom-out",Z,G]}],"field-sizing":[{"field-sizing":["fixed","content"]}],"pointer-events":[{"pointer-events":["auto","none"]}],resize:[{resize:["none","","y","x"]}],"scroll-behavior":[{scroll:["auto","smooth"]}],"scroll-m":[{"scroll-m":E()}],"scroll-mx":[{"scroll-mx":E()}],"scroll-my":[{"scroll-my":E()}],"scroll-ms":[{"scroll-ms":E()}],"scroll-me":[{"scroll-me":E()}],"scroll-mt":[{"scroll-mt":E()}],"scroll-mr":[{"scroll-mr":E()}],"scroll-mb":[{"scroll-mb":E()}],"scroll-ml":[{"scroll-ml":E()}],"scroll-p":[{"scroll-p":E()}],"scroll-px":[{"scroll-px":E()}],"scroll-py":[{"scroll-py":E()}],"scroll-ps":[{"scroll-ps":E()}],"scroll-pe":[{"scroll-pe":E()}],"scroll-pt":[{"scroll-pt":E()}],"scroll-pr":[{"scroll-pr":E()}],"scroll-pb":[{"scroll-pb":E()}],"scroll-pl":[{"scroll-pl":E()}],"snap-align":[{snap:["start","end","center","align-none"]}],"snap-stop":[{snap:["normal","always"]}],"snap-type":[{snap:["none","x","y","both"]}],"snap-strictness":[{snap:["mandatory","proximity"]}],touch:[{touch:["auto","none","manipulation"]}],"touch-x":[{"touch-pan":["x","left","right"]}],"touch-y":[{"touch-pan":["y","up","down"]}],"touch-pz":["touch-pinch-zoom"],select:[{select:["none","text","all","auto"]}],"will-change":[{"will-change":["auto","scroll","contents","transform",Z,G]}],fill:[{fill:["none",...et()]}],"stroke-w":[{stroke:[$,Q,D,F]}],stroke:[{stroke:["none",...et()]}],"forced-color-adjust":[{"forced-color-adjust":["auto","none"]}]},conflictingClassGroups:{overflow:["overflow-x","overflow-y"],overscroll:["overscroll-x","overscroll-y"],inset:["inset-x","inset-y","start","end","top","right","bottom","left"],"inset-x":["right","left"],"inset-y":["top","bottom"],flex:["basis","grow","shrink"],gap:["gap-x","gap-y"],p:["px","py","ps","pe","pt","pr","pb","pl"],px:["pr","pl"],py:["pt","pb"],m:["mx","my","ms","me","mt","mr","mb","ml"],mx:["mr","ml"],my:["mt","mb"],size:["w","h"],"font-size":["leading"],"fvn-normal":["fvn-ordinal","fvn-slashed-zero","fvn-figure","fvn-spacing","fvn-fraction"],"fvn-ordinal":["fvn-normal"],"fvn-slashed-zero":["fvn-normal"],"fvn-figure":["fvn-normal"],"fvn-spacing":["fvn-normal"],"fvn-fraction":["fvn-normal"],"line-clamp":["display","overflow"],rounded:["rounded-s","rounded-e","rounded-t","rounded-r","rounded-b","rounded-l","rounded-ss","rounded-se","rounded-ee","rounded-es","rounded-tl","rounded-tr","rounded-br","rounded-bl"],"rounded-s":["rounded-ss","rounded-es"],"rounded-e":["rounded-se","rounded-ee"],"rounded-t":["rounded-tl","rounded-tr"],"rounded-r":["rounded-tr","rounded-br"],"rounded-b":["rounded-br","rounded-bl"],"rounded-l":["rounded-tl","rounded-bl"],"border-spacing":["border-spacing-x","border-spacing-y"],"border-w":["border-w-x","border-w-y","border-w-s","border-w-e","border-w-t","border-w-r","border-w-b","border-w-l"],"border-w-x":["border-w-r","border-w-l"],"border-w-y":["border-w-t","border-w-b"],"border-color":["border-color-x","border-color-y","border-color-s","border-color-e","border-color-t","border-color-r","border-color-b","border-color-l"],"border-color-x":["border-color-r","border-color-l"],"border-color-y":["border-color-t","border-color-b"],translate:["translate-x","translate-y","translate-none"],"translate-none":["translate","translate-x","translate-y","translate-z"],"scroll-m":["scroll-mx","scroll-my","scroll-ms","scroll-me","scroll-mt","scroll-mr","scroll-mb","scroll-ml"],"scroll-mx":["scroll-mr","scroll-ml"],"scroll-my":["scroll-mt","scroll-mb"],"scroll-p":["scroll-px","scroll-py","scroll-ps","scroll-pe","scroll-pt","scroll-pr","scroll-pb","scroll-pl"],"scroll-px":["scroll-pr","scroll-pl"],"scroll-py":["scroll-pt","scroll-pb"],touch:["touch-x","touch-y","touch-pz"],"touch-x":["touch"],"touch-y":["touch"],"touch-pz":["touch"]},conflictingClassGroupModifiers:{"font-size":["leading"]},orderSensitiveModifiers:["*","**","after","backdrop","before","details-content","file","first-letter","first-line","marker","placeholder","selection"]}})},9708:(e,r,t)=>{t.d(r,{TL:()=>l});var o=t(2115),n=t(6101),a=t(5155);function l(e){let r=function(e){let r=o.forwardRef((e,r)=>{let{children:t,...a}=e;if(o.isValidElement(t)){var l;let e,s,i=(l=t,(s=(e=Object.getOwnPropertyDescriptor(l.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.ref:(s=(e=Object.getOwnPropertyDescriptor(l,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?l.props.ref:l.props.ref||l.ref),d=function(e,r){let t={...r};for(let o in r){let n=e[o],a=r[o];/^on[A-Z]/.test(o)?n&&a?t[o]=(...e)=>{a(...e),n(...e)}:n&&(t[o]=n):"style"===o?t[o]={...n,...a}:"className"===o&&(t[o]=[n,a].filter(Boolean).join(" "))}return{...e,...t}}(a,t.props);return t.type!==o.Fragment&&(d.ref=r?(0,n.t)(r,i):i),o.cloneElement(t,d)}return o.Children.count(t)>1?o.Children.only(null):null});return r.displayName=`${e}.SlotClone`,r}(e),t=o.forwardRef((e,t)=>{let{children:n,...l}=e,s=o.Children.toArray(n),d=s.find(i);if(d){let e=d.props.children,n=s.map(r=>r!==d?r:o.Children.count(e)>1?o.Children.only(null):o.isValidElement(e)?e.props.children:null);return(0,a.jsx)(r,{...l,ref:t,children:o.isValidElement(e)?o.cloneElement(e,void 0,n):null})}return(0,a.jsx)(r,{...l,ref:t,children:n})});return t.displayName=`${e}.Slot`,t}var s=Symbol("radix.slottable");function i(e){return o.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===s}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/595-993b621b2225d9dc.js b/docs/_next/static/chunks/595-993b621b2225d9dc.js deleted file mode 100644 index 6496adb4..00000000 --- a/docs/_next/static/chunks/595-993b621b2225d9dc.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[595],{344:(e,t,n)=>{n.d(t,{Image:()=>r._V,a8:()=>r.a8,q6:()=>r.q6,rd:()=>r.rd});var r=n(9600);n(9189)},1339:(e,t,n)=>{n.d(t,{NavProvider:()=>s,StylesProvider:()=>u,h:()=>d,v:()=>i});var r=n(5155),o=n(2115),a=n(344);let c=(0,a.q6)("StylesContext",{tocNav:"xl:hidden",toc:"max-xl:hidden"});function i(){return c.use()}function u(e){let{children:t,...n}=e;return(0,r.jsx)(c.Provider,{value:n,children:t})}let l=(0,a.q6)("NavContext",{isTransparent:!1});function s(e){let{transparentMode:t="none",children:n}=e,[a,c]=(0,o.useState)("none"!==t);return(0,o.useEffect)(()=>{if("top"!==t)return;let e=()=>{c(window.scrollY<10)};return e(),window.addEventListener("scroll",e),()=>{window.removeEventListener("scroll",e)}},[t]),(0,r.jsx)(l.Provider,{value:(0,o.useMemo)(()=>({isTransparent:a}),[a]),children:n})}function d(){return l.use()}},3795:(e,t,n)=>{n.d(t,{A:()=>z});var r,o,a=function(){return(a=Object.assign||function(e){for(var t,n=1,r=arguments.length;nt.indexOf(r)&&(n[r]=e[r]);if(null!=e&&"function"==typeof Object.getOwnPropertySymbols)for(var o=0,r=Object.getOwnPropertySymbols(e);ot.indexOf(r[o])&&Object.prototype.propertyIsEnumerable.call(e,r[o])&&(n[r[o]]=e[r[o]]);return n}Object.create;Object.create;var i=("function"==typeof SuppressedError&&SuppressedError,n(2115)),u="right-scroll-bar-position",l="width-before-scroll-bar";function s(e,t){return"function"==typeof e?e(t):e&&(e.current=t),e}var d="undefined"!=typeof window?i.useLayoutEffect:i.useEffect,f=new WeakMap;function h(e){return e}var v=function(e){void 0===e&&(e={});var t,n,r,o,c=(t=null,void 0===n&&(n=h),r=[],o=!1,{read:function(){if(o)throw Error("Sidecar: could not `read` from an `assigned` medium. `read` could be used only with `useMedium`.");return r.length?r[r.length-1]:null},useMedium:function(e){var t=n(e,o);return r.push(t),function(){r=r.filter(function(e){return e!==t})}},assignSyncMedium:function(e){for(o=!0;r.length;){var t=r;r=[],t.forEach(e)}r={push:function(t){return e(t)},filter:function(){return r}}},assignMedium:function(e){o=!0;var t=[];if(r.length){var n=r;r=[],n.forEach(e),t=r}var a=function(){var n=t;t=[],n.forEach(e)},c=function(){return Promise.resolve().then(a)};c(),r={push:function(e){t.push(e),c()},filter:function(e){return t=t.filter(e),r}}}});return c.options=a({async:!0,ssr:!1},e),c}(),p=function(){},m=i.forwardRef(function(e,t){var n,r,o,u,l=i.useRef(null),h=i.useState({onScrollCapture:p,onWheelCapture:p,onTouchMoveCapture:p}),m=h[0],g=h[1],w=e.forwardProps,y=e.children,b=e.className,E=e.removeScrollBar,C=e.enabled,x=e.shards,P=e.sideCar,S=e.noIsolation,k=e.inert,R=e.allowPinchZoom,L=e.as,N=e.gapMode,M=c(e,["forwardProps","children","className","removeScrollBar","enabled","shards","sideCar","noIsolation","inert","allowPinchZoom","as","gapMode"]),j=(n=[l,t],r=function(e){return n.forEach(function(t){return s(t,e)})},(o=(0,i.useState)(function(){return{value:null,callback:r,facade:{get current(){return o.value},set current(value){var e=o.value;e!==value&&(o.value=value,o.callback(value,e))}}}})[0]).callback=r,u=o.facade,d(function(){var e=f.get(u);if(e){var t=new Set(e),r=new Set(n),o=u.current;t.forEach(function(e){r.has(e)||s(e,null)}),r.forEach(function(e){t.has(e)||s(e,o)})}f.set(u,n)},[n]),u),T=a(a({},M),m);return i.createElement(i.Fragment,null,C&&i.createElement(P,{sideCar:v,removeScrollBar:E,shards:x,noIsolation:S,inert:k,setCallbacks:g,allowPinchZoom:!!R,lockRef:l,gapMode:N}),w?i.cloneElement(i.Children.only(y),a(a({},T),{ref:j})):i.createElement(void 0===L?"div":L,a({},T,{className:b,ref:j}),y))});m.defaultProps={enabled:!0,removeScrollBar:!0,inert:!1},m.classNames={fullWidth:l,zeroRight:u};var g=function(e){var t=e.sideCar,n=c(e,["sideCar"]);if(!t)throw Error("Sidecar: please provide `sideCar` property to import the right car");var r=t.read();if(!r)throw Error("Sidecar medium not found");return i.createElement(r,a({},n))};g.isSideCarExport=!0;var w=function(){var e=0,t=null;return{add:function(r){if(0==e&&(t=function(){if(!document)return null;var e=document.createElement("style");e.type="text/css";var t=o||n.nc;return t&&e.setAttribute("nonce",t),e}())){var a,c;(a=t).styleSheet?a.styleSheet.cssText=r:a.appendChild(document.createTextNode(r)),c=t,(document.head||document.getElementsByTagName("head")[0]).appendChild(c)}e++},remove:function(){--e||!t||(t.parentNode&&t.parentNode.removeChild(t),t=null)}}},y=function(){var e=w();return function(t,n){i.useEffect(function(){return e.add(t),function(){e.remove()}},[t&&n])}},b=function(){var e=y();return function(t){return e(t.styles,t.dynamic),null}},E={left:0,top:0,right:0,gap:0},C=function(e){return parseInt(e||"",10)||0},x=function(e){var t=window.getComputedStyle(document.body),n=t["padding"===e?"paddingLeft":"marginLeft"],r=t["padding"===e?"paddingTop":"marginTop"],o=t["padding"===e?"paddingRight":"marginRight"];return[C(n),C(r),C(o)]},P=function(e){if(void 0===e&&(e="margin"),"undefined"==typeof window)return E;var t=x(e),n=document.documentElement.clientWidth,r=window.innerWidth;return{left:t[0],top:t[1],right:t[2],gap:Math.max(0,r-n+t[2]-t[0])}},S=b(),k="data-scroll-locked",R=function(e,t,n,r){var o=e.left,a=e.top,c=e.right,i=e.gap;return void 0===n&&(n="margin"),"\n .".concat("with-scroll-bars-hidden"," {\n overflow: hidden ").concat(r,";\n padding-right: ").concat(i,"px ").concat(r,";\n }\n body[").concat(k,"] {\n overflow: hidden ").concat(r,";\n overscroll-behavior: contain;\n ").concat([t&&"position: relative ".concat(r,";"),"margin"===n&&"\n padding-left: ".concat(o,"px;\n padding-top: ").concat(a,"px;\n padding-right: ").concat(c,"px;\n margin-left:0;\n margin-top:0;\n margin-right: ").concat(i,"px ").concat(r,";\n "),"padding"===n&&"padding-right: ".concat(i,"px ").concat(r,";")].filter(Boolean).join(""),"\n }\n \n .").concat(u," {\n right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(l," {\n margin-right: ").concat(i,"px ").concat(r,";\n }\n \n .").concat(u," .").concat(u," {\n right: 0 ").concat(r,";\n }\n \n .").concat(l," .").concat(l," {\n margin-right: 0 ").concat(r,";\n }\n \n body[").concat(k,"] {\n ").concat("--removed-body-scroll-bar-size",": ").concat(i,"px;\n }\n")},L=function(){var e=parseInt(document.body.getAttribute(k)||"0",10);return isFinite(e)?e:0},N=function(){i.useEffect(function(){return document.body.setAttribute(k,(L()+1).toString()),function(){var e=L()-1;e<=0?document.body.removeAttribute(k):document.body.setAttribute(k,e.toString())}},[])},M=function(e){var t=e.noRelative,n=e.noImportant,r=e.gapMode,o=void 0===r?"margin":r;N();var a=i.useMemo(function(){return P(o)},[o]);return i.createElement(S,{styles:R(a,!t,o,n?"":"!important")})},j=!1;if("undefined"!=typeof window)try{var T=Object.defineProperty({},"passive",{get:function(){return j=!0,!0}});window.addEventListener("test",T,T),window.removeEventListener("test",T,T)}catch(e){j=!1}var O=!!j&&{passive:!1},I=function(e,t){if(!(e instanceof Element))return!1;var n=window.getComputedStyle(e);return"hidden"!==n[t]&&(n.overflowY!==n.overflowX||"TEXTAREA"===e.tagName||"visible"!==n[t])},A=function(e,t){var n=t.ownerDocument,r=t;do{if("undefined"!=typeof ShadowRoot&&r instanceof ShadowRoot&&(r=r.host),B(e,r)){var o=Y(e,r);if(o[1]>o[2])return!0}r=r.parentNode}while(r&&r!==n.body);return!1},B=function(e,t){return"v"===e?I(t,"overflowY"):I(t,"overflowX")},Y=function(e,t){return"v"===e?[t.scrollTop,t.scrollHeight,t.clientHeight]:[t.scrollLeft,t.scrollWidth,t.clientWidth]},W=function(e,t,n,r,o){var a,c=(a=window.getComputedStyle(t).direction,"h"===e&&"rtl"===a?-1:1),i=c*r,u=n.target,l=t.contains(u),s=!1,d=i>0,f=0,h=0;do{var v=Y(e,u),p=v[0],m=v[1]-v[2]-c*p;(p||m)&&B(e,u)&&(f+=m,h+=p),u=u instanceof ShadowRoot?u.host:u.parentNode}while(!l&&u!==document.body||l&&(t.contains(u)||t===u));return d&&(o&&1>Math.abs(f)||!o&&i>f)?s=!0:!d&&(o&&1>Math.abs(h)||!o&&-i>h)&&(s=!0),s},X=function(e){return"changedTouches"in e?[e.changedTouches[0].clientX,e.changedTouches[0].clientY]:[0,0]},_=function(e){return[e.deltaX,e.deltaY]},q=function(e){return e&&"current"in e?e.current:e},F=0,H=[];let Z=(r=function(e){var t=i.useRef([]),n=i.useRef([0,0]),r=i.useRef(),o=i.useState(F++)[0],a=i.useState(b)[0],c=i.useRef(e);i.useEffect(function(){c.current=e},[e]),i.useEffect(function(){if(e.inert){document.body.classList.add("block-interactivity-".concat(o));var t=(function(e,t,n){if(n||2==arguments.length)for(var r,o=0,a=t.length;oMath.abs(l)?"h":"v";if("touches"in e&&"h"===d&&"range"===s.type)return!1;var f=A(d,s);if(!f)return!0;if(f?o=d:(o="v"===d?"h":"v",f=A(d,s)),!f)return!1;if(!r.current&&"changedTouches"in e&&(u||l)&&(r.current=o),!o)return!0;var h=r.current||o;return W(h,t,e,"h"===h?u:l,!0)},[]),l=i.useCallback(function(e){if(H.length&&H[H.length-1]===a){var n="deltaY"in e?_(e):X(e),r=t.current.filter(function(t){var r;return t.name===e.type&&(t.target===e.target||e.target===t.shadowParent)&&(r=t.delta,r[0]===n[0]&&r[1]===n[1])})[0];if(r&&r.should){e.cancelable&&e.preventDefault();return}if(!r){var o=(c.current.shards||[]).map(q).filter(Boolean).filter(function(t){return t.contains(e.target)});(o.length>0?u(e,o[0]):!c.current.noIsolation)&&e.cancelable&&e.preventDefault()}}},[]),s=i.useCallback(function(e,n,r,o){var a={name:e,delta:n,target:r,should:o,shadowParent:function(e){for(var t=null;null!==e;)e instanceof ShadowRoot&&(t=e.host,e=e.host),e=e.parentNode;return t}(r)};t.current.push(a),setTimeout(function(){t.current=t.current.filter(function(e){return e!==a})},1)},[]),d=i.useCallback(function(e){n.current=X(e),r.current=void 0},[]),f=i.useCallback(function(t){s(t.type,_(t),t.target,u(t,e.lockRef.current))},[]),h=i.useCallback(function(t){s(t.type,X(t),t.target,u(t,e.lockRef.current))},[]);i.useEffect(function(){return H.push(a),e.setCallbacks({onScrollCapture:f,onWheelCapture:f,onTouchMoveCapture:h}),document.addEventListener("wheel",l,O),document.addEventListener("touchmove",l,O),document.addEventListener("touchstart",d,O),function(){H=H.filter(function(e){return e!==a}),document.removeEventListener("wheel",l,O),document.removeEventListener("touchmove",l,O),document.removeEventListener("touchstart",d,O)}},[]);var v=e.removeScrollBar,p=e.inert;return i.createElement(i.Fragment,null,p?i.createElement(a,{styles:"\n .block-interactivity-".concat(o," {pointer-events: none;}\n .allow-interactivity-").concat(o," {pointer-events: all;}\n")}):null,v?i.createElement(M,{gapMode:e.gapMode}):null)},v.useMedium(r),g);var D=i.forwardRef(function(e,t){return i.createElement(m,a({},e,{ref:t,sideCar:Z}))});D.classNames=m.classNames;let z=D},4315:(e,t,n)=>{n.d(t,{FX:()=>c,jH:()=>i});var r=n(2115),o=n(5155),a=r.createContext(void 0),c=e=>{let{dir:t,children:n}=e;return(0,o.jsx)(a.Provider,{value:t,children:n})};function i(e){let t=r.useContext(a);return e||t||"ltr"}},9189:(e,t,n)=>{},9600:(e,t,n)=>{n.d(t,{N_:()=>d,Uy:()=>i,_V:()=>s,a8:()=>u,q6:()=>f,rd:()=>l});var r=n(2115),o=n(5155),a=()=>{throw Error("You need to wrap your application inside `FrameworkProvider`.")},c=f("FrameworkContext",{useParams:a,useRouter:a,usePathname:a});function i({children:e,...t}){let n=r.useMemo(()=>({usePathname:t.usePathname,useRouter:t.useRouter,Link:t.Link,Image:t.Image,useParams:t.useParams}),[t.Link,t.usePathname,t.useRouter,t.useParams,t.Image]);return(0,o.jsx)(c.Provider,{value:n,children:e})}function u(){return c.use().usePathname()}function l(){return c.use().useRouter()}function s(e){let{Image:t}=c.use();if(!t){let{src:t,alt:n,priority:r,...a}=e;return(0,o.jsx)("img",{alt:n,src:t,fetchPriority:r?"high":"auto",...a})}return(0,o.jsx)(t,{...e})}function d(e){let{Link:t}=c.use();if(!t){let{href:t,prefetch:n,...r}=e;return(0,o.jsx)("a",{href:t,...r})}return(0,o.jsx)(t,{...e})}function f(e,t){let n=r.createContext(t);return{Provider:e=>(0,o.jsx)(n.Provider,{value:e.value,children:e.children}),use:t=>{let o=r.useContext(n);if(!o)throw Error(t??`Provider of ${e} is required but missing.`);return o}}}},9697:(e,t,n)=>{n.d(t,{Cr:()=>o,I18nLabel:()=>c,gJ:()=>a,s9:()=>i});var r=n(2115);let o={search:"Search",searchNoResult:"No results found",toc:"On this page",tocNoHeadings:"No Headings",lastUpdate:"Last updated on",chooseLanguage:"Choose a language",nextPage:"Next Page",previousPage:"Previous Page",chooseTheme:"Theme",editOnGithub:"Edit on GitHub"},a=(0,r.createContext)({text:o});function c(e){let{text:t}=i();return t[e.label]}function i(){return(0,r.useContext)(a)}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/684-db277683248699e5.js b/docs/_next/static/chunks/684-db277683248699e5.js deleted file mode 100644 index af87388b..00000000 --- a/docs/_next/static/chunks/684-db277683248699e5.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[684],{214:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return u}});let n=r(6361),o=r(427),u=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:u}=(0,o.parsePath)(e);return""+(0,n.removeTrailingSlash)(t)+r+u};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},427:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},589:(e,t)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return r}})},666:e=>{!function(){var t={229:function(e){var t,r,n,o=e.exports={};function u(){throw Error("setTimeout has not been defined")}function l(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:u}catch(e){t=u}try{r="function"==typeof clearTimeout?clearTimeout:l}catch(e){r=l}function a(e){if(t===setTimeout)return setTimeout(e,0);if((t===u||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var i=[],c=!1,s=-1;function f(){c&&n&&(c=!1,n.length?i=n.concat(i):s=-1,i.length&&d())}function d(){if(!c){var e=a(f);c=!0;for(var t=i.length;t;){for(n=i,i=[];++s1)for(var r=1;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RedirectBoundary:function(){return f},RedirectErrorBoundary:function(){return s}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(8999),a=r(6825),i=r(2210);function c(e){let{redirect:t,reset:r,redirectType:n}=e,o=(0,l.useRouter)();return(0,u.useEffect)(()=>{u.default.startTransition(()=>{n===i.RedirectType.push?o.push(t,{}):o.replace(t,{}),r()})},[t,n,r,o]),null}class s extends u.default.Component{static getDerivedStateFromError(e){if((0,i.isRedirectError)(e))return{redirect:(0,a.getURLFromRedirectError)(e),redirectType:(0,a.getRedirectTypeFromError)(e)};throw e}render(){let{redirect:e,redirectType:t}=this.state;return null!==e&&null!==t?(0,o.jsx)(c,{redirect:e,redirectType:t,reset:()=>this.setState({redirect:null})}):this.props.children}constructor(e){super(e),this.state={redirect:null,redirectType:null}}}function f(e){let{children:t}=e,r=(0,l.useRouter)();return(0,o.jsx)(s,{router:r,children:t})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},708:(e,t)=>{"use strict";function r(e){return Array.isArray(e)?e[1]:e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getSegmentValue",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},774:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTML_LIMITED_BOT_UA_RE:function(){return n.HTML_LIMITED_BOT_UA_RE},HTML_LIMITED_BOT_UA_RE_STRING:function(){return u},getBotType:function(){return i},isBot:function(){return a}});let n=r(5072),o=/Googlebot|Google-PageRenderer|AdsBot-Google|googleweblight|Storebot-Google/i,u=n.HTML_LIMITED_BOT_UA_RE.source;function l(e){return n.HTML_LIMITED_BOT_UA_RE.test(e)}function a(e){return o.test(e)||l(e)}function i(e){return o.test(e)?"dom":l(e)?"html":void 0}},878:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyFlightData",{enumerable:!0,get:function(){return u}});let n=r(4758),o=r(3118);function u(e,t,r,u,l){let{tree:a,seedData:i,head:c,isRootRender:s}=u;if(null===i)return!1;if(s){let o=i[1];r.loading=i[3],r.rsc=o,r.prefetchRsc=null,(0,n.fillLazyItemsTillLeafWithHead)(e,r,t,a,i,c,l)}else r.rsc=t.rsc,r.prefetchRsc=t.prefetchRsc,r.parallelRoutes=new Map(t.parallelRoutes),r.loading=t.loading,(0,o.fillCacheWithNewSubTreeData)(e,r,t,u,l);return!0}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},886:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PathParamsContext:function(){return l},PathnameContext:function(){return u},SearchParamsContext:function(){return o}});let n=r(2115),o=(0,n.createContext)(null),u=(0,n.createContext)(null),l=(0,n.createContext)(null)},894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientPageRoot",{enumerable:!0,get:function(){return o}});let n=r(5155);function o(e){let{Component:t,searchParams:o,params:u,promises:l}=e;{let{createRenderSearchParamsFromClient:e}=r(7205),l=e(o),{createRenderParamsFromClient:a}=r(3558),i=a(u);return(0,n.jsx)(t,{params:i,searchParams:l})}}r(9837),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1027:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{dispatchAppRouterAction:function(){return l},useActionQueue:function(){return a}});let n=r(6966)._(r(2115)),o=r(5122),u=null;function l(e){if(null===u)throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0});u(e)}function a(e){let[t,r]=n.default.useState(e.state);return u=t=>e.dispatch(t,r),(0,o.isThenable)(t)?(0,n.use)(t):t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1127:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"matchSegment",{enumerable:!0,get:function(){return r}});let r=(e,t)=>"string"==typeof e?"string"==typeof t&&e===t:"string"!=typeof t&&e[0]===t[0]&&e[1]===t[1];("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1139:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=!0),e.pathname+e.search+(t?e.hash:"")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createHrefFromUrl",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1295:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(5227);function a(){let e=(0,u.useContext)(l.TemplateContext);return(0,o.jsx)(o.Fragment,{children:e})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1315:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"assignLocation",{enumerable:!0,get:function(){return o}});let n=r(5929);function o(e,t){if(e.startsWith(".")){let r=t.origin+t.pathname;return new URL((r.endsWith("/")?r:r+"/")+e)}return new URL((0,n.addBasePath)(e),t.href)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1408:(e,t,r)=>{"use strict";e.exports=r(9393)},1426:(e,t,r)=>{"use strict";var n=r(9509),o=Symbol.for("react.transitional.element"),u=Symbol.for("react.portal"),l=Symbol.for("react.fragment"),a=Symbol.for("react.strict_mode"),i=Symbol.for("react.profiler"),c=Symbol.for("react.consumer"),s=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),h=Symbol.for("react.lazy"),y=Symbol.iterator,_={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},b=Object.assign,g={};function v(e,t,r){this.props=e,this.context=t,this.refs=g,this.updater=r||_}function m(){}function E(e,t,r){this.props=e,this.context=t,this.refs=g,this.updater=r||_}v.prototype.isReactComponent={},v.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},v.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},m.prototype=v.prototype;var O=E.prototype=new m;O.constructor=E,b(O,v.prototype),O.isPureReactComponent=!0;var R=Array.isArray,P={H:null,A:null,T:null,S:null},j=Object.prototype.hasOwnProperty;function T(e,t,r,n,u,l){return{$$typeof:o,type:e,key:t,ref:void 0!==(r=l.ref)?r:null,props:l}}function S(e){return"object"==typeof e&&null!==e&&e.$$typeof===o}var M=/\/+/g;function w(e,t){var r,n;return"object"==typeof e&&null!==e&&null!=e.key?(r=""+e.key,n={"=":"=0",":":"=2"},"$"+r.replace(/[=:]/g,function(e){return n[e]})):t.toString(36)}function C(){}function x(e,t,r){if(null==e)return e;var n=[],l=0;return!function e(t,r,n,l,a){var i,c,s,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case o:case u:d=!0;break;case h:return e((d=t._init)(t._payload),r,n,l,a)}}if(d)return a=a(t),d=""===l?"."+w(t,0):l,R(a)?(n="",null!=d&&(n=d.replace(M,"$&/")+"/"),e(a,r,n,"",function(e){return e})):null!=a&&(S(a)&&(i=a,c=n+(null==a.key||t&&t.key===a.key?"":(""+a.key).replace(M,"$&/")+"/")+d,a=T(i.type,c,void 0,void 0,void 0,i.props)),r.push(a)),1;d=0;var p=""===l?".":l+":";if(R(t))for(var _=0;_{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DYNAMIC_STALETIME_MS:function(){return d},STATIC_STALETIME_MS:function(){return p},createSeededPrefetchCacheEntry:function(){return c},getOrCreatePrefetchCacheEntry:function(){return i},prunePrefetchCache:function(){return f}});let n=r(8586),o=r(9818),u=r(9154);function l(e,t,r){let n=e.pathname;return(t&&(n+=e.search),r)?""+r+"%"+n:n}function a(e,t,r){return l(e,t===o.PrefetchKind.FULL,r)}function i(e){let{url:t,nextUrl:r,tree:n,prefetchCache:u,kind:a,allowAliasing:i=!0}=e,c=function(e,t,r,n,u){for(let a of(void 0===t&&(t=o.PrefetchKind.TEMPORARY),[r,null])){let r=l(e,!0,a),i=l(e,!1,a),c=e.search?r:i,s=n.get(c);if(s&&u){if(s.url.pathname===e.pathname&&s.url.search!==e.search)return{...s,aliased:!0};return s}let f=n.get(i);if(u&&e.search&&t!==o.PrefetchKind.FULL&&f&&!f.key.includes("%"))return{...f,aliased:!0}}if(t!==o.PrefetchKind.FULL&&u){for(let t of n.values())if(t.url.pathname===e.pathname&&!t.key.includes("%"))return{...t,aliased:!0}}}(t,a,r,u,i);return c?(c.status=h(c),c.kind!==o.PrefetchKind.FULL&&a===o.PrefetchKind.FULL&&c.data.then(e=>{if(!(Array.isArray(e.flightData)&&e.flightData.some(e=>e.isRootRender&&null!==e.seedData)))return s({tree:n,url:t,nextUrl:r,prefetchCache:u,kind:null!=a?a:o.PrefetchKind.TEMPORARY})}),a&&c.kind===o.PrefetchKind.TEMPORARY&&(c.kind=a),c):s({tree:n,url:t,nextUrl:r,prefetchCache:u,kind:a||o.PrefetchKind.TEMPORARY})}function c(e){let{nextUrl:t,tree:r,prefetchCache:n,url:u,data:l,kind:i}=e,c=l.couldBeIntercepted?a(u,i,t):a(u,i),s={treeAtTimeOfPrefetch:r,data:Promise.resolve(l),kind:i,prefetchTime:Date.now(),lastUsedTime:Date.now(),staleTime:-1,key:c,status:o.PrefetchCacheEntryStatus.fresh,url:u};return n.set(c,s),s}function s(e){let{url:t,kind:r,tree:l,nextUrl:i,prefetchCache:c}=e,s=a(t,r),f=u.prefetchQueue.enqueue(()=>(0,n.fetchServerResponse)(t,{flightRouterState:l,nextUrl:i,prefetchKind:r}).then(e=>{let r;if(e.couldBeIntercepted&&(r=function(e){let{url:t,nextUrl:r,prefetchCache:n,existingCacheKey:o}=e,u=n.get(o);if(!u)return;let l=a(t,u.kind,r);return n.set(l,{...u,key:l}),n.delete(o),l}({url:t,existingCacheKey:s,nextUrl:i,prefetchCache:c})),e.prerendered){let t=c.get(null!=r?r:s);t&&(t.kind=o.PrefetchKind.FULL,-1!==e.staleTime&&(t.staleTime=e.staleTime))}return e})),d={treeAtTimeOfPrefetch:l,data:f,kind:r,prefetchTime:Date.now(),lastUsedTime:null,staleTime:-1,key:s,status:o.PrefetchCacheEntryStatus.fresh,url:t};return c.set(s,d),d}function f(e){for(let[t,r]of e)h(r)===o.PrefetchCacheEntryStatus.expired&&e.delete(t)}let d=1e3*Number("0"),p=1e3*Number("300");function h(e){let{kind:t,prefetchTime:r,lastUsedTime:n,staleTime:u}=e;return -1!==u?Date.now(){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BrowserResolvedMetadata",{enumerable:!0,get:function(){return o}});let n=r(2115);function o(e){let{promise:t}=e,{metadata:r,error:o}=(0,n.use)(t);return o?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1646:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{globalThis.console.error(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1747:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(427);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},1818:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findSourceMapURL",{enumerable:!0,get:function(){return r}});let r=void 0;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1822:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unresolvedThenable",{enumerable:!0,get:function(){return r}});let r={then:()=>{}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2004:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheByRouterState",{enumerable:!0,get:function(){return o}});let n=r(5637);function o(e,t,r){for(let o in r[1]){let u=r[1][o][0],l=(0,n.createRouterCacheKey)(u),a=t.parallelRoutes.get(o);if(a){let t=new Map(a);t.delete(l),e.parallelRoutes.set(o,t)}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2115:(e,t,r)=>{"use strict";e.exports=r(1426)},2210:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{REDIRECT_ERROR_CODE:function(){return o},RedirectType:function(){return u},isRedirectError:function(){return l}});let n=r(4420),o="NEXT_REDIRECT";var u=function(e){return e.push="push",e.replace="replace",e}({});function l(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,u]=t,l=t.slice(2,-2).join(";"),a=Number(t.at(-2));return r===o&&("replace"===u||"push"===u)&&"string"==typeof l&&!isNaN(a)&&a in n.RedirectStatusCode}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2223:(e,t)=>{"use strict";function r(e,t){var r=e.length;for(e.push(t);0>>1,o=e[n];if(0>>1;nu(i,r))cu(s,i)?(e[n]=s,e[c]=r,n=c):(e[n]=i,e[a]=r,n=a);else if(cu(s,r))e[n]=s,e[c]=r,n=c;else break}}return t}function u(e,t){var r=e.sortIndex-t.sortIndex;return 0!==r?r:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var l,a=performance;t.unstable_now=function(){return a.now()}}else{var i=Date,c=i.now();t.unstable_now=function(){return i.now()-c}}var s=[],f=[],d=1,p=null,h=3,y=!1,_=!1,b=!1,g=!1,v="function"==typeof setTimeout?setTimeout:null,m="function"==typeof clearTimeout?clearTimeout:null,E="undefined"!=typeof setImmediate?setImmediate:null;function O(e){for(var t=n(f);null!==t;){if(null===t.callback)o(f);else if(t.startTime<=e)o(f),t.sortIndex=t.expirationTime,r(s,t);else break;t=n(f)}}function R(e){if(b=!1,O(e),!_)if(null!==n(s))_=!0,P||(P=!0,l());else{var t=n(f);null!==t&&A(R,t.startTime-e)}}var P=!1,j=-1,T=5,S=-1;function M(){return!!g||!(t.unstable_now()-Se&&M());){var a=p.callback;if("function"==typeof a){p.callback=null,h=p.priorityLevel;var i=a(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof i){p.callback=i,O(e),r=!0;break t}p===n(s)&&o(s),O(e)}else o(s);p=n(s)}if(null!==p)r=!0;else{var c=n(f);null!==c&&A(R,c.startTime-e),r=!1}}break e}finally{p=null,h=u,y=!1}}}finally{r?l():P=!1}}}if("function"==typeof E)l=function(){E(w)};else if("undefined"!=typeof MessageChannel){var C=new MessageChannel,x=C.port2;C.port1.onmessage=w,l=function(){x.postMessage(null)}}else l=function(){v(w,0)};function A(e,r){j=v(function(){e(t.unstable_now())},r)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125a?(e.sortIndex=u,r(f,e),null===n(s)&&e===n(f)&&(b?(m(j),j=-1):b=!0,A(R,u-a))):(e.sortIndex=i,r(s,e),_||y||(_=!0,P||(P=!0,l()))),e},t.unstable_shouldYield=M,t.unstable_wrapCallback=function(e){var t=h;return function(){var r=h;h=t;try{return e.apply(this,arguments)}finally{h=r}}}},2312:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"PromiseQueue",{enumerable:!0,get:function(){return c}});let n=r(5952),o=r(6420);var u=o._("_maxConcurrency"),l=o._("_runningCount"),a=o._("_queue"),i=o._("_processNext");class c{enqueue(e){let t,r,o=new Promise((e,n)=>{t=e,r=n}),u=async()=>{try{n._(this,l)[l]++;let r=await e();t(r)}catch(e){r(e)}finally{n._(this,l)[l]--,n._(this,i)[i]()}};return n._(this,a)[a].push({promiseFn:o,task:u}),n._(this,i)[i](),o}bump(e){let t=n._(this,a)[a].findIndex(t=>t.promiseFn===e);if(t>-1){let e=n._(this,a)[a].splice(t,1)[0];n._(this,a)[a].unshift(e),n._(this,i)[i](!0)}}constructor(e=5){Object.defineProperty(this,i,{value:s}),Object.defineProperty(this,u,{writable:!0,value:void 0}),Object.defineProperty(this,l,{writable:!0,value:void 0}),Object.defineProperty(this,a,{writable:!0,value:void 0}),n._(this,u)[u]=e,n._(this,l)[l]=0,n._(this,a)[a]=[]}}function s(e){if(void 0===e&&(e=!1),(n._(this,l)[l]0){var t;null==(t=n._(this,a)[a].shift())||t.task()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2561:(e,t)=>{"use strict";function r(e){var t;let[r,n,o,u]=e.slice(-4),l=e.slice(0,-4);return{pathToSegment:l.slice(0,-1),segmentPath:l,segment:null!=(t=l[l.length-1])?t:"",tree:r,seedData:n,head:o,isHeadPartial:u,isRootRender:4===e.length}}function n(e){return e.slice(2)}function o(e){return"string"==typeof e?e:e.map(r)}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getFlightDataPartsFromPath:function(){return r},getNextFlightSegmentPath:function(){return n},normalizeFlightData:function(){return o}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2669:(e,t,r)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=r(9248)},2691:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"findHeadInCache",{enumerable:!0,get:function(){return o}});let n=r(5637);function o(e,t){return function e(t,r,o){if(0===Object.keys(r).length)return[t,o];if(r.children){let[u,l]=r.children,a=t.parallelRoutes.get("children");if(a){let t=(0,n.createRouterCacheKey)(u),r=a.get(t);if(r){let n=e(r,l,o+"/"+t);if(n)return n}}}for(let u in r){if("children"===u)continue;let[l,a]=r[u],i=t.parallelRoutes.get(u);if(!i)continue;let c=(0,n.createRouterCacheKey)(l),s=i.get(c);if(!s)continue;let f=e(s,a,o+"/"+c);if(f)return f}return null}(e,t,"")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2816:(e,t)=>{"use strict";function r(e){let t=parseInt(e.slice(0,2),16),r=t>>1&63,n=Array(6);for(let e=0;e<6;e++){let t=r>>5-e&1;n[e]=1===t}return{type:1==(t>>7&1)?"use-cache":"server-action",usedArgs:n,hasRestArgs:1==(1&t)}}function n(e,t){let r=Array(e.length);for(let n=0;n=6&&t.hasRestArgs)&&(r[n]=e[n]);return r}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{extractInfoFromServerReferenceId:function(){return r},omitUnusedArgs:function(){return n}})},2830:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=r(8229)._(r(2115)).default.createContext({})},2858:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return u}});let n=r(6494),o=r(2210);function u(e){return(0,o.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3118:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{fillCacheWithNewSubTreeData:function(){return i},fillCacheWithNewSubTreeDataButOnlyLoading:function(){return c}});let n=r(2004),o=r(4758),u=r(5637),l=r(8291);function a(e,t,r,a,i,c){let{segmentPath:s,seedData:f,tree:d,head:p}=a,h=t,y=r;for(let t=0;t{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},3269:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_HEADER:function(){return n},FLIGHT_HEADERS:function(){return f},NEXT_DID_POSTPONE_HEADER:function(){return h},NEXT_HMR_REFRESH_HASH_COOKIE:function(){return i},NEXT_HMR_REFRESH_HEADER:function(){return a},NEXT_IS_PRERENDER_HEADER:function(){return b},NEXT_REWRITTEN_PATH_HEADER:function(){return y},NEXT_REWRITTEN_QUERY_HEADER:function(){return _},NEXT_ROUTER_PREFETCH_HEADER:function(){return u},NEXT_ROUTER_SEGMENT_PREFETCH_HEADER:function(){return l},NEXT_ROUTER_STALE_TIME_HEADER:function(){return p},NEXT_ROUTER_STATE_TREE_HEADER:function(){return o},NEXT_RSC_UNION_QUERY:function(){return d},NEXT_URL:function(){return c},RSC_CONTENT_TYPE_HEADER:function(){return s},RSC_HEADER:function(){return r}});let r="RSC",n="Next-Action",o="Next-Router-State-Tree",u="Next-Router-Prefetch",l="Next-Router-Segment-Prefetch",a="Next-HMR-Refresh",i="__next_hmr_refresh_hash__",c="Next-Url",s="text/x-component",f=[r,o,u,a,l],d="_rsc",p="x-nextjs-stale-time",h="x-nextjs-postponed",y="x-nextjs-rewritten-path",_="x-nextjs-rewritten-query",b="x-nextjs-prerender";("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3506:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"attachHydrationErrorState",{enumerable:!0,get:function(){return u}});let n=r(6465),o=r(9771);function u(e){let t={},r=(0,n.testReactHydrationWarning)(e.message),u=(0,n.isHydrationError)(e);if(!(u||r))return;let l=(0,o.getReactHydrationDiffSegments)(e.message);if(l){let a=l[1];t={...e.details,...o.hydrationErrorState,warning:(a&&!r?null:o.hydrationErrorState.warning)||[(0,n.getDefaultHydrationErrorMessage)(),"",""],notes:r?"":l[0],reactOutputComponentDiff:a},!o.hydrationErrorState.reactOutputComponentDiff&&a&&(o.hydrationErrorState.reactOutputComponentDiff=a),!a&&u&&o.hydrationErrorState.reactOutputComponentDiff&&(t.reactOutputComponentDiff=o.hydrationErrorState.reactOutputComponentDiff)}else o.hydrationErrorState.warning&&(t={...e.details,...o.hydrationErrorState}),o.hydrationErrorState.reactOutputComponentDiff&&(t.reactOutputComponentDiff=o.hydrationErrorState.reactOutputComponentDiff);e.details=t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3507:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleMutable",{enumerable:!0,get:function(){return u}});let n=r(8946);function o(e){return void 0!==e}function u(e,t){var r,u;let l=null==(r=t.shouldScroll)||r,a=e.nextUrl;if(o(t.patchedTree)){let r=(0,n.computeChangedPath)(e.tree,t.patchedTree);r?a=r:a||(a=e.canonicalUrl)}return{canonicalUrl:o(t.canonicalUrl)?t.canonicalUrl===e.canonicalUrl?e.canonicalUrl:t.canonicalUrl:e.canonicalUrl,pushRef:{pendingPush:o(t.pendingPush)?t.pendingPush:e.pushRef.pendingPush,mpaNavigation:o(t.mpaNavigation)?t.mpaNavigation:e.pushRef.mpaNavigation,preserveCustomHistoryState:o(t.preserveCustomHistoryState)?t.preserveCustomHistoryState:e.pushRef.preserveCustomHistoryState},focusAndScrollRef:{apply:!!l&&(!!o(null==t?void 0:t.scrollableSegments)||e.focusAndScrollRef.apply),onlyHashChange:t.onlyHashChange||!1,hashFragment:l?t.hashFragment&&""!==t.hashFragment?decodeURIComponent(t.hashFragment.slice(1)):e.focusAndScrollRef.hashFragment:null,segmentPaths:l?null!=(u=null==t?void 0:t.scrollableSegments)?u:e.focusAndScrollRef.segmentPaths:[]},cache:t.cache?t.cache:e.cache,prefetchCache:t.prefetchCache?t.prefetchCache:e.prefetchCache,tree:o(t.patchedTree)?t.patchedTree:e.tree,nextUrl:a}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3558:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRenderParamsFromClient",{enumerable:!0,get:function(){return n}});let n=r(7829).makeUntrackedExoticParams;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3567:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createInitialRouterState",{enumerable:!0,get:function(){return s}});let n=r(1139),o=r(4758),u=r(8946),l=r(1518),a=r(9818),i=r(4908),c=r(2561);function s(e){var t,r;let{navigatedAt:s,initialFlightData:f,initialCanonicalUrlParts:d,initialParallelRoutes:p,location:h,couldBeIntercepted:y,postponed:_,prerendered:b}=e,g=d.join("/"),v=(0,c.getFlightDataPartsFromPath)(f[0]),{tree:m,seedData:E,head:O}=v,R={lazyData:null,rsc:null==E?void 0:E[1],prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:p,loading:null!=(t=null==E?void 0:E[3])?t:null,navigatedAt:s},P=h?(0,n.createHrefFromUrl)(h):g;(0,i.addRefreshMarkerToActiveParallelSegments)(m,P);let j=new Map;(null===p||0===p.size)&&(0,o.fillLazyItemsTillLeafWithHead)(s,R,void 0,m,E,O,void 0);let T={tree:m,cache:R,prefetchCache:j,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:{apply:!1,onlyHashChange:!1,hashFragment:null,segmentPaths:[]},canonicalUrl:P,nextUrl:null!=(r=(0,u.extractPathFromFlightRouterState)(m)||(null==h?void 0:h.pathname))?r:null};if(h){let e=new URL(""+h.pathname+h.search,h.origin);(0,l.createSeededPrefetchCacheEntry)({url:e,data:{flightData:[v],canonicalUrl:void 0,couldBeIntercepted:!!y,prerendered:b,postponed:_,staleTime:-1},tree:T.tree,prefetchCache:T.prefetchCache,nextUrl:T.nextUrl,kind:b?a.PrefetchKind.FULL:a.PrefetchKind.AUTO})}return T}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3612:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hmrRefreshReducer",{enumerable:!0,get:function(){return n}}),r(8586),r(1139),r(7442),r(9234),r(3894),r(3507),r(878),r(6158),r(6375),r(4108);let n=function(e,t){return e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3668:(e,t)=>{"use strict";function r(){return""}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return r}})},3678:(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`forbidden()` is experimental and only allowed to be enabled when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E488",enumerable:!1,configurable:!0})}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"forbidden",{enumerable:!0,get:function(){return n}}),r(6494).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3806:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"callServer",{enumerable:!0,get:function(){return l}});let n=r(2115),o=r(9818),u=r(1027);async function l(e,t){return new Promise((r,l)=>{(0,n.startTransition)(()=>{(0,u.dispatchAppRouterAction)({type:o.ACTION_SERVER_ACTION,actionId:e,actionArgs:t,resolve:r,reject:l})})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3894:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleExternalUrl:function(){return v},navigateReducer:function(){return function e(t,r){let{url:E,isExternalUrl:O,navigateType:R,shouldScroll:P,allowAliasing:j}=r,T={},{hash:S}=E,M=(0,o.createHrefFromUrl)(E),w="push"===R;if((0,_.prunePrefetchCache)(t.prefetchCache),T.preserveCustomHistoryState=!1,T.pendingPush=w,O)return v(t,T,E.toString(),w);if(document.getElementById("__next-page-redirect"))return v(t,T,M,w);let C=(0,_.getOrCreatePrefetchCacheEntry)({url:E,nextUrl:t.nextUrl,tree:t.tree,prefetchCache:t.prefetchCache,allowAliasing:j}),{treeAtTimeOfPrefetch:x,data:A}=C;return d.prefetchQueue.bump(A),A.then(d=>{let{flightData:_,canonicalUrl:O,postponed:R}=d,j=Date.now(),A=!1;if(C.lastUsedTime||(C.lastUsedTime=j,A=!0),C.aliased){let n=(0,g.handleAliasedPrefetchEntry)(j,t,_,E,T);return!1===n?e(t,{...r,allowAliasing:!1}):n}if("string"==typeof _)return v(t,T,_,w);let N=O?(0,o.createHrefFromUrl)(O):M;if(S&&t.canonicalUrl.split("#",1)[0]===N.split("#",1)[0])return T.onlyHashChange=!0,T.canonicalUrl=N,T.shouldScroll=P,T.hashFragment=S,T.scrollableSegments=[],(0,s.handleMutable)(t,T);let D=t.tree,U=t.cache,L=[];for(let e of _){let{pathToSegment:r,seedData:o,head:s,isHeadPartial:d,isRootRender:_}=e,g=e.tree,O=["",...r],P=(0,l.applyRouterStatePatchToTree)(O,D,g,M);if(null===P&&(P=(0,l.applyRouterStatePatchToTree)(O,x,g,M)),null!==P){if(o&&_&&R){let e=(0,y.startPPRNavigation)(j,U,D,g,o,s,d,!1,L);if(null!==e){if(null===e.route)return v(t,T,M,w);P=e.route;let r=e.node;null!==r&&(T.cache=r);let o=e.dynamicRequestTree;if(null!==o){let r=(0,n.fetchServerResponse)(E,{flightRouterState:o,nextUrl:t.nextUrl});(0,y.listenForDynamicRequest)(e,r)}}else P=g}else{if((0,i.isNavigatingToNewRootLayout)(D,P))return v(t,T,M,w);let n=(0,p.createEmptyCacheNode)(),o=!1;for(let t of(C.status!==c.PrefetchCacheEntryStatus.stale||A?o=(0,f.applyFlightData)(j,U,n,e,C):(o=function(e,t,r,n){let o=!1;for(let u of(e.rsc=t.rsc,e.prefetchRsc=t.prefetchRsc,e.loading=t.loading,e.parallelRoutes=new Map(t.parallelRoutes),m(n).map(e=>[...r,...e])))(0,b.clearCacheNodeDataForSegmentPath)(e,t,u),o=!0;return o}(n,U,r,g),C.lastUsedTime=j),(0,a.shouldHardNavigate)(O,D)?(n.rsc=U.rsc,n.prefetchRsc=U.prefetchRsc,(0,u.invalidateCacheBelowFlightSegmentPath)(n,U,r),T.cache=n):o&&(T.cache=n,U=n),m(g))){let e=[...r,...t];e[e.length-1]!==h.DEFAULT_SEGMENT_KEY&&L.push(e)}}D=P}}return T.patchedTree=D,T.canonicalUrl=N,T.scrollableSegments=L,T.hashFragment=S,T.shouldScroll=P,(0,s.handleMutable)(t,T)},()=>t)}}});let n=r(8586),o=r(1139),u=r(4466),l=r(7442),a=r(5567),i=r(9234),c=r(9818),s=r(3507),f=r(878),d=r(9154),p=r(6158),h=r(8291),y=r(4150),_=r(1518),b=r(9880),g=r(5563);function v(e,t,r,n){return t.mpaNavigation=!0,t.canonicalUrl=r,t.pendingPush=n,t.scrollableSegments=void 0,(0,s.handleMutable)(e,t)}function m(e){let t=[],[r,n]=e;if(0===Object.keys(n).length)return[[r]];for(let[e,o]of Object.entries(n))for(let n of m(o))""===r?t.push([e,...n]):t.push([r,e,...n]);return t}r(6005),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3942:(e,t)=>{"use strict";function r(e){let t=5381;for(let r=0;r>>0}function n(e){return r(e).toString(36).slice(0,5)}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{djb2Hash:function(){return r},hexHash:function(){return n}})},3950:(e,t)=>{"use strict";function r(e,t){let r=e[e.length-1];r&&r.stack===t.stack||e.push(t)}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"enqueueConsecutiveDedupedError",{enumerable:!0,get:function(){return r}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3954:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,r(5444).handleGlobalErrors)(),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4074:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(427);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:u}=(0,n.parsePath)(e);return""+t+r+o+u}},4108:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasInterceptionRouteInCurrentTree",{enumerable:!0,get:function(){return function e(t){let[r,o]=t;if(Array.isArray(r)&&("di"===r[2]||"ci"===r[2])||"string"==typeof r&&(0,n.isInterceptionRouteAppPath)(r))return!0;if(o){for(let t in o)if(e(o[t]))return!0}return!1}}});let n=r(7755);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4150:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{abortTask:function(){return h},listenForDynamicRequest:function(){return p},startPPRNavigation:function(){return c},updateCacheNodeOnPopstateRestoration:function(){return function e(t,r){let n=r[1],o=t.parallelRoutes,l=new Map(o);for(let t in n){let r=n[t],a=r[0],i=(0,u.createRouterCacheKey)(a),c=o.get(t);if(void 0!==c){let n=c.get(i);if(void 0!==n){let o=e(n,r),u=new Map(c);u.set(i,o),l.set(t,u)}}}let a=t.rsc,i=b(a)&&"pending"===a.status;return{lazyData:null,rsc:a,head:t.head,prefetchHead:i?t.prefetchHead:[null,null],prefetchRsc:i?t.prefetchRsc:null,loading:t.loading,parallelRoutes:l,navigatedAt:t.navigatedAt}}}});let n=r(8291),o=r(1127),u=r(5637),l=r(9234),a=r(1518),i={route:null,node:null,dynamicRequestTree:null,children:null};function c(e,t,r,l,a,c,d,p,h){return function e(t,r,l,a,c,d,p,h,y,_,b){let g=l[1],v=a[1],m=null!==d?d[2]:null;c||!0===a[4]&&(c=!0);let E=r.parallelRoutes,O=new Map(E),R={},P=null,j=!1,T={};for(let r in v){let l,a=v[r],f=g[r],d=E.get(r),S=null!==m?m[r]:null,M=a[0],w=_.concat([r,M]),C=(0,u.createRouterCacheKey)(M),x=void 0!==f?f[0]:void 0,A=void 0!==d?d.get(C):void 0;if(null!==(l=M===n.DEFAULT_SEGMENT_KEY?void 0!==f?{route:f,node:null,dynamicRequestTree:null,children:null}:s(t,f,a,A,c,void 0!==S?S:null,p,h,w,b):y&&0===Object.keys(a[1]).length?s(t,f,a,A,c,void 0!==S?S:null,p,h,w,b):void 0!==f&&void 0!==x&&(0,o.matchSegment)(M,x)&&void 0!==A&&void 0!==f?e(t,A,f,a,c,S,p,h,y,w,b):s(t,f,a,A,c,void 0!==S?S:null,p,h,w,b))){if(null===l.route)return i;null===P&&(P=new Map),P.set(r,l);let e=l.node;if(null!==e){let t=new Map(d);t.set(C,e),O.set(r,t)}let t=l.route;R[r]=t;let n=l.dynamicRequestTree;null!==n?(j=!0,T[r]=n):T[r]=t}else R[r]=a,T[r]=a}if(null===P)return null;let S={lazyData:null,rsc:r.rsc,prefetchRsc:r.prefetchRsc,head:r.head,prefetchHead:r.prefetchHead,loading:r.loading,parallelRoutes:O,navigatedAt:t};return{route:f(a,R),node:S,dynamicRequestTree:j?f(a,T):null,children:P}}(e,t,r,l,!1,a,c,d,p,[],h)}function s(e,t,r,n,o,c,s,p,h,y){return!o&&(void 0===t||(0,l.isNavigatingToNewRootLayout)(t,r))?i:function e(t,r,n,o,l,i,c,s){let p,h,y,_,b=r[1],g=0===Object.keys(b).length;if(void 0!==n&&n.navigatedAt+a.DYNAMIC_STALETIME_MS>t)p=n.rsc,h=n.loading,y=n.head,_=n.navigatedAt;else if(null===o)return d(t,r,null,l,i,c,s);else if(p=o[1],h=o[3],y=g?l:null,_=t,o[4]||i&&g)return d(t,r,o,l,i,c,s);let v=null!==o?o[2]:null,m=new Map,E=void 0!==n?n.parallelRoutes:null,O=new Map(E),R={},P=!1;if(g)s.push(c);else for(let r in b){let n=b[r],o=null!==v?v[r]:null,a=null!==E?E.get(r):void 0,f=n[0],d=c.concat([r,f]),p=(0,u.createRouterCacheKey)(f),h=e(t,n,void 0!==a?a.get(p):void 0,o,l,i,d,s);m.set(r,h);let y=h.dynamicRequestTree;null!==y?(P=!0,R[r]=y):R[r]=n;let _=h.node;if(null!==_){let e=new Map;e.set(p,_),O.set(r,e)}}return{route:r,node:{lazyData:null,rsc:p,prefetchRsc:null,head:y,prefetchHead:null,loading:h,parallelRoutes:O,navigatedAt:_},dynamicRequestTree:P?f(r,R):null,children:m}}(e,r,n,c,s,p,h,y)}function f(e,t){let r=[e[0],t];return 2 in e&&(r[2]=e[2]),3 in e&&(r[3]=e[3]),4 in e&&(r[4]=e[4]),r}function d(e,t,r,n,o,l,a){let i=f(t,t[1]);return i[3]="refetch",{route:t,node:function e(t,r,n,o,l,a,i){let c=r[1],s=null!==n?n[2]:null,f=new Map;for(let r in c){let n=c[r],d=null!==s?s[r]:null,p=n[0],h=a.concat([r,p]),y=(0,u.createRouterCacheKey)(p),_=e(t,n,void 0===d?null:d,o,l,h,i),b=new Map;b.set(y,_),f.set(r,b)}let d=0===f.size;d&&i.push(a);let p=null!==n?n[1]:null,h=null!==n?n[3]:null;return{lazyData:null,parallelRoutes:f,prefetchRsc:void 0!==p?p:null,prefetchHead:d?o:[null,null],loading:void 0!==h?h:null,rsc:g(),head:d?g():null,navigatedAt:t}}(e,t,r,n,o,l,a),dynamicRequestTree:i,children:null}}function p(e,t){t.then(t=>{let{flightData:r}=t;if("string"!=typeof r){for(let t of r){let{segmentPath:r,tree:n,seedData:l,head:a}=t;l&&function(e,t,r,n,l){let a=e;for(let e=0;e{h(e,t)})}function h(e,t){let r=e.node;if(null===r)return;let n=e.children;if(null===n)y(e.route,r,t);else for(let e of n.values())h(e,t);e.dynamicRequestTree=null}function y(e,t,r){let n=e[1],o=t.parallelRoutes;for(let e in n){let t=n[e],l=o.get(e);if(void 0===l)continue;let a=t[0],i=(0,u.createRouterCacheKey)(a),c=l.get(i);void 0!==c&&y(t,c,r)}let l=t.rsc;b(l)&&(null===r?l.resolve(null):l.reject(r));let a=t.head;b(a)&&a.resolve(null)}let _=Symbol();function b(e){return e&&e.tag===_}function g(){let e,t,r=new Promise((r,n)=>{e=r,t=n});return r.status="pending",r.resolve=t=>{"pending"===r.status&&(r.status="fulfilled",r.value=t,e(t))},r.reject=e=>{"pending"===r.status&&(r.status="rejected",r.reason=e,t(e))},r.tag=_,r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4189:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange)return void e();let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},4420:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}});var r=function(e){return e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4466:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"invalidateCacheBelowFlightSegmentPath",{enumerable:!0,get:function(){return function e(t,r,u){let l=u.length<=2,[a,i]=u,c=(0,n.createRouterCacheKey)(i),s=r.parallelRoutes.get(a);if(!s)return;let f=t.parallelRoutes.get(a);if(f&&f!==s||(f=new Map(s),t.parallelRoutes.set(a,f)),l)return void f.delete(c);let d=s.get(c),p=f.get(c);p&&d&&(p===d&&(p={lazyData:p.lazyData,rsc:p.rsc,prefetchRsc:p.prefetchRsc,head:p.head,prefetchHead:p.prefetchHead,parallelRoutes:new Map(p.parallelRoutes)},f.set(c,p)),e(p,d,(0,o.getNextFlightSegmentPath)(u)))}}});let n=r(5637),o=r(2561);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4486:(e,t,r)=>{"use strict";let n,o;Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hydrate",{enumerable:!0,get:function(){return D}});let u=r(8229),l=r(6966),a=r(5155);r(6446),r(6002),r(3954);let i=u._(r(2669)),c=l._(r(2115)),s=r(4979),f=r(2830),d=r(6698),p=r(9155),h=r(3806),y=r(1818),_=r(6634),b=u._(r(6158)),g=r(3567);r(5227);let v=r(5624),m=document,E=new TextEncoder,O=!1,R=!1,P=null;function j(e){if(0===e[0])n=[];else if(1===e[0]){if(!n)throw Object.defineProperty(Error("Unexpected server data: missing bootstrap script."),"__NEXT_ERROR_CODE",{value:"E18",enumerable:!1,configurable:!0});o?o.enqueue(E.encode(e[1])):n.push(e[1])}else if(2===e[0])P=e[1];else if(3===e[0]){if(!n)throw Object.defineProperty(Error("Unexpected server data: missing bootstrap script."),"__NEXT_ERROR_CODE",{value:"E18",enumerable:!1,configurable:!0});let r=atob(e[1]),u=new Uint8Array(r.length);for(var t=0;t{e.enqueue("string"==typeof t?E.encode(t):t)}),O&&!R)&&(null===e.desiredSize||e.desiredSize<0?e.error(Object.defineProperty(Error("The connection to the page was unexpectedly closed, possibly due to the stop button being clicked, loss of Wi-Fi, or an unstable internet connection."),"__NEXT_ERROR_CODE",{value:"E117",enumerable:!1,configurable:!0})):e.close(),R=!0,n=void 0),o=e}}),w=(0,s.createFromReadableStream)(M,{callServer:h.callServer,findSourceMapURL:y.findSourceMapURL});function C(e){let{pendingActionQueue:t}=e,r=(0,c.use)(w),n=(0,c.use)(t);return(0,a.jsx)(b.default,{actionQueue:n,globalErrorComponentAndStyles:r.G,assetPrefix:r.p})}let x=c.default.StrictMode;function A(e){let{children:t}=e;return t}let N={onRecoverableError:d.onRecoverableError,onCaughtError:p.onCaughtError,onUncaughtError:p.onUncaughtError};function D(e){let t=new Promise((t,r)=>{w.then(r=>{(0,v.setAppBuildId)(r.b);let n=Date.now();t((0,_.createMutableActionQueue)((0,g.createInitialRouterState)({navigatedAt:n,initialFlightData:r.f,initialCanonicalUrlParts:r.c,initialParallelRoutes:new Map,location:window.location,couldBeIntercepted:r.i,postponed:r.s,prerendered:r.S}),e))},e=>r(e))}),r=(0,a.jsx)(x,{children:(0,a.jsx)(f.HeadManagerContext.Provider,{value:{appDir:!0},children:(0,a.jsx)(A,{children:(0,a.jsx)(C,{pendingActionQueue:t})})})});"__next_error__"===document.documentElement.id?i.default.createRoot(m,N).render(r):c.default.startTransition(()=>{i.default.hydrateRoot(m,r,{...N,formState:P})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4758:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"fillLazyItemsTillLeafWithHead",{enumerable:!0,get:function(){return function e(t,r,u,l,a,i,c){if(0===Object.keys(l[1]).length){r.head=i;return}for(let s in l[1]){let f,d=l[1][s],p=d[0],h=(0,n.createRouterCacheKey)(p),y=null!==a&&void 0!==a[2][s]?a[2][s]:null;if(u){let n=u.parallelRoutes.get(s);if(n){let u,l=(null==c?void 0:c.kind)==="auto"&&c.status===o.PrefetchCacheEntryStatus.reusable,a=new Map(n),f=a.get(h);u=null!==y?{lazyData:null,rsc:y[1],prefetchRsc:null,head:null,prefetchHead:null,loading:y[3],parallelRoutes:new Map(null==f?void 0:f.parallelRoutes),navigatedAt:t}:l&&f?{lazyData:f.lazyData,rsc:f.rsc,prefetchRsc:f.prefetchRsc,head:f.head,prefetchHead:f.prefetchHead,parallelRoutes:new Map(f.parallelRoutes),loading:f.loading}:{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map(null==f?void 0:f.parallelRoutes),loading:null,navigatedAt:t},a.set(h,u),e(t,u,f,d,y||null,i,c),r.parallelRoutes.set(s,a);continue}}if(null!==y){let e=y[1],r=y[3];f={lazyData:null,rsc:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:r,navigatedAt:t}}else f={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:t};let _=r.parallelRoutes.get(s);_?_.set(h,f):r.parallelRoutes.set(s,new Map([[h,f]])),e(t,f,void 0,d,y,i,c)}}}});let n=r(5637),o=r(9818);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4819:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"restoreReducer",{enumerable:!0,get:function(){return u}});let n=r(1139),o=r(8946);function u(e,t){var r;let{url:u,tree:l}=t,a=(0,n.createHrefFromUrl)(u),i=l||e.tree,c=e.cache;return{canonicalUrl:a,pushRef:{pendingPush:!1,mpaNavigation:!1,preserveCustomHistoryState:!0},focusAndScrollRef:e.focusAndScrollRef,cache:c,prefetchCache:e.prefetchCache,tree:i,nextUrl:null!=(r=(0,o.extractPathFromFlightRouterState)(i))?r:u.pathname}}r(4150),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4882:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return o}}),r(7102);let n="/docs-site";function o(e){return 0===n.length||(e=e.slice(n.length)).startsWith("/")||(e="/"+e),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4908:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addRefreshMarkerToActiveParallelSegments:function(){return function e(t,r){let[n,o,,l]=t;for(let a in n.includes(u.PAGE_SEGMENT_KEY)&&"refresh"!==l&&(t[2]=r,t[3]="refresh"),o)e(o[a],r)}},refreshInactiveParallelSegments:function(){return l}});let n=r(878),o=r(8586),u=r(8291);async function l(e){let t=new Set;await a({...e,rootTree:e.updatedTree,fetchedSegments:t})}async function a(e){let{navigatedAt:t,state:r,updatedTree:u,updatedCache:l,includeNextUrl:i,fetchedSegments:c,rootTree:s=u,canonicalUrl:f}=e,[,d,p,h]=u,y=[];if(p&&p!==f&&"refresh"===h&&!c.has(p)){c.add(p);let e=(0,o.fetchServerResponse)(new URL(p,location.origin),{flightRouterState:[s[0],s[1],s[2],"refetch"],nextUrl:i?r.nextUrl:null}).then(e=>{let{flightData:r}=e;if("string"!=typeof r)for(let e of r)(0,n.applyFlightData)(t,l,l,e)});y.push(e)}for(let e in d){let n=a({navigatedAt:t,state:r,updatedTree:d[e],updatedCache:l,includeNextUrl:i,fetchedSegments:c,rootTree:s,canonicalUrl:f});y.push(n)}await Promise.all(y)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4911:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AsyncMetadata:function(){return u},AsyncMetadataOutlet:function(){return a}});let n=r(5155),o=r(2115),u=r(1536).BrowserResolvedMetadata;function l(e){let{promise:t}=e,{error:r,digest:n}=(0,o.use)(t);if(r)throw n&&(r.digest=n),r;return null}function a(e){let{promise:t}=e;return(0,n.jsx)(o.Suspense,{fallback:null,children:(0,n.jsx)(l,{promise:t})})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4930:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{IDLE_LINK_STATUS:function(){return c},PENDING_LINK_STATUS:function(){return i},mountFormInstance:function(){return g},mountLinkInstance:function(){return b},onLinkVisibilityChanged:function(){return m},onNavigationIntent:function(){return E},pingVisibleLinks:function(){return R},setLinkForCurrentNavigation:function(){return s},unmountLinkForCurrentNavigation:function(){return f},unmountPrefetchableInstance:function(){return v}}),r(6634);let n=r(6158),o=r(9818),u=r(6005),l=r(2115),a=null,i={pending:!0},c={pending:!1};function s(e){(0,l.startTransition)(()=>{null==a||a.setOptimisticLinkStatus(c),null==e||e.setOptimisticLinkStatus(i),a=e})}function f(e){a===e&&(a=null)}let d="function"==typeof WeakMap?new WeakMap:new Map,p=new Set,h="function"==typeof IntersectionObserver?new IntersectionObserver(function(e){for(let t of e){let e=t.intersectionRatio>0;m(t.target,e)}},{rootMargin:"200px"}):null;function y(e,t){void 0!==d.get(e)&&v(e),d.set(e,t),null!==h&&h.observe(e)}function _(e){try{return(0,n.createPrefetchURL)(e)}catch(t){return("function"==typeof reportError?reportError:console.error)("Cannot prefetch '"+e+"' because it cannot be converted to a URL."),null}}function b(e,t,r,n,o,u){if(o){let o=_(t);if(null!==o){let t={router:r,kind:n,isVisible:!1,wasHoveredOrTouched:!1,prefetchTask:null,cacheVersion:-1,prefetchHref:o.href,setOptimisticLinkStatus:u};return y(e,t),t}}return{router:r,kind:n,isVisible:!1,wasHoveredOrTouched:!1,prefetchTask:null,cacheVersion:-1,prefetchHref:null,setOptimisticLinkStatus:u}}function g(e,t,r,n){let o=_(t);null!==o&&y(e,{router:r,kind:n,isVisible:!1,wasHoveredOrTouched:!1,prefetchTask:null,cacheVersion:-1,prefetchHref:o.href,setOptimisticLinkStatus:null})}function v(e){let t=d.get(e);if(void 0!==t){d.delete(e),p.delete(t);let r=t.prefetchTask;null!==r&&(0,u.cancelPrefetchTask)(r)}null!==h&&h.unobserve(e)}function m(e,t){let r=d.get(e);void 0!==r&&(r.isVisible=t,t?p.add(r):p.delete(r),O(r))}function E(e,t){let r=d.get(e);void 0!==r&&void 0!==r&&(r.wasHoveredOrTouched=!0,O(r))}function O(e){var t;let r=e.prefetchTask;if(!e.isVisible){null!==r&&(0,u.cancelPrefetchTask)(r);return}t=e,(async()=>t.router.prefetch(t.prefetchHref,{kind:t.kind}))().catch(e=>{})}function R(e,t){let r=(0,u.getCurrentCacheVersion)();for(let n of p){let l=n.prefetchTask;if(null!==l&&n.cacheVersion===r&&l.key.nextUrl===e&&l.treeAtTimeOfPrefetch===t)continue;null!==l&&(0,u.cancelPrefetchTask)(l);let a=(0,u.createCacheKey)(n.prefetchHref,e),i=n.wasHoveredOrTouched?u.PrefetchPriority.Intent:u.PrefetchPriority.Default;n.prefetchTask=(0,u.schedulePrefetchTask)(a,t,n.kind===o.PrefetchKind.FULL,i),n.cacheVersion=(0,u.getCurrentCacheVersion)()}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4970:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ClientSegmentRoot",{enumerable:!0,get:function(){return o}});let n=r(5155);function o(e){let{Component:t,slots:o,params:u,promise:l}=e;{let{createRenderParamsFromClient:e}=r(3558),l=e(u);return(0,n.jsx)(t,{...o,params:l})}}r(9837),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4979:(e,t,r)=>{"use strict";e.exports=r(7197)},5072:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTML_LIMITED_BOT_UA_RE",{enumerable:!0,get:function(){return r}});let r=/Mediapartners-Google|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti/i},5122:(e,t)=>{"use strict";function r(e){return null!==e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isThenable",{enumerable:!0,get:function(){return r}})},5128:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getReactStitchedError",{enumerable:!0,get:function(){return c}});let n=r(8229),o=n._(r(2115)),u=n._(r(5807)),l=r(9148),a="react-stack-bottom-frame",i=RegExp("(at "+a+" )|("+a+"\\@)");function c(e){let t=(0,u.default)(e),r=t&&e.stack||"",n=t?e.message:"",a=r.split("\n"),c=a.findIndex(e=>i.test(e)),s=c>=0?a.slice(0,c).join("\n"):r,f=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return Object.assign(f,e),(0,l.copyNextErrorCode)(e,f),f.stack=s,function(e){if(!o.default.captureOwnerStack)return;let t=e.stack||"",r=o.default.captureOwnerStack();r&&!1===t.endsWith(r)&&(e.stack=t+=r)}(f),f}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5155:(e,t,r)=>{"use strict";e.exports=r(6897)},5169:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatConsoleArgs:function(){return u},parseConsoleArgs:function(){return l}});let n=r(8229)._(r(5807));function o(e,t){switch(typeof e){case"object":if(null===e)return"null";if(Array.isArray(e)){let r="[";if(t<1)for(let n=0;n0?"...":"";return r+"]"}{if(e instanceof Error)return e+"";let r=Object.keys(e),n="{";if(t<1)for(let u=0;u0?"...":"";return n+"}"}case"string":return JSON.stringify(e);default:return String(e)}}function u(e){let t,r;"string"==typeof e[0]?(t=e[0],r=1):(t="",r=0);let n="",u=!1;for(let l=0;l=e.length){n+=a;continue}let i=t[++l];switch(i){case"c":n=u?""+n+"]":"["+n,u=!u,r++;break;case"O":case"o":n+=o(e[r++],0);break;case"d":case"i":n+=parseInt(e[r++],10);break;case"f":n+=parseFloat(e[r++]);break;case"s":n+=String(e[r++]);break;default:n+="%"+i}}for(;r0?" ":"")+o(e[r],0);return n}function l(e){if(e.length>3&&"string"==typeof e[0]&&e[0].startsWith("%c%s%c ")&&"string"==typeof e[1]&&"string"==typeof e[2]&&"string"==typeof e[3]){let t=e[2],r=e[4];return{environmentName:t.trim(),error:(0,n.default)(r)?r:null}}return{environmentName:null,error:null}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5209:(e,t)=>{"use strict";function r(e){return Object.prototype.toString.call(e)}function n(e){if("[object Object]"!==r(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getObjectClassLabel:function(){return r},isPlainObject:function(){return n}})},5227:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return l},LayoutRouterContext:function(){return u},MissingSlotContext:function(){return i},TemplateContext:function(){return a}});let n=r(8229)._(r(2115)),o=n.default.createContext(null),u=n.default.createContext(null),l=n.default.createContext(null),a=n.default.createContext(null),i=n.default.createContext(new Set)},5262:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},5415:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(5449);let n=r(6188),o=r(1408);(0,n.appBootstrap)(()=>{let{hydrate:e}=r(4486);r(6158),r(7555),e(o)}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5444:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleClientError:function(){return v},handleConsoleError:function(){return g},handleGlobalErrors:function(){return R},useErrorHandler:function(){return m}});let n=r(8229),o=r(2115),u=r(3506),l=r(2858),a=r(9771),i=r(5169),c=n._(r(5807)),s=r(6043),f=r(3950),d=r(5128),p=globalThis.queueMicrotask||(e=>Promise.resolve().then(e)),h=[],y=[],_=[],b=[];function g(e,t){let r,{environmentName:n}=(0,i.parseConsoleArgs)(t);for(let o of(r=(0,c.default)(e)?(0,s.createConsoleError)(e,n):(0,s.createConsoleError)((0,i.formatConsoleArgs)(t),n),r=(0,d.getReactStitchedError)(r),(0,a.storeHydrationErrorStateFromConsoleArgs)(...t),(0,u.attachHydrationErrorState)(r),(0,f.enqueueConsecutiveDedupedError)(h,r),y))p(()=>{o(r)})}function v(e){let t;for(let r of(t=(0,c.default)(e)?e:Object.defineProperty(Error(e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0}),t=(0,d.getReactStitchedError)(t),(0,u.attachHydrationErrorState)(t),(0,f.enqueueConsecutiveDedupedError)(h,t),y))p(()=>{r(t)})}function m(e,t){(0,o.useEffect)(()=>(h.forEach(e),_.forEach(t),y.push(e),b.push(t),()=>{y.splice(y.indexOf(e),1),b.splice(b.indexOf(t),1),h.splice(0,h.length),_.splice(0,_.length)}),[e,t])}function E(e){if((0,l.isNextRouterError)(e.error))return e.preventDefault(),!1;e.error&&v(e.error)}function O(e){let t=null==e?void 0:e.reason;if((0,l.isNextRouterError)(t))return void e.preventDefault();let r=t;for(let e of(r&&!(0,c.default)(r)&&(r=Object.defineProperty(Error(r+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})),_.push(r),b))e(r)}function R(){try{Error.stackTraceLimit=50}catch(e){}window.addEventListener("error",E),window.addEventListener("unhandledrejection",O)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5449:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(3668);let n=r(589);{let e=r.u;r.u=function(){for(var t=arguments.length,r=Array(t),o=0;o{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"refreshReducer",{enumerable:!0,get:function(){return h}});let n=r(8586),o=r(1139),u=r(7442),l=r(9234),a=r(3894),i=r(3507),c=r(4758),s=r(6158),f=r(6375),d=r(4108),p=r(4908);function h(e,t){let{origin:r}=t,h={},y=e.canonicalUrl,_=e.tree;h.preserveCustomHistoryState=!1;let b=(0,s.createEmptyCacheNode)(),g=(0,d.hasInterceptionRouteInCurrentTree)(e.tree);b.lazyData=(0,n.fetchServerResponse)(new URL(y,r),{flightRouterState:[_[0],_[1],_[2],"refetch"],nextUrl:g?e.nextUrl:null});let v=Date.now();return b.lazyData.then(async r=>{let{flightData:n,canonicalUrl:s}=r;if("string"==typeof n)return(0,a.handleExternalUrl)(e,h,n,e.pushRef.pendingPush);for(let r of(b.lazyData=null,n)){let{tree:n,seedData:i,head:d,isRootRender:m}=r;if(!m)return console.log("REFRESH FAILED"),e;let E=(0,u.applyRouterStatePatchToTree)([""],_,n,e.canonicalUrl);if(null===E)return(0,f.handleSegmentMismatch)(e,t,n);if((0,l.isNavigatingToNewRootLayout)(_,E))return(0,a.handleExternalUrl)(e,h,y,e.pushRef.pendingPush);let O=s?(0,o.createHrefFromUrl)(s):void 0;if(s&&(h.canonicalUrl=O),null!==i){let e=i[1],t=i[3];b.rsc=e,b.prefetchRsc=null,b.loading=t,(0,c.fillLazyItemsTillLeafWithHead)(v,b,void 0,n,i,d,void 0),h.prefetchCache=new Map}await (0,p.refreshInactiveParallelSegments)({navigatedAt:v,state:e,updatedTree:E,updatedCache:b,includeNextUrl:g,canonicalUrl:h.canonicalUrl||e.canonicalUrl}),h.cache=b,h.patchedTree=E,_=E}return(0,i.handleMutable)(e,h)},()=>e)}r(6005),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5563:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{addSearchParamsToPageSegments:function(){return f},handleAliasedPrefetchEntry:function(){return s}});let n=r(8291),o=r(6158),u=r(7442),l=r(1139),a=r(5637),i=r(3118),c=r(3507);function s(e,t,r,s,d){let p,h=t.tree,y=t.cache,_=(0,l.createHrefFromUrl)(s);if("string"==typeof r)return!1;for(let t of r){if(!function e(t){if(!t)return!1;let r=t[2];if(t[3])return!0;for(let t in r)if(e(r[t]))return!0;return!1}(t.seedData))continue;let r=t.tree;r=f(r,Object.fromEntries(s.searchParams));let{seedData:l,isRootRender:c,pathToSegment:d}=t,b=["",...d];r=f(r,Object.fromEntries(s.searchParams));let g=(0,u.applyRouterStatePatchToTree)(b,h,r,_),v=(0,o.createEmptyCacheNode)();if(c&&l){let t=l[1];v.loading=l[3],v.rsc=t,function e(t,r,o,u,l){if(0!==Object.keys(u[1]).length)for(let i in u[1]){let c,s=u[1][i],f=s[0],d=(0,a.createRouterCacheKey)(f),p=null!==l&&void 0!==l[2][i]?l[2][i]:null;if(null!==p){let e=p[1],r=p[3];c={lazyData:null,rsc:f.includes(n.PAGE_SEGMENT_KEY)?null:e,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:r,navigatedAt:t}}else c={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1};let h=r.parallelRoutes.get(i);h?h.set(d,c):r.parallelRoutes.set(i,new Map([[d,c]])),e(t,c,o,s,p)}}(e,v,y,r,l)}else v.rsc=y.rsc,v.prefetchRsc=y.prefetchRsc,v.loading=y.loading,v.parallelRoutes=new Map(y.parallelRoutes),(0,i.fillCacheWithNewSubTreeDataButOnlyLoading)(e,v,y,t);g&&(h=g,y=v,p=!0)}return!!p&&(d.patchedTree=h,d.cache=y,d.canonicalUrl=_,d.hashFragment=s.hash,(0,c.handleMutable)(t,d))}function f(e,t){let[r,o,...u]=e;if(r.includes(n.PAGE_SEGMENT_KEY))return[(0,n.addSearchParamsIfPageSegment)(r,t),o,...u];let l={};for(let[e,r]of Object.entries(o))l[e]=f(r,t);return[r,l,...u]}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5567:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"shouldHardNavigate",{enumerable:!0,get:function(){return function e(t,r){let[u,l]=r,[a,i]=t;return(0,o.matchSegment)(a,u)?!(t.length<=2)&&e((0,n.getNextFlightSegmentPath)(t),l[i]):!!Array.isArray(a)}}});let n=r(2561),o=r(1127);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5618:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return s},RedirectType:function(){return o.RedirectType},forbidden:function(){return l.forbidden},notFound:function(){return u.notFound},permanentRedirect:function(){return n.permanentRedirect},redirect:function(){return n.redirect},unauthorized:function(){return a.unauthorized},unstable_rethrow:function(){return i.unstable_rethrow}});let n=r(6825),o=r(2210),u=r(8527),l=r(3678),a=r(9187),i=r(7599);class c extends Error{constructor(){super("Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams")}}class s extends URLSearchParams{append(){throw new c}delete(){throw new c}set(){throw new c}sort(){throw new c}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5624:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getAppBuildId:function(){return o},setAppBuildId:function(){return n}});let r="";function n(e){r=e}function o(){return r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5637:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRouterCacheKey",{enumerable:!0,get:function(){return o}});let n=r(8291);function o(e,t){return(void 0===t&&(t=!1),Array.isArray(e))?e[0]+"|"+e[1]+"|"+e[2]:t&&e.startsWith(n.PAGE_SEGMENT_KEY)?n.PAGE_SEGMENT_KEY:e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5807:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return o},getProperError:function(){return u}});let n=r(5209);function o(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function u(e){return o(e)?e:Object.defineProperty(Error((0,n.isPlainObject)(e)?function(e){let t=new WeakSet;return JSON.stringify(e,(e,r)=>{if("object"==typeof r&&null!==r){if(t.has(r))return"[Circular]";t.add(r)}return r})}(e):e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},5929:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return u}});let n=r(4074),o=r(214);function u(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,"/docs-site"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5952:(e,t,r)=>{"use strict";function n(e,t){if(!Object.prototype.hasOwnProperty.call(e,t))throw TypeError("attempted to use private field on non-instance");return e}r.r(t),r.d(t,{_:()=>n})},6002:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),(0,r(6905).patchConsoleError)(),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6005:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{NavigationResultTag:function(){return f},PrefetchPriority:function(){return d},cancelPrefetchTask:function(){return i},createCacheKey:function(){return s},getCurrentCacheVersion:function(){return l},navigate:function(){return o},prefetch:function(){return n},reschedulePrefetchTask:function(){return c},revalidateEntireCache:function(){return u},schedulePrefetchTask:function(){return a}});let r=()=>{throw Object.defineProperty(Error("Segment Cache experiment is not enabled. This is a bug in Next.js."),"__NEXT_ERROR_CODE",{value:"E654",enumerable:!1,configurable:!0})},n=r,o=r,u=r,l=r,a=r,i=r,c=r,s=r;var f=function(e){return e[e.MPA=0]="MPA",e[e.Success=1]="Success",e[e.NoOp=2]="NoOp",e[e.Async=3]="Async",e}({}),d=function(e){return e[e.Intent=2]="Intent",e[e.Default=1]="Default",e[e.Background=0]="Background",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6043:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createConsoleError:function(){return o},getConsoleErrorType:function(){return l},isConsoleError:function(){return u}});let r=Symbol.for("next.console.error.digest"),n=Symbol.for("next.console.error.type");function o(e,t){let o="string"==typeof e?Object.defineProperty(Error(e),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0}):e;return o[r]="NEXT_CONSOLE_ERROR",o[n]="string"==typeof e?"string":"error",t&&!o.environmentName&&(o.environmentName=t),o}let u=e=>e&&"NEXT_CONSOLE_ERROR"===e[r],l=e=>e[n];("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6158:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createEmptyCacheNode:function(){return w},createPrefetchURL:function(){return S},default:function(){return N},isExternalURL:function(){return T}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(5227),a=r(9818),i=r(1139),c=r(886),s=r(1027),f=n._(r(6614)),d=r(774),p=r(5929),h=r(7760),y=r(686),_=r(2691),b=r(1822),g=r(4882),v=r(7102),m=r(8946),E=r(8836),O=r(6634),R=r(6825),P=r(2210);r(4930);let j={};function T(e){return e.origin!==window.location.origin}function S(e){let t;if((0,d.isBot)(window.navigator.userAgent))return null;try{t=new URL((0,p.addBasePath)(e),window.location.href)}catch(t){throw Object.defineProperty(Error("Cannot prefetch '"+e+"' because it cannot be converted to a URL."),"__NEXT_ERROR_CODE",{value:"E234",enumerable:!1,configurable:!0})}return T(t)?null:t}function M(e){let{appRouterState:t}=e;return(0,u.useInsertionEffect)(()=>{let{tree:e,pushRef:r,canonicalUrl:n}=t,o={...r.preserveCustomHistoryState?window.history.state:{},__NA:!0,__PRIVATE_NEXTJS_INTERNALS_TREE:e};r.pendingPush&&(0,i.createHrefFromUrl)(new URL(window.location.href))!==n?(r.pendingPush=!1,window.history.pushState(o,"",n)):window.history.replaceState(o,"",n)},[t]),(0,u.useEffect)(()=>{},[t.nextUrl,t.tree]),null}function w(){return{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1}}function C(e){null==e&&(e={});let t=window.history.state,r=null==t?void 0:t.__NA;r&&(e.__NA=r);let n=null==t?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;return n&&(e.__PRIVATE_NEXTJS_INTERNALS_TREE=n),e}function x(e){let{headCacheNode:t}=e,r=null!==t?t.head:null,n=null!==t?t.prefetchHead:null,o=null!==n?n:r;return(0,u.useDeferredValue)(r,o)}function A(e){let t,{actionQueue:r,assetPrefix:n,globalError:i}=e,d=(0,s.useActionQueue)(r),{canonicalUrl:p}=d,{searchParams:E,pathname:T}=(0,u.useMemo)(()=>{let e=new URL(p,window.location.href);return{searchParams:e.searchParams,pathname:(0,v.hasBasePath)(e.pathname)?(0,g.removeBasePath)(e.pathname):e.pathname}},[p]);(0,u.useEffect)(()=>{function e(e){var t;e.persisted&&(null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE)&&(j.pendingMpaPath=void 0,(0,s.dispatchAppRouterAction)({type:a.ACTION_RESTORE,url:new URL(window.location.href),tree:window.history.state.__PRIVATE_NEXTJS_INTERNALS_TREE}))}return window.addEventListener("pageshow",e),()=>{window.removeEventListener("pageshow",e)}},[]),(0,u.useEffect)(()=>{function e(e){let t="reason"in e?e.reason:e.error;if((0,P.isRedirectError)(t)){e.preventDefault();let r=(0,R.getURLFromRedirectError)(t);(0,R.getRedirectTypeFromError)(t)===P.RedirectType.push?O.publicAppRouterInstance.push(r,{}):O.publicAppRouterInstance.replace(r,{})}}return window.addEventListener("error",e),window.addEventListener("unhandledrejection",e),()=>{window.removeEventListener("error",e),window.removeEventListener("unhandledrejection",e)}},[]);let{pushRef:S}=d;if(S.mpaNavigation){if(j.pendingMpaPath!==p){let e=window.location;S.pendingPush?e.assign(p):e.replace(p),j.pendingMpaPath=p}(0,u.use)(b.unresolvedThenable)}(0,u.useEffect)(()=>{let e=window.history.pushState.bind(window.history),t=window.history.replaceState.bind(window.history),r=e=>{var t;let r=window.location.href,n=null==(t=window.history.state)?void 0:t.__PRIVATE_NEXTJS_INTERNALS_TREE;(0,u.startTransition)(()=>{(0,s.dispatchAppRouterAction)({type:a.ACTION_RESTORE,url:new URL(null!=e?e:r,r),tree:n})})};window.history.pushState=function(t,n,o){return(null==t?void 0:t.__NA)||(null==t?void 0:t._N)||(t=C(t),o&&r(o)),e(t,n,o)},window.history.replaceState=function(e,n,o){return(null==e?void 0:e.__NA)||(null==e?void 0:e._N)||(e=C(e),o&&r(o)),t(e,n,o)};let n=e=>{if(e.state){if(!e.state.__NA)return void window.location.reload();(0,u.startTransition)(()=>{(0,O.dispatchTraverseAction)(window.location.href,e.state.__PRIVATE_NEXTJS_INTERNALS_TREE)})}};return window.addEventListener("popstate",n),()=>{window.history.pushState=e,window.history.replaceState=t,window.removeEventListener("popstate",n)}},[]);let{cache:w,tree:A,nextUrl:N,focusAndScrollRef:D}=d,U=(0,u.useMemo)(()=>(0,_.findHeadInCache)(w,A[1]),[w,A]),k=(0,u.useMemo)(()=>(0,m.getSelectedParams)(A),[A]),I=(0,u.useMemo)(()=>({parentTree:A,parentCacheNode:w,parentSegmentPath:null,url:p}),[A,w,p]),H=(0,u.useMemo)(()=>({tree:A,focusAndScrollRef:D,nextUrl:N}),[A,D,N]);if(null!==U){let[e,r]=U;t=(0,o.jsx)(x,{headCacheNode:e},r)}else t=null;let F=(0,o.jsxs)(y.RedirectBoundary,{children:[t,w.rsc,(0,o.jsx)(h.AppRouterAnnouncer,{tree:A})]});return F=(0,o.jsx)(f.ErrorBoundary,{errorComponent:i[0],errorStyles:i[1],children:F}),(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(M,{appRouterState:d}),(0,o.jsx)(L,{}),(0,o.jsx)(c.PathParamsContext.Provider,{value:k,children:(0,o.jsx)(c.PathnameContext.Provider,{value:T,children:(0,o.jsx)(c.SearchParamsContext.Provider,{value:E,children:(0,o.jsx)(l.GlobalLayoutRouterContext.Provider,{value:H,children:(0,o.jsx)(l.AppRouterContext.Provider,{value:O.publicAppRouterInstance,children:(0,o.jsx)(l.LayoutRouterContext.Provider,{value:I,children:F})})})})})})]})}function N(e){let{actionQueue:t,globalErrorComponentAndStyles:[r,n],assetPrefix:u}=e;return(0,E.useNavFailureHandler)(),(0,o.jsx)(f.ErrorBoundary,{errorComponent:f.default,children:(0,o.jsx)(A,{actionQueue:t,assetPrefix:u,globalError:[r,n]})})}let D=new Set,U=new Set;function L(){let[,e]=u.default.useState(0),t=D.size;return(0,u.useEffect)(()=>{let r=()=>e(e=>e+1);return U.add(r),t!==D.size&&r(),()=>{U.delete(r)}},[t,e]),[...D].map((e,t)=>(0,o.jsx)("link",{rel:"stylesheet",href:""+e,precedence:"next"},t))}globalThis._N_E_STYLE_LOAD=function(e){let t=D.size;return D.add(e),D.size!==t&&U.forEach(e=>e()),Promise.resolve()},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6188:(e,t)=>{"use strict";function r(e){var t,r;t=self.__next_s,r=()=>{e()},t&&t.length?t.reduce((e,t)=>{let[r,n]=t;return e.then(()=>new Promise((e,t)=>{let o=document.createElement("script");if(n)for(let e in n)"children"!==e&&o.setAttribute(e,n[e]);r?(o.src=r,o.onload=()=>e(),o.onerror=t):n&&(o.innerHTML=n.children,setTimeout(e)),document.head.appendChild(o)}))},Promise.resolve()).catch(e=>{console.error(e)}).then(()=>{r()}):r()}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"appBootstrap",{enumerable:!0,get:function(){return r}}),window.next={version:"15.3.1",appDir:!0},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6206:(e,t,r)=>{"use strict";e.exports=r(2223)},6361:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},6375:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSegmentMismatch",{enumerable:!0,get:function(){return o}});let n=r(3894);function o(e,t,r){return(0,n.handleExternalUrl)(e,{},e.canonicalUrl,!0)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6420:(e,t,r)=>{"use strict";r.r(t),r.d(t,{_:()=>o});var n=0;function o(e){return"__private_"+n+++"_"+e}},6446:()=>{"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},6465:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{NEXTJS_HYDRATION_ERROR_LINK:function(){return i},REACT_HYDRATION_ERROR_LINK:function(){return a},getDefaultHydrationErrorMessage:function(){return c},getHydrationErrorStackInfo:function(){return h},isHydrationError:function(){return s},isReactHydrationErrorMessage:function(){return f},testReactHydrationWarning:function(){return p}});let n=r(8229)._(r(5807)),o=/hydration failed|while hydrating|content does not match|did not match|HTML didn't match|text didn't match/i,u="Hydration failed because the server rendered HTML didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:",l=[u,"Hydration failed because the server rendered text didn't match the client. As a result this tree will be regenerated on the client. This can happen if a SSR-ed Client Component used:","A tree hydrated but some attributes of the server rendered HTML didn't match the client properties. This won't be patched up. This can happen if a SSR-ed Client Component used:"],a="https://react.dev/link/hydration-mismatch",i="https://nextjs.org/docs/messages/react-hydration-error",c=()=>u;function s(e){return(0,n.default)(e)&&o.test(e.message)}function f(e){return l.some(t=>e.startsWith(t))}let d=[/^In HTML, (.+?) cannot be a child of <(.+?)>\.(.*)\nThis will cause a hydration error\.(.*)/,/^In HTML, (.+?) cannot be a descendant of <(.+?)>\.\nThis will cause a hydration error\.(.*)/,/^In HTML, text nodes cannot be a child of <(.+?)>\.\nThis will cause a hydration error\./,/^In HTML, whitespace text nodes cannot be a child of <(.+?)>\. Make sure you don't have any extra whitespace between tags on each line of your source code\.\nThis will cause a hydration error\./,/^Expected server HTML to contain a matching <(.+?)> in <(.+?)>\.(.*)/,/^Did not expect server HTML to contain a <(.+?)> in <(.+?)>\.(.*)/,/^Expected server HTML to contain a matching text node for "(.+?)" in <(.+?)>\.(.*)/,/^Did not expect server HTML to contain the text node "(.+?)" in <(.+?)>\.(.*)/,/^Text content did not match\. Server: "(.+?)" Client: "(.+?)"(.*)/];function p(e){return"string"==typeof e&&!!e&&(e.startsWith("Warning: ")&&(e=e.slice(9)),d.some(t=>t.test(e)))}function h(e){let t=p(e=(e=e.replace(/^Error: /,"")).replace("Warning: ",""));if(!f(e)&&!t)return{message:null,stack:e,diff:""};if(t){let[t,r]=e.split("\n\n");return{message:t.trim(),stack:"",diff:(r||"").trim()}}let r=e.indexOf("\n"),[n,o]=(e=e.slice(r+1).trim()).split(""+a),u=n.trim();if(!o||!(o.length>1))return{message:u,stack:o};{let e=[],t=[];return o.split("\n").forEach(r=>{""!==r.trim()&&(r.trim().startsWith("at ")?e.push(r):t.push(r))}),{message:u,diff:t.join("\n"),stack:e.join("\n")}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6494:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTTPAccessErrorStatus:function(){return r},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return o},getAccessFallbackErrorTypeByStatus:function(){return a},getAccessFallbackHTTPStatus:function(){return l},isHTTPAccessFallbackError:function(){return u}});let r={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},n=new Set(Object.values(r)),o="NEXT_HTTP_ERROR_FALLBACK";function u(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===o&&n.has(Number(r))}function l(e){return Number(e.digest.split(";")[1])}function a(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6614:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ErrorBoundary:function(){return h},ErrorBoundaryHandler:function(){return f},GlobalError:function(){return d},default:function(){return p}});let n=r(8229),o=r(5155),u=n._(r(2115)),l=r(9921),a=r(2858);r(8836);let i=void 0,c={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},text:{fontSize:"14px",fontWeight:400,lineHeight:"28px",margin:"0 8px"}};function s(e){let{error:t}=e;if(i){let e=i.getStore();if((null==e?void 0:e.isRevalidate)||(null==e?void 0:e.isStaticGeneration))throw console.error(t),t}return null}class f extends u.default.Component{static getDerivedStateFromError(e){if((0,a.isNextRouterError)(e))throw e;return{error:e}}static getDerivedStateFromProps(e,t){let{error:r}=t;return e.pathname!==t.previousPathname&&t.error?{error:null,previousPathname:e.pathname}:{error:t.error,previousPathname:e.pathname}}render(){return this.state.error?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)(s,{error:this.state.error}),this.props.errorStyles,this.props.errorScripts,(0,o.jsx)(this.props.errorComponent,{error:this.state.error,reset:this.reset})]}):this.props.children}constructor(e){super(e),this.reset=()=>{this.setState({error:null})},this.state={error:null,previousPathname:this.props.pathname}}}function d(e){let{error:t}=e,r=null==t?void 0:t.digest;return(0,o.jsxs)("html",{id:"__next_error__",children:[(0,o.jsx)("head",{}),(0,o.jsxs)("body",{children:[(0,o.jsx)(s,{error:t}),(0,o.jsx)("div",{style:c.error,children:(0,o.jsxs)("div",{children:[(0,o.jsxs)("h2",{style:c.text,children:["Application error: a ",r?"server":"client","-side exception has occurred while loading ",window.location.hostname," (see the"," ",r?"server logs":"browser console"," for more information)."]}),r?(0,o.jsx)("p",{style:c.text,children:"Digest: "+r}):null]})})]})]})}let p=d;function h(e){let{errorComponent:t,errorStyles:r,errorScripts:n,children:u}=e,a=(0,l.useUntrackedPathname)();return t?(0,o.jsx)(f,{pathname:a,errorComponent:t,errorStyles:r,errorScripts:n,children:u}):(0,o.jsx)(o.Fragment,{children:u})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6634:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createMutableActionQueue:function(){return y},dispatchNavigateAction:function(){return g},dispatchTraverseAction:function(){return v},getCurrentAppRouterState:function(){return _},publicAppRouterInstance:function(){return m}});let n=r(9818),o=r(9726),u=r(2115),l=r(5122);r(6005);let a=r(1027),i=r(5929),c=r(6158),s=r(9154),f=r(4930);function d(e,t){null!==e.pending&&(e.pending=e.pending.next,null!==e.pending?p({actionQueue:e,action:e.pending,setState:t}):e.needsRefresh&&(e.needsRefresh=!1,e.dispatch({type:n.ACTION_REFRESH,origin:window.location.origin},t)))}async function p(e){let{actionQueue:t,action:r,setState:n}=e,o=t.state;t.pending=r;let u=r.payload,a=t.action(o,u);function i(e){r.discarded||(t.state=e,d(t,n),r.resolve(e))}(0,l.isThenable)(a)?a.then(i,e=>{d(t,n),r.reject(e)}):i(a)}let h=null;function y(e,t){let r={state:e,dispatch:(e,t)=>(function(e,t,r){let o={resolve:r,reject:()=>{}};if(t.type!==n.ACTION_RESTORE){let e=new Promise((e,t)=>{o={resolve:e,reject:t}});(0,u.startTransition)(()=>{r(e)})}let l={payload:t,next:null,resolve:o.resolve,reject:o.reject};null===e.pending?(e.last=l,p({actionQueue:e,action:l,setState:r})):t.type===n.ACTION_NAVIGATE||t.type===n.ACTION_RESTORE?(e.pending.discarded=!0,l.next=e.pending.next,e.pending.payload.type===n.ACTION_SERVER_ACTION&&(e.needsRefresh=!0),p({actionQueue:e,action:l,setState:r})):(null!==e.last&&(e.last.next=l),e.last=l)})(r,e,t),action:async(e,t)=>(0,o.reducer)(e,t),pending:null,last:null,onRouterTransitionStart:null!==t&&"function"==typeof t.onRouterTransitionStart?t.onRouterTransitionStart:null};if(null!==h)throw Object.defineProperty(Error("Internal Next.js Error: createMutableActionQueue was called more than once"),"__NEXT_ERROR_CODE",{value:"E624",enumerable:!1,configurable:!0});return h=r,r}function _(){return null!==h?h.state:null}function b(){return null!==h?h.onRouterTransitionStart:null}function g(e,t,r,o){let u=new URL((0,i.addBasePath)(e),location.href);(0,f.setLinkForCurrentNavigation)(o);let l=b();null!==l&&l(e,t),(0,a.dispatchAppRouterAction)({type:n.ACTION_NAVIGATE,url:u,isExternalUrl:(0,c.isExternalURL)(u),locationSearch:location.search,shouldScroll:r,navigateType:t,allowAliasing:!0})}function v(e,t){let r=b();null!==r&&r(e,"traverse"),(0,a.dispatchAppRouterAction)({type:n.ACTION_RESTORE,url:new URL(e),tree:t})}let m={back:()=>window.history.back(),forward:()=>window.history.forward(),prefetch:(e,t)=>{let r=function(){if(null===h)throw Object.defineProperty(Error("Internal Next.js error: Router action dispatched before initialization."),"__NEXT_ERROR_CODE",{value:"E668",enumerable:!1,configurable:!0});return h}(),o=(0,c.createPrefetchURL)(e);if(null!==o){var u;(0,s.prefetchReducer)(r.state,{type:n.ACTION_PREFETCH,url:o,kind:null!=(u=null==t?void 0:t.kind)?u:n.PrefetchKind.FULL})}},replace:(e,t)=>{(0,u.startTransition)(()=>{var r;g(e,"replace",null==(r=null==t?void 0:t.scroll)||r,null)})},push:(e,t)=>{(0,u.startTransition)(()=>{var r;g(e,"push",null==(r=null==t?void 0:t.scroll)||r,null)})},refresh:()=>{(0,u.startTransition)(()=>{(0,a.dispatchAppRouterAction)({type:n.ACTION_REFRESH,origin:window.location.origin})})},hmrRefresh:()=>{throw Object.defineProperty(Error("hmrRefresh can only be used in development mode. Please use refresh instead."),"__NEXT_ERROR_CODE",{value:"E485",enumerable:!1,configurable:!0})}};window.next&&(window.next.router=m),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6698:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"onRecoverableError",{enumerable:!0,get:function(){return i}});let n=r(8229),o=r(5262),u=r(1646),l=r(5128),a=n._(r(5807)),i=(e,t)=>{let r=(0,a.default)(e)&&"cause"in e?e.cause:e,n=(0,l.getReactStitchedError)(r);(0,o.isBailoutToCSRError)(r)||(0,u.reportGlobalError)(n)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6825:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getRedirectError:function(){return l},getRedirectStatusCodeFromError:function(){return f},getRedirectTypeFromError:function(){return s},getURLFromRedirectError:function(){return c},permanentRedirect:function(){return i},redirect:function(){return a}});let n=r(4420),o=r(2210),u=void 0;function l(e,t,r){void 0===r&&(r=n.RedirectStatusCode.TemporaryRedirect);let u=Object.defineProperty(Error(o.REDIRECT_ERROR_CODE),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return u.digest=o.REDIRECT_ERROR_CODE+";"+t+";"+e+";"+r+";",u}function a(e,t){var r;throw null!=t||(t=(null==u||null==(r=u.getStore())?void 0:r.isAction)?o.RedirectType.push:o.RedirectType.replace),l(e,t,n.RedirectStatusCode.TemporaryRedirect)}function i(e,t){throw void 0===t&&(t=o.RedirectType.replace),l(e,t,n.RedirectStatusCode.PermanentRedirect)}function c(e){return(0,o.isRedirectError)(e)?e.digest.split(";").slice(2,-2).join(";"):null}function s(e){if(!(0,o.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return e.digest.split(";",2)[1]}function f(e){if(!(0,o.isRedirectError)(e))throw Object.defineProperty(Error("Not a redirect error"),"__NEXT_ERROR_CODE",{value:"E260",enumerable:!1,configurable:!0});return Number(e.digest.split(";").at(-2))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6897:(e,t)=>{"use strict";var r=Symbol.for("react.transitional.element");function n(e,t,n){var o=null;if(void 0!==n&&(o=""+n),void 0!==t.key&&(o=""+t.key),"key"in t)for(var u in n={},t)"key"!==u&&(n[u]=t[u]);else n=t;return{$$typeof:r,type:e,key:o,ref:void 0!==(t=n.ref)?t:null,props:n}}t.Fragment=Symbol.for("react.fragment"),t.jsx=n,t.jsxs=n},6905:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{originConsoleError:function(){return o},patchConsoleError:function(){return u}}),r(8229),r(5807);let n=r(2858);r(5444),r(5169);let o=globalThis.console.error;function u(){window.console.error=function(){let e;for(var t=arguments.length,r=Array(t),u=0;u{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},u=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var l in e)if("default"!==l&&Object.prototype.hasOwnProperty.call(e,l)){var a=u?Object.getOwnPropertyDescriptor(e,l):null;a&&(a.get||a.set)?Object.defineProperty(o,l,a):o[l]=e[l]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o})},6975:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessFallbackBoundary",{enumerable:!0,get:function(){return s}});let n=r(6966),o=r(5155),u=n._(r(2115)),l=r(9921),a=r(6494);r(3230);let i=r(5227);class c extends u.default.Component{componentDidCatch(){}static getDerivedStateFromError(e){if((0,a.isHTTPAccessFallbackError)(e))return{triggeredStatus:(0,a.getAccessFallbackHTTPStatus)(e)};throw e}static getDerivedStateFromProps(e,t){return e.pathname!==t.previousPathname&&t.triggeredStatus?{triggeredStatus:void 0,previousPathname:e.pathname}:{triggeredStatus:t.triggeredStatus,previousPathname:e.pathname}}render(){let{notFound:e,forbidden:t,unauthorized:r,children:n}=this.props,{triggeredStatus:u}=this.state,l={[a.HTTPAccessErrorStatus.NOT_FOUND]:e,[a.HTTPAccessErrorStatus.FORBIDDEN]:t,[a.HTTPAccessErrorStatus.UNAUTHORIZED]:r};if(u){let i=u===a.HTTPAccessErrorStatus.NOT_FOUND&&e,c=u===a.HTTPAccessErrorStatus.FORBIDDEN&&t,s=u===a.HTTPAccessErrorStatus.UNAUTHORIZED&&r;return i||c||s?(0,o.jsxs)(o.Fragment,{children:[(0,o.jsx)("meta",{name:"robots",content:"noindex"}),!1,l[u]]}):n}return n}constructor(e){super(e),this.state={triggeredStatus:void 0,previousPathname:e.pathname}}}function s(e){let{notFound:t,forbidden:r,unauthorized:n,children:a}=e,s=(0,l.useUntrackedPathname)(),f=(0,u.useContext)(i.MissingSlotContext);return t||r||n?(0,o.jsx)(c,{pathname:s,notFound:t,forbidden:r,unauthorized:n,missingSlots:f,children:a}):(0,o.jsx)(o.Fragment,{children:a})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7102:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(1747);function o(e){return(0,n.pathHasPrefix)(e,"/docs-site")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7197:(e,t,r)=>{"use strict";e.exports=r(9062)},7205:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"createRenderSearchParamsFromClient",{enumerable:!0,get:function(){return n}});let n=r(8324).makeUntrackedExoticSearchParams;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7276:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return u},normalizeRscURL:function(){return l}});let n=r(9133),o=r(8291);function u(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function l(e){return e.replace(/\.rsc($|\?)/,"$1")}},7442:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"applyRouterStatePatchToTree",{enumerable:!0,get:function(){return function e(t,r,n,i){let c,[s,f,d,p,h]=r;if(1===t.length){let e=a(r,n);return(0,l.addRefreshMarkerToActiveParallelSegments)(e,i),e}let[y,_]=t;if(!(0,u.matchSegment)(y,s))return null;if(2===t.length)c=a(f[_],n);else if(null===(c=e((0,o.getNextFlightSegmentPath)(t),f[_],n,i)))return null;let b=[t[0],{...f,[_]:c},d,p];return h&&(b[4]=!0),(0,l.addRefreshMarkerToActiveParallelSegments)(b,i),b}}});let n=r(8291),o=r(2561),u=r(1127),l=r(4908);function a(e,t){let[r,o]=e,[l,i]=t;if(l===n.DEFAULT_SEGMENT_KEY&&r!==n.DEFAULT_SEGMENT_KEY)return e;if((0,u.matchSegment)(r,l)){let t={};for(let e in o)void 0!==i[e]?t[e]=a(o[e],i[e]):t[e]=o[e];for(let e in i)t[e]||(t[e]=i[e]);let n=[r,t];return e[2]&&(n[2]=e[2]),e[3]&&(n[3]=e[3]),e[4]&&(n[4]=e[4]),n}return t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7541:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{describeHasCheckingStringProperty:function(){return o},describeStringPropertyAccess:function(){return n},wellKnownProperties:function(){return u}});let r=/^[A-Za-z_$][A-Za-z0-9_$]*$/;function n(e,t){return r.test(t)?"`"+e+"."+t+"`":"`"+e+"["+JSON.stringify(t)+"]`"}function o(e,t){let r=JSON.stringify(t);return"`Reflect.has("+e+", "+r+")`, `"+r+" in "+e+"`, or similar"}let u=new Set(["hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toString","valueOf","toLocaleString","then","catch","finally","status","displayName","toJSON","$$typeof","__esModule"])},7555:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return S}});let n=r(8229),o=r(6966),u=r(5155),l=r(9818),a=o._(r(2115)),i=n._(r(7650)),c=r(5227),s=r(8586),f=r(1822),d=r(6614),p=r(1127),h=r(4189),y=r(686),_=r(6975),b=r(5637),g=r(4108),v=r(1027),m=i.default.__DOM_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE,E=["bottom","height","left","right","top","width","x","y"];function O(e,t){let r=e.getBoundingClientRect();return r.top>=0&&r.top<=t}class R extends a.default.Component{componentDidMount(){this.handlePotentialScroll()}componentDidUpdate(){this.props.focusAndScrollRef.apply&&this.handlePotentialScroll()}render(){return this.props.children}constructor(...e){super(...e),this.handlePotentialScroll=()=>{let{focusAndScrollRef:e,segmentPath:t}=this.props;if(e.apply){if(0!==e.segmentPaths.length&&!e.segmentPaths.some(e=>t.every((t,r)=>(0,p.matchSegment)(t,e[r]))))return;let r=null,n=e.hashFragment;if(n&&(r=function(e){var t;return"top"===e?document.body:null!=(t=document.getElementById(e))?t:document.getElementsByName(e)[0]}(n)),r||(r=(0,m.findDOMNode)(this)),!(r instanceof Element))return;for(;!(r instanceof HTMLElement)||function(e){if(["sticky","fixed"].includes(getComputedStyle(e).position))return!0;let t=e.getBoundingClientRect();return E.every(e=>0===t[e])}(r);){if(null===r.nextElementSibling)return;r=r.nextElementSibling}e.apply=!1,e.hashFragment=null,e.segmentPaths=[],(0,h.handleSmoothScroll)(()=>{if(n)return void r.scrollIntoView();let e=document.documentElement,t=e.clientHeight;!O(r,t)&&(e.scrollTop=0,O(r,t)||r.scrollIntoView())},{dontForceLayout:!0,onlyHashChange:e.onlyHashChange}),e.onlyHashChange=!1,r.focus()}}}}function P(e){let{segmentPath:t,children:r}=e,n=(0,a.useContext)(c.GlobalLayoutRouterContext);if(!n)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});return(0,u.jsx)(R,{segmentPath:t,focusAndScrollRef:n.focusAndScrollRef,children:r})}function j(e){let{tree:t,segmentPath:r,cacheNode:n,url:o}=e,i=(0,a.useContext)(c.GlobalLayoutRouterContext);if(!i)throw Object.defineProperty(Error("invariant global layout router not mounted"),"__NEXT_ERROR_CODE",{value:"E473",enumerable:!1,configurable:!0});let{tree:d}=i,h=null!==n.prefetchRsc?n.prefetchRsc:n.rsc,y=(0,a.useDeferredValue)(n.rsc,h),_="object"==typeof y&&null!==y&&"function"==typeof y.then?(0,a.use)(y):y;if(!_){let e=n.lazyData;if(null===e){let t=function e(t,r){if(t){let[n,o]=t,u=2===t.length;if((0,p.matchSegment)(r[0],n)&&r[1].hasOwnProperty(o)){if(u){let t=e(void 0,r[1][o]);return[r[0],{...r[1],[o]:[t[0],t[1],t[2],"refetch"]}]}return[r[0],{...r[1],[o]:e(t.slice(2),r[1][o])}]}}return r}(["",...r],d),u=(0,g.hasInterceptionRouteInCurrentTree)(d),c=Date.now();n.lazyData=e=(0,s.fetchServerResponse)(new URL(o,location.origin),{flightRouterState:t,nextUrl:u?i.nextUrl:null}).then(e=>((0,a.startTransition)(()=>{(0,v.dispatchAppRouterAction)({type:l.ACTION_SERVER_PATCH,previousTree:d,serverResponse:e,navigatedAt:c})}),e)),(0,a.use)(e)}(0,a.use)(f.unresolvedThenable)}return(0,u.jsx)(c.LayoutRouterContext.Provider,{value:{parentTree:t,parentCacheNode:n,parentSegmentPath:r,url:o},children:_})}function T(e){let t,{loading:r,children:n}=e;if(t="object"==typeof r&&null!==r&&"function"==typeof r.then?(0,a.use)(r):r){let e=t[0],r=t[1],o=t[2];return(0,u.jsx)(a.Suspense,{fallback:(0,u.jsxs)(u.Fragment,{children:[r,o,e]}),children:n})}return(0,u.jsx)(u.Fragment,{children:n})}function S(e){let{parallelRouterKey:t,error:r,errorStyles:n,errorScripts:o,templateStyles:l,templateScripts:i,template:s,notFound:f,forbidden:p,unauthorized:h}=e,g=(0,a.useContext)(c.LayoutRouterContext);if(!g)throw Object.defineProperty(Error("invariant expected layout router to be mounted"),"__NEXT_ERROR_CODE",{value:"E56",enumerable:!1,configurable:!0});let{parentTree:v,parentCacheNode:m,parentSegmentPath:E,url:O}=g,R=m.parallelRoutes,S=R.get(t);S||(S=new Map,R.set(t,S));let M=v[0],w=v[1][t],C=w[0],x=null===E?[t]:E.concat([M,t]),A=(0,b.createRouterCacheKey)(C),N=(0,b.createRouterCacheKey)(C,!0),D=S.get(A);if(void 0===D){let e={lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1};D=e,S.set(A,e)}let U=m.loading;return(0,u.jsxs)(c.TemplateContext.Provider,{value:(0,u.jsx)(P,{segmentPath:x,children:(0,u.jsx)(d.ErrorBoundary,{errorComponent:r,errorStyles:n,errorScripts:o,children:(0,u.jsx)(T,{loading:U,children:(0,u.jsx)(_.HTTPAccessFallbackBoundary,{notFound:f,forbidden:p,unauthorized:h,children:(0,u.jsx)(y.RedirectBoundary,{children:(0,u.jsx)(j,{url:O,tree:w,cacheNode:D,segmentPath:x})})})})})}),children:[l,i,s]},N)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7568:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ServerInsertedHTMLContext:function(){return o},useServerInsertedHTML:function(){return u}});let n=r(6966)._(r(2115)),o=n.default.createContext(null);function u(e){let t=(0,n.useContext)(o);t&&t(e)}},7599:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unstable_rethrow",{enumerable:!0,get:function(){return n}});let n=r(7865).unstable_rethrow;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7650:(e,t,r)=>{"use strict";!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=r(8730)},7755:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return l},isInterceptionRouteAppPath:function(){return u}});let n=r(7276),o=["(..)(..)","(.)","(..)","(...)"];function u(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function l(e){let t,r,u;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,u]=e.split(r,2);break}if(!t||!r||!u)throw Object.defineProperty(Error("Invalid interception route: "+e+". Must be in the format //(..|...|..)(..)/"),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":u="/"===t?"/"+u:t+"/"+u;break;case"(..)":if("/"===t)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..) marker at the root level, use (.) instead."),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});u=t.split("/").slice(0,-1).concat(u).join("/");break;case"(...)":u="/"+u;break;case"(..)(..)":let l=t.split("/");if(l.length<=2)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..)(..) marker at the root level or one level up."),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});u=l.slice(0,-2).concat(u).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:t,interceptedRoute:u}}},7760:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AppRouterAnnouncer",{enumerable:!0,get:function(){return l}});let n=r(2115),o=r(7650),u="next-route-announcer";function l(e){let{tree:t}=e,[r,l]=(0,n.useState)(null);(0,n.useEffect)(()=>(l(function(){var e;let t=document.getElementsByName(u)[0];if(null==t||null==(e=t.shadowRoot)?void 0:e.childNodes[0])return t.shadowRoot.childNodes[0];{let e=document.createElement(u);e.style.cssText="position:absolute";let t=document.createElement("div");return t.ariaLive="assertive",t.id="__next-route-announcer__",t.role="alert",t.style.cssText="position:absolute;border:0;height:1px;margin:-1px;padding:0;width:1px;clip:rect(0 0 0 0);overflow:hidden;white-space:nowrap;word-wrap:normal",e.attachShadow({mode:"open"}).appendChild(t),document.body.appendChild(e),t}}()),()=>{let e=document.getElementsByTagName(u)[0];(null==e?void 0:e.isConnected)&&document.body.removeChild(e)}),[]);let[a,i]=(0,n.useState)(""),c=(0,n.useRef)(void 0);return(0,n.useEffect)(()=>{let e="";if(document.title)e=document.title;else{let t=document.querySelector("h1");t&&(e=t.innerText||t.textContent||"")}void 0!==c.current&&c.current!==e&&i(e),c.current=e},[t]),r?(0,o.createPortal)(a,r):null}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7801:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverPatchReducer",{enumerable:!0,get:function(){return s}});let n=r(1139),o=r(7442),u=r(9234),l=r(3894),a=r(878),i=r(3507),c=r(6158);function s(e,t){let{serverResponse:{flightData:r,canonicalUrl:s},navigatedAt:f}=t,d={};if(d.preserveCustomHistoryState=!1,"string"==typeof r)return(0,l.handleExternalUrl)(e,d,r,e.pushRef.pendingPush);let p=e.tree,h=e.cache;for(let t of r){let{segmentPath:r,tree:i}=t,y=(0,o.applyRouterStatePatchToTree)(["",...r],p,i,e.canonicalUrl);if(null===y)return e;if((0,u.isNavigatingToNewRootLayout)(p,y))return(0,l.handleExternalUrl)(e,d,e.canonicalUrl,e.pushRef.pendingPush);let _=s?(0,n.createHrefFromUrl)(s):void 0;_&&(d.canonicalUrl=_);let b=(0,c.createEmptyCacheNode)();(0,a.applyFlightData)(f,h,b,t),d.patchedTree=y,d.cache=b,h=b,p=y}return(0,i.handleMutable)(e,d)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7829:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"makeUntrackedExoticParams",{enumerable:!0,get:function(){return u}});let n=r(7541),o=new WeakMap;function u(e){let t=o.get(e);if(t)return t;let r=Promise.resolve(e);return o.set(e,r),Object.keys(e).forEach(t=>{n.wellKnownProperties.has(t)||(r[t]=e[t])}),r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7865:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unstable_rethrow",{enumerable:!0,get:function(){return function e(t){if((0,o.isNextRouterError)(t)||(0,n.isBailoutToCSRError)(t))throw t;t instanceof Error&&"cause"in t&&e(t.cause)}}});let n=r(5262),o=r(2858);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8229:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n})},8287:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{METADATA_BOUNDARY_NAME:function(){return r},OUTLET_BOUNDARY_NAME:function(){return o},VIEWPORT_BOUNDARY_NAME:function(){return n}});let r="__next_metadata_boundary__",n="__next_viewport_boundary__",o="__next_outlet_boundary__"},8291:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}function n(e){return e.startsWith("@")&&"@children"!==e}function o(e,t){if(e.includes(u)){let e=JSON.stringify(t);return"{}"!==e?u+"?"+e:u}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return l},PAGE_SEGMENT_KEY:function(){return u},addSearchParamsIfPageSegment:function(){return o},isGroupSegment:function(){return r},isParallelRouteSegment:function(){return n}});let u="__PAGE__",l="__DEFAULT__"},8324:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"makeUntrackedExoticSearchParams",{enumerable:!0,get:function(){return u}});let n=r(7541),o=new WeakMap;function u(e){let t=o.get(e);if(t)return t;let r=Promise.resolve(e);return o.set(e,r),Object.keys(e).forEach(t=>{n.wellKnownProperties.has(t)||(r[t]=e[t])}),r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8527:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"notFound",{enumerable:!0,get:function(){return o}});let n=""+r(6494).HTTP_ERROR_FALLBACK_ERROR_CODE+";404";function o(){let e=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});throw e.digest=n,e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8586:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createFetch:function(){return y},createFromNextReadableStream:function(){return _},fetchServerResponse:function(){return h},urlToUrlWithoutFlightMarker:function(){return f}});let n=r(3269),o=r(3806),u=r(1818),l=r(9818),a=r(2561),i=r(5624),c=r(8969),{createFromReadableStream:s}=r(4979);function f(e){let t=new URL(e,location.origin);if(t.searchParams.delete(n.NEXT_RSC_UNION_QUERY),t.pathname.endsWith(".txt")){let{pathname:e}=t,r=e.endsWith("/index.txt")?10:4;t.pathname=e.slice(0,-r)}return t}function d(e){return{flightData:f(e).toString(),canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1}}let p=new AbortController;async function h(e,t){let{flightRouterState:r,nextUrl:o,prefetchKind:u}=t,c={[n.RSC_HEADER]:"1",[n.NEXT_ROUTER_STATE_TREE_HEADER]:encodeURIComponent(JSON.stringify(r))};u===l.PrefetchKind.AUTO&&(c[n.NEXT_ROUTER_PREFETCH_HEADER]="1"),o&&(c[n.NEXT_URL]=o);try{var s;let t=u?u===l.PrefetchKind.TEMPORARY?"high":"low":"auto";(e=new URL(e)).pathname.endsWith("/")?e.pathname+="index.txt":e.pathname+=".txt";let r=await y(e,c,t,p.signal),o=f(r.url),h=r.redirected?o:void 0,b=r.headers.get("content-type")||"",g=!!(null==(s=r.headers.get("vary"))?void 0:s.includes(n.NEXT_URL)),v=!!r.headers.get(n.NEXT_DID_POSTPONE_HEADER),m=r.headers.get(n.NEXT_ROUTER_STALE_TIME_HEADER),E=null!==m?parseInt(m,10):-1,O=b.startsWith(n.RSC_CONTENT_TYPE_HEADER);if(O||(O=b.startsWith("text/plain")),!O||!r.ok||!r.body)return e.hash&&(o.hash=e.hash),d(o.toString());let R=v?function(e){let t=e.getReader();return new ReadableStream({async pull(e){for(;;){let{done:r,value:n}=await t.read();if(!r){e.enqueue(n);continue}return}}})}(r.body):r.body,P=await _(R);if((0,i.getAppBuildId)()!==P.b)return d(r.url);return{flightData:(0,a.normalizeFlightData)(P.f),canonicalUrl:h,couldBeIntercepted:g,prerendered:P.S,postponed:v,staleTime:E}}catch(t){return p.signal.aborted||console.error("Failed to fetch RSC payload for "+e+". Falling back to browser navigation.",t),{flightData:e.toString(),canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1}}}function y(e,t,r,n){let o=new URL(e);return(0,c.setCacheBustingSearchParam)(o,t),fetch(o,{credentials:"same-origin",headers:t,priority:r||void 0,signal:n})}function _(e){return s(e,{callServer:o.callServer,findSourceMapURL:u.findSourceMapURL})}window.addEventListener("pagehide",()=>{p.abort()}),window.addEventListener("pageshow",()=>{p=new AbortController}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8709:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"serverActionReducer",{enumerable:!0,get:function(){return w}});let n=r(3806),o=r(1818),u=r(3269),l=r(9818),a=r(1315),i=r(1139),c=r(3894),s=r(7442),f=r(9234),d=r(3507),p=r(4758),h=r(6158),y=r(4108),_=r(6375),b=r(4908),g=r(2561),v=r(6825),m=r(2210),E=r(1518),O=r(4882),R=r(7102),P=r(2816);r(6005);let{createFromFetch:j,createTemporaryReferenceSet:T,encodeReply:S}=r(4979);async function M(e,t,r){let l,i,{actionId:c,actionArgs:s}=r,f=T(),d=(0,P.extractInfoFromServerReferenceId)(c),p="use-cache"===d.type?(0,P.omitUnusedArgs)(s,d):s,h=await S(p,{temporaryReferences:f}),y=await fetch("",{method:"POST",headers:{Accept:u.RSC_CONTENT_TYPE_HEADER,[u.ACTION_HEADER]:c,[u.NEXT_ROUTER_STATE_TREE_HEADER]:encodeURIComponent(JSON.stringify(e.tree)),...{},...t?{[u.NEXT_URL]:t}:{}},body:h}),_=y.headers.get("x-action-redirect"),[b,v]=(null==_?void 0:_.split(";"))||[];switch(v){case"push":l=m.RedirectType.push;break;case"replace":l=m.RedirectType.replace;break;default:l=void 0}let E=!!y.headers.get(u.NEXT_IS_PRERENDER_HEADER);try{let e=JSON.parse(y.headers.get("x-action-revalidated")||"[[],0,0]");i={paths:e[0]||[],tag:!!e[1],cookie:e[2]}}catch(e){i={paths:[],tag:!1,cookie:!1}}let O=b?(0,a.assignLocation)(b,new URL(e.canonicalUrl,window.location.href)):void 0,R=y.headers.get("content-type");if(null==R?void 0:R.startsWith(u.RSC_CONTENT_TYPE_HEADER)){let e=await j(Promise.resolve(y),{callServer:n.callServer,findSourceMapURL:o.findSourceMapURL,temporaryReferences:f});return b?{actionFlightData:(0,g.normalizeFlightData)(e.f),redirectLocation:O,redirectType:l,revalidatedParts:i,isPrerender:E}:{actionResult:e.a,actionFlightData:(0,g.normalizeFlightData)(e.f),redirectLocation:O,redirectType:l,revalidatedParts:i,isPrerender:E}}if(y.status>=400)throw Object.defineProperty(Error("text/plain"===R?await y.text():"An unexpected response was received from the server."),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return{redirectLocation:O,redirectType:l,revalidatedParts:i,isPrerender:E}}function w(e,t){let{resolve:r,reject:n}=t,o={},u=e.tree;o.preserveCustomHistoryState=!1;let a=e.nextUrl&&(0,y.hasInterceptionRouteInCurrentTree)(e.tree)?e.nextUrl:null,g=Date.now();return M(e,a,t).then(async y=>{let P,{actionResult:j,actionFlightData:T,redirectLocation:S,redirectType:M,isPrerender:w,revalidatedParts:C}=y;if(S&&(M===m.RedirectType.replace?(e.pushRef.pendingPush=!1,o.pendingPush=!1):(e.pushRef.pendingPush=!0,o.pendingPush=!0),o.canonicalUrl=P=(0,i.createHrefFromUrl)(S,!1)),!T)return(r(j),S)?(0,c.handleExternalUrl)(e,o,S.href,e.pushRef.pendingPush):e;if("string"==typeof T)return r(j),(0,c.handleExternalUrl)(e,o,T,e.pushRef.pendingPush);let x=C.paths.length>0||C.tag||C.cookie;for(let n of T){let{tree:l,seedData:i,head:d,isRootRender:y}=n;if(!y)return console.log("SERVER ACTION APPLY FAILED"),r(j),e;let v=(0,s.applyRouterStatePatchToTree)([""],u,l,P||e.canonicalUrl);if(null===v)return r(j),(0,_.handleSegmentMismatch)(e,t,l);if((0,f.isNavigatingToNewRootLayout)(u,v))return r(j),(0,c.handleExternalUrl)(e,o,P||e.canonicalUrl,e.pushRef.pendingPush);if(null!==i){let t=i[1],r=(0,h.createEmptyCacheNode)();r.rsc=t,r.prefetchRsc=null,r.loading=i[3],(0,p.fillLazyItemsTillLeafWithHead)(g,r,void 0,l,i,d,void 0),o.cache=r,o.prefetchCache=new Map,x&&await (0,b.refreshInactiveParallelSegments)({navigatedAt:g,state:e,updatedTree:v,updatedCache:r,includeNextUrl:!!a,canonicalUrl:o.canonicalUrl||e.canonicalUrl})}o.patchedTree=v,u=v}return S&&P?(x||((0,E.createSeededPrefetchCacheEntry)({url:S,data:{flightData:T,canonicalUrl:void 0,couldBeIntercepted:!1,prerendered:!1,postponed:!1,staleTime:-1},tree:e.tree,prefetchCache:e.prefetchCache,nextUrl:e.nextUrl,kind:w?l.PrefetchKind.FULL:l.PrefetchKind.AUTO}),o.prefetchCache=e.prefetchCache),n((0,v.getRedirectError)((0,R.hasBasePath)(P)?(0,O.removeBasePath)(P):P,M||m.RedirectType.push))):r(j),(0,d.handleMutable)(e,o)},t=>(n(t),e))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8730:(e,t,r)=>{"use strict";var n=r(2115);function o(e){var t="https://react.dev/errors/"+e;if(1{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{handleHardNavError:function(){return o},useNavFailureHandler:function(){return u}}),r(2115);let n=r(1139);function o(e){return!!e&&!!window.next.__pendingUrl&&(0,n.createHrefFromUrl)(new URL(window.location.href))!==(0,n.createHrefFromUrl)(window.next.__pendingUrl)&&(console.error("Error occurred during navigation, falling back to hard navigation",e),window.location.href=window.next.__pendingUrl.toString(),!0)}function u(){}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8946:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{computeChangedPath:function(){return s},extractPathFromFlightRouterState:function(){return c},getSelectedParams:function(){return function e(t,r){for(let n of(void 0===r&&(r={}),Object.values(t[1]))){let t=n[0],u=Array.isArray(t),l=u?t[1]:t;!l||l.startsWith(o.PAGE_SEGMENT_KEY)||(u&&("c"===t[2]||"oc"===t[2])?r[t[0]]=t[1].split("/"):u&&(r[t[0]]=t[1]),r=e(n,r))}return r}}});let n=r(7755),o=r(8291),u=r(1127),l=e=>"/"===e[0]?e.slice(1):e,a=e=>"string"==typeof e?"children"===e?"":e:e[1];function i(e){return e.reduce((e,t)=>""===(t=l(t))||(0,o.isGroupSegment)(t)?e:e+"/"+t,"")||"/"}function c(e){var t;let r=Array.isArray(e[0])?e[0][1]:e[0];if(r===o.DEFAULT_SEGMENT_KEY||n.INTERCEPTION_ROUTE_MARKERS.some(e=>r.startsWith(e)))return;if(r.startsWith(o.PAGE_SEGMENT_KEY))return"";let u=[a(r)],l=null!=(t=e[1])?t:{},s=l.children?c(l.children):void 0;if(void 0!==s)u.push(s);else for(let[e,t]of Object.entries(l)){if("children"===e)continue;let r=c(t);void 0!==r&&u.push(r)}return i(u)}function s(e,t){let r=function e(t,r){let[o,l]=t,[i,s]=r,f=a(o),d=a(i);if(n.INTERCEPTION_ROUTE_MARKERS.some(e=>f.startsWith(e)||d.startsWith(e)))return"";if(!(0,u.matchSegment)(o,i)){var p;return null!=(p=c(r))?p:""}for(let t in l)if(s[t]){let r=e(l[t],s[t]);if(null!==r)return a(i)+"/"+r}return null}(e,t);return null==r||"/"===r?r:i(r.split("/"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8969:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"setCacheBustingSearchParam",{enumerable:!0,get:function(){return u}});let n=r(3942),o=r(3269),u=(e,t)=>{let r=(0,n.hexHash)([t[o.NEXT_ROUTER_PREFETCH_HEADER]||"0",t[o.NEXT_ROUTER_SEGMENT_PREFETCH_HEADER]||"0",t[o.NEXT_ROUTER_STATE_TREE_HEADER],t[o.NEXT_URL]].join(",")),u=e.search,l=(u.startsWith("?")?u.slice(1):u).split("&").filter(Boolean);l.push(o.NEXT_RSC_UNION_QUERY+"="+r),e.search=l.length?"?"+l.join("&"):""};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8999:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ReadonlyURLSearchParams:function(){return i.ReadonlyURLSearchParams},RedirectType:function(){return i.RedirectType},ServerInsertedHTMLContext:function(){return c.ServerInsertedHTMLContext},forbidden:function(){return i.forbidden},notFound:function(){return i.notFound},permanentRedirect:function(){return i.permanentRedirect},redirect:function(){return i.redirect},unauthorized:function(){return i.unauthorized},unstable_rethrow:function(){return i.unstable_rethrow},useParams:function(){return h},usePathname:function(){return d},useRouter:function(){return p},useSearchParams:function(){return f},useSelectedLayoutSegment:function(){return _},useSelectedLayoutSegments:function(){return y},useServerInsertedHTML:function(){return c.useServerInsertedHTML}});let n=r(2115),o=r(5227),u=r(886),l=r(708),a=r(8291),i=r(5618),c=r(7568),s=void 0;function f(){let e=(0,n.useContext)(u.SearchParamsContext);return(0,n.useMemo)(()=>e?new i.ReadonlyURLSearchParams(e):null,[e])}function d(){return null==s||s("usePathname()"),(0,n.useContext)(u.PathnameContext)}function p(){let e=(0,n.useContext)(o.AppRouterContext);if(null===e)throw Object.defineProperty(Error("invariant expected app router to be mounted"),"__NEXT_ERROR_CODE",{value:"E238",enumerable:!1,configurable:!0});return e}function h(){return null==s||s("useParams()"),(0,n.useContext)(u.PathParamsContext)}function y(e){void 0===e&&(e="children"),null==s||s("useSelectedLayoutSegments()");let t=(0,n.useContext)(o.LayoutRouterContext);return t?function e(t,r,n,o){let u;if(void 0===n&&(n=!0),void 0===o&&(o=[]),n)u=t[1][r];else{var i;let e=t[1];u=null!=(i=e.children)?i:Object.values(e)[0]}if(!u)return o;let c=u[0],s=(0,l.getSegmentValue)(c);return!s||s.startsWith(a.PAGE_SEGMENT_KEY)?o:(o.push(s),e(u,r,!1,o))}(t.parentTree,e):null}function _(e){void 0===e&&(e="children"),null==s||s("useSelectedLayoutSegment()");let t=y(e);if(!t||0===t.length)return null;let r="children"===e?t[0]:t[t.length-1];return r===a.DEFAULT_SEGMENT_KEY?null:r}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9062:(e,t,r)=>{"use strict";var n=r(7650),o={stream:!0},u=new Map;function l(e){var t=r(e);return"function"!=typeof t.then||"fulfilled"===t.status?null:(t.then(function(e){t.status="fulfilled",t.value=e},function(e){t.status="rejected",t.reason=e}),t)}function a(){}function i(e){for(var t=e[1],n=[],o=0;oc||35===c||114===c||120===c?(s=c,c=3,a++):(s=0,c=3);continue;case 2:44===(y=l[a++])?c=4:f=f<<4|(96l.length&&(y=-1)}var _=l.byteOffset+a;if(-1{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},9148:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{copyNextErrorCode:function(){return n},createDigestWithErrorCode:function(){return r},extractNextErrorCode:function(){return o}});let r=(e,t)=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e?`${t}@${e.__NEXT_ERROR_CODE}`:t,n=(e,t)=>{let r=o(e);r&&"object"==typeof t&&null!==t&&Object.defineProperty(t,"__NEXT_ERROR_CODE",{value:r,enumerable:!1,configurable:!0})},o=e=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e&&"string"==typeof e.__NEXT_ERROR_CODE?e.__NEXT_ERROR_CODE:"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest?e.digest.split("@").find(e=>e.startsWith("E")):void 0},9154:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{prefetchQueue:function(){return u},prefetchReducer:function(){return l}});let n=r(2312),o=r(1518),u=new n.PromiseQueue(5),l=function(e,t){(0,o.prunePrefetchCache)(e.prefetchCache);let{url:r}=t;return(0,o.getOrCreatePrefetchCacheEntry)({url:r,nextUrl:e.nextUrl,prefetchCache:e.prefetchCache,kind:t.kind,tree:e.tree,allowAliasing:!0}),e};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9155:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{onCaughtError:function(){return i},onUncaughtError:function(){return c}}),r(5128),r(5444);let n=r(2858),o=r(5262),u=r(1646),l=r(6905),a=r(6614);function i(e,t){var r;let u,i=null==(r=t.errorBoundary)?void 0:r.constructor;if(u=u||i===a.ErrorBoundaryHandler&&t.errorBoundary.props.errorComponent===a.GlobalError)return c(e,t);(0,o.isBailoutToCSRError)(e)||(0,n.isNextRouterError)(e)||(0,l.originConsoleError)(e)}function c(e,t){(0,o.isBailoutToCSRError)(e)||(0,n.isNextRouterError)(e)||(0,u.reportGlobalError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9187:(e,t,r)=>{"use strict";function n(){throw Object.defineProperty(Error("`unauthorized()` is experimental and only allowed to be used when `experimental.authInterrupts` is enabled."),"__NEXT_ERROR_CODE",{value:"E411",enumerable:!1,configurable:!0})}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"unauthorized",{enumerable:!0,get:function(){return n}}),r(6494).HTTP_ERROR_FALLBACK_ERROR_CODE,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9234:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNavigatingToNewRootLayout",{enumerable:!0,get:function(){return function e(t,r){let n=t[0],o=r[0];if(Array.isArray(n)&&Array.isArray(o)){if(n[0]!==o[0]||n[2]!==o[2])return!0}else if(n!==o)return!0;if(t[4])return!r[4];if(r[4])return!0;let u=Object.values(t[1])[0],l=Object.values(r[1])[0];return!u||!l||e(u,l)}}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9509:(e,t,r)=>{"use strict";var n,o;e.exports=(null==(n=r.g.process)?void 0:n.env)&&"object"==typeof(null==(o=r.g.process)?void 0:o.env)?r.g.process:r(666)},9665:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{MetadataBoundary:function(){return u},OutletBoundary:function(){return a},ViewportBoundary:function(){return l}});let n=r(8287),o={[n.METADATA_BOUNDARY_NAME]:function(e){let{children:t}=e;return t},[n.VIEWPORT_BOUNDARY_NAME]:function(e){let{children:t}=e;return t},[n.OUTLET_BOUNDARY_NAME]:function(e){let{children:t}=e;return t}},u=o[n.METADATA_BOUNDARY_NAME.slice(0)],l=o[n.VIEWPORT_BOUNDARY_NAME.slice(0)],a=o[n.OUTLET_BOUNDARY_NAME.slice(0)];("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9726:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reducer",{enumerable:!0,get:function(){return f}});let n=r(9818),o=r(3894),u=r(7801),l=r(4819),a=r(5542),i=r(9154),c=r(3612),s=r(8709),f=function(e,t){switch(t.type){case n.ACTION_NAVIGATE:return(0,o.navigateReducer)(e,t);case n.ACTION_SERVER_PATCH:return(0,u.serverPatchReducer)(e,t);case n.ACTION_RESTORE:return(0,l.restoreReducer)(e,t);case n.ACTION_REFRESH:return(0,a.refreshReducer)(e,t);case n.ACTION_HMR_REFRESH:return(0,c.hmrRefreshReducer)(e,t);case n.ACTION_PREFETCH:return(0,i.prefetchReducer)(e,t);case n.ACTION_SERVER_ACTION:return(0,s.serverActionReducer)(e,t);default:throw Object.defineProperty(Error("Unknown action"),"__NEXT_ERROR_CODE",{value:"E295",enumerable:!1,configurable:!0})}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9771:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getHydrationWarningType:function(){return a},getReactHydrationDiffSegments:function(){return s},hydrationErrorState:function(){return o},storeHydrationErrorStateFromConsoleArgs:function(){return f}});let n=r(6465),o={},u=new Set(["Warning: In HTML, %s cannot be a child of <%s>.%s\nThis will cause a hydration error.%s","Warning: In HTML, %s cannot be a descendant of <%s>.\nThis will cause a hydration error.%s","Warning: In HTML, text nodes cannot be a child of <%s>.\nThis will cause a hydration error.","Warning: In HTML, whitespace text nodes cannot be a child of <%s>. Make sure you don't have any extra whitespace between tags on each line of your source code.\nThis will cause a hydration error.","Warning: Expected server HTML to contain a matching <%s> in <%s>.%s","Warning: Did not expect server HTML to contain a <%s> in <%s>.%s"]),l=new Set(['Warning: Expected server HTML to contain a matching text node for "%s" in <%s>.%s','Warning: Did not expect server HTML to contain the text node "%s" in <%s>.%s']),a=e=>{if("string"!=typeof e)return"text";let t=e.startsWith("Warning: ")?e:"Warning: "+e;return i(t)?"tag":c(t)?"text-in-tag":"text"},i=e=>u.has(e),c=e=>l.has(e),s=e=>{if(e){let{message:t,diff:r}=(0,n.getHydrationErrorStackInfo)(e);if(t)return[t,r]}};function f(){for(var e=arguments.length,t=Array(e),r=0;r{e=e.trim();let[,l,a]=/at (\w+)( \((.*)\))?/.exec(e)||[];return a||(l===t&&-1===o?o=n:l===r&&-1===u&&(u=n)),a?"":l}).filter(Boolean).reverse(),c="";for(let e=0;e "+" ".repeat(Math.max(2*e-2,0)+2)+"<"+t+">\n":c+=" ".repeat(2*e+2)+"<"+t+">\n"}if("text"===l){let e=" ".repeat(2*i.length);c+="+ "+e+'"'+t+'"\n'+("- "+e+'"'+r)+'"\n'}else if("text-in-tag"===l){let e=" ".repeat(2*i.length);c+="> "+e+"<"+r+">\n"+("> "+e+'"'+t)+'"\n'}return c}(u,l,i,n):o.reactOutputComponentDiff=n,o.warning=r,o.serverContent=l,o.clientContent=i}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9818:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_HMR_REFRESH:function(){return a},ACTION_NAVIGATE:function(){return n},ACTION_PREFETCH:function(){return l},ACTION_REFRESH:function(){return r},ACTION_RESTORE:function(){return o},ACTION_SERVER_ACTION:function(){return i},ACTION_SERVER_PATCH:function(){return u},PrefetchCacheEntryStatus:function(){return s},PrefetchKind:function(){return c}});let r="refresh",n="navigate",o="restore",u="server-patch",l="prefetch",a="hmr-refresh",i="server-action";var c=function(e){return e.AUTO="auto",e.FULL="full",e.TEMPORARY="temporary",e}({}),s=function(e){return e.fresh="fresh",e.reusable="reusable",e.expired="expired",e.stale="stale",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9837:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"InvariantError",{enumerable:!0,get:function(){return r}});class r extends Error{constructor(e,t){super("Invariant: "+(e.endsWith(".")?e:e+".")+" This is a bug in Next.js.",t),this.name="InvariantError"}}},9880:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"clearCacheNodeDataForSegmentPath",{enumerable:!0,get:function(){return function e(t,r,u){let l=u.length<=2,[a,i]=u,c=(0,o.createRouterCacheKey)(i),s=r.parallelRoutes.get(a),f=t.parallelRoutes.get(a);f&&f!==s||(f=new Map(s),t.parallelRoutes.set(a,f));let d=null==s?void 0:s.get(c),p=f.get(c);if(l){p&&p.lazyData&&p!==d||f.set(c,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1});return}if(!p||!d){p||f.set(c,{lazyData:null,rsc:null,prefetchRsc:null,head:null,prefetchHead:null,parallelRoutes:new Map,loading:null,navigatedAt:-1});return}return p===d&&(p={lazyData:p.lazyData,rsc:p.rsc,prefetchRsc:p.prefetchRsc,head:p.head,prefetchHead:p.prefetchHead,parallelRoutes:new Map(p.parallelRoutes),loading:p.loading},f.set(c,p)),e(p,d,(0,n.getNextFlightSegmentPath)(u))}}});let n=r(2561),o=r(5637);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9921:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useUntrackedPathname",{enumerable:!0,get:function(){return u}});let n=r(2115),o=r(886);function u(){return(0,n.useContext)(o.PathnameContext)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/728.0a8f45173f3a857c.js b/docs/_next/static/chunks/728.0a8f45173f3a857c.js deleted file mode 100644 index 34be2e5d..00000000 --- a/docs/_next/static/chunks/728.0a8f45173f3a857c.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[728],{6728:(t,e,n)=>{function i(t){let e=[],n=new Set;for(let i of t)n.has(i.url)||(n.add(i.url),e.push({id:i.url,type:"page",url:i.url,content:i.title})),e.push({id:i.objectID,type:i.content===i.section?"heading":"text",url:i.section_id?`${i.url}#${i.section_id}`:i.url,content:i.content});return e}async function s(t,e,n,s){let r=s?.filters;return(n&&(r=r?`tag:${n} AND (${r})`:`tag:${n}`),0===e.length)?i((await t.search(e,{distinct:1,hitsPerPage:8,...s,filters:r})).hits).filter(t=>"page"===t.type):i((await t.search(e,{distinct:5,hitsPerPage:10,...s,filters:r})).hits)}n.d(e,{searchDocs:()=>s}),n(9189)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/874-0cb5402bc7a91b88.js b/docs/_next/static/chunks/874-0cb5402bc7a91b88.js deleted file mode 100644 index 52852bb2..00000000 --- a/docs/_next/static/chunks/874-0cb5402bc7a91b88.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[874],{2664:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return u}});let n=r(9991),o=r(7102);function u(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},2757:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return u},formatWithValidation:function(){return a},urlObjectKeys:function(){return i}});let n=r(6966)._(r(8859)),o=/https?|ftp|gopher|file/;function u(e){let{auth:t,hostname:r}=e,u=e.protocol||"",i=e.pathname||"",a=e.hash||"",l=e.query||"",f=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?f=t+e.host:r&&(f=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(f+=":"+e.port)),l&&"object"==typeof l&&(l=String(n.urlQueryToSearchParams(l)));let c=e.search||l&&"?"+l||"";return u&&!u.endsWith(":")&&(u+=":"),e.slashes||(!u||o.test(u))&&!1!==f?(f="//"+(f||""),i&&"/"!==i[0]&&(i="/"+i)):f||(f=""),a&&"#"!==a[0]&&(a="#"+a),c&&"?"!==c[0]&&(c="?"+c),""+u+f+(i=i.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+a}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function a(e){return u(e)}},3180:(e,t)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"errorOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},6654:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"useMergedRef",{enumerable:!0,get:function(){return o}});let n=r(2115);function o(e,t){let r=(0,n.useRef)(null),o=(0,n.useRef)(null);return(0,n.useCallback)(n=>{if(null===n){let e=r.current;e&&(r.current=null,e());let t=o.current;t&&(o.current=null,t())}else e&&(r.current=u(e,n)),t&&(o.current=u(t,n))},[e,t])}function u(e,t){if("function"!=typeof e)return e.current=t,()=>{e.current=null};{let r=e(t);return"function"==typeof r?r:()=>e(null)}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6874:(e,t,r)=>{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return g},useLinkStatus:function(){return b}});let n=r(6966),o=r(5155),u=n._(r(2115)),i=r(2757),a=r(5227),l=r(9818),f=r(6654),c=r(9991),s=r(5929);r(3230);let p=r(4930),d=r(2664),h=r(6634);function y(e){return"string"==typeof e?e:(0,i.formatUrl)(e)}function g(e){let t,r,n,[i,g]=(0,u.useOptimistic)(p.IDLE_LINK_STATUS),b=(0,u.useRef)(null),{href:P,as:_,children:v,prefetch:E=null,passHref:O,replace:j,shallow:T,scroll:C,onClick:N,onMouseEnter:S,onTouchStart:A,legacyBehavior:L=!1,onNavigate:x,ref:M,unstable_dynamicOnHover:U,...R}=e;t=v,L&&("string"==typeof t||"number"==typeof t)&&(t=(0,o.jsx)("a",{children:t}));let k=u.default.useContext(a.AppRouterContext),I=!1!==E,w=null===E?l.PrefetchKind.AUTO:l.PrefetchKind.FULL,{href:D,as:F}=u.default.useMemo(()=>{let e=y(P);return{href:e,as:_?y(_):e}},[P,_]);L&&(r=u.default.Children.only(t));let K=L?r&&"object"==typeof r&&r.ref:M,B=u.default.useCallback(e=>(null!==k&&(b.current=(0,p.mountLinkInstance)(e,D,k,w,I,g)),()=>{b.current&&((0,p.unmountLinkForCurrentNavigation)(b.current),b.current=null),(0,p.unmountPrefetchableInstance)(e)}),[I,D,k,w,g]),z={ref:(0,f.useMergedRef)(B,K),onClick(e){L||"function"!=typeof N||N(e),L&&r.props&&"function"==typeof r.props.onClick&&r.props.onClick(e),k&&(e.defaultPrevented||function(e,t,r,n,o,i,a){let{nodeName:l}=e.currentTarget;if(!("A"===l.toUpperCase()&&function(e){let t=e.currentTarget.getAttribute("target");return t&&"_self"!==t||e.metaKey||e.ctrlKey||e.shiftKey||e.altKey||e.nativeEvent&&2===e.nativeEvent.which}(e)||e.currentTarget.hasAttribute("download"))){if(!(0,d.isLocalURL)(t)){o&&(e.preventDefault(),location.replace(t));return}e.preventDefault(),u.default.startTransition(()=>{if(a){let e=!1;if(a({preventDefault:()=>{e=!0}}),e)return}(0,h.dispatchNavigateAction)(r||t,o?"replace":"push",null==i||i,n.current)})}}(e,D,F,b,j,C,x))},onMouseEnter(e){L||"function"!=typeof S||S(e),L&&r.props&&"function"==typeof r.props.onMouseEnter&&r.props.onMouseEnter(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===U)},onTouchStart:function(e){L||"function"!=typeof A||A(e),L&&r.props&&"function"==typeof r.props.onTouchStart&&r.props.onTouchStart(e),k&&I&&(0,p.onNavigationIntent)(e.currentTarget,!0===U)}};return(0,c.isAbsoluteUrl)(F)?z.href=F:L&&!O&&("a"!==r.type||"href"in r.props)||(z.href=(0,s.addBasePath)(F)),n=L?u.default.cloneElement(r,z):(0,o.jsx)("a",{...R,...z,children:t}),(0,o.jsx)(m.Provider,{value:i,children:n})}r(3180);let m=(0,u.createContext)(p.IDLE_LINK_STATUS),b=()=>(0,u.useContext)(m);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8859:(e,t)=>{function r(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,n(e));else t.set(r,n(o));return t}function u(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return m},NormalizeError:function(){return y},PageNotFoundError:function(){return g},SP:function(){return p},ST:function(){return d},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return l},getLocationOrigin:function(){return i},getURL:function(){return a},isAbsoluteUrl:function(){return u},isResSent:function(){return f},loadGetInitialProps:function(){return s},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return P}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),u=0;uo.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function a(){let{href:e}=window.location,t=i();return e.substring(t.length)}function l(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function f(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function s(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await s(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&f(r))return n;if(!n)throw Object.defineProperty(Error('"'+l(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let p="undefined"!=typeof performance,d=p&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class y extends Error{}class g extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class m extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function P(e){return JSON.stringify({message:e.message,stack:e.stack})}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/882-90fa2d4319e1517d.js b/docs/_next/static/chunks/882-90fa2d4319e1517d.js deleted file mode 100644 index 7f2f1095..00000000 --- a/docs/_next/static/chunks/882-90fa2d4319e1517d.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[882],{408:(e,t,n)=>{n.d(t,{AM:()=>ty,hl:()=>tw,Wv:()=>tx});var r=n(5155),o=n(2115),i=n(5185),l=n(6101),a=n(6081),s=n(9178),c=n(2293),u=n(7900),f=n(1285);let d=["top","right","bottom","left"],p=Math.min,h=Math.max,m=Math.round,g=Math.floor,v=e=>({x:e,y:e}),y={left:"right",right:"left",bottom:"top",top:"bottom"},x={start:"end",end:"start"};function w(e,t){return"function"==typeof e?e(t):e}function b(e){return e.split("-")[0]}function A(e){return e.split("-")[1]}function C(e){return"x"===e?"y":"x"}function k(e){return"y"===e?"height":"width"}function R(e){return["top","bottom"].includes(b(e))?"y":"x"}function P(e){return e.replace(/start|end/g,e=>x[e])}function E(e){return e.replace(/left|right|bottom|top/g,e=>y[e])}function T(e){return"number"!=typeof e?{top:0,right:0,bottom:0,left:0,...e}:{top:e,right:e,bottom:e,left:e}}function S(e){let{x:t,y:n,width:r,height:o}=e;return{width:r,height:o,top:n,left:t,right:t+r,bottom:n+o,x:t,y:n}}function j(e,t,n){let r,{reference:o,floating:i}=e,l=R(t),a=C(R(t)),s=k(a),c=b(t),u="y"===l,f=o.x+o.width/2-i.width/2,d=o.y+o.height/2-i.height/2,p=o[s]/2-i[s]/2;switch(c){case"top":r={x:f,y:o.y-i.height};break;case"bottom":r={x:f,y:o.y+o.height};break;case"right":r={x:o.x+o.width,y:d};break;case"left":r={x:o.x-i.width,y:d};break;default:r={x:o.x,y:o.y}}switch(A(t)){case"start":r[a]-=p*(n&&u?-1:1);break;case"end":r[a]+=p*(n&&u?-1:1)}return r}let L=async(e,t,n)=>{let{placement:r="bottom",strategy:o="absolute",middleware:i=[],platform:l}=n,a=i.filter(Boolean),s=await (null==l.isRTL?void 0:l.isRTL(t)),c=await l.getElementRects({reference:e,floating:t,strategy:o}),{x:u,y:f}=j(c,r,s),d=r,p={},h=0;for(let n=0;ne[t]>=0)}async function M(e,t){let{placement:n,platform:r,elements:o}=e,i=await (null==r.isRTL?void 0:r.isRTL(o.floating)),l=b(n),a=A(n),s="y"===R(n),c=["left","top"].includes(l)?-1:1,u=i&&s?-1:1,f=w(t,e),{mainAxis:d,crossAxis:p,alignmentAxis:h}="number"==typeof f?{mainAxis:f,crossAxis:0,alignmentAxis:null}:{mainAxis:f.mainAxis||0,crossAxis:f.crossAxis||0,alignmentAxis:f.alignmentAxis};return a&&"number"==typeof h&&(p="end"===a?-1*h:h),s?{x:p*u,y:d*c}:{x:d*c,y:p*u}}function F(){return"undefined"!=typeof window}function H(e){return I(e)?(e.nodeName||"").toLowerCase():"#document"}function W(e){var t;return(null==e||null==(t=e.ownerDocument)?void 0:t.defaultView)||window}function z(e){var t;return null==(t=(I(e)?e.ownerDocument:e.document)||window.document)?void 0:t.documentElement}function I(e){return!!F()&&(e instanceof Node||e instanceof W(e).Node)}function _(e){return!!F()&&(e instanceof Element||e instanceof W(e).Element)}function B(e){return!!F()&&(e instanceof HTMLElement||e instanceof W(e).HTMLElement)}function V(e){return!!F()&&"undefined"!=typeof ShadowRoot&&(e instanceof ShadowRoot||e instanceof W(e).ShadowRoot)}function K(e){let{overflow:t,overflowX:n,overflowY:r,display:o}=G(e);return/auto|scroll|overlay|hidden|clip/.test(t+r+n)&&!["inline","contents"].includes(o)}function Q(e){return[":popover-open",":modal"].some(t=>{try{return e.matches(t)}catch(e){return!1}})}function q(e){let t=$(),n=_(e)?G(e):e;return["transform","translate","scale","rotate","perspective"].some(e=>!!n[e]&&"none"!==n[e])||!!n.containerType&&"normal"!==n.containerType||!t&&!!n.backdropFilter&&"none"!==n.backdropFilter||!t&&!!n.filter&&"none"!==n.filter||["transform","translate","scale","rotate","perspective","filter"].some(e=>(n.willChange||"").includes(e))||["paint","layout","strict","content"].some(e=>(n.contain||"").includes(e))}function $(){return"undefined"!=typeof CSS&&!!CSS.supports&&CSS.supports("-webkit-backdrop-filter","none")}function Y(e){return["html","body","#document"].includes(H(e))}function G(e){return W(e).getComputedStyle(e)}function X(e){return _(e)?{scrollLeft:e.scrollLeft,scrollTop:e.scrollTop}:{scrollLeft:e.scrollX,scrollTop:e.scrollY}}function Z(e){if("html"===H(e))return e;let t=e.assignedSlot||e.parentNode||V(e)&&e.host||z(e);return V(t)?t.host:t}function J(e,t,n){var r;void 0===t&&(t=[]),void 0===n&&(n=!0);let o=function e(t){let n=Z(t);return Y(n)?t.ownerDocument?t.ownerDocument.body:t.body:B(n)&&K(n)?n:e(n)}(e),i=o===(null==(r=e.ownerDocument)?void 0:r.body),l=W(o);if(i){let e=U(l);return t.concat(l,l.visualViewport||[],K(o)?o:[],e&&n?J(e):[])}return t.concat(o,J(o,[],n))}function U(e){return e.parent&&Object.getPrototypeOf(e.parent)?e.frameElement:null}function ee(e){let t=G(e),n=parseFloat(t.width)||0,r=parseFloat(t.height)||0,o=B(e),i=o?e.offsetWidth:n,l=o?e.offsetHeight:r,a=m(n)!==i||m(r)!==l;return a&&(n=i,r=l),{width:n,height:r,$:a}}function et(e){return _(e)?e:e.contextElement}function en(e){let t=et(e);if(!B(t))return v(1);let n=t.getBoundingClientRect(),{width:r,height:o,$:i}=ee(t),l=(i?m(n.width):n.width)/r,a=(i?m(n.height):n.height)/o;return l&&Number.isFinite(l)||(l=1),a&&Number.isFinite(a)||(a=1),{x:l,y:a}}let er=v(0);function eo(e){let t=W(e);return $()&&t.visualViewport?{x:t.visualViewport.offsetLeft,y:t.visualViewport.offsetTop}:er}function ei(e,t,n,r){var o;void 0===t&&(t=!1),void 0===n&&(n=!1);let i=e.getBoundingClientRect(),l=et(e),a=v(1);t&&(r?_(r)&&(a=en(r)):a=en(e));let s=(void 0===(o=n)&&(o=!1),r&&(!o||r===W(l))&&o)?eo(l):v(0),c=(i.left+s.x)/a.x,u=(i.top+s.y)/a.y,f=i.width/a.x,d=i.height/a.y;if(l){let e=W(l),t=r&&_(r)?W(r):r,n=e,o=U(n);for(;o&&r&&t!==n;){let e=en(o),t=o.getBoundingClientRect(),r=G(o),i=t.left+(o.clientLeft+parseFloat(r.paddingLeft))*e.x,l=t.top+(o.clientTop+parseFloat(r.paddingTop))*e.y;c*=e.x,u*=e.y,f*=e.x,d*=e.y,c+=i,u+=l,o=U(n=W(o))}}return S({width:f,height:d,x:c,y:u})}function el(e,t){let n=X(e).scrollLeft;return t?t.left+n:ei(z(e)).left+n}function ea(e,t,n){void 0===n&&(n=!1);let r=e.getBoundingClientRect();return{x:r.left+t.scrollLeft-(n?0:el(e,r)),y:r.top+t.scrollTop}}function es(e,t,n){let r;if("viewport"===t)r=function(e,t){let n=W(e),r=z(e),o=n.visualViewport,i=r.clientWidth,l=r.clientHeight,a=0,s=0;if(o){i=o.width,l=o.height;let e=$();(!e||e&&"fixed"===t)&&(a=o.offsetLeft,s=o.offsetTop)}return{width:i,height:l,x:a,y:s}}(e,n);else if("document"===t)r=function(e){let t=z(e),n=X(e),r=e.ownerDocument.body,o=h(t.scrollWidth,t.clientWidth,r.scrollWidth,r.clientWidth),i=h(t.scrollHeight,t.clientHeight,r.scrollHeight,r.clientHeight),l=-n.scrollLeft+el(e),a=-n.scrollTop;return"rtl"===G(r).direction&&(l+=h(t.clientWidth,r.clientWidth)-o),{width:o,height:i,x:l,y:a}}(z(e));else if(_(t))r=function(e,t){let n=ei(e,!0,"fixed"===t),r=n.top+e.clientTop,o=n.left+e.clientLeft,i=B(e)?en(e):v(1),l=e.clientWidth*i.x,a=e.clientHeight*i.y;return{width:l,height:a,x:o*i.x,y:r*i.y}}(t,n);else{let n=eo(e);r={x:t.x-n.x,y:t.y-n.y,width:t.width,height:t.height}}return S(r)}function ec(e){return"static"===G(e).position}function eu(e,t){if(!B(e)||"fixed"===G(e).position)return null;if(t)return t(e);let n=e.offsetParent;return z(e)===n&&(n=n.ownerDocument.body),n}function ef(e,t){let n=W(e);if(Q(e))return n;if(!B(e)){let t=Z(e);for(;t&&!Y(t);){if(_(t)&&!ec(t))return t;t=Z(t)}return n}let r=eu(e,t);for(;r&&["table","td","th"].includes(H(r))&&ec(r);)r=eu(r,t);return r&&Y(r)&&ec(r)&&!q(r)?n:r||function(e){let t=Z(e);for(;B(t)&&!Y(t);){if(q(t))return t;if(Q(t))break;t=Z(t)}return null}(e)||n}let ed=async function(e){let t=this.getOffsetParent||ef,n=this.getDimensions,r=await n(e.floating);return{reference:function(e,t,n){let r=B(t),o=z(t),i="fixed"===n,l=ei(e,!0,i,t),a={scrollLeft:0,scrollTop:0},s=v(0);if(r||!r&&!i)if(("body"!==H(t)||K(o))&&(a=X(t)),r){let e=ei(t,!0,i,t);s.x=e.x+t.clientLeft,s.y=e.y+t.clientTop}else o&&(s.x=el(o));let c=!o||r||i?v(0):ea(o,a);return{x:l.left+a.scrollLeft-s.x-c.x,y:l.top+a.scrollTop-s.y-c.y,width:l.width,height:l.height}}(e.reference,await t(e.floating),e.strategy),floating:{x:0,y:0,width:r.width,height:r.height}}},ep={convertOffsetParentRelativeRectToViewportRelativeRect:function(e){let{elements:t,rect:n,offsetParent:r,strategy:o}=e,i="fixed"===o,l=z(r),a=!!t&&Q(t.floating);if(r===l||a&&i)return n;let s={scrollLeft:0,scrollTop:0},c=v(1),u=v(0),f=B(r);if((f||!f&&!i)&&(("body"!==H(r)||K(l))&&(s=X(r)),B(r))){let e=ei(r);c=en(r),u.x=e.x+r.clientLeft,u.y=e.y+r.clientTop}let d=!l||f||i?v(0):ea(l,s,!0);return{width:n.width*c.x,height:n.height*c.y,x:n.x*c.x-s.scrollLeft*c.x+u.x+d.x,y:n.y*c.y-s.scrollTop*c.y+u.y+d.y}},getDocumentElement:z,getClippingRect:function(e){let{element:t,boundary:n,rootBoundary:r,strategy:o}=e,i=[..."clippingAncestors"===n?Q(t)?[]:function(e,t){let n=t.get(e);if(n)return n;let r=J(e,[],!1).filter(e=>_(e)&&"body"!==H(e)),o=null,i="fixed"===G(e).position,l=i?Z(e):e;for(;_(l)&&!Y(l);){let t=G(l),n=q(l);n||"fixed"!==t.position||(o=null),(i?!n&&!o:!n&&"static"===t.position&&!!o&&["absolute","fixed"].includes(o.position)||K(l)&&!n&&function e(t,n){let r=Z(t);return!(r===n||!_(r)||Y(r))&&("fixed"===G(r).position||e(r,n))}(e,l))?r=r.filter(e=>e!==l):o=t,l=Z(l)}return t.set(e,r),r}(t,this._c):[].concat(n),r],l=i[0],a=i.reduce((e,n)=>{let r=es(t,n,o);return e.top=h(r.top,e.top),e.right=p(r.right,e.right),e.bottom=p(r.bottom,e.bottom),e.left=h(r.left,e.left),e},es(t,l,o));return{width:a.right-a.left,height:a.bottom-a.top,x:a.left,y:a.top}},getOffsetParent:ef,getElementRects:ed,getClientRects:function(e){return Array.from(e.getClientRects())},getDimensions:function(e){let{width:t,height:n}=ee(e);return{width:t,height:n}},getScale:en,isElement:_,isRTL:function(e){return"rtl"===G(e).direction}};function eh(e,t){return e.x===t.x&&e.y===t.y&&e.width===t.width&&e.height===t.height}let em=e=>({name:"arrow",options:e,async fn(t){let{x:n,y:r,placement:o,rects:i,platform:l,elements:a,middlewareData:s}=t,{element:c,padding:u=0}=w(e,t)||{};if(null==c)return{};let f=T(u),d={x:n,y:r},m=C(R(o)),g=k(m),v=await l.getDimensions(c),y="y"===m,x=y?"clientHeight":"clientWidth",b=i.reference[g]+i.reference[m]-d[m]-i.floating[g],P=d[m]-i.reference[m],E=await (null==l.getOffsetParent?void 0:l.getOffsetParent(c)),S=E?E[x]:0;S&&await (null==l.isElement?void 0:l.isElement(E))||(S=a.floating[x]||i.floating[g]);let j=S/2-v[g]/2-1,L=p(f[y?"top":"left"],j),O=p(f[y?"bottom":"right"],j),N=S-v[g]-O,D=S/2-v[g]/2+(b/2-P/2),M=h(L,p(D,N)),F=!s.arrow&&null!=A(o)&&D!==M&&i.reference[g]/2-(D{let r=new Map,o={platform:ep,...n},i={...o.platform,_c:r};return L(e,t,{...o,platform:i})};var ev=n(7650),ey="undefined"!=typeof document?o.useLayoutEffect:o.useEffect;function ex(e,t){let n,r,o;if(e===t)return!0;if(typeof e!=typeof t)return!1;if("function"==typeof e&&e.toString()===t.toString())return!0;if(e&&t&&"object"==typeof e){if(Array.isArray(e)){if((n=e.length)!==t.length)return!1;for(r=n;0!=r--;)if(!ex(e[r],t[r]))return!1;return!0}if((n=(o=Object.keys(e)).length)!==Object.keys(t).length)return!1;for(r=n;0!=r--;)if(!({}).hasOwnProperty.call(t,o[r]))return!1;for(r=n;0!=r--;){let n=o[r];if(("_owner"!==n||!e.$$typeof)&&!ex(e[n],t[n]))return!1}return!0}return e!=e&&t!=t}function ew(e){return"undefined"==typeof window?1:(e.ownerDocument.defaultView||window).devicePixelRatio||1}function eb(e,t){let n=ew(e);return Math.round(t*n)/n}function eA(e){let t=o.useRef(e);return ey(()=>{t.current=e}),t}let eC=e=>({name:"arrow",options:e,fn(t){let{element:n,padding:r}="function"==typeof e?e(t):e;return n&&({}).hasOwnProperty.call(n,"current")?null!=n.current?em({element:n.current,padding:r}).fn(t):{}:n?em({element:n,padding:r}).fn(t):{}}}),ek=(e,t)=>({...function(e){return void 0===e&&(e=0),{name:"offset",options:e,async fn(t){var n,r;let{x:o,y:i,placement:l,middlewareData:a}=t,s=await M(t,e);return l===(null==(n=a.offset)?void 0:n.placement)&&null!=(r=a.arrow)&&r.alignmentOffset?{}:{x:o+s.x,y:i+s.y,data:{...s,placement:l}}}}}(e),options:[e,t]}),eR=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"shift",options:e,async fn(t){let{x:n,y:r,placement:o}=t,{mainAxis:i=!0,crossAxis:l=!1,limiter:a={fn:e=>{let{x:t,y:n}=e;return{x:t,y:n}}},...s}=w(e,t),c={x:n,y:r},u=await O(t,s),f=R(b(o)),d=C(f),m=c[d],g=c[f];if(i){let e="y"===d?"top":"left",t="y"===d?"bottom":"right",n=m+u[e],r=m-u[t];m=h(n,p(m,r))}if(l){let e="y"===f?"top":"left",t="y"===f?"bottom":"right",n=g+u[e],r=g-u[t];g=h(n,p(g,r))}let v=a.fn({...t,[d]:m,[f]:g});return{...v,data:{x:v.x-n,y:v.y-r,enabled:{[d]:i,[f]:l}}}}}}(e),options:[e,t]}),eP=(e,t)=>({...function(e){return void 0===e&&(e={}),{options:e,fn(t){let{x:n,y:r,placement:o,rects:i,middlewareData:l}=t,{offset:a=0,mainAxis:s=!0,crossAxis:c=!0}=w(e,t),u={x:n,y:r},f=R(o),d=C(f),p=u[d],h=u[f],m=w(a,t),g="number"==typeof m?{mainAxis:m,crossAxis:0}:{mainAxis:0,crossAxis:0,...m};if(s){let e="y"===d?"height":"width",t=i.reference[d]-i.floating[e]+g.mainAxis,n=i.reference[d]+i.reference[e]-g.mainAxis;pn&&(p=n)}if(c){var v,y;let e="y"===d?"width":"height",t=["top","left"].includes(b(o)),n=i.reference[f]-i.floating[e]+(t&&(null==(v=l.offset)?void 0:v[f])||0)+(t?0:g.crossAxis),r=i.reference[f]+i.reference[e]+(t?0:(null==(y=l.offset)?void 0:y[f])||0)-(t?g.crossAxis:0);hr&&(h=r)}return{[d]:p,[f]:h}}}}(e),options:[e,t]}),eE=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"flip",options:e,async fn(t){var n,r,o,i,l;let{placement:a,middlewareData:s,rects:c,initialPlacement:u,platform:f,elements:d}=t,{mainAxis:p=!0,crossAxis:h=!0,fallbackPlacements:m,fallbackStrategy:g="bestFit",fallbackAxisSideDirection:v="none",flipAlignment:y=!0,...x}=w(e,t);if(null!=(n=s.arrow)&&n.alignmentOffset)return{};let T=b(a),S=R(u),j=b(u)===u,L=await (null==f.isRTL?void 0:f.isRTL(d.floating)),N=m||(j||!y?[E(u)]:function(e){let t=E(e);return[P(e),t,P(t)]}(u)),D="none"!==v;!m&&D&&N.push(...function(e,t,n,r){let o=A(e),i=function(e,t,n){let r=["left","right"],o=["right","left"];switch(e){case"top":case"bottom":if(n)return t?o:r;return t?r:o;case"left":case"right":return t?["top","bottom"]:["bottom","top"];default:return[]}}(b(e),"start"===n,r);return o&&(i=i.map(e=>e+"-"+o),t&&(i=i.concat(i.map(P)))),i}(u,y,v,L));let M=[u,...N],F=await O(t,x),H=[],W=(null==(r=s.flip)?void 0:r.overflows)||[];if(p&&H.push(F[T]),h){let e=function(e,t,n){void 0===n&&(n=!1);let r=A(e),o=C(R(e)),i=k(o),l="x"===o?r===(n?"end":"start")?"right":"left":"start"===r?"bottom":"top";return t.reference[i]>t.floating[i]&&(l=E(l)),[l,E(l)]}(a,c,L);H.push(F[e[0]],F[e[1]])}if(W=[...W,{placement:a,overflows:H}],!H.every(e=>e<=0)){let e=((null==(o=s.flip)?void 0:o.index)||0)+1,t=M[e];if(t)return{data:{index:e,overflows:W},reset:{placement:t}};let n=null==(i=W.filter(e=>e.overflows[0]<=0).sort((e,t)=>e.overflows[1]-t.overflows[1])[0])?void 0:i.placement;if(!n)switch(g){case"bestFit":{let e=null==(l=W.filter(e=>{if(D){let t=R(e.placement);return t===S||"y"===t}return!0}).map(e=>[e.placement,e.overflows.filter(e=>e>0).reduce((e,t)=>e+t,0)]).sort((e,t)=>e[1]-t[1])[0])?void 0:l[0];e&&(n=e);break}case"initialPlacement":n=u}if(a!==n)return{reset:{placement:n}}}return{}}}}(e),options:[e,t]}),eT=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"size",options:e,async fn(t){var n,r;let o,i,{placement:l,rects:a,platform:s,elements:c}=t,{apply:u=()=>{},...f}=w(e,t),d=await O(t,f),m=b(l),g=A(l),v="y"===R(l),{width:y,height:x}=a.floating;"top"===m||"bottom"===m?(o=m,i=g===(await (null==s.isRTL?void 0:s.isRTL(c.floating))?"start":"end")?"left":"right"):(i=m,o="end"===g?"top":"bottom");let C=x-d.top-d.bottom,k=y-d.left-d.right,P=p(x-d[o],C),E=p(y-d[i],k),T=!t.middlewareData.shift,S=P,j=E;if(null!=(n=t.middlewareData.shift)&&n.enabled.x&&(j=k),null!=(r=t.middlewareData.shift)&&r.enabled.y&&(S=C),T&&!g){let e=h(d.left,0),t=h(d.right,0),n=h(d.top,0),r=h(d.bottom,0);v?j=y-2*(0!==e||0!==t?e+t:h(d.left,d.right)):S=x-2*(0!==n||0!==r?n+r:h(d.top,d.bottom))}await u({...t,availableWidth:j,availableHeight:S});let L=await s.getDimensions(c.floating);return y!==L.width||x!==L.height?{reset:{rects:!0}}:{}}}}(e),options:[e,t]}),eS=(e,t)=>({...function(e){return void 0===e&&(e={}),{name:"hide",options:e,async fn(t){let{rects:n}=t,{strategy:r="referenceHidden",...o}=w(e,t);switch(r){case"referenceHidden":{let e=N(await O(t,{...o,elementContext:"reference"}),n.reference);return{data:{referenceHiddenOffsets:e,referenceHidden:D(e)}}}case"escaped":{let e=N(await O(t,{...o,altBoundary:!0}),n.floating);return{data:{escapedOffsets:e,escaped:D(e)}}}default:return{}}}}}(e),options:[e,t]}),ej=(e,t)=>({...eC(e),options:[e,t]});var eL=n(3655),eO=o.forwardRef((e,t)=>{let{children:n,width:o=10,height:i=5,...l}=e;return(0,r.jsx)(eL.sG.svg,{...l,ref:t,width:o,height:i,viewBox:"0 0 30 10",preserveAspectRatio:"none",children:e.asChild?n:(0,r.jsx)("polygon",{points:"0,0 30,0 15,10"})})});eO.displayName="Arrow";var eN=n(9033),eD=n(2712),eM="Popper",[eF,eH]=(0,a.A)(eM),[eW,ez]=eF(eM),eI=e=>{let{__scopePopper:t,children:n}=e,[i,l]=o.useState(null);return(0,r.jsx)(eW,{scope:t,anchor:i,onAnchorChange:l,children:n})};eI.displayName=eM;var e_="PopperAnchor",eB=o.forwardRef((e,t)=>{let{__scopePopper:n,virtualRef:i,...a}=e,s=ez(e_,n),c=o.useRef(null),u=(0,l.s)(t,c);return o.useEffect(()=>{s.onAnchorChange((null==i?void 0:i.current)||c.current)}),i?null:(0,r.jsx)(eL.sG.div,{...a,ref:u})});eB.displayName=e_;var eV="PopperContent",[eK,eQ]=eF(eV),eq=o.forwardRef((e,t)=>{var n,i,a,s,c,u,f,d;let{__scopePopper:m,side:v="bottom",sideOffset:y=0,align:x="center",alignOffset:w=0,arrowPadding:b=0,avoidCollisions:A=!0,collisionBoundary:C=[],collisionPadding:k=0,sticky:R="partial",hideWhenDetached:P=!1,updatePositionStrategy:E="optimized",onPlaced:T,...S}=e,j=ez(eV,m),[L,O]=o.useState(null),N=(0,l.s)(t,e=>O(e)),[D,M]=o.useState(null),F=function(e){let[t,n]=o.useState(void 0);return(0,eD.N)(()=>{if(e){n({width:e.offsetWidth,height:e.offsetHeight});let t=new ResizeObserver(t=>{let r,o;if(!Array.isArray(t)||!t.length)return;let i=t[0];if("borderBoxSize"in i){let e=i.borderBoxSize,t=Array.isArray(e)?e[0]:e;r=t.inlineSize,o=t.blockSize}else r=e.offsetWidth,o=e.offsetHeight;n({width:r,height:o})});return t.observe(e,{box:"border-box"}),()=>t.unobserve(e)}n(void 0)},[e]),t}(D),H=null!=(f=null==F?void 0:F.width)?f:0,W=null!=(d=null==F?void 0:F.height)?d:0,I="number"==typeof k?k:{top:0,right:0,bottom:0,left:0,...k},_=Array.isArray(C)?C:[C],B=_.length>0,V={padding:I,boundary:_.filter(eX),altBoundary:B},{refs:K,floatingStyles:Q,placement:q,isPositioned:$,middlewareData:Y}=function(e){void 0===e&&(e={});let{placement:t="bottom",strategy:n="absolute",middleware:r=[],platform:i,elements:{reference:l,floating:a}={},transform:s=!0,whileElementsMounted:c,open:u}=e,[f,d]=o.useState({x:0,y:0,strategy:n,placement:t,middlewareData:{},isPositioned:!1}),[p,h]=o.useState(r);ex(p,r)||h(r);let[m,g]=o.useState(null),[v,y]=o.useState(null),x=o.useCallback(e=>{e!==C.current&&(C.current=e,g(e))},[]),w=o.useCallback(e=>{e!==k.current&&(k.current=e,y(e))},[]),b=l||m,A=a||v,C=o.useRef(null),k=o.useRef(null),R=o.useRef(f),P=null!=c,E=eA(c),T=eA(i),S=eA(u),j=o.useCallback(()=>{if(!C.current||!k.current)return;let e={placement:t,strategy:n,middleware:p};T.current&&(e.platform=T.current),eg(C.current,k.current,e).then(e=>{let t={...e,isPositioned:!1!==S.current};L.current&&!ex(R.current,t)&&(R.current=t,ev.flushSync(()=>{d(t)}))})},[p,t,n,T,S]);ey(()=>{!1===u&&R.current.isPositioned&&(R.current.isPositioned=!1,d(e=>({...e,isPositioned:!1})))},[u]);let L=o.useRef(!1);ey(()=>(L.current=!0,()=>{L.current=!1}),[]),ey(()=>{if(b&&(C.current=b),A&&(k.current=A),b&&A){if(E.current)return E.current(b,A,j);j()}},[b,A,j,E,P]);let O=o.useMemo(()=>({reference:C,floating:k,setReference:x,setFloating:w}),[x,w]),N=o.useMemo(()=>({reference:b,floating:A}),[b,A]),D=o.useMemo(()=>{let e={position:n,left:0,top:0};if(!N.floating)return e;let t=eb(N.floating,f.x),r=eb(N.floating,f.y);return s?{...e,transform:"translate("+t+"px, "+r+"px)",...ew(N.floating)>=1.5&&{willChange:"transform"}}:{position:n,left:t,top:r}},[n,s,N.floating,f.x,f.y]);return o.useMemo(()=>({...f,update:j,refs:O,elements:N,floatingStyles:D}),[f,j,O,N,D])}({strategy:"fixed",placement:v+("center"!==x?"-"+x:""),whileElementsMounted:function(){for(var e=arguments.length,t=Array(e),n=0;n{i&&e.addEventListener("scroll",n,{passive:!0}),l&&e.addEventListener("resize",n)});let d=u&&s?function(e,t){let n,r=null,o=z(e);function i(){var e;clearTimeout(n),null==(e=r)||e.disconnect(),r=null}return!function l(a,s){void 0===a&&(a=!1),void 0===s&&(s=1),i();let c=e.getBoundingClientRect(),{left:u,top:f,width:d,height:m}=c;if(a||t(),!d||!m)return;let v=g(f),y=g(o.clientWidth-(u+d)),x={rootMargin:-v+"px "+-y+"px "+-g(o.clientHeight-(f+m))+"px "+-g(u)+"px",threshold:h(0,p(1,s))||1},w=!0;function b(t){let r=t[0].intersectionRatio;if(r!==s){if(!w)return l();r?l(!1,r):n=setTimeout(()=>{l(!1,1e-7)},1e3)}1!==r||eh(c,e.getBoundingClientRect())||l(),w=!1}try{r=new IntersectionObserver(b,{...x,root:o.ownerDocument})}catch(e){r=new IntersectionObserver(b,x)}r.observe(e)}(!0),i}(u,n):null,m=-1,v=null;a&&(v=new ResizeObserver(e=>{let[r]=e;r&&r.target===u&&v&&(v.unobserve(t),cancelAnimationFrame(m),m=requestAnimationFrame(()=>{var e;null==(e=v)||e.observe(t)})),n()}),u&&!c&&v.observe(u),v.observe(t));let y=c?ei(e):null;return c&&function t(){let r=ei(e);y&&!eh(y,r)&&n(),y=r,o=requestAnimationFrame(t)}(),n(),()=>{var e;f.forEach(e=>{i&&e.removeEventListener("scroll",n),l&&e.removeEventListener("resize",n)}),null==d||d(),null==(e=v)||e.disconnect(),v=null,c&&cancelAnimationFrame(o)}}(...t,{animationFrame:"always"===E})},elements:{reference:j.anchor},middleware:[ek({mainAxis:y+W,alignmentAxis:w}),A&&eR({mainAxis:!0,crossAxis:!1,limiter:"partial"===R?eP():void 0,...V}),A&&eE({...V}),eT({...V,apply:e=>{let{elements:t,rects:n,availableWidth:r,availableHeight:o}=e,{width:i,height:l}=n.reference,a=t.floating.style;a.setProperty("--radix-popper-available-width","".concat(r,"px")),a.setProperty("--radix-popper-available-height","".concat(o,"px")),a.setProperty("--radix-popper-anchor-width","".concat(i,"px")),a.setProperty("--radix-popper-anchor-height","".concat(l,"px"))}}),D&&ej({element:D,padding:b}),eZ({arrowWidth:H,arrowHeight:W}),P&&eS({strategy:"referenceHidden",...V})]}),[G,X]=eJ(q),Z=(0,eN.c)(T);(0,eD.N)(()=>{$&&(null==Z||Z())},[$,Z]);let U=null==(n=Y.arrow)?void 0:n.x,ee=null==(i=Y.arrow)?void 0:i.y,en=(null==(a=Y.arrow)?void 0:a.centerOffset)!==0,[er,eo]=o.useState();return(0,eD.N)(()=>{L&&eo(window.getComputedStyle(L).zIndex)},[L]),(0,r.jsx)("div",{ref:K.setFloating,"data-radix-popper-content-wrapper":"",style:{...Q,transform:$?Q.transform:"translate(0, -200%)",minWidth:"max-content",zIndex:er,"--radix-popper-transform-origin":[null==(s=Y.transformOrigin)?void 0:s.x,null==(c=Y.transformOrigin)?void 0:c.y].join(" "),...(null==(u=Y.hide)?void 0:u.referenceHidden)&&{visibility:"hidden",pointerEvents:"none"}},dir:e.dir,children:(0,r.jsx)(eK,{scope:m,placedSide:G,onArrowChange:M,arrowX:U,arrowY:ee,shouldHideArrow:en,children:(0,r.jsx)(eL.sG.div,{"data-side":G,"data-align":X,...S,ref:N,style:{...S.style,animation:$?void 0:"none"}})})})});eq.displayName=eV;var e$="PopperArrow",eY={top:"bottom",right:"left",bottom:"top",left:"right"},eG=o.forwardRef(function(e,t){let{__scopePopper:n,...o}=e,i=eQ(e$,n),l=eY[i.placedSide];return(0,r.jsx)("span",{ref:i.onArrowChange,style:{position:"absolute",left:i.arrowX,top:i.arrowY,[l]:0,transformOrigin:{top:"",right:"0 0",bottom:"center 0",left:"100% 0"}[i.placedSide],transform:{top:"translateY(100%)",right:"translateY(50%) rotate(90deg) translateX(-50%)",bottom:"rotate(180deg)",left:"translateY(50%) rotate(-90deg) translateX(50%)"}[i.placedSide],visibility:i.shouldHideArrow?"hidden":void 0},children:(0,r.jsx)(eO,{...o,ref:t,style:{...o.style,display:"block"}})})});function eX(e){return null!==e}eG.displayName=e$;var eZ=e=>({name:"transformOrigin",options:e,fn(t){var n,r,o,i,l;let{placement:a,rects:s,middlewareData:c}=t,u=(null==(n=c.arrow)?void 0:n.centerOffset)!==0,f=u?0:e.arrowWidth,d=u?0:e.arrowHeight,[p,h]=eJ(a),m={start:"0%",center:"50%",end:"100%"}[h],g=(null!=(i=null==(r=c.arrow)?void 0:r.x)?i:0)+f/2,v=(null!=(l=null==(o=c.arrow)?void 0:o.y)?l:0)+d/2,y="",x="";return"bottom"===p?(y=u?m:"".concat(g,"px"),x="".concat(-d,"px")):"top"===p?(y=u?m:"".concat(g,"px"),x="".concat(s.floating.height+d,"px")):"right"===p?(y="".concat(-d,"px"),x=u?m:"".concat(v,"px")):"left"===p&&(y="".concat(s.floating.width+d,"px"),x=u?m:"".concat(v,"px")),{data:{x:y,y:x}}}});function eJ(e){let[t,n="center"]=e.split("-");return[t,n]}var eU=n(4378),e0=n(8905),e1=n(9708),e2=n(5845),e5=n(8168),e9=n(3795),e8="Popover",[e4,e6]=(0,a.A)(e8,[eH]),e3=eH(),[e7,te]=e4(e8),tt=e=>{let{__scopePopover:t,children:n,open:i,defaultOpen:l,onOpenChange:a,modal:s=!1}=e,c=e3(t),u=o.useRef(null),[d,p]=o.useState(!1),[h,m]=(0,e2.i)({prop:i,defaultProp:null!=l&&l,onChange:a,caller:e8});return(0,r.jsx)(eI,{...c,children:(0,r.jsx)(e7,{scope:t,contentId:(0,f.B)(),triggerRef:u,open:h,onOpenChange:m,onOpenToggle:o.useCallback(()=>m(e=>!e),[m]),hasCustomAnchor:d,onCustomAnchorAdd:o.useCallback(()=>p(!0),[]),onCustomAnchorRemove:o.useCallback(()=>p(!1),[]),modal:s,children:n})})};tt.displayName=e8;var tn="PopoverAnchor";o.forwardRef((e,t)=>{let{__scopePopover:n,...i}=e,l=te(tn,n),a=e3(n),{onCustomAnchorAdd:s,onCustomAnchorRemove:c}=l;return o.useEffect(()=>(s(),()=>c()),[s,c]),(0,r.jsx)(eB,{...a,...i,ref:t})}).displayName=tn;var tr="PopoverTrigger",to=o.forwardRef((e,t)=>{let{__scopePopover:n,...o}=e,a=te(tr,n),s=e3(n),c=(0,l.s)(t,a.triggerRef),u=(0,r.jsx)(eL.sG.button,{type:"button","aria-haspopup":"dialog","aria-expanded":a.open,"aria-controls":a.contentId,"data-state":tg(a.open),...o,ref:c,onClick:(0,i.m)(e.onClick,a.onOpenToggle)});return a.hasCustomAnchor?u:(0,r.jsx)(eB,{asChild:!0,...s,children:u})});to.displayName=tr;var ti="PopoverPortal",[tl,ta]=e4(ti,{forceMount:void 0}),ts=e=>{let{__scopePopover:t,forceMount:n,children:o,container:i}=e,l=te(ti,t);return(0,r.jsx)(tl,{scope:t,forceMount:n,children:(0,r.jsx)(e0.C,{present:n||l.open,children:(0,r.jsx)(eU.Z,{asChild:!0,container:i,children:o})})})};ts.displayName=ti;var tc="PopoverContent",tu=o.forwardRef((e,t)=>{let n=ta(tc,e.__scopePopover),{forceMount:o=n.forceMount,...i}=e,l=te(tc,e.__scopePopover);return(0,r.jsx)(e0.C,{present:o||l.open,children:l.modal?(0,r.jsx)(td,{...i,ref:t}):(0,r.jsx)(tp,{...i,ref:t})})});tu.displayName=tc;var tf=(0,e1.TL)("PopoverContent.RemoveScroll"),td=o.forwardRef((e,t)=>{let n=te(tc,e.__scopePopover),a=o.useRef(null),s=(0,l.s)(t,a),c=o.useRef(!1);return o.useEffect(()=>{let e=a.current;if(e)return(0,e5.Eq)(e)},[]),(0,r.jsx)(e9.A,{as:tf,allowPinchZoom:!0,children:(0,r.jsx)(th,{...e,ref:s,trapFocus:n.open,disableOutsidePointerEvents:!0,onCloseAutoFocus:(0,i.m)(e.onCloseAutoFocus,e=>{var t;e.preventDefault(),c.current||null==(t=n.triggerRef.current)||t.focus()}),onPointerDownOutside:(0,i.m)(e.onPointerDownOutside,e=>{let t=e.detail.originalEvent,n=0===t.button&&!0===t.ctrlKey;c.current=2===t.button||n},{checkForDefaultPrevented:!1}),onFocusOutside:(0,i.m)(e.onFocusOutside,e=>e.preventDefault(),{checkForDefaultPrevented:!1})})})}),tp=o.forwardRef((e,t)=>{let n=te(tc,e.__scopePopover),i=o.useRef(!1),l=o.useRef(!1);return(0,r.jsx)(th,{...e,ref:t,trapFocus:!1,disableOutsidePointerEvents:!1,onCloseAutoFocus:t=>{var r,o;null==(r=e.onCloseAutoFocus)||r.call(e,t),t.defaultPrevented||(i.current||null==(o=n.triggerRef.current)||o.focus(),t.preventDefault()),i.current=!1,l.current=!1},onInteractOutside:t=>{var r,o;null==(r=e.onInteractOutside)||r.call(e,t),t.defaultPrevented||(i.current=!0,"pointerdown"===t.detail.originalEvent.type&&(l.current=!0));let a=t.target;(null==(o=n.triggerRef.current)?void 0:o.contains(a))&&t.preventDefault(),"focusin"===t.detail.originalEvent.type&&l.current&&t.preventDefault()}})}),th=o.forwardRef((e,t)=>{let{__scopePopover:n,trapFocus:o,onOpenAutoFocus:i,onCloseAutoFocus:l,disableOutsidePointerEvents:a,onEscapeKeyDown:f,onPointerDownOutside:d,onFocusOutside:p,onInteractOutside:h,...m}=e,g=te(tc,n),v=e3(n);return(0,c.Oh)(),(0,r.jsx)(u.n,{asChild:!0,loop:!0,trapped:o,onMountAutoFocus:i,onUnmountAutoFocus:l,children:(0,r.jsx)(s.qW,{asChild:!0,disableOutsidePointerEvents:a,onInteractOutside:h,onEscapeKeyDown:f,onPointerDownOutside:d,onFocusOutside:p,onDismiss:()=>g.onOpenChange(!1),children:(0,r.jsx)(eq,{"data-state":tg(g.open),role:"dialog",id:g.contentId,...v,...m,ref:t,style:{...m.style,"--radix-popover-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-popover-content-available-width":"var(--radix-popper-available-width)","--radix-popover-content-available-height":"var(--radix-popper-available-height)","--radix-popover-trigger-width":"var(--radix-popper-anchor-width)","--radix-popover-trigger-height":"var(--radix-popper-anchor-height)"}})})})}),tm="PopoverClose";function tg(e){return e?"open":"closed"}o.forwardRef((e,t)=>{let{__scopePopover:n,...o}=e,l=te(tm,n);return(0,r.jsx)(eL.sG.button,{type:"button",...o,ref:t,onClick:(0,i.m)(e.onClick,()=>l.onOpenChange(!1))})}).displayName=tm,o.forwardRef((e,t)=>{let{__scopePopover:n,...o}=e,i=e3(n);return(0,r.jsx)(eG,{...i,...o,ref:t})}).displayName="PopoverArrow";var tv=n(9688);let ty=tt,tx=to,tw=o.forwardRef((e,t)=>{let{className:n,align:o="center",sideOffset:i=4,...l}=e;return(0,r.jsx)(ts,{children:(0,r.jsx)(tu,{ref:t,align:o,sideOffset:i,side:"bottom",className:(0,tv.QP)("z-50 min-w-[220px] max-w-[98vw] rounded-lg border bg-fd-popover p-2 text-sm text-fd-popover-foreground shadow-lg focus-visible:outline-none data-[state=closed]:animate-fd-popover-out data-[state=open]:animate-fd-popover-in",n),...l})})});tw.displayName=tu.displayName},910:(e,t,n)=>{n.d(t,{ThemeToggle:()=>h});var r=n(5155),o=n(2085),i=n(3536);let l=(0,i.A)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),a=(0,i.A)("moon",[["path",{d:"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z",key:"a7tn18"}]]),s=(0,i.A)("airplay",[["path",{d:"M5 17H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h16a2 2 0 0 1 2 2v10a2 2 0 0 1-2 2h-1",key:"ns4c3b"}],["path",{d:"m12 15 5 6H7Z",key:"14qnn2"}]]);var c=n(1362),u=n(2115),f=n(9688);let d=(0,o.F)("size-6.5 rounded-full p-1.5 text-fd-muted-foreground",{variants:{active:{true:"bg-fd-accent text-fd-accent-foreground",false:"text-fd-muted-foreground"}}}),p=[["light",l],["dark",a],["system",s]];function h(e){let{className:t,mode:n="light-dark",...o}=e,{setTheme:i,theme:l,resolvedTheme:a}=(0,c.D)(),[s,h]=(0,u.useState)(!1);(0,u.useLayoutEffect)(()=>{h(!0)},[]);let m=(0,f.QP)("inline-flex items-center rounded-full border p-1",t);if("light-dark"===n){let e=s?a:null;return(0,r.jsx)("button",{className:m,"aria-label":"Toggle Theme",onClick:()=>i("light"===e?"dark":"light"),"data-theme-toggle":"",...o,children:p.map(t=>{let[n,o]=t;if("system"!==n)return(0,r.jsx)(o,{fill:"currentColor",className:(0,f.QP)(d({active:e===n}))},n)})})}let g=s?l:null;return(0,r.jsx)("div",{className:m,"data-theme-toggle":"",...o,children:p.map(e=>{let[t,n]=e;return(0,r.jsx)("button",{"aria-label":t,className:(0,f.QP)(d({active:g===t})),onClick:()=>i(t),children:(0,r.jsx)(n,{className:"size-full",fill:"currentColor"})},t)})})}},1053:(e,t,n)=>{n.d(t,{LanguageToggle:()=>s,LanguageToggleText:()=>c});var r=n(5155),o=n(9697),i=n(408),l=n(9688),a=n(7936);function s(e){let t=(0,o.s9)();if(!t.locales)throw Error("Missing ``");return(0,r.jsxs)(i.AM,{children:[(0,r.jsx)(i.Wv,{"aria-label":t.text.chooseLanguage,...e,className:(0,l.QP)((0,a.r)({color:"ghost",className:"gap-1.5 p-1.5"}),e.className),children:e.children}),(0,r.jsxs)(i.hl,{className:"flex flex-col overflow-hidden p-0",children:[(0,r.jsx)("p",{className:"mb-1 p-2 text-xs font-medium text-fd-muted-foreground",children:t.text.chooseLanguage}),t.locales.map(e=>(0,r.jsx)("button",{type:"button",className:(0,l.QP)("p-2 text-start text-sm",e.locale===t.locale?"bg-fd-primary/10 font-medium text-fd-primary":"hover:bg-fd-accent hover:text-fd-accent-foreground"),onClick:()=>{var n;null==(n=t.onChange)||n.call(t,e.locale)},children:e.name},e.locale))]})]})}function c(e){var t,n;let i=(0,o.s9)(),l=null==(n=i.locales)||null==(t=n.find(e=>e.locale===i.locale))?void 0:t.name;return(0,r.jsx)("span",{...e,children:l})}},1362:(e,t,n)=>{n.d(t,{D:()=>c,N:()=>u});var r=n(2115),o=(e,t,n,r,o,i,l,a)=>{let s=document.documentElement,c=["light","dark"];function u(t){var n;(Array.isArray(e)?e:[e]).forEach(e=>{let n="class"===e,r=n&&i?o.map(e=>i[e]||e):o;n?(s.classList.remove(...r),s.classList.add(i&&i[t]?i[t]:t)):s.setAttribute(e,t)}),n=t,a&&c.includes(n)&&(s.style.colorScheme=n)}if(r)u(r);else try{let e=localStorage.getItem(t)||n,r=l&&"system"===e?window.matchMedia("(prefers-color-scheme: dark)").matches?"dark":"light":e;u(r)}catch(e){}},i=["light","dark"],l="(prefers-color-scheme: dark)",a=r.createContext(void 0),s={setTheme:e=>{},themes:[]},c=()=>{var e;return null!=(e=r.useContext(a))?e:s},u=e=>r.useContext(a)?r.createElement(r.Fragment,null,e.children):r.createElement(d,{...e}),f=["light","dark"],d=e=>{let{forcedTheme:t,disableTransitionOnChange:n=!1,enableSystem:o=!0,enableColorScheme:s=!0,storageKey:c="theme",themes:u=f,defaultTheme:d=o?"system":"light",attribute:v="data-theme",value:y,children:x,nonce:w,scriptProps:b}=e,[A,C]=r.useState(()=>h(c,d)),[k,R]=r.useState(()=>"system"===A?g():A),P=y?Object.values(y):u,E=r.useCallback(e=>{let t=e;if(!t)return;"system"===e&&o&&(t=g());let r=y?y[t]:t,l=n?m(w):null,a=document.documentElement,c=e=>{"class"===e?(a.classList.remove(...P),r&&a.classList.add(r)):e.startsWith("data-")&&(r?a.setAttribute(e,r):a.removeAttribute(e))};if(Array.isArray(v)?v.forEach(c):c(v),s){let e=i.includes(d)?d:null,n=i.includes(t)?t:e;a.style.colorScheme=n}null==l||l()},[w]),T=r.useCallback(e=>{let t="function"==typeof e?e(A):e;C(t);try{localStorage.setItem(c,t)}catch(e){}},[A]),S=r.useCallback(e=>{R(g(e)),"system"===A&&o&&!t&&E("system")},[A,t]);r.useEffect(()=>{let e=window.matchMedia(l);return e.addListener(S),S(e),()=>e.removeListener(S)},[S]),r.useEffect(()=>{let e=e=>{e.key===c&&(e.newValue?C(e.newValue):T(d))};return window.addEventListener("storage",e),()=>window.removeEventListener("storage",e)},[T]),r.useEffect(()=>{E(null!=t?t:A)},[t,A]);let j=r.useMemo(()=>({theme:A,setTheme:T,forcedTheme:t,resolvedTheme:"system"===A?k:A,themes:o?[...u,"system"]:u,systemTheme:o?k:void 0}),[A,T,t,k,o,u]);return r.createElement(a.Provider,{value:j},r.createElement(p,{forcedTheme:t,storageKey:c,attribute:v,enableSystem:o,enableColorScheme:s,defaultTheme:d,value:y,themes:u,nonce:w,scriptProps:b}),x)},p=r.memo(e=>{let{forcedTheme:t,storageKey:n,attribute:i,enableSystem:l,enableColorScheme:a,defaultTheme:s,value:c,themes:u,nonce:f,scriptProps:d}=e,p=JSON.stringify([i,n,s,t,u,c,l,a]).slice(1,-1);return r.createElement("script",{...d,suppressHydrationWarning:!0,nonce:"",dangerouslySetInnerHTML:{__html:"(".concat(o.toString(),")(").concat(p,")")}})}),h=(e,t)=>{let n;try{n=localStorage.getItem(e)||void 0}catch(e){}return n||t},m=e=>{let t=document.createElement("style");return e&&t.setAttribute("nonce",e),t.appendChild(document.createTextNode("*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}")),document.head.appendChild(t),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(t)},1)}},g=e=>(e||(e=window.matchMedia(l)),e.matches?"dark":"light")},4657:(e,t,n)=>{n.d(t,{BaseLinkItem:()=>s});var r=n(5155),o=n(9949),i=n(344),l=n(2115),a=n(5455);let s=(0,l.forwardRef)((e,t)=>{var n;let{item:l,...s}=e,c=(0,i.a8)(),u=null!=(n=l.active)?n:"url",f="none"!==u&&(0,a.$)(l.url,c,"nested-url"===u);return(0,r.jsx)(o.default,{ref:t,href:l.url,external:l.external,...s,"data-active":f,children:s.children})});s.displayName="BaseLinkItem"},5403:(e,t,n)=>{n.d(t,{LargeSearchToggle:()=>u,SearchToggle:()=>c});var r=n(5155),o=n(7543),i=n(8169),l=n(9697),a=n(9688),s=n(7936);function c(e){let{hideIfDisabled:t,size:n="icon",color:l="ghost",...c}=e,{setOpenSearch:u,enabled:f}=(0,i.$A)();return t&&!f?null:(0,r.jsx)("button",{type:"button",className:(0,a.QP)((0,s.r)({size:n,color:l}),c.className),"data-search":"","aria-label":"Open Search",onClick:()=>{u(!0)},children:(0,r.jsx)(o.A,{className:"p-px"})})}function u(e){let{hideIfDisabled:t,...n}=e,{enabled:s,hotKey:c,setOpenSearch:u}=(0,i.$A)(),{text:f}=(0,l.s9)();return t&&!s?null:(0,r.jsxs)("button",{type:"button","data-search-full":"",...n,className:(0,a.QP)("inline-flex items-center gap-2 rounded-full border bg-fd-secondary/50 p-1.5 text-sm text-fd-muted-foreground transition-colors hover:bg-fd-accent hover:text-fd-accent-foreground",n.className),onClick:()=>{u(!0)},children:[(0,r.jsx)(o.A,{className:"ms-1 size-4"}),f.search,(0,r.jsx)("div",{className:"ms-auto inline-flex gap-0.5",children:c.map((e,t)=>(0,r.jsx)("kbd",{className:"rounded-md border bg-fd-background px-1.5",children:e.display},t))})]})}},8169:(e,t,n)=>{n.d(t,{$A:()=>l,YL:()=>s});var r=n(5155),o=n(2115);let i=(0,n(344).q6)("SearchContext",{enabled:!1,hotKey:[],setOpenSearch:()=>void 0});function l(){return i.use()}function a(){let[e,t]=(0,o.useState)("⌘");return(0,o.useEffect)(()=>{window.navigator.userAgent.includes("Windows")&&t("Ctrl")},[]),e}function s(e){let{SearchDialog:t,children:n,preload:l=!0,options:s,hotKey:c=[{key:e=>e.metaKey||e.ctrlKey,display:(0,r.jsx)(a,{})},{key:"k",display:"K"}],links:u}=e,[f,d]=(0,o.useState)(!l&&void 0);return(0,o.useEffect)(()=>{let e=e=>{c.every(t=>"string"==typeof t.key?e.key===t.key:t.key(e))&&(d(!0),e.preventDefault())};return window.addEventListener("keydown",e),()=>{window.removeEventListener("keydown",e)}},[c]),(0,r.jsxs)(i.Provider,{value:(0,o.useMemo)(()=>({enabled:!0,hotKey:c,setOpenSearch:d}),[c]),children:[void 0!==f&&(0,r.jsx)(t,{open:f,onOpenChange:d,links:u,...s}),n]})}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/886.9b81414a450ef20f.js b/docs/_next/static/chunks/886.9b81414a450ef20f.js deleted file mode 100644 index faba843f..00000000 --- a/docs/_next/static/chunks/886.9b81414a450ef20f.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[886],{3522:(e,t,r)=>{r.d(t,{B:()=>function e(t,r=!1){for(let i of Object.keys(t))void 0===t[i]&&delete t[i],r&&"object"==typeof t[i]&&null!==t[i]?e(t[i],r):r&&Array.isArray(t[i])&&t[i].forEach(t=>e(t,r));return t}})},8886:(e,t,r)=>{r.d(t,{searchDocs:()=>o});var i=r(3522);async function o(e,t,r){let o=[],{index:n="default",client:l,params:u={}}=r;if("crawler"===n){let r=await l.search({...u,term:e,where:{category:t?{eq:t.slice(0,1).toUpperCase()+t.slice(1)}:void 0,...u.where},limit:10});if(!r)return o;if("crawler"===n){for(let e of r.hits){let t=e.document;o.push({id:e.id,type:"page",content:t.title,url:t.path},{id:"page"+e.id,type:"text",content:t.content,url:t.path})}return o}}let a={...u,term:e,where:(0,i.B)({tag:t,...u.where}),groupBy:{properties:["page_id"],maxResult:7,...u.groupBy}},c=await l.search(a);if(!c||!c.groups)return o;for(let e of c.groups){let t=!1;for(let r of e.result){let e=r.document;t||(o.push({id:e.page_id,type:"page",content:e.title,url:e.url}),t=!0),o.push({id:e.id,content:e.content,type:e.content===e.section?"heading":"text",url:e.section_id?`${e.url}#${e.section_id}`:e.url})}}return o}r(9189)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/920-aed94374b29ba4e2.js b/docs/_next/static/chunks/920-aed94374b29ba4e2.js deleted file mode 100644 index de668359..00000000 --- a/docs/_next/static/chunks/920-aed94374b29ba4e2.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[920],{2293:(e,t,n)=>{n.d(t,{Oh:()=>o});var r=n(2115),u=0;function o(){r.useEffect(()=>{var e,t;let n=document.querySelectorAll("[data-radix-focus-guard]");return document.body.insertAdjacentElement("afterbegin",null!=(e=n[0])?e:a()),document.body.insertAdjacentElement("beforeend",null!=(t=n[1])?t:a()),u++,()=>{1===u&&document.querySelectorAll("[data-radix-focus-guard]").forEach(e=>e.remove()),u--}},[])}function a(){let e=document.createElement("span");return e.setAttribute("data-radix-focus-guard",""),e.tabIndex=0,e.style.outline="none",e.style.opacity="0",e.style.position="fixed",e.style.pointerEvents="none",e}},4378:(e,t,n)=>{n.d(t,{Z:()=>s});var r=n(2115),u=n(7650),o=n(3655),a=n(2712),i=n(5155),s=r.forwardRef((e,t)=>{var n,s;let{container:l,...c}=e,[d,f]=r.useState(!1);(0,a.N)(()=>f(!0),[]);let v=l||d&&(null==(s=globalThis)||null==(n=s.document)?void 0:n.body);return v?u.createPortal((0,i.jsx)(o.sG.div,{...c,ref:t}),v):null});s.displayName="Portal"},7543:(e,t,n)=>{n.d(t,{A:()=>r});let r=(0,n(3536).A)("search",[["circle",{cx:"11",cy:"11",r:"8",key:"4ej97u"}],["path",{d:"m21 21-4.3-4.3",key:"1qie3q"}]])},7900:(e,t,n)=>{n.d(t,{n:()=>d});var r=n(2115),u=n(6101),o=n(3655),a=n(9033),i=n(5155),s="focusScope.autoFocusOnMount",l="focusScope.autoFocusOnUnmount",c={bubbles:!1,cancelable:!0},d=r.forwardRef((e,t)=>{let{loop:n=!1,trapped:d=!1,onMountAutoFocus:E,onUnmountAutoFocus:y,...h}=e,[b,w]=r.useState(null),g=(0,a.c)(E),L=(0,a.c)(y),A=r.useRef(null),C=(0,u.s)(t,e=>w(e)),k=r.useRef({paused:!1,pause(){this.paused=!0},resume(){this.paused=!1}}).current;r.useEffect(()=>{if(d){let e=function(e){if(k.paused||!b)return;let t=e.target;b.contains(t)?A.current=t:m(A.current,{select:!0})},t=function(e){if(k.paused||!b)return;let t=e.relatedTarget;null!==t&&(b.contains(t)||m(A.current,{select:!0}))};document.addEventListener("focusin",e),document.addEventListener("focusout",t);let n=new MutationObserver(function(e){if(document.activeElement===document.body)for(let t of e)t.removedNodes.length>0&&m(b)});return b&&n.observe(b,{childList:!0,subtree:!0}),()=>{document.removeEventListener("focusin",e),document.removeEventListener("focusout",t),n.disconnect()}}},[d,b,k.paused]),r.useEffect(()=>{if(b){p.add(k);let e=document.activeElement;if(!b.contains(e)){let t=new CustomEvent(s,c);b.addEventListener(s,g),b.dispatchEvent(t),t.defaultPrevented||(function(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=document.activeElement;for(let r of e)if(m(r,{select:t}),document.activeElement!==n)return}(f(b).filter(e=>"A"!==e.tagName),{select:!0}),document.activeElement===e&&m(b))}return()=>{b.removeEventListener(s,g),setTimeout(()=>{let t=new CustomEvent(l,c);b.addEventListener(l,L),b.dispatchEvent(t),t.defaultPrevented||m(null!=e?e:document.body,{select:!0}),b.removeEventListener(l,L),p.remove(k)},0)}}},[b,g,L,k]);let D=r.useCallback(e=>{if(!n&&!d||k.paused)return;let t="Tab"===e.key&&!e.altKey&&!e.ctrlKey&&!e.metaKey,r=document.activeElement;if(t&&r){let t=e.currentTarget,[u,o]=function(e){let t=f(e);return[v(t,e),v(t.reverse(),e)]}(t);u&&o?e.shiftKey||r!==o?e.shiftKey&&r===u&&(e.preventDefault(),n&&m(o,{select:!0})):(e.preventDefault(),n&&m(u,{select:!0})):r===t&&e.preventDefault()}},[n,d,k.paused]);return(0,i.jsx)(o.sG.div,{tabIndex:-1,...h,ref:C,onKeyDown:D})});function f(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function v(e,t){for(let n of e)if(!function(e,t){let{upTo:n}=t;if("hidden"===getComputedStyle(e).visibility)return!0;for(;e&&(void 0===n||e!==n);){if("none"===getComputedStyle(e).display)return!0;e=e.parentElement}return!1}(n,{upTo:t}))return n}function m(e){let{select:t=!1}=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(e&&e.focus){var n;let r=document.activeElement;e.focus({preventScroll:!0}),e!==r&&(n=e)instanceof HTMLInputElement&&"select"in n&&t&&e.select()}}d.displayName="FocusScope";var p=function(){let e=[];return{add(t){let n=e[0];t!==n&&(null==n||n.pause()),(e=E(e,t)).unshift(t)},remove(t){var n;null==(n=(e=E(e,t))[0])||n.resume()}}}();function E(e,t){let n=[...e],r=n.indexOf(t);return -1!==r&&n.splice(r,1),n}},8168:(e,t,n)=>{n.d(t,{Eq:()=>c});var r=function(e){return"undefined"==typeof document?null:(Array.isArray(e)?e[0]:e).ownerDocument.body},u=new WeakMap,o=new WeakMap,a={},i=0,s=function(e){return e&&(e.host||s(e.parentNode))},l=function(e,t,n,r){var l=(Array.isArray(e)?e:[e]).map(function(e){if(t.contains(e))return e;var n=s(e);return n&&t.contains(n)?n:(console.error("aria-hidden",e,"in not contained inside",t,". Doing nothing"),null)}).filter(function(e){return!!e});a[n]||(a[n]=new WeakMap);var c=a[n],d=[],f=new Set,v=new Set(l),m=function(e){!e||f.has(e)||(f.add(e),m(e.parentNode))};l.forEach(m);var p=function(e){!e||v.has(e)||Array.prototype.forEach.call(e.children,function(e){if(f.has(e))p(e);else try{var t=e.getAttribute(r),a=null!==t&&"false"!==t,i=(u.get(e)||0)+1,s=(c.get(e)||0)+1;u.set(e,i),c.set(e,s),d.push(e),1===i&&a&&o.set(e,!0),1===s&&e.setAttribute(n,"true"),a||e.setAttribute(r,"true")}catch(t){console.error("aria-hidden: cannot operate on ",e,t)}})};return p(t),f.clear(),i++,function(){d.forEach(function(e){var t=u.get(e)-1,a=c.get(e)-1;u.set(e,t),c.set(e,a),t||(o.has(e)||e.removeAttribute(r),o.delete(e)),a||e.removeAttribute(n)}),--i||(u=new WeakMap,u=new WeakMap,o=new WeakMap,a={})}},c=function(e,t,n){void 0===n&&(n="data-aria-hidden");var u=Array.from(Array.isArray(e)?e:[e]),o=t||r(e);return o?(u.push.apply(u,Array.from(o.querySelectorAll("[aria-live]"))),l(u,o,n,"aria-hidden")):function(){return null}}},9178:(e,t,n)=>{n.d(t,{qW:()=>f});var r,u=n(2115),o=n(5185),a=n(3655),i=n(6101),s=n(9033),l=n(5155),c="dismissableLayer.update",d=u.createContext({layers:new Set,layersWithOutsidePointerEventsDisabled:new Set,branches:new Set}),f=u.forwardRef((e,t)=>{var n,f;let{disableOutsidePointerEvents:p=!1,onEscapeKeyDown:E,onPointerDownOutside:y,onFocusOutside:h,onInteractOutside:b,onDismiss:w,...g}=e,L=u.useContext(d),[A,C]=u.useState(null),k=null!=(f=null==A?void 0:A.ownerDocument)?f:null==(n=globalThis)?void 0:n.document,[,D]=u.useState({}),P=(0,i.s)(t,e=>C(e)),N=Array.from(L.layers),[S]=[...L.layersWithOutsidePointerEventsDisabled].slice(-1),T=N.indexOf(S),x=A?N.indexOf(A):-1,O=L.layersWithOutsidePointerEventsDisabled.size>0,F=x>=T,W=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(t=globalThis)?void 0:t.document,r=(0,s.c)(e),o=u.useRef(!1),a=u.useRef(()=>{});return u.useEffect(()=>{let e=e=>{if(e.target&&!o.current){let t=function(){m("dismissableLayer.pointerDownOutside",r,u,{discrete:!0})},u={originalEvent:e};"touch"===e.pointerType?(n.removeEventListener("click",a.current),a.current=t,n.addEventListener("click",a.current,{once:!0})):t()}else n.removeEventListener("click",a.current);o.current=!1},t=window.setTimeout(()=>{n.addEventListener("pointerdown",e)},0);return()=>{window.clearTimeout(t),n.removeEventListener("pointerdown",e),n.removeEventListener("click",a.current)}},[n,r]),{onPointerDownCapture:()=>o.current=!0}}(e=>{let t=e.target,n=[...L.branches].some(e=>e.contains(t));F&&!n&&(null==y||y(e),null==b||b(e),e.defaultPrevented||null==w||w())},k),R=function(e){var t;let n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null==(t=globalThis)?void 0:t.document,r=(0,s.c)(e),o=u.useRef(!1);return u.useEffect(()=>{let e=e=>{e.target&&!o.current&&m("dismissableLayer.focusOutside",r,{originalEvent:e},{discrete:!1})};return n.addEventListener("focusin",e),()=>n.removeEventListener("focusin",e)},[n,r]),{onFocusCapture:()=>o.current=!0,onBlurCapture:()=>o.current=!1}}(e=>{let t=e.target;![...L.branches].some(e=>e.contains(t))&&(null==h||h(e),null==b||b(e),e.defaultPrevented||null==w||w())},k);return!function(e,t=globalThis?.document){let n=(0,s.c)(e);u.useEffect(()=>{let e=e=>{"Escape"===e.key&&n(e)};return t.addEventListener("keydown",e,{capture:!0}),()=>t.removeEventListener("keydown",e,{capture:!0})},[n,t])}(e=>{x===L.layers.size-1&&(null==E||E(e),!e.defaultPrevented&&w&&(e.preventDefault(),w()))},k),u.useEffect(()=>{if(A)return p&&(0===L.layersWithOutsidePointerEventsDisabled.size&&(r=k.body.style.pointerEvents,k.body.style.pointerEvents="none"),L.layersWithOutsidePointerEventsDisabled.add(A)),L.layers.add(A),v(),()=>{p&&1===L.layersWithOutsidePointerEventsDisabled.size&&(k.body.style.pointerEvents=r)}},[A,k,p,L]),u.useEffect(()=>()=>{A&&(L.layers.delete(A),L.layersWithOutsidePointerEventsDisabled.delete(A),v())},[A,L]),u.useEffect(()=>{let e=()=>D({});return document.addEventListener(c,e),()=>document.removeEventListener(c,e)},[]),(0,l.jsx)(a.sG.div,{...g,ref:P,style:{pointerEvents:O?F?"auto":"none":void 0,...e.style},onFocusCapture:(0,o.m)(e.onFocusCapture,R.onFocusCapture),onBlurCapture:(0,o.m)(e.onBlurCapture,R.onBlurCapture),onPointerDownCapture:(0,o.m)(e.onPointerDownCapture,W.onPointerDownCapture)})});function v(){let e=new CustomEvent(c);document.dispatchEvent(e)}function m(e,t,n,r){let{discrete:u}=r,o=n.originalEvent.target,i=new CustomEvent(e,{bubbles:!1,cancelable:!0,detail:n});t&&o.addEventListener(e,t,{once:!0}),u?(0,a.hO)(o,i):o.dispatchEvent(i)}f.displayName="DismissableLayer",u.forwardRef((e,t)=>{let n=u.useContext(d),r=u.useRef(null),o=(0,i.s)(t,r);return u.useEffect(()=>{let e=r.current;if(e)return n.branches.add(e),()=>{n.branches.delete(e)}},[n.branches]),(0,l.jsx)(a.sG.div,{...e,ref:o})}).displayName="DismissableLayerBranch"}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/996.84f6c850bac17e1e.js b/docs/_next/static/chunks/996.84f6c850bac17e1e.js deleted file mode 100644 index f40409c4..00000000 --- a/docs/_next/static/chunks/996.84f6c850bac17e1e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[996],{1615:(e,t,a)=>{a.d(t,{fetchDocs:()=>s}),a(9189);var r=new Map;async function s(e,t,a,s){let c=new URLSearchParams;c.set("query",e),t&&c.set("locale",t),a&&c.set("tag",a);let n=`${s.api??"/api/search"}?${c}`,i=r.get(n);if(i)return i;let h=await fetch(n);if(!h.ok)throw Error(await h.text());let l=await h.json();return r.set(n,l),l}}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/997-04a205149f54dcb1.js b/docs/_next/static/chunks/997-04a205149f54dcb1.js deleted file mode 100644 index 9eb1ae84..00000000 --- a/docs/_next/static/chunks/997-04a205149f54dcb1.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[997],{244:(e,r,t)=>{function n(e,r,t){let{includePage:n=!0,includeSeparator:o=!1,includeRoot:l}=t,a=[];return r.forEach((e,t)=>{if("separator"===e.type&&o&&a.push({name:e.name}),"folder"===e.type){let n=r.at(t+1);if(n&&e.index===n)return;if(e.root){a=[];return}a.push({name:e.name,url:e.index?.url})}"page"===e.type&&n&&a.push({name:e.name,url:e.url})}),l&&a.unshift({name:e.name,url:"object"==typeof l?l.url:void 0}),a}t.d(r,{Pp:()=>n,oe:()=>function e(r,t){let n;for(let o of(t.endsWith("/")&&(t=t.slice(0,-1)),r)){if("separator"===o.type&&(n=o),"folder"===o.type){if(o.index?.url===t){let e=[];return n&&e.push(n),e.push(o,o.index),e}let r=e(o.children,t);if(r)return r.unshift(o),n&&r.unshift(n),r}if("page"===o.type&&o.url===t){let e=[];return n&&e.push(n),e.push(o),e}}return null}}),t(9189),t(2115)},263:(e,r,t)=>{t.d(r,{G:()=>c,c:()=>d});var n=t(5155),o=t(2115),l=t(344),a=t(5547),i=t(3259);let s=(0,l.q6)("SidebarContext");function d(){return s.use()}function c(e){let{children:r}=e,t=(0,o.useRef)(!0),[d,c]=(0,o.useState)(!1),[u,f]=(0,o.useState)(!1),p=(0,l.a8)();return(0,i.T)(p,()=>{t.current&&c(!1),t.current=!0}),(0,n.jsx)(s.Provider,{value:(0,o.useMemo)(()=>({open:d,setOpen:c,collapsed:u,setCollapsed:f,closeOnRedirect:t}),[d,u]),children:(0,n.jsx)(a.GB,{open:d,onOpenChange:c,children:r})})}},2292:(e,r,t)=>{t.d(r,{UC:()=>F,Y9:()=>X,bL:()=>Y,l9:()=>q,q7:()=>B});var n=t(2115),o=t(6081),l=t(7328),a=t(6101),i=t(5185),s=t(5845),d=t(3655),c=t(8106),u=t(1285),f=t(4315),p=t(5155),h="Accordion",v=["Home","End","ArrowDown","ArrowUp","ArrowLeft","ArrowRight"],[w,m,b]=(0,l.N)(h),[g,x]=(0,o.A)(h,[b,c.z3]),y=(0,c.z3)(),C=n.forwardRef((e,r)=>{let{type:t,...n}=e;return(0,p.jsx)(w.Provider,{scope:e.__scopeAccordion,children:"multiple"===t?(0,p.jsx)(T,{...n,ref:r}):(0,p.jsx)(A,{...n,ref:r})})});C.displayName=h;var[S,R]=g(h),[j,E]=g(h,{collapsible:!1}),A=n.forwardRef((e,r)=>{let{value:t,defaultValue:o,onValueChange:l=()=>{},collapsible:a=!1,...i}=e,[d,c]=(0,s.i)({prop:t,defaultProp:null!=o?o:"",onChange:l,caller:h});return(0,p.jsx)(S,{scope:e.__scopeAccordion,value:n.useMemo(()=>d?[d]:[],[d]),onItemOpen:c,onItemClose:n.useCallback(()=>a&&c(""),[a,c]),children:(0,p.jsx)(j,{scope:e.__scopeAccordion,collapsible:a,children:(0,p.jsx)(L,{...i,ref:r})})})}),T=n.forwardRef((e,r)=>{let{value:t,defaultValue:o,onValueChange:l=()=>{},...a}=e,[i,d]=(0,s.i)({prop:t,defaultProp:null!=o?o:[],onChange:l,caller:h}),c=n.useCallback(e=>d(function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return[...r,e]}),[d]),u=n.useCallback(e=>d(function(){let r=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[];return r.filter(r=>r!==e)}),[d]);return(0,p.jsx)(S,{scope:e.__scopeAccordion,value:i,onItemOpen:c,onItemClose:u,children:(0,p.jsx)(j,{scope:e.__scopeAccordion,collapsible:!0,children:(0,p.jsx)(L,{...a,ref:r})})})}),[N,P]=g(h),L=n.forwardRef((e,r)=>{let{__scopeAccordion:t,disabled:o,dir:l,orientation:s="vertical",...c}=e,u=n.useRef(null),h=(0,a.s)(u,r),b=m(t),g="ltr"===(0,f.jH)(l),x=(0,i.m)(e.onKeyDown,e=>{var r;if(!v.includes(e.key))return;let t=e.target,n=b().filter(e=>{var r;return!(null==(r=e.ref.current)?void 0:r.disabled)}),o=n.findIndex(e=>e.ref.current===t),l=n.length;if(-1===o)return;e.preventDefault();let a=o,i=l-1,d=()=>{(a=o+1)>i&&(a=0)},c=()=>{(a=o-1)<0&&(a=i)};switch(e.key){case"Home":a=0;break;case"End":a=i;break;case"ArrowRight":"horizontal"===s&&(g?d():c());break;case"ArrowDown":"vertical"===s&&d();break;case"ArrowLeft":"horizontal"===s&&(g?c():d());break;case"ArrowUp":"vertical"===s&&c()}null==(r=n[a%l].ref.current)||r.focus()});return(0,p.jsx)(N,{scope:t,disabled:o,direction:l,orientation:s,children:(0,p.jsx)(w.Slot,{scope:t,children:(0,p.jsx)(d.sG.div,{...c,"data-orientation":s,ref:h,onKeyDown:o?void 0:x})})})}),_="AccordionItem",[D,k]=g(_),I=n.forwardRef((e,r)=>{let{__scopeAccordion:t,value:n,...o}=e,l=P(_,t),a=R(_,t),i=y(t),s=(0,u.B)(),d=n&&a.value.includes(n)||!1,f=l.disabled||e.disabled;return(0,p.jsx)(D,{scope:t,open:d,disabled:f,triggerId:s,children:(0,p.jsx)(c.bL,{"data-orientation":l.orientation,"data-state":M(d),...i,...o,ref:r,disabled:f,open:d,onOpenChange:e=>{e?a.onItemOpen(n):a.onItemClose(n)}})})});I.displayName=_;var O="AccordionHeader",z=n.forwardRef((e,r)=>{let{__scopeAccordion:t,...n}=e,o=P(h,t),l=k(O,t);return(0,p.jsx)(d.sG.h3,{"data-orientation":o.orientation,"data-state":M(l.open),"data-disabled":l.disabled?"":void 0,...n,ref:r})});z.displayName=O;var H="AccordionTrigger",W=n.forwardRef((e,r)=>{let{__scopeAccordion:t,...n}=e,o=P(h,t),l=k(H,t),a=E(H,t),i=y(t);return(0,p.jsx)(w.ItemSlot,{scope:t,children:(0,p.jsx)(c.l9,{"aria-disabled":l.open&&!a.collapsible||void 0,"data-orientation":o.orientation,id:l.triggerId,...i,...n,ref:r})})});W.displayName=H;var U="AccordionContent",G=n.forwardRef((e,r)=>{let{__scopeAccordion:t,...n}=e,o=P(h,t),l=k(U,t),a=y(t);return(0,p.jsx)(c.UC,{role:"region","aria-labelledby":l.triggerId,"data-orientation":o.orientation,...a,...n,ref:r,style:{"--radix-accordion-content-height":"var(--radix-collapsible-content-height)","--radix-accordion-content-width":"var(--radix-collapsible-content-width)",...e.style}})});function M(e){return e?"open":"closed"}G.displayName=U;var Y=C,B=I,X=z,q=W,F=G},2829:(e,r,t)=>{t.d(r,{A:()=>n});let n=(0,t(3536).A)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},3259:(e,r,t)=>{t.d(r,{T:()=>n.T});var n=t(5936);t(9189)},3359:(e,r,t)=>{t.d(r,{A:()=>u});var n=t(2115);let o=e=>e.replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase(),l=e=>e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,r,t)=>t?t.toUpperCase():r.toLowerCase()),a=e=>{let r=l(e);return r.charAt(0).toUpperCase()+r.slice(1)},i=function(){for(var e=arguments.length,r=Array(e),t=0;t!!e&&""!==e.trim()&&t.indexOf(e)===r).join(" ").trim()},s=e=>{for(let r in e)if(r.startsWith("aria-")||"role"===r||"title"===r)return!0};var d={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let c=(0,n.forwardRef)((e,r)=>{let{color:t="currentColor",size:o=24,strokeWidth:l=2,absoluteStrokeWidth:a,className:c="",children:u,iconNode:f,...p}=e;return(0,n.createElement)("svg",{ref:r,...d,width:o,height:o,stroke:t,strokeWidth:a?24*Number(l)/Number(o):l,className:i("lucide",c),...!u&&!s(p)&&{"aria-hidden":"true"},...p},[...f.map(e=>{let[r,t]=e;return(0,n.createElement)(r,t)}),...Array.isArray(u)?u:[u]])}),u=((e,r)=>{let t=(0,n.forwardRef)((t,l)=>{let{className:s,...d}=t;return(0,n.createElement)(c,{ref:l,iconNode:r,className:i("lucide-".concat(o(a(e))),"lucide-".concat(e),s),...d})});return t.displayName=a(e),t})("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]])},5547:(e,r,t)=>{t.d(r,{GB:()=>s,Pg:()=>c,x2:()=>d}),t(9189);var n=t(2115),o=t(3795),l=t(5155),a=(0,n.createContext)(null);function i(){let e=(0,n.useContext)(a);if(!e)throw Error("Missing sidebar provider");return e}function s(e){let[r,t]=void 0===e.open?(0,n.useState)(!1):[e.open,e.onOpenChange];return(0,l.jsx)(a.Provider,{value:(0,n.useMemo)(()=>({open:r,setOpen:null!=t?t:()=>void 0}),[r,t]),children:e.children})}function d(e){let{as:r,...t}=e,{open:n,setOpen:o}=i();return(0,l.jsx)(null!=r?r:"button",{"aria-label":"Toggle Sidebar","data-open":n,onClick:()=>{o(!n)},...t})}function c(e){let{as:r,blockScrollingWidth:t,removeScrollOn:a=t?"(width < ".concat(t,"px)"):void 0,...s}=e,{open:d}=i(),[c,u]=(0,n.useState)(!1);return(0,n.useEffect)(()=>{if(!a)return;let e=window.matchMedia(a),r=()=>{u(e.matches)};return r(),e.addEventListener("change",r),()=>{e.removeEventListener("change",r)}},[a]),(0,l.jsx)(o.A,{as:null!=r?r:"aside","data-open":d,enabled:!!(c&&d),...s,children:s.children})}},5675:(e,r,t)=>{t.d(r,{FK:()=>F,$H:()=>$,Gl:()=>K});var n=t(5155),o=t(2115),l=t(3655),a=t(8905),i=t(6081),s=t(6101),d=t(9033),c=t(4315),u=t(2712),f=t(5185),p="ScrollArea",[h,v]=(0,i.A)(p),[w,m]=h(p),b=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,type:a="hover",dir:i,scrollHideDelay:d=600,...u}=e,[f,p]=o.useState(null),[h,v]=o.useState(null),[m,b]=o.useState(null),[g,x]=o.useState(null),[y,C]=o.useState(null),[S,R]=o.useState(0),[j,E]=o.useState(0),[A,T]=o.useState(!1),[N,P]=o.useState(!1),L=(0,s.s)(r,e=>p(e)),_=(0,c.jH)(i);return(0,n.jsx)(w,{scope:t,type:a,dir:_,scrollHideDelay:d,scrollArea:f,viewport:h,onViewportChange:v,content:m,onContentChange:b,scrollbarX:g,onScrollbarXChange:x,scrollbarXEnabled:A,onScrollbarXEnabledChange:T,scrollbarY:y,onScrollbarYChange:C,scrollbarYEnabled:N,onScrollbarYEnabledChange:P,onCornerWidthChange:R,onCornerHeightChange:E,children:(0,n.jsx)(l.sG.div,{dir:_,...u,ref:L,style:{position:"relative","--radix-scroll-area-corner-width":S+"px","--radix-scroll-area-corner-height":j+"px",...e.style}})})});b.displayName=p;var g="ScrollAreaViewport",x=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,children:a,nonce:i,...d}=e,c=m(g,t),u=o.useRef(null),f=(0,s.s)(r,u,c.onViewportChange);return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-scroll-area-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-scroll-area-viewport]::-webkit-scrollbar{display:none}"},nonce:i}),(0,n.jsx)(l.sG.div,{"data-radix-scroll-area-viewport":"",...d,ref:f,style:{overflowX:c.scrollbarXEnabled?"scroll":"hidden",overflowY:c.scrollbarYEnabled?"scroll":"hidden",...e.style},children:(0,n.jsx)("div",{ref:c.onContentChange,style:{minWidth:"100%",display:"table"},children:a})})]})});x.displayName=g;var y="ScrollAreaScrollbar",C=o.forwardRef((e,r)=>{let{forceMount:t,...l}=e,a=m(y,e.__scopeScrollArea),{onScrollbarXEnabledChange:i,onScrollbarYEnabledChange:s}=a,d="horizontal"===e.orientation;return o.useEffect(()=>(d?i(!0):s(!0),()=>{d?i(!1):s(!1)}),[d,i,s]),"hover"===a.type?(0,n.jsx)(S,{...l,ref:r,forceMount:t}):"scroll"===a.type?(0,n.jsx)(R,{...l,ref:r,forceMount:t}):"auto"===a.type?(0,n.jsx)(j,{...l,ref:r,forceMount:t}):"always"===a.type?(0,n.jsx)(E,{...l,ref:r}):null});C.displayName=y;var S=o.forwardRef((e,r)=>{let{forceMount:t,...l}=e,i=m(y,e.__scopeScrollArea),[s,d]=o.useState(!1);return o.useEffect(()=>{let e=i.scrollArea,r=0;if(e){let t=()=>{window.clearTimeout(r),d(!0)},n=()=>{r=window.setTimeout(()=>d(!1),i.scrollHideDelay)};return e.addEventListener("pointerenter",t),e.addEventListener("pointerleave",n),()=>{window.clearTimeout(r),e.removeEventListener("pointerenter",t),e.removeEventListener("pointerleave",n)}}},[i.scrollArea,i.scrollHideDelay]),(0,n.jsx)(a.C,{present:t||s,children:(0,n.jsx)(j,{"data-state":s?"visible":"hidden",...l,ref:r})})}),R=o.forwardRef((e,r)=>{var t,l;let{forceMount:i,...s}=e,d=m(y,e.__scopeScrollArea),c="horizontal"===e.orientation,u=B(()=>h("SCROLL_END"),100),[p,h]=(t="hidden",l={hidden:{SCROLL:"scrolling"},scrolling:{SCROLL_END:"idle",POINTER_ENTER:"interacting"},interacting:{SCROLL:"interacting",POINTER_LEAVE:"idle"},idle:{HIDE:"hidden",SCROLL:"scrolling",POINTER_ENTER:"interacting"}},o.useReducer((e,r)=>{let t=l[e][r];return null!=t?t:e},t));return o.useEffect(()=>{if("idle"===p){let e=window.setTimeout(()=>h("HIDE"),d.scrollHideDelay);return()=>window.clearTimeout(e)}},[p,d.scrollHideDelay,h]),o.useEffect(()=>{let e=d.viewport,r=c?"scrollLeft":"scrollTop";if(e){let t=e[r],n=()=>{let n=e[r];t!==n&&(h("SCROLL"),u()),t=n};return e.addEventListener("scroll",n),()=>e.removeEventListener("scroll",n)}},[d.viewport,c,h,u]),(0,n.jsx)(a.C,{present:i||"hidden"!==p,children:(0,n.jsx)(E,{"data-state":"hidden"===p?"hidden":"visible",...s,ref:r,onPointerEnter:(0,f.m)(e.onPointerEnter,()=>h("POINTER_ENTER")),onPointerLeave:(0,f.m)(e.onPointerLeave,()=>h("POINTER_LEAVE"))})})}),j=o.forwardRef((e,r)=>{let t=m(y,e.__scopeScrollArea),{forceMount:l,...i}=e,[s,d]=o.useState(!1),c="horizontal"===e.orientation,u=B(()=>{if(t.viewport){let e=t.viewport.offsetWidth{let{orientation:t="vertical",...l}=e,a=m(y,e.__scopeScrollArea),i=o.useRef(null),s=o.useRef(0),[d,c]=o.useState({content:0,viewport:0,scrollbar:{size:0,paddingStart:0,paddingEnd:0}}),u=W(d.viewport,d.content),f={...l,sizes:d,onSizesChange:c,hasThumb:!!(u>0&&u<1),onThumbChange:e=>i.current=e,onThumbPointerUp:()=>s.current=0,onThumbPointerDown:e=>s.current=e};function p(e,r){return function(e,r,t){let n=arguments.length>3&&void 0!==arguments[3]?arguments[3]:"ltr",o=U(t),l=r||o/2,a=t.scrollbar.paddingStart+l,i=t.scrollbar.size-t.scrollbar.paddingEnd-(o-l),s=t.content-t.viewport;return M([a,i],"ltr"===n?[0,s]:[-1*s,0])(e)}(e,s.current,d,r)}return"horizontal"===t?(0,n.jsx)(A,{...f,ref:r,onThumbPositionChange:()=>{if(a.viewport&&i.current){let e=G(a.viewport.scrollLeft,d,a.dir);i.current.style.transform="translate3d(".concat(e,"px, 0, 0)")}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollLeft=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollLeft=p(e,a.dir))}}):"vertical"===t?(0,n.jsx)(T,{...f,ref:r,onThumbPositionChange:()=>{if(a.viewport&&i.current){let e=G(a.viewport.scrollTop,d);i.current.style.transform="translate3d(0, ".concat(e,"px, 0)")}},onWheelScroll:e=>{a.viewport&&(a.viewport.scrollTop=e)},onDragScroll:e=>{a.viewport&&(a.viewport.scrollTop=p(e))}}):null}),A=o.forwardRef((e,r)=>{let{sizes:t,onSizesChange:l,...a}=e,i=m(y,e.__scopeScrollArea),[d,c]=o.useState(),u=o.useRef(null),f=(0,s.s)(r,u,i.onScrollbarXChange);return o.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,n.jsx)(L,{"data-orientation":"horizontal",...a,ref:f,sizes:t,style:{bottom:0,left:"rtl"===i.dir?"var(--radix-scroll-area-corner-width)":0,right:"ltr"===i.dir?"var(--radix-scroll-area-corner-width)":0,"--radix-scroll-area-thumb-width":U(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.x),onDragScroll:r=>e.onDragScroll(r.x),onWheelScroll:(r,t)=>{if(i.viewport){let n=i.viewport.scrollLeft+r.deltaX;e.onWheelScroll(n),function(e,r){return e>0&&e{u.current&&i.viewport&&d&&l({content:i.viewport.scrollWidth,viewport:i.viewport.offsetWidth,scrollbar:{size:u.current.clientWidth,paddingStart:H(d.paddingLeft),paddingEnd:H(d.paddingRight)}})}})}),T=o.forwardRef((e,r)=>{let{sizes:t,onSizesChange:l,...a}=e,i=m(y,e.__scopeScrollArea),[d,c]=o.useState(),u=o.useRef(null),f=(0,s.s)(r,u,i.onScrollbarYChange);return o.useEffect(()=>{u.current&&c(getComputedStyle(u.current))},[u]),(0,n.jsx)(L,{"data-orientation":"vertical",...a,ref:f,sizes:t,style:{top:0,right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:"var(--radix-scroll-area-corner-height)","--radix-scroll-area-thumb-height":U(t)+"px",...e.style},onThumbPointerDown:r=>e.onThumbPointerDown(r.y),onDragScroll:r=>e.onDragScroll(r.y),onWheelScroll:(r,t)=>{if(i.viewport){let n=i.viewport.scrollTop+r.deltaY;e.onWheelScroll(n),function(e,r){return e>0&&e{u.current&&i.viewport&&d&&l({content:i.viewport.scrollHeight,viewport:i.viewport.offsetHeight,scrollbar:{size:u.current.clientHeight,paddingStart:H(d.paddingTop),paddingEnd:H(d.paddingBottom)}})}})}),[N,P]=h(y),L=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,sizes:a,hasThumb:i,onThumbChange:c,onThumbPointerUp:u,onThumbPointerDown:p,onThumbPositionChange:h,onDragScroll:v,onWheelScroll:w,onResize:b,...g}=e,x=m(y,t),[C,S]=o.useState(null),R=(0,s.s)(r,e=>S(e)),j=o.useRef(null),E=o.useRef(""),A=x.viewport,T=a.content-a.viewport,P=(0,d.c)(w),L=(0,d.c)(h),_=B(b,10);function D(e){j.current&&v({x:e.clientX-j.current.left,y:e.clientY-j.current.top})}return o.useEffect(()=>{let e=e=>{let r=e.target;(null==C?void 0:C.contains(r))&&P(e,T)};return document.addEventListener("wheel",e,{passive:!1}),()=>document.removeEventListener("wheel",e,{passive:!1})},[A,C,T,P]),o.useEffect(L,[a,L]),X(C,_),X(x.content,_),(0,n.jsx)(N,{scope:t,scrollbar:C,hasThumb:i,onThumbChange:(0,d.c)(c),onThumbPointerUp:(0,d.c)(u),onThumbPositionChange:L,onThumbPointerDown:(0,d.c)(p),children:(0,n.jsx)(l.sG.div,{...g,ref:R,style:{position:"absolute",...g.style},onPointerDown:(0,f.m)(e.onPointerDown,e=>{0===e.button&&(e.target.setPointerCapture(e.pointerId),j.current=C.getBoundingClientRect(),E.current=document.body.style.webkitUserSelect,document.body.style.webkitUserSelect="none",x.viewport&&(x.viewport.style.scrollBehavior="auto"),D(e))}),onPointerMove:(0,f.m)(e.onPointerMove,D),onPointerUp:(0,f.m)(e.onPointerUp,e=>{let r=e.target;r.hasPointerCapture(e.pointerId)&&r.releasePointerCapture(e.pointerId),document.body.style.webkitUserSelect=E.current,x.viewport&&(x.viewport.style.scrollBehavior=""),j.current=null})})})}),_="ScrollAreaThumb",D=o.forwardRef((e,r)=>{let{forceMount:t,...o}=e,l=P(_,e.__scopeScrollArea);return(0,n.jsx)(a.C,{present:t||l.hasThumb,children:(0,n.jsx)(k,{ref:r,...o})})}),k=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,style:a,...i}=e,d=m(_,t),c=P(_,t),{onThumbPositionChange:u}=c,p=(0,s.s)(r,e=>c.onThumbChange(e)),h=o.useRef(void 0),v=B(()=>{h.current&&(h.current(),h.current=void 0)},100);return o.useEffect(()=>{let e=d.viewport;if(e){let r=()=>{v(),h.current||(h.current=Y(e,u),u())};return u(),e.addEventListener("scroll",r),()=>e.removeEventListener("scroll",r)}},[d.viewport,v,u]),(0,n.jsx)(l.sG.div,{"data-state":c.hasThumb?"visible":"hidden",...i,ref:p,style:{width:"var(--radix-scroll-area-thumb-width)",height:"var(--radix-scroll-area-thumb-height)",...a},onPointerDownCapture:(0,f.m)(e.onPointerDownCapture,e=>{let r=e.target.getBoundingClientRect(),t=e.clientX-r.left,n=e.clientY-r.top;c.onThumbPointerDown({x:t,y:n})}),onPointerUp:(0,f.m)(e.onPointerUp,c.onThumbPointerUp)})});D.displayName=_;var I="ScrollAreaCorner",O=o.forwardRef((e,r)=>{let t=m(I,e.__scopeScrollArea),o=!!(t.scrollbarX&&t.scrollbarY);return"scroll"!==t.type&&o?(0,n.jsx)(z,{...e,ref:r}):null});O.displayName=I;var z=o.forwardRef((e,r)=>{let{__scopeScrollArea:t,...a}=e,i=m(I,t),[s,d]=o.useState(0),[c,u]=o.useState(0),f=!!(s&&c);return X(i.scrollbarX,()=>{var e;let r=(null==(e=i.scrollbarX)?void 0:e.offsetHeight)||0;i.onCornerHeightChange(r),u(r)}),X(i.scrollbarY,()=>{var e;let r=(null==(e=i.scrollbarY)?void 0:e.offsetWidth)||0;i.onCornerWidthChange(r),d(r)}),f?(0,n.jsx)(l.sG.div,{...a,ref:r,style:{width:s,height:c,position:"absolute",right:"ltr"===i.dir?0:void 0,left:"rtl"===i.dir?0:void 0,bottom:0,...e.style}}):null});function H(e){return e?parseInt(e,10):0}function W(e,r){let t=e/r;return isNaN(t)?0:t}function U(e){let r=W(e.viewport,e.content),t=e.scrollbar.paddingStart+e.scrollbar.paddingEnd;return Math.max((e.scrollbar.size-t)*r,18)}function G(e,r){let t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"ltr",n=U(r),o=r.scrollbar.paddingStart+r.scrollbar.paddingEnd,l=r.scrollbar.size-o,a=r.content-r.viewport,i=function(e,[r,t]){return Math.min(t,Math.max(r,e))}(e,"ltr"===t?[0,a]:[-1*a,0]);return M([0,a],[0,l-n])(i)}function M(e,r){return t=>{if(e[0]===e[1]||r[0]===r[1])return r[0];let n=(r[1]-r[0])/(e[1]-e[0]);return r[0]+n*(t-e[0])}}var Y=function(e){let r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:()=>{},t={left:e.scrollLeft,top:e.scrollTop},n=0;return!function o(){let l={left:e.scrollLeft,top:e.scrollTop},a=t.left!==l.left,i=t.top!==l.top;(a||i)&&r(),t=l,n=window.requestAnimationFrame(o)}(),()=>window.cancelAnimationFrame(n)};function B(e,r){let t=(0,d.c)(e),n=o.useRef(0);return o.useEffect(()=>()=>window.clearTimeout(n.current),[]),o.useCallback(()=>{window.clearTimeout(n.current),n.current=window.setTimeout(t,r)},[t,r])}function X(e,r){let t=(0,d.c)(r);(0,u.N)(()=>{let r=0;if(e){let n=new ResizeObserver(()=>{cancelAnimationFrame(r),r=window.requestAnimationFrame(t)});return n.observe(e),()=>{window.cancelAnimationFrame(r),n.unobserve(e)}}},[e,t])}var q=t(9688);let F=o.forwardRef(({className:e,children:r,...t},o)=>(0,n.jsxs)(b,{ref:o,className:(0,q.QP)("overflow-hidden",e),...t,children:[r,(0,n.jsx)(O,{}),(0,n.jsx)($,{orientation:"vertical"})]}));F.displayName=b.displayName;let K=o.forwardRef(({className:e,children:r,...t},o)=>(0,n.jsx)(x,{ref:o,className:(0,q.QP)("size-full rounded-[inherit]",e),...t,children:r}));K.displayName=x.displayName;let $=o.forwardRef(({className:e,orientation:r="vertical",...t},o)=>(0,n.jsx)(C,{ref:o,orientation:r,className:(0,q.QP)("flex select-none data-[state=hidden]:animate-fd-fade-out","vertical"===r&&"h-full w-1.5","horizontal"===r&&"h-1.5 flex-col",e),...t,children:(0,n.jsx)(D,{className:"relative flex-1 rounded-full bg-fd-border"})}));$.displayName=C.displayName},5936:(e,r,t)=>{t.d(r,{T:()=>o});var n=t(2115);function o(e,r,t=function e(r,t){if(Array.isArray(r)&&Array.isArray(t))return t.length!==r.length||r.some((r,n)=>e(r,t[n]));if("object"==typeof r&&r&&"object"==typeof t&&t){let n=Object.keys(r),o=Object.keys(t);return n.length!==o.length||n.some(n=>e(r[n],t[n]))}return r!==t}){let[l,a]=(0,n.useState)(e);t(l,e)&&(r(e,l),a(e))}},8106:(e,r,t)=>{t.d(r,{Ke:()=>C,R6:()=>x,UC:()=>A,bL:()=>j,l9:()=>E,z3:()=>v});var n=t(2115),o=t(5185),l=t(6081),a=t(5845),i=t(2712),s=t(6101),d=t(3655),c=t(8905),u=t(1285),f=t(5155),p="Collapsible",[h,v]=(0,l.A)(p),[w,m]=h(p),b=n.forwardRef((e,r)=>{let{__scopeCollapsible:t,open:o,defaultOpen:l,disabled:i,onOpenChange:s,...c}=e,[h,v]=(0,a.i)({prop:o,defaultProp:null!=l&&l,onChange:s,caller:p});return(0,f.jsx)(w,{scope:t,disabled:i,contentId:(0,u.B)(),open:h,onOpenToggle:n.useCallback(()=>v(e=>!e),[v]),children:(0,f.jsx)(d.sG.div,{"data-state":R(h),"data-disabled":i?"":void 0,...c,ref:r})})});b.displayName=p;var g="CollapsibleTrigger",x=n.forwardRef((e,r)=>{let{__scopeCollapsible:t,...n}=e,l=m(g,t);return(0,f.jsx)(d.sG.button,{type:"button","aria-controls":l.contentId,"aria-expanded":l.open||!1,"data-state":R(l.open),"data-disabled":l.disabled?"":void 0,disabled:l.disabled,...n,ref:r,onClick:(0,o.m)(e.onClick,l.onOpenToggle)})});x.displayName=g;var y="CollapsibleContent",C=n.forwardRef((e,r)=>{let{forceMount:t,...n}=e,o=m(y,e.__scopeCollapsible);return(0,f.jsx)(c.C,{present:t||o.open,children:e=>{let{present:t}=e;return(0,f.jsx)(S,{...n,ref:r,present:t})}})});C.displayName=y;var S=n.forwardRef((e,r)=>{let{__scopeCollapsible:t,present:o,children:l,...a}=e,c=m(y,t),[u,p]=n.useState(o),h=n.useRef(null),v=(0,s.s)(r,h),w=n.useRef(0),b=w.current,g=n.useRef(0),x=g.current,C=c.open||u,S=n.useRef(C),j=n.useRef(void 0);return n.useEffect(()=>{let e=requestAnimationFrame(()=>S.current=!1);return()=>cancelAnimationFrame(e)},[]),(0,i.N)(()=>{let e=h.current;if(e){j.current=j.current||{transitionDuration:e.style.transitionDuration,animationName:e.style.animationName},e.style.transitionDuration="0s",e.style.animationName="none";let r=e.getBoundingClientRect();w.current=r.height,g.current=r.width,S.current||(e.style.transitionDuration=j.current.transitionDuration,e.style.animationName=j.current.animationName),p(o)}},[c.open,o]),(0,f.jsx)(d.sG.div,{"data-state":R(c.open),"data-disabled":c.disabled?"":void 0,id:c.contentId,hidden:!C,...a,ref:v,style:{"--radix-collapsible-content-height":b?"".concat(b,"px"):void 0,"--radix-collapsible-content-width":x?"".concat(x,"px"):void 0,...e.style},children:C&&l})});function R(e){return e?"open":"closed"}var j=b,E=x,A=C},8693:(e,r,t)=>{t.d(r,{L:()=>c,TreeContextProvider:()=>d,t:()=>u});var n=t(5155),o=t(344),l=t(2115),a=t(244);let i=(0,o.q6)("TreeContext"),s=(0,o.q6)("PathContext",[]);function d(e){var r,t,d;let c=(0,l.useRef)(0),u=(0,o.a8)(),f=(0,l.useMemo)(()=>e.tree,[null!=(r=e.tree.$id)?r:e.tree]),p=(0,l.useMemo)(()=>{var e;return null!=(e=(0,a.oe)(f.children,u))?e:[]},[f,u]),h=null!=(t=p.findLast(e=>"folder"===e.type&&e.root))?t:f;return null!=h.$id||(h.$id=String(c.current++)),(0,n.jsx)(i.Provider,{value:(0,l.useMemo)(()=>({root:h}),[h]),children:(0,n.jsx)(s.Provider,{value:p,children:e.children})})}function c(){return s.use()}function u(){return i.use("You must wrap this component under ")}},8756:(e,r,t)=>{t.d(r,{Ke:()=>d,Nt:()=>i,R6:()=>s});var n=t(5155),o=t(8106),l=t(2115),a=t(9688);let i=o.bL,s=o.R6,d=(0,l.forwardRef)((e,r)=>{let{children:t,...i}=e,[s,d]=(0,l.useState)(!1);return(0,l.useEffect)(()=>{d(!0)},[]),(0,n.jsx)(o.Ke,{ref:r,...i,className:(0,a.QP)("overflow-hidden",s&&"data-[state=closed]:animate-fd-collapsible-up data-[state=open]:animate-fd-collapsible-down",i.className),children:t})});d.displayName=o.Ke.displayName}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js b/docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js deleted file mode 100644 index 90c9359f..00000000 --- a/docs/_next/static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[790],{5619:(e,t,n)=>{"use strict";n.d(t,{Menu:()=>f,MenuContent:()=>m,MenuLinkItem:()=>c,MenuTrigger:()=>v});var r=n(5155),a=n(4657),o=n(9688),i=n(7474),l=n(9949),s=n(2085),u=n(7936);let d=(0,s.F)("",{variants:{variant:{main:"inline-flex items-center gap-2 py-1.5 transition-colors hover:text-fd-popover-foreground/50 data-[active=true]:font-medium data-[active=true]:text-fd-primary [&_svg]:size-4",icon:(0,u.r)({size:"icon",color:"ghost"}),button:(0,u.r)({color:"secondary",className:"gap-1.5 [&_svg]:size-4"})}},defaultVariants:{variant:"main"}});function c(e){let{item:t,...n}=e;if("custom"===t.type)return(0,r.jsx)("div",{className:(0,o.QP)("grid",n.className),children:t.children});if("menu"===t.type){let e=(0,r.jsxs)(r.Fragment,{children:[t.icon,t.text]});return(0,r.jsxs)("div",{className:(0,o.QP)("mb-4 flex flex-col",n.className),children:[(0,r.jsx)("p",{className:"mb-1 text-sm text-fd-muted-foreground",children:t.url?(0,r.jsx)(i.Ws,{asChild:!0,children:(0,r.jsx)(l.default,{href:t.url,children:e})}):e}),t.items.map((e,t)=>(0,r.jsx)(c,{item:e},t))]})}return(0,r.jsx)(i.Ws,{asChild:!0,children:(0,r.jsxs)(a.BaseLinkItem,{item:t,className:(0,o.QP)(d({variant:t.type}),n.className),"aria-label":"icon"===t.type?t.label:void 0,children:[t.icon,"icon"===t.type?void 0:t.text]})})}let f=i.JD;function v(e){let{enableHover:t=!1,...n}=e;return(0,r.jsx)(i.wd,{...n,onPointerMove:t?void 0:e=>e.preventDefault(),className:(0,o.QP)((0,u.r)({size:"icon",color:"ghost"}),n.className),children:n.children})}function m(e){return(0,r.jsx)(i.hA,{...e,className:(0,o.QP)("flex flex-col p-4",e.className),children:e.children})}},7110:(e,t,n)=>{"use strict";n.d(t,{Navbar:()=>v,NavbarLink:()=>w,NavbarMenu:()=>m,NavbarMenuContent:()=>h,NavbarMenuLink:()=>g,NavbarMenuTrigger:()=>p});var r=n(5155),a=n(2115),o=n(2085),i=n(9949),l=n(9688),s=n(4657),u=n(7474),d=n(1339),c=n(7936);let f=(0,o.F)("inline-flex items-center gap-1 p-2 text-fd-muted-foreground transition-colors hover:text-fd-accent-foreground data-[active=true]:text-fd-primary [&_svg]:size-4");function v(e){let[t,n]=(0,a.useState)(""),{isTransparent:o}=(0,d.h)();return(0,r.jsx)(u.KS,{value:t,onValueChange:n,asChild:!0,children:(0,r.jsxs)("header",{id:"nd-nav",...e,className:(0,l.QP)("fixed left-1/2 top-(--fd-banner-height) z-40 box-content w-full max-w-fd-container -translate-x-1/2 border-b border-fd-foreground/10 transition-colors lg:mt-2 lg:w-[calc(100%-1rem)] lg:rounded-2xl lg:border",t.length>0?"shadow-lg":"shadow-sm",(!o||t.length>0)&&"bg-fd-background/80 backdrop-blur-lg",e.className),children:[(0,r.jsx)(u.SK,{className:"flex h-14 w-full flex-row items-center px-4 lg:h-12",asChild:!0,children:(0,r.jsx)("nav",{children:e.children})}),(0,r.jsx)(u.QW,{})]})})}let m=u.JD;function h(e){return(0,r.jsx)(u.hA,{...e,className:(0,l.QP)("grid grid-cols-1 gap-3 px-4 pb-4 md:grid-cols-2 lg:grid-cols-3",e.className),children:e.children})}function p(e){return(0,r.jsx)(u.wd,{...e,className:(0,l.QP)(f(),"rounded-md",e.className),children:e.children})}function g(e){return(0,r.jsx)(u.Ws,{asChild:!0,children:(0,r.jsx)(i.default,{...e,className:(0,l.QP)("flex flex-col gap-2 rounded-lg border bg-fd-card p-3 transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground",e.className),children:e.children})})}let x=(0,o.F)("",{variants:{variant:{main:f(),button:(0,c.r)({color:"secondary",className:"gap-1.5 [&_svg]:size-4"}),icon:(0,c.r)({color:"ghost",size:"icon"})}},defaultVariants:{variant:"main"}});function w(e){let{item:t,variant:n,...a}=e;return(0,r.jsx)(u.JD,{children:(0,r.jsx)(u.Ws,{asChild:!0,children:(0,r.jsx)(s.BaseLinkItem,{...a,item:t,className:(0,l.QP)(x({variant:n}),a.className),children:a.children})})})}},7474:(e,t,n)=>{"use strict";n.d(t,{KS:()=>ev,hA:()=>eg,JD:()=>eh,Ws:()=>ex,SK:()=>em,wd:()=>ep,QW:()=>ew});var r=n(5155),a=n(2115),o=n(7650),i=n(6081),l=n(5185),s=n(3655),u=n(5845),d=n(6101),c=n(4315),f=n(8905),v=n(1285),m=n(7328),h=n(9178),p=n(2712),g=n(9033),x=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),w=a.forwardRef((e,t)=>(0,r.jsx)(s.sG.span,{...e,ref:t,style:{...x,...e.style}}));w.displayName="VisuallyHidden";var N="NavigationMenu",[b,j,y]=(0,m.N)(N),[R,C,E]=(0,m.N)(N),[P,M]=(0,i.A)(N,[y,E]),[T,k]=P(N),[L,_]=P(N),I=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:o,onValueChange:i,defaultValue:l,delayDuration:f=200,skipDelayDuration:v=300,orientation:m="horizontal",dir:h,...p}=e,[g,x]=a.useState(null),w=(0,d.s)(t,e=>x(e)),b=(0,c.jH)(h),j=a.useRef(0),y=a.useRef(0),R=a.useRef(0),[C,E]=a.useState(!0),[P,M]=(0,u.i)({prop:o,onChange:e=>{let t=v>0;""!==e?(window.clearTimeout(R.current),t&&E(!1)):(window.clearTimeout(R.current),R.current=window.setTimeout(()=>E(!0),v)),null==i||i(e)},defaultProp:null!=l?l:"",caller:N}),T=a.useCallback(()=>{window.clearTimeout(y.current),y.current=window.setTimeout(()=>M(""),150)},[M]),k=a.useCallback(e=>{window.clearTimeout(y.current),M(e)},[M]),L=a.useCallback(e=>{P===e?window.clearTimeout(y.current):j.current=window.setTimeout(()=>{window.clearTimeout(y.current),M(e)},f)},[P,M,f]);return a.useEffect(()=>()=>{window.clearTimeout(j.current),window.clearTimeout(y.current),window.clearTimeout(R.current)},[]),(0,r.jsx)(F,{scope:n,isRootMenu:!0,value:P,dir:b,orientation:m,rootNavigationMenu:g,onTriggerEnter:e=>{window.clearTimeout(j.current),C?L(e):k(e)},onTriggerLeave:()=>{window.clearTimeout(j.current),T()},onContentEnter:()=>window.clearTimeout(y.current),onContentLeave:T,onItemSelect:e=>{M(t=>t===e?"":e)},onItemDismiss:()=>M(""),children:(0,r.jsx)(s.sG.nav,{"aria-label":"Main","data-orientation":m,dir:b,...p,ref:w})})});I.displayName=N;var D="NavigationMenuSub";a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:a,onValueChange:o,defaultValue:i,orientation:l="horizontal",...d}=e,c=k(D,n),[f,v]=(0,u.i)({prop:a,onChange:o,defaultProp:null!=i?i:"",caller:D});return(0,r.jsx)(F,{scope:n,isRootMenu:!1,value:f,dir:c.dir,orientation:l,rootNavigationMenu:c.rootNavigationMenu,onTriggerEnter:e=>v(e),onItemSelect:e=>v(e),onItemDismiss:()=>v(""),children:(0,r.jsx)(s.sG.div,{"data-orientation":l,...d,ref:t})})}).displayName=D;var F=e=>{let{scope:t,isRootMenu:n,rootNavigationMenu:o,dir:i,orientation:l,children:s,value:u,onItemSelect:d,onItemDismiss:c,onTriggerEnter:f,onTriggerLeave:m,onContentEnter:h,onContentLeave:p}=e,[x,w]=a.useState(null),[N,j]=a.useState(new Map),[y,R]=a.useState(null);return(0,r.jsx)(T,{scope:t,isRootMenu:n,rootNavigationMenu:o,value:u,previousValue:function(e){let t=a.useRef({value:e,previous:e});return a.useMemo(()=>(t.current.value!==e&&(t.current.previous=t.current.value,t.current.value=e),t.current.previous),[e])}(u),baseId:(0,v.B)(),dir:i,orientation:l,viewport:x,onViewportChange:w,indicatorTrack:y,onIndicatorTrackChange:R,onTriggerEnter:(0,g.c)(f),onTriggerLeave:(0,g.c)(m),onContentEnter:(0,g.c)(h),onContentLeave:(0,g.c)(p),onItemSelect:(0,g.c)(d),onItemDismiss:(0,g.c)(c),onViewportContentChange:a.useCallback((e,t)=>{j(n=>(n.set(e,t),new Map(n)))},[]),onViewportContentRemove:a.useCallback(e=>{j(t=>t.has(e)?(t.delete(e),new Map(t)):t)},[]),children:(0,r.jsx)(b.Provider,{scope:t,children:(0,r.jsx)(L,{scope:t,items:N,children:s})})})},S="NavigationMenuList",A=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...a}=e,o=k(S,n),i=(0,r.jsx)(s.sG.ul,{"data-orientation":o.orientation,...a,ref:t});return(0,r.jsx)(s.sG.div,{style:{position:"relative"},ref:o.onIndicatorTrackChange,children:(0,r.jsx)(b.Slot,{scope:n,children:o.isRootMenu?(0,r.jsx)(en,{asChild:!0,children:i}):i})})});A.displayName=S;var K="NavigationMenuItem",[O,z]=P(K),Q=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:o,...i}=e,l=(0,v.B)(),u=a.useRef(null),d=a.useRef(null),c=a.useRef(null),f=a.useRef(()=>{}),m=a.useRef(!1),h=a.useCallback(function(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"start";if(u.current){f.current();let t=eo(u.current);t.length&&ei("start"===e?t:t.reverse())}},[]),p=a.useCallback(()=>{if(u.current){let e=eo(u.current);e.length&&(f.current=function(e){return e.forEach(e=>{e.dataset.tabindex=e.getAttribute("tabindex")||"",e.setAttribute("tabindex","-1")}),()=>{e.forEach(e=>{let t=e.dataset.tabindex;e.setAttribute("tabindex",t)})}}(e))}},[]);return(0,r.jsx)(O,{scope:n,value:o||l||"LEGACY_REACT_AUTO_VALUE",triggerRef:d,contentRef:u,focusProxyRef:c,wasEscapeCloseRef:m,onEntryKeyDown:h,onFocusProxyEnter:h,onRootContentClose:p,onContentFocusOutside:p,children:(0,r.jsx)(s.sG.li,{...i,ref:t})})});Q.displayName=K;var G="NavigationMenuTrigger",V=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,disabled:o,...i}=e,u=k(G,e.__scopeNavigationMenu),c=z(G,e.__scopeNavigationMenu),f=a.useRef(null),v=(0,d.s)(f,c.triggerRef,t),m=eu(u.baseId,c.value),h=ed(u.baseId,c.value),p=a.useRef(!1),g=a.useRef(!1),x=c.value===u.value;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(b.ItemSlot,{scope:n,value:c.value,children:(0,r.jsx)(ea,{asChild:!0,children:(0,r.jsx)(s.sG.button,{id:m,disabled:o,"data-disabled":o?"":void 0,"data-state":es(x),"aria-expanded":x,"aria-controls":h,...i,ref:v,onPointerEnter:(0,l.m)(e.onPointerEnter,()=>{g.current=!1,c.wasEscapeCloseRef.current=!1}),onPointerMove:(0,l.m)(e.onPointerMove,ec(()=>{o||g.current||c.wasEscapeCloseRef.current||p.current||(u.onTriggerEnter(c.value),p.current=!0)})),onPointerLeave:(0,l.m)(e.onPointerLeave,ec(()=>{o||(u.onTriggerLeave(),p.current=!1)})),onClick:(0,l.m)(e.onClick,()=>{u.onItemSelect(c.value),g.current=x}),onKeyDown:(0,l.m)(e.onKeyDown,e=>{let t={horizontal:"ArrowDown",vertical:"rtl"===u.dir?"ArrowLeft":"ArrowRight"}[u.orientation];x&&e.key===t&&(c.onEntryKeyDown(),e.preventDefault())})})})}),x&&(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)(w,{"aria-hidden":!0,tabIndex:0,ref:c.focusProxyRef,onFocus:e=>{let t=c.contentRef.current,n=e.relatedTarget,r=n===f.current,a=null==t?void 0:t.contains(n);(r||!a)&&c.onFocusProxyEnter(r?"start":"end")}}),u.viewport&&(0,r.jsx)("span",{"aria-owns":h})]})]})});V.displayName=G;var W="navigationMenu.linkSelect",H=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,active:a,onSelect:o,...i}=e;return(0,r.jsx)(ea,{asChild:!0,children:(0,r.jsx)(s.sG.a,{"data-active":a?"":void 0,"aria-current":a?"page":void 0,...i,ref:t,onClick:(0,l.m)(e.onClick,e=>{let t=e.target,n=new CustomEvent(W,{bubbles:!0,cancelable:!0});if(t.addEventListener(W,e=>null==o?void 0:o(e),{once:!0}),(0,s.hO)(t,n),!n.defaultPrevented&&!e.metaKey){let e=new CustomEvent(X,{bubbles:!0,cancelable:!0});(0,s.hO)(t,e)}},{checkForDefaultPrevented:!1})})})});H.displayName="NavigationMenuLink";var U="NavigationMenuIndicator";a.forwardRef((e,t)=>{let{forceMount:n,...a}=e,i=k(U,e.__scopeNavigationMenu),l=!!i.value;return i.indicatorTrack?o.createPortal((0,r.jsx)(f.C,{present:n||l,children:(0,r.jsx)(B,{...a,ref:t})}),i.indicatorTrack):null}).displayName=U;var B=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...o}=e,i=k(U,n),l=j(n),[u,d]=a.useState(null),[c,f]=a.useState(null),v="horizontal"===i.orientation,m=!!i.value;a.useEffect(()=>{var e;let t=null==(e=l().find(e=>e.value===i.value))?void 0:e.ref.current;t&&d(t)},[l,i.value]);let h=()=>{u&&f({size:v?u.offsetWidth:u.offsetHeight,offset:v?u.offsetLeft:u.offsetTop})};return el(u,h),el(i.indicatorTrack,h),c?(0,r.jsx)(s.sG.div,{"aria-hidden":!0,"data-state":m?"visible":"hidden","data-orientation":i.orientation,...o,ref:t,style:{position:"absolute",...v?{left:0,width:c.size+"px",transform:"translateX(".concat(c.offset,"px)")}:{top:0,height:c.size+"px",transform:"translateY(".concat(c.offset,"px)")},...o.style}}):null}),J="NavigationMenuContent",q=a.forwardRef((e,t)=>{let{forceMount:n,...a}=e,o=k(J,e.__scopeNavigationMenu),i=z(J,e.__scopeNavigationMenu),s=(0,d.s)(i.contentRef,t),u=i.value===o.value,c={value:i.value,triggerRef:i.triggerRef,focusProxyRef:i.focusProxyRef,wasEscapeCloseRef:i.wasEscapeCloseRef,onContentFocusOutside:i.onContentFocusOutside,onRootContentClose:i.onRootContentClose,...a};return o.viewport?(0,r.jsx)(Y,{forceMount:n,...c,ref:s}):(0,r.jsx)(f.C,{present:n||u,children:(0,r.jsx)(Z,{"data-state":es(u),...c,ref:s,onPointerEnter:(0,l.m)(e.onPointerEnter,o.onContentEnter),onPointerLeave:(0,l.m)(e.onPointerLeave,ec(o.onContentLeave)),style:{pointerEvents:!u&&o.isRootMenu?"none":void 0,...c.style}})})});q.displayName=J;var Y=a.forwardRef((e,t)=>{let{onViewportContentChange:n,onViewportContentRemove:r}=k(J,e.__scopeNavigationMenu);return(0,p.N)(()=>{n(e.value,{ref:t,...e})},[e,t,n]),(0,p.N)(()=>()=>r(e.value),[e.value,r]),null}),X="navigationMenu.rootContentDismiss",Z=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,value:o,triggerRef:i,focusProxyRef:s,wasEscapeCloseRef:u,onRootContentClose:c,onContentFocusOutside:f,...v}=e,m=k(J,n),p=a.useRef(null),g=(0,d.s)(p,t),x=eu(m.baseId,o),w=ed(m.baseId,o),N=j(n),b=a.useRef(null),{onItemDismiss:y}=m;a.useEffect(()=>{let e=p.current;if(m.isRootMenu&&e){let t=()=>{var t;y(),c(),e.contains(document.activeElement)&&(null==(t=i.current)||t.focus())};return e.addEventListener(X,t),()=>e.removeEventListener(X,t)}},[m.isRootMenu,e.value,i,y,c]);let R=a.useMemo(()=>{let e=N().map(e=>e.value);"rtl"===m.dir&&e.reverse();let t=e.indexOf(m.value),n=e.indexOf(m.previousValue),r=o===m.value,a=n===e.indexOf(o);if(!r&&!a)return b.current;let i=(()=>{if(t!==n){if(r&&-1!==n)return t>n?"from-end":"from-start";if(a&&-1!==t)return t>n?"to-start":"to-end"}return null})();return b.current=i,i},[m.previousValue,m.value,m.dir,N,o]);return(0,r.jsx)(en,{asChild:!0,children:(0,r.jsx)(h.qW,{id:w,"aria-labelledby":x,"data-motion":R,"data-orientation":m.orientation,...v,ref:g,disableOutsidePointerEvents:!1,onDismiss:()=>{var e;let t=new Event(X,{bubbles:!0,cancelable:!0});null==(e=p.current)||e.dispatchEvent(t)},onFocusOutside:(0,l.m)(e.onFocusOutside,e=>{var t;f();let n=e.target;(null==(t=m.rootNavigationMenu)?void 0:t.contains(n))&&e.preventDefault()}),onPointerDownOutside:(0,l.m)(e.onPointerDownOutside,e=>{var t;let n=e.target,r=N().some(e=>{var t;return null==(t=e.ref.current)?void 0:t.contains(n)}),a=m.isRootMenu&&(null==(t=m.viewport)?void 0:t.contains(n));(r||a||!m.isRootMenu)&&e.preventDefault()}),onKeyDown:(0,l.m)(e.onKeyDown,e=>{let t=e.altKey||e.ctrlKey||e.metaKey;if("Tab"===e.key&&!t){let t=eo(e.currentTarget),r=document.activeElement,a=t.findIndex(e=>e===r);if(ei(e.shiftKey?t.slice(0,a).reverse():t.slice(a+1,t.length)))e.preventDefault();else{var n;null==(n=s.current)||n.focus()}}}),onEscapeKeyDown:(0,l.m)(e.onEscapeKeyDown,e=>{u.current=!0})})})}),$="NavigationMenuViewport",ee=a.forwardRef((e,t)=>{let{forceMount:n,...a}=e,o=!!k($,e.__scopeNavigationMenu).value;return(0,r.jsx)(f.C,{present:n||o,children:(0,r.jsx)(et,{...a,ref:t})})});ee.displayName=$;var et=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,children:o,...i}=e,u=k($,n),c=(0,d.s)(t,u.onViewportChange),v=_(J,e.__scopeNavigationMenu),[m,h]=a.useState(null),[p,g]=a.useState(null),x=m?(null==m?void 0:m.width)+"px":void 0,w=m?(null==m?void 0:m.height)+"px":void 0,N=!!u.value,b=N?u.value:u.previousValue;return el(p,()=>{p&&h({width:p.offsetWidth,height:p.offsetHeight})}),(0,r.jsx)(s.sG.div,{"data-state":es(N),"data-orientation":u.orientation,...i,ref:c,style:{pointerEvents:!N&&u.isRootMenu?"none":void 0,"--radix-navigation-menu-viewport-width":x,"--radix-navigation-menu-viewport-height":w,...i.style},onPointerEnter:(0,l.m)(e.onPointerEnter,u.onContentEnter),onPointerLeave:(0,l.m)(e.onPointerLeave,ec(u.onContentLeave)),children:Array.from(v.items).map(e=>{let[t,{ref:n,forceMount:a,...o}]=e,i=b===t;return(0,r.jsx)(f.C,{present:a||i,children:(0,r.jsx)(Z,{...o,ref:(0,d.t)(n,e=>{i&&e&&g(e)})})},t)})})}),en=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...a}=e,o=k("FocusGroup",n);return(0,r.jsx)(R.Provider,{scope:n,children:(0,r.jsx)(R.Slot,{scope:n,children:(0,r.jsx)(s.sG.div,{dir:o.dir,...a,ref:t})})})}),er=["ArrowRight","ArrowLeft","ArrowUp","ArrowDown"],ea=a.forwardRef((e,t)=>{let{__scopeNavigationMenu:n,...a}=e,o=C(n),i=k("FocusGroupItem",n);return(0,r.jsx)(R.ItemSlot,{scope:n,children:(0,r.jsx)(s.sG.button,{...a,ref:t,onKeyDown:(0,l.m)(e.onKeyDown,e=>{if(["Home","End",...er].includes(e.key)){let t=o().map(e=>e.ref.current);if(["rtl"===i.dir?"ArrowRight":"ArrowLeft","ArrowUp","End"].includes(e.key)&&t.reverse(),er.includes(e.key)){let n=t.indexOf(e.currentTarget);t=t.slice(n+1)}setTimeout(()=>ei(t)),e.preventDefault()}})})})});function eo(e){let t=[],n=document.createTreeWalker(e,NodeFilter.SHOW_ELEMENT,{acceptNode:e=>{let t="INPUT"===e.tagName&&"hidden"===e.type;return e.disabled||e.hidden||t?NodeFilter.FILTER_SKIP:e.tabIndex>=0?NodeFilter.FILTER_ACCEPT:NodeFilter.FILTER_SKIP}});for(;n.nextNode();)t.push(n.currentNode);return t}function ei(e){let t=document.activeElement;return e.some(e=>e===t||(e.focus(),document.activeElement!==t))}function el(e,t){let n=(0,g.c)(t);(0,p.N)(()=>{let t=0;if(e){let r=new ResizeObserver(()=>{cancelAnimationFrame(t),t=window.requestAnimationFrame(n)});return r.observe(e),()=>{window.cancelAnimationFrame(t),r.unobserve(e)}}},[e,n])}function es(e){return e?"open":"closed"}function eu(e,t){return"".concat(e,"-trigger-").concat(t)}function ed(e,t){return"".concat(e,"-content-").concat(t)}function ec(e){return t=>"mouse"===t.pointerType?e(t):void 0}var ef=n(9688);let ev=I,em=A,eh=a.forwardRef((e,t)=>{let{className:n,children:a,...o}=e;return(0,r.jsx)(Q,{ref:t,className:(0,ef.QP)("list-none",n),...o,children:a})});eh.displayName=Q.displayName;let ep=a.forwardRef((e,t)=>{let{className:n,children:a,...o}=e;return(0,r.jsx)(V,{ref:t,className:(0,ef.QP)("data-[state=open]:bg-fd-accent/50",n),...o,children:a})});ep.displayName=V.displayName;let eg=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)(q,{ref:t,className:(0,ef.QP)("absolute inset-x-0 top-0 data-[motion=from-end]:animate-fd-enterFromRight data-[motion=from-start]:animate-fd-enterFromLeft data-[motion=to-end]:animate-fd-exitToRight data-[motion=to-start]:animate-fd-exitToLeft",n),...a})});eg.displayName=q.displayName;let ex=H,ew=a.forwardRef((e,t)=>{let{className:n,...a}=e;return(0,r.jsx)("div",{ref:t,className:"flex w-full justify-center",children:(0,r.jsx)(ee,{...a,className:(0,ef.QP)("relative h-(--radix-navigation-menu-viewport-height) w-full origin-[top_center] overflow-hidden text-fd-popover-foreground transition-[width,height] duration-300 data-[state=closed]:animate-fd-nav-menu-out data-[state=open]:animate-fd-nav-menu-in",n)})})});ew.displayName=ee.displayName},9035:(e,t,n)=>{Promise.resolve().then(n.bind(n,9949)),Promise.resolve().then(n.bind(n,1053)),Promise.resolve().then(n.bind(n,5403)),Promise.resolve().then(n.bind(n,910)),Promise.resolve().then(n.bind(n,1339)),Promise.resolve().then(n.bind(n,5619)),Promise.resolve().then(n.bind(n,7110))}},e=>{var t=t=>e(e.s=t);e.O(0,[534,595,920,318,882,441,684,358],()=>t(9035)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js b/docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js deleted file mode 100644 index d0b672e7..00000000 --- a/docs/_next/static/chunks/app/(home)/page-ff294463e6438f3b.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[813],{3334:(e,s,_)=>{Promise.resolve().then(_.t.bind(_,6874,23))}},e=>{var s=s=>e(e.s=s);e.O(0,[874,441,684,358],()=>s(3334)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js b/docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js deleted file mode 100644 index 8bf5f407..00000000 --- a/docs/_next/static/chunks/app/_not-found/page-1dda221cd75e58ca.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{3632:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let l=r(5155),n=r(6395);function o(){return(0,l.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3868:(e,t,r)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return r(3632)}])},6395:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}}),r(8229);let l=r(5155);r(2115);let n={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};function o(e){let{status:t,message:r}=e;return(0,l.jsxs)(l.Fragment,{children:[(0,l.jsx)("title",{children:t+": "+r}),(0,l.jsx)("div",{style:n.error,children:(0,l.jsxs)("div",{children:[(0,l.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,l.jsx)("h1",{className:"next-error-h1",style:n.h1,children:t}),(0,l.jsx)("div",{style:n.desc,children:(0,l.jsx)("h2",{style:n.h2,children:r})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{var t=t=>e(e.s=t);e.O(0,[441,684,358],()=>t(3868)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js b/docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js deleted file mode 100644 index 6c7f444f..00000000 --- a/docs/_next/static/chunks/app/docs/[[...slug]]/page-2caa2683c2838a7d.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[870],{70:(e,t,r)=>{"use strict";r.d(t,{Breadcrumb:()=>H,Footer:()=>Q,LastUpdate:()=>T,PageArticle:()=>M,PageBody:()=>C,TocPopover:()=>k,TocPopoverContent:()=>P,TocPopoverTrigger:()=>j});var n=r(5155),l=r(2115),o=r(2829),s=r(3536);let a=(0,s.A)("chevron-left",[["path",{d:"m15 18-6-6 6-6",key:"1wnfg3"}]]),i=(0,s.A)("chevron-right",[["path",{d:"m9 18 6-6-6-6",key:"mthhwq"}]]);var c=r(9949),d=r(9688),u=r(9697),f=r(8693),h=r(263),p=r(344),m=r(244),x=r(1339),g=r(5455),v=r(8265),b=r(8756),y=r(6441);let w=(0,p.q6)("TocPopoverContext");function j(e){var t,r;let{items:s,...a}=e,{text:i}=(0,u.s9)(),{open:c}=w.use(),h=y.R3(),p=(0,l.useMemo)(()=>s.findIndex(e=>h===e.url.slice(1)),[s,h]),m=(0,f.L)().at(-1),x=-1!==p&&!c;return(0,n.jsxs)(b.R6,{...a,className:(0,d.QP)("flex flex-row items-center text-sm text-fd-muted-foreground gap-2.5 px-4 py-2.5 text-start focus-visible:outline-none [&_svg]:shrink-0 [&_svg]:size-4 md:px-6",a.className),children:[(0,n.jsx)(N,{value:(p+1)/s.length,max:1,className:(0,d.QP)(c&&"text-fd-primary")}),(0,n.jsxs)("span",{className:(0,d.QP)("grid flex-1 *:row-start-1 *:col-start-1",c&&"text-fd-foreground"),children:[(0,n.jsx)("span",{className:(0,d.QP)("truncate transition-all",x&&"opacity-0 -translate-y-full pointer-events-none"),children:null!=(r=null==m?void 0:m.name)?r:i.toc}),(0,n.jsx)("span",{className:(0,d.QP)("truncate transition-all",!x&&"opacity-0 translate-y-full pointer-events-none"),children:null==(t=s[p])?void 0:t.title})]}),(0,n.jsx)(o.A,{className:(0,d.QP)("transition-transform",c&&"rotate-180")})]})}function N(e){let{value:t,strokeWidth:r=2,size:l=24,min:o=0,max:s=100,...a}=e,i=ts?s:t,c=(l-r)/2,d=2*Math.PI*c,u=i/s*d,f={cx:l/2,cy:l/2,r:c,fill:"none",strokeWidth:r};return(0,n.jsxs)("svg",{role:"progressbar",viewBox:"0 0 ".concat(l," ").concat(l),"aria-valuenow":i,"aria-valuemin":o,"aria-valuemax":s,...a,children:[(0,n.jsx)("circle",{...f,className:"stroke-current/25"}),(0,n.jsx)("circle",{...f,stroke:"currentColor",strokeDasharray:d,strokeDashoffset:d-u,strokeLinecap:"round",transform:"rotate(-90 ".concat(l/2," ").concat(l/2,")"),className:"transition-all"})]})}function P(e){return(0,n.jsx)(b.Ke,{"data-toc-popover":"",...e,className:(0,d.QP)("flex flex-col max-h-[50vh]",e.className),children:e.children})}function k(e){let t=(0,l.useRef)(null),[r,o]=(0,l.useState)(!1),s=(0,h.c)(),{tocNav:a}=(0,x.v)(),{isTransparent:i}=(0,x.h)(),c=(0,v.J)(e=>{r&&t.current&&!t.current.contains(e.target)&&o(!1)});return(0,l.useEffect)(()=>(window.addEventListener("click",c),()=>{window.removeEventListener("click",c)}),[c]),(0,n.jsx)("div",{...e,className:(0,d.QP)("sticky overflow-visible z-10",a,e.className),style:{...e.style,top:"calc(var(--fd-banner-height) + var(--fd-nav-height))"},children:(0,n.jsx)(w.Provider,{value:(0,l.useMemo)(()=>({open:r,setOpen:o}),[o,r]),children:(0,n.jsx)(b.Nt,{open:r,onOpenChange:o,asChild:!0,children:(0,n.jsx)("header",{ref:t,id:"nd-tocnav",...e,className:(0,d.QP)("border-b border-fd-foreground/10 backdrop-blur-sm transition-colors",(!i||r)&&"bg-fd-background/80",r&&"shadow-lg",s.open&&"max-md:hidden"),children:e.children})})})})}function C(e){let{page:t}=(0,x.v)();return(0,n.jsx)("div",{id:"nd-page",...e,className:(0,d.QP)("flex w-full min-w-0 flex-col",t,e.className),children:e.children})}function M(e){let{article:t}=(0,x.v)();return(0,n.jsx)("article",{...e,className:(0,d.QP)("flex w-full flex-1 flex-col gap-6 px-4 md:px-6 pt-8 md:pt-12 xl:px-12 xl:mx-auto",t,e.className),children:e.children})}function T(e){let{text:t}=(0,u.s9)(),[r,o]=(0,l.useState)("");return(0,l.useEffect)(()=>{o(e.date.toLocaleDateString())},[e.date]),(0,n.jsxs)("p",{className:"text-sm text-fd-muted-foreground",children:[t.lastUpdate," ",r]})}let R=new WeakMap;function Q(e){let{items:t}=e,{root:r}=(0,f.t)(),o=(0,p.a8)(),{previous:s,next:a}=(0,l.useMemo)(()=>{if(t)return t;let e=R.get(r),n=null!=e?e:function e(t){let r=[];return t.forEach(t=>{if("folder"===t.type){t.index&&r.push(t.index),r.push(...e(t.children));return}"page"!==t.type||t.external||r.push(t)}),r}(r.children);R.set(r,n);let l=n.findIndex(e=>(0,g.$)(e.url,o,!1));return -1===l?{}:{previous:n[l-1],next:n[l+1]}},[t,o,r]);return(0,n.jsxs)("div",{className:(0,d.QP)("@container grid gap-4 pb-6",s&&a?"grid-cols-2":"grid-cols-1"),children:[s?(0,n.jsx)(E,{item:s,index:0}):null,a?(0,n.jsx)(E,{item:a,index:1}):null]})}function E(e){var t;let{item:r,index:l}=e,{text:o}=(0,u.s9)();return(0,n.jsxs)(c.default,{href:r.url,className:(0,d.QP)("flex flex-col gap-2 rounded-lg border p-4 text-sm transition-colors hover:bg-fd-accent/80 hover:text-fd-accent-foreground @max-lg:col-span-full",1===l&&"text-end"),children:[(0,n.jsxs)("div",{className:(0,d.QP)("inline-flex items-center gap-1.5 font-medium",1===l&&"flex-row-reverse"),children:[(0,n.jsx)(0===l?a:i,{className:"-mx-1 size-4 shrink-0 rtl:rotate-180"}),(0,n.jsx)("p",{children:r.name})]}),(0,n.jsx)("p",{className:"text-fd-muted-foreground truncate",children:null!=(t=r.description)?t:0===l?o.previousPage:o.nextPage})]})}function H(e){let t=(0,f.L)(),{root:r}=(0,f.t)(),o=(0,l.useMemo)(()=>{var n;return(0,m.Pp)(r,t,{includePage:null!=(n=e.includePage)&&n,...e})},[e,t,r]);return 0===o.length?null:(0,n.jsx)("div",{className:"flex flex-row items-center gap-1.5 text-[15px] text-fd-muted-foreground",children:o.map((e,t)=>{let r=(0,d.QP)("truncate",t===o.length-1&&"text-fd-primary font-medium");return(0,n.jsxs)(l.Fragment,{children:[0!==t&&(0,n.jsx)("span",{className:"text-fd-foreground/30",children:"/"}),e.url?(0,n.jsx)(c.default,{href:e.url,className:(0,d.QP)(r,"transition-opacity hover:opacity-80"),children:e.name}):(0,n.jsx)("span",{className:r,children:e.name})]},t)})})}},1639:(e,t,r)=>{"use strict";r.d(t,{j:()=>d});var n=r(5155),l=r(2115),o=r(6441),s=r(3259),a=r(8265);function i(e,t){if(0===t.length||0===e.clientHeight)return[0,0];let r=Number.MAX_VALUE,n=0;for(let l of t){let t=e.querySelector(`a[href="#${l}"]`);if(!t)continue;let o=getComputedStyle(t);r=Math.min(r,t.offsetTop+parseFloat(o.paddingTop)),n=Math.max(n,t.offsetTop+t.clientHeight-parseFloat(o.paddingBottom))}return[r,n-r]}function c(e,t){e.style.setProperty("--fd-top",`${t[0]}px`),e.style.setProperty("--fd-height",`${t[1]}px`)}function d({containerRef:e,...t}){let r=o.Mf(),d=(0,l.useRef)(null),u=(0,a.J)(()=>{e.current&&d.current&&c(d.current,i(e.current,r))});return(0,l.useEffect)(()=>{if(!e.current)return;let t=e.current;u();let r=new ResizeObserver(u);return r.observe(t),()=>{r.disconnect()}},[e,u]),(0,s.T)(r,()=>{e.current&&d.current&&c(d.current,i(e.current,r))}),(0,n.jsx)("div",{ref:d,role:"none",...t})}},1778:(e,t,r)=>{"use strict";r.d(t,{default:()=>c});var n=r(5155),l=r(6441),o=r(2115),s=r(9688),a=r(1639),i=r(8070);function c(e){let{items:t}=e,r=(0,o.useRef)(null),[l,s]=(0,o.useState)();return((0,o.useEffect)(()=>{if(!r.current)return;let e=r.current;function n(){if(0===e.clientHeight)return;let r=0,n=0,l=[];for(let o=0;o{l.disconnect()}},[t]),0===t.length)?(0,n.jsx)(i.k,{}):(0,n.jsxs)(n.Fragment,{children:[l?(0,n.jsx)("div",{className:"absolute start-0 top-0 rtl:-scale-x-100",style:{width:l.width,height:l.height,maskImage:'url("data:image/svg+xml,'.concat(encodeURIComponent('')),'")')},children:(0,n.jsx)(a.j,{containerRef:r,className:"mt-(--fd-top) h-(--fd-height) bg-fd-primary transition-all"})}):null,(0,n.jsx)("div",{className:"flex flex-col",ref:r,children:t.map((e,r)=>{var l,o;return(0,n.jsx)(u,{item:e,upper:null==(l=t[r-1])?void 0:l.depth,lower:null==(o=t[r+1])?void 0:o.depth},e.url)})})]})}function d(e){return 10*(e>=3)}function u(e){var t;let{item:r,upper:o=r.depth,lower:a=r.depth}=e,i=d(r.depth),c=d(o),u=d(a);return(0,n.jsxs)(l.Cz,{href:r.url,style:{paddingInlineStart:(t=r.depth)<=2?14:3===t?26:36},className:"prose relative py-1.5 text-sm text-fd-muted-foreground transition-colors [overflow-wrap:anywhere] first:pt-0 last:pb-0 data-[active=true]:text-fd-primary",children:[i!==c?(0,n.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 16 16",className:"absolute -top-1.5 start-0 size-4 rtl:-scale-x-100",children:(0,n.jsx)("line",{x1:c,y1:"0",x2:i,y2:"12",className:"stroke-fd-foreground/10",strokeWidth:"1"})}):null,(0,n.jsx)("div",{className:(0,s.QP)("absolute inset-y-0 w-px bg-fd-foreground/10",i!==c&&"top-1.5",i!==u&&"bottom-1.5"),style:{insetInlineStart:i}}),r.title]})}},6441:(e,t,r)=>{"use strict";r.d(t,{AnchorProvider:()=>v,N2:()=>g,Cz:()=>b,R3:()=>m,Mf:()=>x});var n=r(5936);r(9189);var l=r(2115);let o=e=>"object"==typeof e&&null!=e&&1===e.nodeType,s=(e,t)=>(!t||"hidden"!==e)&&"visible"!==e&&"clip"!==e,a=(e,t)=>{if(e.clientHeight{let t=(e=>{if(!e.ownerDocument||!e.ownerDocument.defaultView)return null;try{return e.ownerDocument.defaultView.frameElement}catch(e){return null}})(e);return!!t&&(t.clientHeightot||o>e&&s=t&&a>=r?o-e-n:s>t&&ar?s-t+l:0,c=e=>{let t=e.parentElement;return null==t?e.getRootNode().host||null:t},d=(e,t)=>{var r,n,l,s;if("undefined"==typeof document)return[];let{scrollMode:d,block:u,inline:f,boundary:h,skipOverflowHiddenElements:p}=t,m="function"==typeof h?h:e=>e!==h;if(!o(e))throw TypeError("Invalid target");let x=document.scrollingElement||document.documentElement,g=[],v=e;for(;o(v)&&m(v);){if((v=c(v))===x){g.push(v);break}null!=v&&v===document.body&&a(v)&&!a(document.documentElement)||null!=v&&a(v,p)&&g.push(v)}let b=null!=(n=null==(r=window.visualViewport)?void 0:r.width)?n:innerWidth,y=null!=(s=null==(l=window.visualViewport)?void 0:l.height)?s:innerHeight,{scrollX:w,scrollY:j}=window,{height:N,width:P,top:k,right:C,bottom:M,left:T}=e.getBoundingClientRect(),{top:R,right:Q,bottom:E,left:H}=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e),I="start"===u||"nearest"===u?k-R:"end"===u?M+E:k+N/2-R+E,S="center"===f?T+P/2-H+Q:"end"===f?C+Q:T-H,A=[];for(let e=0;e=0&&T>=0&&M<=y&&C<=b&&(t===x&&!a(t)||k>=l&&M<=s&&T>=c&&C<=o))break;let h=getComputedStyle(t),p=parseInt(h.borderLeftWidth,10),m=parseInt(h.borderTopWidth,10),v=parseInt(h.borderRightWidth,10),R=parseInt(h.borderBottomWidth,10),Q=0,E=0,H="offsetWidth"in t?t.offsetWidth-t.clientWidth-p-v:0,F="offsetHeight"in t?t.offsetHeight-t.clientHeight-m-R:0,L="offsetWidth"in t?0===t.offsetWidth?0:n/t.offsetWidth:0,W="offsetHeight"in t?0===t.offsetHeight?0:r/t.offsetHeight:0;if(x===t)Q="start"===u?I:"end"===u?I-y:"nearest"===u?i(j,j+y,y,m,R,j+I,j+I+N,N):I-y/2,E="start"===f?S:"center"===f?S-b/2:"end"===f?S-b:i(w,w+b,b,p,v,w+S,w+S+P,P),Q=Math.max(0,Q+j),E=Math.max(0,E+w);else{Q="start"===u?I-l-m:"end"===u?I-s+R+F:"nearest"===u?i(l,s,r,m,R+F,I,I+N,N):I-(l+r/2)+F/2,E="start"===f?S-c-p:"center"===f?S-(c+n/2)+H/2:"end"===f?S-o+v+H:i(c,o,n,p,v+H,S,S+P,P);let{scrollLeft:e,scrollTop:a}=t;Q=0===W?0:Math.max(0,Math.min(a+Q/W,t.scrollHeight-r/W+F)),E=0===L?0:Math.max(0,Math.min(e+E/L,t.scrollWidth-n/L+H)),I+=a-Q,S+=e-E}A.push({el:t,top:Q,left:E})}return A},u=e=>!1===e?{block:"end",inline:"nearest"}:(e=>e===Object(e)&&0!==Object.keys(e).length)(e)?e:{block:"start",inline:"nearest"};var f=r(5155),h=(0,l.createContext)([]),p=(0,l.createContext)({current:null});function m(){return(0,l.useContext)(h).at(-1)}function x(){return(0,l.useContext)(h)}function g(e){let{containerRef:t,children:r}=e;return(0,f.jsx)(p.Provider,{value:t,children:r})}function v(e){let{toc:t,single:r=!0,children:n}=e,o=(0,l.useMemo)(()=>t.map(e=>e.url.split("#")[1]),[t]);return(0,f.jsx)(h.Provider,{value:function(e,t){let[r,n]=(0,l.useState)([]);return(0,l.useEffect)(()=>{let r=[],l=new IntersectionObserver(e=>{for(let t of e)t.isIntersecting&&!r.includes(t.target.id)?r=[...r,t.target.id]:!t.isIntersecting&&r.includes(t.target.id)&&(r=r.filter(e=>e!==t.target.id));r.length>0&&n(r)},{rootMargin:t?"-80px 0% -70% 0%":"-20px 0% -40% 0%",threshold:1});function o(){let r=document.scrollingElement;r&&(0===r.scrollTop&&t?n(e.slice(0,1)):r.scrollTop+r.clientHeight>=r.scrollHeight-6&&n(r=>r.length>0&&!t?e.slice(e.indexOf(r[0])):e.slice(-1)))}for(let t of e){let e=document.getElementById(t);e&&l.observe(e)}return o(),window.addEventListener("scroll",o),()=>{window.removeEventListener("scroll",o),l.disconnect()}},[t,e]),t?r.slice(0,1):r}(o,r),children:n})}var b=(0,l.forwardRef)((e,t)=>{let{onActiveChange:r,...o}=e,s=(0,l.useContext)(p),a=x(),i=(0,l.useRef)(null),c=function(){for(var e=arguments.length,t=Array(e),r=0;r{t.forEach(t=>{"function"==typeof t?t(e):null!==t&&(t.current=e)})}}(i,t),h=a.includes(o.href.slice(1));return(0,n.T)(h,e=>{let t=i.current;t&&(e&&s.current&&function(e,t){if(!e.isConnected||!(e=>{let t=e;for(;t&&t.parentNode;){if(t.parentNode===document)return!0;t=t.parentNode instanceof ShadowRoot?t.parentNode.host:t.parentNode}return!1})(e))return;let r=(e=>{let t=window.getComputedStyle(e);return{top:parseFloat(t.scrollMarginTop)||0,right:parseFloat(t.scrollMarginRight)||0,bottom:parseFloat(t.scrollMarginBottom)||0,left:parseFloat(t.scrollMarginLeft)||0}})(e);if("object"==typeof t&&"function"==typeof t.behavior)return t.behavior(d(e,t));let n="boolean"==typeof t||null==t?void 0:t.behavior;for(let{el:l,top:o,left:s}of d(e,u(t))){let e=o-r.top+r.bottom,t=s-r.left+r.right;l.scroll({top:e,left:t,behavior:n})}}(t,{behavior:"smooth",block:"center",inline:"center",scrollMode:"always",boundary:s.current}),null==r||r(e))}),(0,f.jsx)("a",{ref:c,"data-active":h,...o,children:o.children})});b.displayName="TOCItem"},6827:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Accordion:()=>c,AccordionContent:()=>f,AccordionItem:()=>d,AccordionTrigger:()=>u});var n=r(5155);r(2115);var l=r(2292),o=r(3359),s=r(2596),a=r(9688);function i(){for(var e=arguments.length,t=Array(e),r=0;rsvg]:rotate-180",t),...s,children:[r,(0,n.jsx)(o.A,{className:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"})]})})}function f(e){let{className:t,children:r,...o}=e;return(0,n.jsx)(l.UC,{"data-slot":"accordion-content",className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",...o,children:(0,n.jsx)("div",{className:i("pt-0 pb-4",t),children:r})})}},7242:(e,t,r)=>{"use strict";r.d(t,{CodeBlock:()=>f,Pre:()=>u});var n=r(5155),l=r(3536);let o=(0,l.A)("check",[["path",{d:"M20 6 9 17l-5-5",key:"1gmf2c"}]]),s=(0,l.A)("copy",[["rect",{width:"14",height:"14",x:"8",y:"8",rx:"2",ry:"2",key:"17jyea"}],["path",{d:"M4 16c-1.1 0-2-.9-2-2V4c0-1.1.9-2 2-2h10c1.1 0 2 .9 2 2",key:"zix9uf"}]]);var a=r(2115),i=r(9688),c=r(5675),d=r(7936);let u=(0,a.forwardRef)((e,t)=>{let{className:r,...l}=e;return(0,n.jsx)("pre",{ref:t,className:(0,i.QP)("p-4 focus-visible:outline-none",r),...l,children:l.children})});u.displayName="Pre";let f=(0,a.forwardRef)((e,t)=>{let{title:r,allowCopy:l=!0,keepBackground:o=!1,icon:s,viewportProps:d,...u}=e,f=(0,a.useRef)(null),p=(0,a.useCallback)(()=>{var e,t;let r=null==(e=f.current)?void 0:e.getElementsByTagName("pre").item(0);if(!r)return;let n=r.cloneNode(!0);n.querySelectorAll(".nd-copy-ignore").forEach(e=>{e.remove()}),navigator.clipboard.writeText(null!=(t=n.textContent)?t:"")},[]);return(0,n.jsxs)("figure",{ref:t,...u,className:(0,i.QP)("not-prose group fd-codeblock relative my-4 overflow-hidden rounded-lg border bg-fd-secondary/50 text-sm",o&&"bg-(--shiki-light-bg) dark:bg-(--shiki-dark-bg)",u.className),children:[r?(0,n.jsxs)("div",{className:"flex items-center gap-2 border-b bg-fd-muted px-4 py-1.5",children:[s?(0,n.jsx)("div",{className:"text-fd-muted-foreground [&_svg]:size-3.5",dangerouslySetInnerHTML:"string"==typeof s?{__html:s}:void 0,children:"string"!=typeof s?s:null}):null,(0,n.jsx)("figcaption",{className:"flex-1 truncate text-fd-muted-foreground",children:r}),l?(0,n.jsx)(h,{className:"-me-2",onCopy:p}):null]}):l&&(0,n.jsx)(h,{className:"absolute right-2 top-2 z-[2] backdrop-blur-md",onCopy:p}),(0,n.jsxs)(c.FK,{ref:f,dir:"ltr",children:[(0,n.jsx)(c.Gl,{...d,className:(0,i.QP)("max-h-[600px]",null==d?void 0:d.className),children:u.children}),(0,n.jsx)(c.$H,{orientation:"horizontal"})]})]})});function h(e){let{className:t,onCopy:r,...l}=e,[c,u]=function(e){let[t,r]=(0,a.useState)(!1),n=(0,a.useRef)(null),l=(0,a.useRef)(e);l.current=e;let o=(0,a.useCallback)(()=>{n.current&&window.clearTimeout(n.current),n.current=window.setTimeout(()=>{r(!1)},1500),l.current(),r(!0)},[]);return(0,a.useEffect)(()=>()=>{n.current&&window.clearTimeout(n.current)},[]),[t,o]}(r);return(0,n.jsxs)("button",{type:"button",className:(0,i.QP)((0,d.r)({color:"ghost"}),"transition-opacity group-hover:opacity-100 [&_svg]:size-3.5",!c&&"[@media(hover:hover)]:opacity-0",t),"aria-label":c?"Copied Text":"Copy Text",onClick:u,...l,children:[(0,n.jsx)(o,{className:(0,i.QP)("transition-transform",!c&&"scale-0")}),(0,n.jsx)(s,{className:(0,i.QP)("absolute transition-transform",c&&"scale-0")})]})}f.displayName="CodeBlock"},8070:(e,t,r)=>{"use strict";r.d(t,{TOCItems:()=>p,TOCScrollArea:()=>h,Toc:()=>u,k:()=>f});var n=r(5155),l=r(6441),o=r(2115),s=r(9688),a=r(9697),i=r(1639),c=r(5675),d=r(1339);function u(e){let{toc:t}=(0,d.v)();return(0,n.jsx)("div",{id:"nd-toc",...e,className:(0,s.QP)("sticky top-[calc(var(--fd-banner-height)+var(--fd-nav-height))] h-(--fd-toc-height) pb-2 pt-12",t,e.className),style:{...e.style,"--fd-toc-height":"calc(100dvh - var(--fd-banner-height) - var(--fd-nav-height))"},children:(0,n.jsx)("div",{className:"flex h-full w-(--fd-toc-width) max-w-full flex-col gap-3 pe-4",children:e.children})})}function f(){let{text:e}=(0,a.s9)();return(0,n.jsx)("div",{className:"rounded-lg border bg-fd-card p-3 text-xs text-fd-muted-foreground",children:e.tocNoHeadings})}function h(e){let{isMenu:t,...r}=e,a=(0,o.useRef)(null);return(0,n.jsx)(c.FK,{...r,className:(0,s.QP)("flex flex-col ps-px",r.className),children:(0,n.jsx)(c.Gl,{ref:a,className:(0,s.QP)("relative min-h-0 text-sm",t&&"[mask-image:linear-gradient(to_bottom,transparent,white_16px,white_calc(100%-16px),transparent)] px-4 md:px-6 py-2"),children:(0,n.jsx)(l.N2,{containerRef:a,children:r.children})})})}function p(e){let{items:t}=e,r=(0,o.useRef)(null);return 0===t.length?(0,n.jsx)(f,{}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(i.j,{containerRef:r,className:"absolute top-(--fd-top) h-(--fd-height) w-px bg-fd-primary transition-all"}),(0,n.jsx)("div",{ref:r,className:"flex flex-col border-s border-fd-foreground/10",children:t.map(e=>(0,n.jsx)(m,{item:e},e.url))})]})}function m(e){let{item:t}=e;return(0,n.jsx)(l.Cz,{href:t.url,className:(0,s.QP)("prose py-1.5 text-sm text-fd-muted-foreground transition-colors [overflow-wrap:anywhere] first:pt-0 last:pb-0 data-[active=true]:text-fd-primary",t.depth<=2&&"ps-3",3===t.depth&&"ps-6",t.depth>=4&&"ps-8"),children:t.title})}},8265:(e,t,r)=>{"use strict";r.d(t,{J:()=>l}),r(9189);var n=r(2115);function l(e){let t=(0,n.useRef)(e);return t.current=e,(0,n.useCallback)(function(){for(var e=arguments.length,r=Array(e),n=0;n{Promise.resolve().then(r.bind(r,6827)),Promise.resolve().then(r.bind(r,344)),Promise.resolve().then(r.bind(r,9949)),Promise.resolve().then(r.bind(r,6441)),Promise.resolve().then(r.bind(r,7242)),Promise.resolve().then(r.bind(r,1778)),Promise.resolve().then(r.bind(r,8070)),Promise.resolve().then(r.bind(r,9697)),Promise.resolve().then(r.bind(r,70))}},e=>{var t=t=>e(e.s=t);e.O(0,[534,595,318,997,441,684,358],()=>t(8521)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js b/docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js deleted file mode 100644 index 1b6abb73..00000000 --- a/docs/_next/static/chunks/app/docs/layout-6d9e86ce9d5501d3.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[499],{2397:(e,t,r)=>{"use strict";r.r(t),r.d(t,{CollapsibleSidebar:()=>y,Sidebar:()=>N,SidebarCollapseTrigger:()=>M,SidebarFolder:()=>C,SidebarFolderContent:()=>z,SidebarFolderLink:()=>T,SidebarFolderTrigger:()=>A,SidebarFooter:()=>P,SidebarHeader:()=>w,SidebarItem:()=>Q,SidebarPageTree:()=>I,SidebarSeparator:()=>S,SidebarViewport:()=>k});var n=r(5155);let a=(0,r(3536).A)("external-link",[["path",{d:"M15 3h6v6",key:"1q9fwt"}],["path",{d:"M10 14 21 3",key:"gplh6r"}],["path",{d:"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6",key:"a6xqqp"}]]);var s=r(2829),l=r(5547),i=r(344),d=r(2115),o=r(9949),c=r(3259),u=r(9688),m=r(5675),h=r(5455),x=r(8756),f=r(263),p=r(2085),v=r(8693);let b=(0,p.F)("relative flex flex-row items-center gap-2 rounded-md p-2 text-start text-fd-muted-foreground [overflow-wrap:anywhere] md:py-1.5 [&_svg]:size-4 [&_svg]:shrink-0",{variants:{active:{true:"bg-fd-primary/10 text-fd-primary",false:"transition-colors hover:bg-fd-accent/50 hover:text-fd-accent-foreground/80 hover:transition-none"}}}),g=(0,d.createContext)(null),j=(0,d.createContext)(null);function y(e){let{collapsed:t}=(0,f.c)(),[r,a]=(0,d.useState)(!1),s=(0,d.useRef)(0),l=(0,d.useRef)(0);return(0,c.T)(t,()=>{a(!1),l.current=Date.now()+150}),(0,n.jsx)(N,{...e,onPointerEnter:e=>{!t||"touch"===e.pointerType||l.current>Date.now()||(window.clearTimeout(s.current),a(!0))},onPointerLeave:e=>{t&&"touch"!==e.pointerType&&(window.clearTimeout(s.current),s.current=window.setTimeout(()=>{a(!1),l.current=Date.now()+150},Math.min(e.clientX,document.body.clientWidth-e.clientX)>100?0:500))},"data-collapsed":t,className:(0,u.QP)("md:transition-all",t&&"md:-me-(--fd-sidebar-width) md:-translate-x-(--fd-sidebar-offset) rtl:md:translate-x-(--fd-sidebar-offset)",t&&r&&"z-50 md:translate-x-0",t&&!r&&"md:opacity-0",e.className),style:{"--fd-sidebar-offset":"calc(var(--fd-sidebar-width) - 6px)",...e.style}})}function N(e){let{defaultOpenLevel:t=0,prefetch:r=!0,inner:a,...s}=e,i=(0,d.useMemo)(()=>({defaultOpenLevel:t,prefetch:r,level:1}),[t,r]);return(0,n.jsx)(g.Provider,{value:i,children:(0,n.jsx)(l.Pg,{id:"nd-sidebar",removeScrollOn:"(width < 768px)",...s,className:(0,u.QP)("fixed top-[calc(var(--fd-banner-height)+var(--fd-nav-height))] z-20 bg-fd-card text-sm md:sticky md:h-(--fd-sidebar-height)","max-md:inset-x-0 max-md:bottom-0 max-md:bg-fd-background/80 max-md:text-[15px] max-md:backdrop-blur-lg max-md:data-[open=false]:invisible",s.className),style:{...s.style,"--fd-sidebar-height":"calc(100dvh - var(--fd-banner-height) - var(--fd-nav-height))"},children:(0,n.jsx)("div",{...a,className:(0,u.QP)("flex size-full max-w-full flex-col pt-2 md:ms-auto md:w-(--fd-sidebar-width) md:border-e md:pt-4",null==a?void 0:a.className),children:s.children})})})}function w(e){return(0,n.jsx)("div",{...e,className:(0,u.QP)("flex flex-col gap-3 px-4 empty:hidden",e.className),children:e.children})}function P(e){return(0,n.jsx)("div",{...e,className:(0,u.QP)("flex flex-col border-t px-4 py-3 empty:hidden",e.className),children:e.children})}function k(e){return(0,n.jsx)(m.FK,{...e,className:(0,u.QP)("h-full",e.className),children:(0,n.jsx)(m.Gl,{className:"p-4",style:{maskImage:"linear-gradient(to bottom, transparent, white 12px)"},children:e.children})})}function S(e){let{level:t}=_();return(0,n.jsx)("p",{...e,className:(0,u.QP)("inline-flex items-center gap-2 mb-2 px-2 text-sm font-medium [&_svg]:size-4 [&_svg]:shrink-0",e.className),style:{paddingInlineStart:q(t),...e.style},children:e.children})}function Q(e){let{icon:t,...r}=e,s=(0,i.a8)(),l=void 0!==r.href&&(0,h.$)(r.href,s,!1),{prefetch:d,level:c}=_();return(0,n.jsxs)(o.default,{...r,"data-active":l,className:(0,u.QP)(b({active:l}),r.className),prefetch:d,style:{paddingInlineStart:q(c),...r.style},children:[(0,n.jsx)(E,{level:c,active:l}),null!=t?t:r.external?(0,n.jsx)(a,{}):null,r.children]})}function C(e){let{defaultOpen:t=!1,...r}=e,[a,s]=(0,d.useState)(t);return(0,c.T)(t,e=>{e&&s(e)}),(0,n.jsx)(x.Nt,{open:a,onOpenChange:s,...r,children:(0,n.jsx)(j.Provider,{value:(0,d.useMemo)(()=>({open:a,setOpen:s}),[a]),children:r.children})})}function A(e){let{level:t}=_(),{open:r}=F();return(0,n.jsxs)(x.R6,{...e,className:(0,u.QP)(b({active:!1}),"w-full"),style:{paddingInlineStart:q(t),...e.style},children:[(0,n.jsx)(E,{level:t}),e.children,(0,n.jsx)(s.A,{"data-icon":!0,className:(0,u.QP)("ms-auto transition-transform",!r&&"-rotate-90")})]})}function T(e){let{open:t,setOpen:r}=F(),{prefetch:a,level:l}=_(),d=(0,i.a8)(),c=void 0!==e.href&&(0,h.$)(e.href,d,!1);return(0,n.jsxs)(o.default,{...e,"data-active":c,className:(0,u.QP)(b({active:c}),"w-full",e.className),onClick:e=>{e.target.hasAttribute("data-icon")?(r(e=>!e),e.preventDefault()):r(e=>!c||!e)},prefetch:a,style:{paddingInlineStart:q(l),...e.style},children:[(0,n.jsx)(E,{level:l,active:c}),e.children,(0,n.jsx)(s.A,{"data-icon":!0,className:(0,u.QP)("ms-auto transition-transform",!t&&"-rotate-90")})]})}function z(e){let t=_();return(0,n.jsx)(x.Ke,{...e,className:(0,u.QP)("relative",e.className),children:(0,n.jsxs)(g.Provider,{value:(0,d.useMemo)(()=>({...t,level:t.level+1}),[t]),children:[(0,n.jsx)("div",{className:"absolute w-px inset-y-0 bg-fd-border start-3"}),e.children]})})}function M(e){let{collapsed:t,setCollapsed:r}=(0,f.c)();return(0,n.jsx)("button",{type:"button","aria-label":"Collapse Sidebar","data-collapsed":t,...e,onClick:()=>{r(e=>!e)},children:e.children})}function F(){let e=(0,d.useContext)(j);if(!e)throw Error("Missing sidebar folder");return e}function _(){let e=(0,d.useContext)(g);if(!e)throw Error(" component required.");return e}function I(e){let{root:t}=(0,v.t)();return(0,d.useMemo)(()=>{var r;let{Separator:a,Item:s,Folder:l}=null!=(r=e.components)?r:{};return(0,n.jsx)(d.Fragment,{children:function e(t,r){return t.map((t,i)=>{if("separator"===t.type)return a?(0,n.jsx)(a,{item:t},i):(0,n.jsxs)(S,{className:(0,u.QP)(0!==i&&"mt-8"),children:[t.icon,t.name]},i);if("folder"===t.type){let a=e(t.children,r+1);return l?(0,n.jsx)(l,{item:t,level:r,children:a},i):(0,n.jsx)(O,{item:t,children:a},i)}return s?(0,n.jsx)(s,{item:t},t.url):(0,n.jsx)(Q,{href:t.url,external:t.external,icon:t.icon,children:t.name},t.url)})}(t.children,1)},t.$id)},[e.components,t])}function O(e){var t;let{item:r,...a}=e,{defaultOpenLevel:s,level:l}=_(),i=(0,v.L)();return(0,n.jsxs)(C,{defaultOpen:(null!=(t=r.defaultOpen)?t:s>=l)||i.includes(r),children:[r.index?(0,n.jsxs)(T,{href:r.index.url,external:r.index.external,...a,children:[r.icon,r.name]}):(0,n.jsxs)(A,{...a,children:[r.icon,r.name]}),(0,n.jsx)(z,{children:a.children})]})}function q(e){return"calc(var(--spacing) * ".concat((e>1?e:0)*2+2,")")}function E(e){let{level:t,active:r}=e;return t<=1?null:(0,n.jsx)("div",{className:(0,u.QP)("absolute w-px inset-y-2 z-[2] start-3",r&&"bg-fd-primary")})}},6827:(e,t,r)=>{"use strict";r.r(t),r.d(t,{Accordion:()=>o,AccordionContent:()=>m,AccordionItem:()=>c,AccordionTrigger:()=>u});var n=r(5155);r(2115);var a=r(2292),s=r(3359),l=r(2596),i=r(9688);function d(){for(var e=arguments.length,t=Array(e),r=0;rsvg]:rotate-180",t),...l,children:[r,(0,n.jsx)(s.A,{className:"text-muted-foreground pointer-events-none size-4 shrink-0 translate-y-0.5 transition-transform duration-200"})]})})}function m(e){let{className:t,children:r,...s}=e;return(0,n.jsx)(a.UC,{"data-slot":"accordion-content",className:"data-[state=closed]:animate-accordion-up data-[state=open]:animate-accordion-down overflow-hidden text-sm",...s,children:(0,n.jsx)("div",{className:d("pt-0 pb-4",t),children:r})})}},7531:(e,t,r)=>{Promise.resolve().then(r.bind(r,6827)),Promise.resolve().then(r.bind(r,9949)),Promise.resolve().then(r.bind(r,1053)),Promise.resolve().then(r.bind(r,8870)),Promise.resolve().then(r.bind(r,5403)),Promise.resolve().then(r.bind(r,2397)),Promise.resolve().then(r.bind(r,910)),Promise.resolve().then(r.bind(r,1339)),Promise.resolve().then(r.bind(r,8693)),Promise.resolve().then(r.bind(r,9379)),Promise.resolve().then(r.bind(r,4657))},8870:(e,t,r)=>{"use strict";r.d(t,{RootToggle:()=>m});var n=r(5155);let a=(0,r(3536).A)("chevrons-up-down",[["path",{d:"m7 15 5 5 5-5",key:"1hf1tw"}],["path",{d:"m7 9 5-5 5 5",key:"sgt6xg"}]]);var s=r(2115),l=r(9949),i=r(344),d=r(9688),o=r(5455),c=r(263),u=r(408);function m(e){let{options:t,placeholder:r,...m}=e,[x,f]=(0,s.useState)(!1),{closeOnRedirect:p}=(0,c.c)(),v=(0,i.a8)(),b=(0,s.useMemo)(()=>t.findLast(e=>e.urls?e.urls.has(v.endsWith("/")?v.slice(0,-1):v):(0,o.$)(e.url,v,!0)),[t,v]),g=()=>{p.current=!1,f(!1)},j=b?(0,n.jsx)(h,{...b}):r;return(0,n.jsxs)(u.AM,{open:x,onOpenChange:f,children:[j?(0,n.jsxs)(u.Wv,{...m,className:(0,d.QP)("flex items-center gap-2.5 rounded-lg pe-2 hover:text-fd-accent-foreground",m.className),children:[j,(0,n.jsx)(a,{className:"size-4 text-fd-muted-foreground"})]}):null,(0,n.jsx)(u.hl,{className:"w-(--radix-popover-trigger-width) overflow-hidden p-0",children:t.map(e=>{var t;return(0,n.jsx)(l.default,{href:e.url,onClick:g,...e.props,className:(0,d.QP)("flex w-full flex-row items-center gap-2 px-2 py-1.5",b===e?"bg-fd-accent text-fd-accent-foreground":"hover:bg-fd-accent/50",null==(t=e.props)?void 0:t.className),children:(0,n.jsx)(h,{...e})},e.url)})})]})}function h(e){return(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(n.Fragment,{children:e.icon}),(0,n.jsxs)("div",{className:"flex-1 text-start",children:[(0,n.jsx)("p",{className:"text-sm font-medium",children:e.title}),e.description?(0,n.jsx)("p",{className:"text-xs text-fd-muted-foreground",children:e.description}):null]})]})}},9379:(e,t,r)=>{"use strict";r.d(t,{CollapsibleControl:()=>v,Navbar:()=>f,NavbarSidebarTrigger:()=>p});var n=r(5155),a=r(3536);let s=(0,a.A)("x",[["path",{d:"M18 6 6 18",key:"1bl5f8"}],["path",{d:"m6 6 12 12",key:"d8bk6v"}]]),l=(0,a.A)("menu",[["line",{x1:"4",x2:"20",y1:"12",y2:"12",key:"1e0a9i"}],["line",{x1:"4",x2:"20",y1:"6",y2:"6",key:"1owob3"}],["line",{x1:"4",x2:"20",y1:"18",y2:"18",key:"yk5zj1"}]]),i=(0,a.A)("panel-left",[["rect",{width:"18",height:"18",x:"3",y:"3",rx:"2",key:"afitv7"}],["path",{d:"M9 3v18",key:"fh3hqa"}]]);var d=r(9688),o=r(7936),c=r(263),u=r(1339),m=r(5547),h=r(2397),x=r(5403);function f(e){let{open:t}=(0,c.c)(),{isTransparent:r}=(0,u.h)();return(0,n.jsx)("header",{id:"nd-subnav",...e,className:(0,d.QP)("sticky top-(--fd-banner-height) z-30 flex h-14 items-center px-4 border-b border-fd-foreground/10 transition-colors backdrop-blur-sm md:px-6",(!r||t)&&"bg-fd-background/80",e.className),children:e.children})}function p(e){let{open:t}=(0,c.c)();return(0,n.jsx)(m.x2,{...e,className:(0,d.QP)((0,o.r)({color:"ghost",size:"icon"}),e.className),children:t?(0,n.jsx)(s,{}):(0,n.jsx)(l,{})})}function v(){let{collapsed:e}=(0,c.c)();if(e)return(0,n.jsxs)("div",{className:"fixed flex flex-row animate-fd-fade-in rounded-xl p-0.5 border bg-fd-muted text-fd-muted-foreground z-10 xl:start-4 max-xl:end-4",style:{top:"calc(var(--fd-banner-height) + var(--fd-tocnav-height) + var(--spacing) * 4)"},children:[(0,n.jsx)(h.SidebarCollapseTrigger,{className:(0,d.QP)((0,o.r)({color:"ghost",size:"icon-sm"}),"rounded-lg"),children:(0,n.jsx)(i,{})}),(0,n.jsx)(x.SearchToggle,{size:"icon-sm",className:"rounded-lg"})]})}}},e=>{var t=t=>e(e.s=t);e.O(0,[534,595,920,318,882,997,441,684,358],()=>t(7531)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/app/layout-c6241da76fad0b40.js b/docs/_next/static/chunks/app/layout-c6241da76fad0b40.js deleted file mode 100644 index ac576dbc..00000000 --- a/docs/_next/static/chunks/app/layout-c6241da76fad0b40.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{3905:()=>{},4311:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,3905,23)),Promise.resolve().then(n.bind(n,3834)),Promise.resolve().then(n.t.bind(n,5299,23))}},e=>{var s=s=>e(e.s=s);e.O(0,[605,595,874,176,441,684,358],()=>s(4311)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/framework-f593a28cde54158e.js b/docs/_next/static/chunks/framework-f593a28cde54158e.js deleted file mode 100644 index 3467b3f9..00000000 --- a/docs/_next/static/chunks/framework-f593a28cde54158e.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[593],{2167:(e,t,n)=>{var r=n(5364),l=Symbol.for("react.transitional.element"),a=Symbol.for("react.portal"),o=Symbol.for("react.fragment"),i=Symbol.for("react.strict_mode"),u=Symbol.for("react.profiler"),s=Symbol.for("react.consumer"),c=Symbol.for("react.context"),f=Symbol.for("react.forward_ref"),d=Symbol.for("react.suspense"),p=Symbol.for("react.memo"),m=Symbol.for("react.lazy"),h=Symbol.iterator,g={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},y=Object.assign,v={};function b(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}function k(){}function w(e,t,n){this.props=e,this.context=t,this.refs=v,this.updater=n||g}b.prototype.isReactComponent={},b.prototype.setState=function(e,t){if("object"!=typeof e&&"function"!=typeof e&&null!=e)throw Error("takes an object of state variables to update or a function which returns an object of state variables.");this.updater.enqueueSetState(this,e,t,"setState")},b.prototype.forceUpdate=function(e){this.updater.enqueueForceUpdate(this,e,"forceUpdate")},k.prototype=b.prototype;var S=w.prototype=new k;S.constructor=w,y(S,b.prototype),S.isPureReactComponent=!0;var x=Array.isArray,E={H:null,A:null,T:null,S:null,V:null},C=Object.prototype.hasOwnProperty;function _(e,t,n,r,a,o){return{$$typeof:l,type:e,key:t,ref:void 0!==(n=o.ref)?n:null,props:o}}function P(e){return"object"==typeof e&&null!==e&&e.$$typeof===l}var z=/\/+/g;function N(e,t){var n,r;return"object"==typeof e&&null!==e&&null!=e.key?(n=""+e.key,r={"=":"=0",":":"=2"},"$"+n.replace(/[=:]/g,function(e){return r[e]})):t.toString(36)}function T(){}function L(e,t,n){if(null==e)return e;var r=[],o=0;return!function e(t,n,r,o,i){var u,s,c,f=typeof t;("undefined"===f||"boolean"===f)&&(t=null);var d=!1;if(null===t)d=!0;else switch(f){case"bigint":case"string":case"number":d=!0;break;case"object":switch(t.$$typeof){case l:case a:d=!0;break;case m:return e((d=t._init)(t._payload),n,r,o,i)}}if(d)return i=i(t),d=""===o?"."+N(t,0):o,x(i)?(r="",null!=d&&(r=d.replace(z,"$&/")+"/"),e(i,n,r,"",function(e){return e})):null!=i&&(P(i)&&(u=i,s=r+(null==i.key||t&&t.key===i.key?"":(""+i.key).replace(z,"$&/")+"/")+d,i=_(u.type,s,void 0,void 0,void 0,u.props)),n.push(i)),1;d=0;var p=""===o?".":o+":";if(x(t))for(var g=0;g{e.exports=n(5919)},4232:(e,t,n)=>{e.exports=n(2167)},4279:(e,t,n)=>{var r,l=n(5364),a=n(2786),o=n(4232),i=n(8477);function u(e){var t="https://react.dev/errors/"+e;if(1I||(e.current=M[I],M[I]=null,I--)}function H(e,t){M[++I]=e.current,e.current=t}var $=U(null),V=U(null),B=U(null),Q=U(null);function W(e,t){switch(H(B,t),H(V,e),H($,null),t.nodeType){case 9:case 11:e=(e=t.documentElement)&&(e=e.namespaceURI)?si(e):0;break;default:if(e=t.tagName,t=t.namespaceURI)e=su(t=si(t),e);else switch(e){case"svg":e=1;break;case"math":e=2;break;default:e=0}}j($),H($,e)}function q(){j($),j(V),j(B)}function K(e){null!==e.memoizedState&&H(Q,e);var t=$.current,n=su(t,e.type);t!==n&&(H(V,e),H($,n))}function Y(e){V.current===e&&(j($),j(V)),Q.current===e&&(j(Q),sX._currentValue=F)}var G=Object.prototype.hasOwnProperty,X=a.unstable_scheduleCallback,Z=a.unstable_cancelCallback,J=a.unstable_shouldYield,ee=a.unstable_requestPaint,et=a.unstable_now,en=a.unstable_getCurrentPriorityLevel,er=a.unstable_ImmediatePriority,el=a.unstable_UserBlockingPriority,ea=a.unstable_NormalPriority,eo=a.unstable_LowPriority,ei=a.unstable_IdlePriority,eu=a.log,es=a.unstable_setDisableYieldValue,ec=null,ef=null;function ed(e){if("function"==typeof eu&&es(e),ef&&"function"==typeof ef.setStrictMode)try{ef.setStrictMode(ec,e)}catch(e){}}var ep=Math.clz32?Math.clz32:function(e){return 0==(e>>>=0)?32:31-(em(e)/eh|0)|0},em=Math.log,eh=Math.LN2,eg=256,ey=4194304;function ev(e){var t=42&e;if(0!==t)return t;switch(e&-e){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:return 64;case 128:return 128;case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return 4194048&e;case 4194304:case 8388608:case 0x1000000:case 0x2000000:return 0x3c00000&e;case 0x4000000:return 0x4000000;case 0x8000000:return 0x8000000;case 0x10000000:return 0x10000000;case 0x20000000:return 0x20000000;case 0x40000000:return 0;default:return e}}function eb(e,t,n){var r=e.pendingLanes;if(0===r)return 0;var l=0,a=e.suspendedLanes,o=e.pingedLanes;e=e.warmLanes;var i=0x7ffffff&r;return 0!==i?0!=(r=i&~a)?l=ev(r):0!=(o&=i)?l=ev(o):n||0!=(n=i&~e)&&(l=ev(n)):0!=(i=r&~a)?l=ev(i):0!==o?l=ev(o):n||0!=(n=r&~e)&&(l=ev(n)),0===l?0:0!==t&&t!==l&&0==(t&a)&&((a=l&-l)>=(n=t&-t)||32===a&&0!=(4194048&n))?t:l}function ek(e,t){return 0==(e.pendingLanes&~(e.suspendedLanes&~e.pingedLanes)&t)}function ew(){var e=eg;return 0==(4194048&(eg<<=1))&&(eg=256),e}function eS(){var e=ey;return 0==(0x3c00000&(ey<<=1))&&(ey=4194304),e}function ex(e){for(var t=[],n=0;31>n;n++)t.push(e);return t}function eE(e,t){e.pendingLanes|=t,0x10000000!==t&&(e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0)}function eC(e,t,n){e.pendingLanes|=t,e.suspendedLanes&=~t;var r=31-ep(t);e.entangledLanes|=t,e.entanglements[r]=0x40000000|e.entanglements[r]|4194090&n}function e_(e,t){var n=e.entangledLanes|=t;for(e=e.entanglements;n;){var r=31-ep(n),l=1<)":-1l||u[r]!==s[l]){var c="\n"+u[r].replace(" at new "," at ");return e.displayName&&c.includes("")&&(c=c.replace("",e.displayName)),c}while(1<=r&&0<=l);break}}}finally{e2=!1,Error.prepareStackTrace=n}return(n=e?e.displayName||e.name:"")?e1(n):""}function e4(e){try{var t="";do t+=function(e){switch(e.tag){case 26:case 27:case 5:return e1(e.type);case 16:return e1("Lazy");case 13:return e1("Suspense");case 19:return e1("SuspenseList");case 0:case 15:return e3(e.type,!1);case 11:return e3(e.type.render,!1);case 1:return e3(e.type,!0);case 31:return e1("Activity");default:return""}}(e),e=e.return;while(e);return t}catch(e){return"\nError generating stack: "+e.message+"\n"+e.stack}}function e8(e){switch(typeof e){case"bigint":case"boolean":case"number":case"string":case"undefined":case"object":return e;default:return""}}function e6(e){var t=e.type;return(e=e.nodeName)&&"input"===e.toLowerCase()&&("checkbox"===t||"radio"===t)}function e5(e){e._valueTracker||(e._valueTracker=function(e){var t=e6(e)?"checked":"value",n=Object.getOwnPropertyDescriptor(e.constructor.prototype,t),r=""+e[t];if(!e.hasOwnProperty(t)&&void 0!==n&&"function"==typeof n.get&&"function"==typeof n.set){var l=n.get,a=n.set;return Object.defineProperty(e,t,{configurable:!0,get:function(){return l.call(this)},set:function(e){r=""+e,a.call(this,e)}}),Object.defineProperty(e,t,{enumerable:n.enumerable}),{getValue:function(){return r},setValue:function(e){r=""+e},stopTracking:function(){e._valueTracker=null,delete e[t]}}}}(e))}function e9(e){if(!e)return!1;var t=e._valueTracker;if(!t)return!0;var n=t.getValue(),r="";return e&&(r=e6(e)?e.checked?"true":"false":e.value),(e=r)!==n&&(t.setValue(e),!0)}function e7(e){if(void 0===(e=e||("undefined"!=typeof document?document:void 0)))return null;try{return e.activeElement||e.body}catch(t){return e.body}}var te=/[\n"\\]/g;function tt(e){return e.replace(te,function(e){return"\\"+e.charCodeAt(0).toString(16)+" "})}function tn(e,t,n,r,l,a,o,i){e.name="",null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o?e.type=o:e.removeAttribute("type"),null!=t?"number"===o?(0===t&&""===e.value||e.value!=t)&&(e.value=""+e8(t)):e.value!==""+e8(t)&&(e.value=""+e8(t)):"submit"!==o&&"reset"!==o||e.removeAttribute("value"),null!=t?tl(e,o,e8(t)):null!=n?tl(e,o,e8(n)):null!=r&&e.removeAttribute("value"),null==l&&null!=a&&(e.defaultChecked=!!a),null!=l&&(e.checked=l&&"function"!=typeof l&&"symbol"!=typeof l),null!=i&&"function"!=typeof i&&"symbol"!=typeof i&&"boolean"!=typeof i?e.name=""+e8(i):e.removeAttribute("name")}function tr(e,t,n,r,l,a,o,i){if(null!=a&&"function"!=typeof a&&"symbol"!=typeof a&&"boolean"!=typeof a&&(e.type=a),null!=t||null!=n){if(("submit"===a||"reset"===a)&&null==t)return;n=null!=n?""+e8(n):"",t=null!=t?""+e8(t):n,i||t===e.value||(e.value=t),e.defaultValue=t}r="function"!=typeof(r=null!=r?r:l)&&"symbol"!=typeof r&&!!r,e.checked=i?e.checked:!!r,e.defaultChecked=!!r,null!=o&&"function"!=typeof o&&"symbol"!=typeof o&&"boolean"!=typeof o&&(e.name=o)}function tl(e,t,n){"number"===t&&e7(e.ownerDocument)===e||e.defaultValue===""+n||(e.defaultValue=""+n)}function ta(e,t,n,r){if(e=e.options,t){t={};for(var l=0;l=ne),nr=!1;function nl(e,t){switch(e){case"keyup":return -1!==t9.indexOf(t.keyCode);case"keydown":return 229!==t.keyCode;case"keypress":case"mousedown":case"focusout":return!0;default:return!1}}function na(e){return"object"==typeof(e=e.detail)&&"data"in e?e.data:null}var no=!1,ni={color:!0,date:!0,datetime:!0,"datetime-local":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function nu(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return"input"===t?!!ni[e.type]:"textarea"===t}function ns(e,t,n,r){tv?tb?tb.push(r):tb=[r]:tv=r,0<(t=u3(t,"onChange")).length&&(n=new tH("onChange","change",null,n,r),e.push({event:n,listeners:t}))}var nc=null,nf=null;function nd(e){uY(e,0)}function np(e){if(e9(e$(e)))return e}function nm(e,t){if("change"===e)return t}var nh=!1;if(tE){if(tE){var ng="oninput"in document;if(!ng){var ny=document.createElement("div");ny.setAttribute("oninput","return;"),ng="function"==typeof ny.oninput}r=ng}else r=!1;nh=r&&(!document.documentMode||9=t)return{node:r,offset:t-e};e=n}e:{for(;r;){if(r.nextSibling){r=r.nextSibling;break e}r=r.parentNode}r=void 0}r=n_(r)}}function nz(e){e=null!=e&&null!=e.ownerDocument&&null!=e.ownerDocument.defaultView?e.ownerDocument.defaultView:window;for(var t=e7(e.document);t instanceof e.HTMLIFrameElement;){try{var n="string"==typeof t.contentWindow.location.href}catch(e){n=!1}if(n)e=t.contentWindow;else break;t=e7(e.document)}return t}function nN(e){var t=e&&e.nodeName&&e.nodeName.toLowerCase();return t&&("input"===t&&("text"===e.type||"search"===e.type||"tel"===e.type||"url"===e.type||"password"===e.type)||"textarea"===t||"true"===e.contentEditable)}var nT=tE&&"documentMode"in document&&11>=document.documentMode,nL=null,nO=null,nR=null,nD=!1;function nA(e,t,n){var r=n.window===n?n.document:9===n.nodeType?n:n.ownerDocument;nD||null==nL||nL!==e7(r)||(r="selectionStart"in(r=nL)&&nN(r)?{start:r.selectionStart,end:r.selectionEnd}:{anchorNode:(r=(r.ownerDocument&&r.ownerDocument.defaultView||window).getSelection()).anchorNode,anchorOffset:r.anchorOffset,focusNode:r.focusNode,focusOffset:r.focusOffset},nR&&nC(nR,r)||(nR=r,0<(r=u3(nO,"onSelect")).length&&(t=new tH("onSelect","select",null,t,n),e.push({event:t,listeners:r}),t.target=nL)))}function nF(e,t){var n={};return n[e.toLowerCase()]=t.toLowerCase(),n["Webkit"+e]="webkit"+t,n["Moz"+e]="moz"+t,n}var nM={animationend:nF("Animation","AnimationEnd"),animationiteration:nF("Animation","AnimationIteration"),animationstart:nF("Animation","AnimationStart"),transitionrun:nF("Transition","TransitionRun"),transitionstart:nF("Transition","TransitionStart"),transitioncancel:nF("Transition","TransitionCancel"),transitionend:nF("Transition","TransitionEnd")},nI={},nU={};function nj(e){if(nI[e])return nI[e];if(!nM[e])return e;var t,n=nM[e];for(t in n)if(n.hasOwnProperty(t)&&t in nU)return nI[e]=n[t];return e}tE&&(nU=document.createElement("div").style,"AnimationEvent"in window||(delete nM.animationend.animation,delete nM.animationiteration.animation,delete nM.animationstart.animation),"TransitionEvent"in window||delete nM.transitionend.transition);var nH=nj("animationend"),n$=nj("animationiteration"),nV=nj("animationstart"),nB=nj("transitionrun"),nQ=nj("transitionstart"),nW=nj("transitioncancel"),nq=nj("transitionend"),nK=new Map,nY="abort auxClick beforeToggle cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel".split(" ");function nG(e,t){nK.set(e,t),eq(t,[e])}nY.push("scrollEnd");var nX=new WeakMap;function nZ(e,t){if("object"==typeof e&&null!==e){var n=nX.get(e);return void 0!==n?n:(t={value:e,source:t,stack:e4(t)},nX.set(e,t),t)}return{value:e,source:t,stack:e4(t)}}var nJ=[],n0=0,n1=0;function n2(){for(var e=n0,t=n1=n0=0;t>=o,l-=o,rh=1<<32-ep(t)+l|n<a?a:8;var o=D.T,i={};D.T=i,aj(e,!1,t,n);try{var u=l(),s=D.S;if(null!==s&&s(i,u),null!==u&&"object"==typeof u&&"function"==typeof u.then){var c,f,d=(c=[],f={status:"pending",value:null,reason:null,then:function(e){c.push(e)}},u.then(function(){f.status="fulfilled",f.value=r;for(var e=0;eh?(g=f,f=null):g=f.sibling;var y=p(l,f,i[h],u);if(null===y){null===f&&(f=g);break}e&&f&&null===y.alternate&&t(l,f),o=a(y,o,h),null===c?s=y:c.sibling=y,c=y,f=g}if(h===i.length)return n(l,f),rx&&ry(l,h),s;if(null===f){for(;hg?(y=h,h=null):y=h.sibling;var b=p(l,h,v.value,s);if(null===b){null===h&&(h=y);break}e&&h&&null===b.alternate&&t(l,h),o=a(b,o,g),null===f?c=b:f.sibling=b,f=b,h=y}if(v.done)return n(l,h),rx&&ry(l,g),c;if(null===h){for(;!v.done;g++,v=i.next())null!==(v=d(l,v.value,s))&&(o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return rx&&ry(l,g),c}for(h=r(h);!v.done;g++,v=i.next())null!==(v=m(h,l,g,v.value,s))&&(e&&null!==v.alternate&&h.delete(null===v.key?g:v.key),o=a(v,o,g),null===f?c=v:f.sibling=v,f=v);return e&&h.forEach(function(e){return t(l,e)}),rx&&ry(l,g),c}(s,c,f=b.call(f),v)}if("function"==typeof f.then)return i(s,c,aG(f),v);if(f.$$typeof===S)return i(s,c,rQ(s,f),v);aZ(s,f)}return"string"==typeof f&&""!==f||"number"==typeof f||"bigint"==typeof f?(f=""+f,null!==c&&6===c.tag?(n(s,c.sibling),(v=l(c,f)).return=s):(n(s,c),(v=ro(f,s.mode,v)).return=s),o(s=v)):n(s,c)}(i,s,c,f);return aK=null,v}catch(e){if(e===r7||e===lt)throw e;var b=re(29,e,null,i.mode);return b.lanes=f,b.return=i,b}finally{}}}var a1=a0(!0),a2=a0(!1),a3=U(null),a4=null;function a8(e){var t=e.alternate;H(a7,1&a7.current),H(a3,e),null===a4&&(null===t||null!==lw.current?a4=e:null!==t.memoizedState&&(a4=e))}function a6(e){if(22===e.tag){if(H(a7,a7.current),H(a3,e),null===a4){var t=e.alternate;null!==t&&null!==t.memoizedState&&(a4=e)}}else a5(e)}function a5(){H(a7,a7.current),H(a3,a3.current)}function a9(e){j(a3),a4===e&&(a4=null),j(a7)}var a7=U(0);function oe(e){for(var t=e;null!==t;){if(13===t.tag){var n=t.memoizedState;if(null!==n&&(null===(n=n.dehydrated)||"$?"===n.data||sb(n)))return t}else if(19===t.tag&&void 0!==t.memoizedProps.revealOrder){if(0!=(128&t.flags))return t}else if(null!==t.child){t.child.return=t,t=t.child;continue}if(t===e)break;for(;null===t.sibling;){if(null===t.return||t.return===e)return null;t=t.return}t.sibling.return=t.return,t=t.sibling}return null}function ot(e,t,n,r){n=null==(n=n(r,t=e.memoizedState))?t:p({},t,n),e.memoizedState=n,0===e.lanes&&(e.updateQueue.baseState=n)}var on={enqueueSetState:function(e,t,n){e=e._reactInternals;var r=i6(),l=ld(r);l.payload=t,null!=n&&(l.callback=n),null!==(t=lp(e,l,r))&&(i9(t,e,r),lm(t,e,r))},enqueueReplaceState:function(e,t,n){e=e._reactInternals;var r=i6(),l=ld(r);l.tag=1,l.payload=t,null!=n&&(l.callback=n),null!==(t=lp(e,l,r))&&(i9(t,e,r),lm(t,e,r))},enqueueForceUpdate:function(e,t){e=e._reactInternals;var n=i6(),r=ld(n);r.tag=2,null!=t&&(r.callback=t),null!==(t=lp(e,r,n))&&(i9(t,e,n),lm(t,e,n))}};function or(e,t,n,r,l,a,o){return"function"==typeof(e=e.stateNode).shouldComponentUpdate?e.shouldComponentUpdate(r,a,o):!t.prototype||!t.prototype.isPureReactComponent||!nC(n,r)||!nC(l,a)}function ol(e,t,n,r){e=t.state,"function"==typeof t.componentWillReceiveProps&&t.componentWillReceiveProps(n,r),"function"==typeof t.UNSAFE_componentWillReceiveProps&&t.UNSAFE_componentWillReceiveProps(n,r),t.state!==e&&on.enqueueReplaceState(t,t.state,null)}function oa(e,t){var n=t;if("ref"in t)for(var r in n={},t)"ref"!==r&&(n[r]=t[r]);if(e=e.defaultProps)for(var l in n===t&&(n=p({},n)),e)void 0===n[l]&&(n[l]=e[l]);return n}var oo="function"==typeof reportError?reportError:function(e){if("object"==typeof window&&"function"==typeof window.ErrorEvent){var t=new window.ErrorEvent("error",{bubbles:!0,cancelable:!0,message:"object"==typeof e&&null!==e&&"string"==typeof e.message?String(e.message):String(e),error:e});if(!window.dispatchEvent(t))return}else if("object"==typeof l&&"function"==typeof l.emit)return void l.emit("uncaughtException",e);console.error(e)};function oi(e){oo(e)}function ou(e){console.error(e)}function os(e){oo(e)}function oc(e,t){try{(0,e.onUncaughtError)(t.value,{componentStack:t.stack})}catch(e){setTimeout(function(){throw e})}}function of(e,t,n){try{(0,e.onCaughtError)(n.value,{componentStack:n.stack,errorBoundary:1===t.tag?t.stateNode:null})}catch(e){setTimeout(function(){throw e})}}function od(e,t,n){return(n=ld(n)).tag=3,n.payload={element:null},n.callback=function(){oc(e,t)},n}function op(e){return(e=ld(e)).tag=3,e}function om(e,t,n,r){var l=n.type.getDerivedStateFromError;if("function"==typeof l){var a=r.value;e.payload=function(){return l(a)},e.callback=function(){of(t,n,r)}}var o=n.stateNode;null!==o&&"function"==typeof o.componentDidCatch&&(e.callback=function(){of(t,n,r),"function"!=typeof l&&(null===iG?iG=new Set([this]):iG.add(this));var e=r.stack;this.componentDidCatch(r.value,{componentStack:null!==e?e:""})})}var oh=Error(u(461)),og=!1;function oy(e,t,n,r){t.child=null===e?a2(t,null,n,r):a1(t,e.child,n,r)}function ov(e,t,n,r,l){n=n.render;var a=t.ref;if("ref"in r){var o={};for(var i in r)"ref"!==i&&(o[i]=r[i])}else o=r;return(rV(t),r=lU(e,t,n,o,a,l),i=lV(),null===e||og)?(rx&&i&&rb(t),t.flags|=1,oy(e,t,r,l),t.child):(lB(e,t,l),oI(e,t,l))}function ob(e,t,n,r,l){if(null===e){var a=n.type;return"function"!=typeof a||rt(a)||void 0!==a.defaultProps||null!==n.compare?((e=rl(n.type,null,r,t,t.mode,l)).ref=t.ref,e.return=t,t.child=e):(t.tag=15,t.type=a,ok(e,t,a,r,l))}if(a=e.child,!oU(e,l)){var o=a.memoizedProps;if((n=null!==(n=n.compare)?n:nC)(o,r)&&e.ref===t.ref)return oI(e,t,l)}return t.flags|=1,(e=rn(a,r)).ref=t.ref,e.return=t,t.child=e}function ok(e,t,n,r,l){if(null!==e){var a=e.memoizedProps;if(nC(a,r)&&e.ref===t.ref)if(og=!1,t.pendingProps=r=a,!oU(e,l))return t.lanes=e.lanes,oI(e,t,l);else 0!=(131072&e.flags)&&(og=!0)}return oE(e,t,n,r,l)}function ow(e,t,n){var r=t.pendingProps,l=r.children,a=null!==e?e.memoizedState:null;if("hidden"===r.mode){if(0!=(128&t.flags)){if(r=null!==a?a.baseLanes|n:n,null!==e){for(a=0,l=t.child=e.child;null!==l;)a=a|l.lanes|l.childLanes,l=l.sibling;t.childLanes=a&~r}else t.childLanes=0,t.child=null;return oS(e,t,r,n)}if(0==(0x20000000&n))return t.lanes=t.childLanes=0x20000000,oS(e,t,null!==a?a.baseLanes|n:n,n);t.memoizedState={baseLanes:0,cachePool:null},null!==e&&r5(t,null!==a?a.cachePool:null),null!==a?lx(t,a):lE(),a6(t)}else null!==a?(r5(t,a.cachePool),lx(t,a),a5(t),t.memoizedState=null):(null!==e&&r5(t,null),lE(),a5(t));return oy(e,t,l,n),t.child}function oS(e,t,n,r){var l=r6();return t.memoizedState={baseLanes:n,cachePool:l=null===l?null:{parent:rG._currentValue,pool:l}},null!==e&&r5(t,null),lE(),a6(t),null!==e&&rH(e,t,r,!0),null}function ox(e,t){var n=t.ref;if(null===n)null!==e&&null!==e.ref&&(t.flags|=4194816);else{if("function"!=typeof n&&"object"!=typeof n)throw Error(u(284));(null===e||e.ref!==n)&&(t.flags|=4194816)}}function oE(e,t,n,r,l){return(rV(t),n=lU(e,t,n,r,void 0,l),r=lV(),null===e||og)?(rx&&r&&rb(t),t.flags|=1,oy(e,t,n,l),t.child):(lB(e,t,l),oI(e,t,l))}function oC(e,t,n,r,l,a){return(rV(t),t.updateQueue=null,n=lH(t,r,n,l),lj(e),r=lV(),null===e||og)?(rx&&r&&rb(t),t.flags|=1,oy(e,t,n,a),t.child):(lB(e,t,a),oI(e,t,a))}function o_(e,t,n,r,l){if(rV(t),null===t.stateNode){var a=n9,o=n.contextType;"object"==typeof o&&null!==o&&(a=rB(o)),t.memoizedState=null!==(a=new n(r,a)).state&&void 0!==a.state?a.state:null,a.updater=on,t.stateNode=a,a._reactInternals=t,(a=t.stateNode).props=r,a.state=t.memoizedState,a.refs={},lc(t),o=n.contextType,a.context="object"==typeof o&&null!==o?rB(o):n9,a.state=t.memoizedState,"function"==typeof(o=n.getDerivedStateFromProps)&&(ot(t,n,o,r),a.state=t.memoizedState),"function"==typeof n.getDerivedStateFromProps||"function"==typeof a.getSnapshotBeforeUpdate||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||(o=a.state,"function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount(),o!==a.state&&on.enqueueReplaceState(a,a.state,null),lv(t,r,a,l),ly(),a.state=t.memoizedState),"function"==typeof a.componentDidMount&&(t.flags|=4194308),r=!0}else if(null===e){a=t.stateNode;var i=t.memoizedProps,u=oa(n,i);a.props=u;var s=a.context,c=n.contextType;o=n9,"object"==typeof c&&null!==c&&(o=rB(c));var f=n.getDerivedStateFromProps;c="function"==typeof f||"function"==typeof a.getSnapshotBeforeUpdate,i=t.pendingProps!==i,c||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(i||s!==o)&&ol(t,a,r,o),ls=!1;var d=t.memoizedState;a.state=d,lv(t,r,a,l),ly(),s=t.memoizedState,i||d!==s||ls?("function"==typeof f&&(ot(t,n,f,r),s=t.memoizedState),(u=ls||or(t,n,u,r,d,s,o))?(c||"function"!=typeof a.UNSAFE_componentWillMount&&"function"!=typeof a.componentWillMount||("function"==typeof a.componentWillMount&&a.componentWillMount(),"function"==typeof a.UNSAFE_componentWillMount&&a.UNSAFE_componentWillMount()),"function"==typeof a.componentDidMount&&(t.flags|=4194308)):("function"==typeof a.componentDidMount&&(t.flags|=4194308),t.memoizedProps=r,t.memoizedState=s),a.props=r,a.state=s,a.context=o,r=u):("function"==typeof a.componentDidMount&&(t.flags|=4194308),r=!1)}else{a=t.stateNode,lf(e,t),c=oa(n,o=t.memoizedProps),a.props=c,f=t.pendingProps,d=a.context,s=n.contextType,u=n9,"object"==typeof s&&null!==s&&(u=rB(s)),(s="function"==typeof(i=n.getDerivedStateFromProps)||"function"==typeof a.getSnapshotBeforeUpdate)||"function"!=typeof a.UNSAFE_componentWillReceiveProps&&"function"!=typeof a.componentWillReceiveProps||(o!==f||d!==u)&&ol(t,a,r,u),ls=!1,d=t.memoizedState,a.state=d,lv(t,r,a,l),ly();var p=t.memoizedState;o!==f||d!==p||ls||null!==e&&null!==e.dependencies&&r$(e.dependencies)?("function"==typeof i&&(ot(t,n,i,r),p=t.memoizedState),(c=ls||or(t,n,c,r,d,p,u)||null!==e&&null!==e.dependencies&&r$(e.dependencies))?(s||"function"!=typeof a.UNSAFE_componentWillUpdate&&"function"!=typeof a.componentWillUpdate||("function"==typeof a.componentWillUpdate&&a.componentWillUpdate(r,p,u),"function"==typeof a.UNSAFE_componentWillUpdate&&a.UNSAFE_componentWillUpdate(r,p,u)),"function"==typeof a.componentDidUpdate&&(t.flags|=4),"function"==typeof a.getSnapshotBeforeUpdate&&(t.flags|=1024)):("function"!=typeof a.componentDidUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),t.memoizedProps=r,t.memoizedState=p),a.props=r,a.state=p,a.context=u,r=c):("function"!=typeof a.componentDidUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=4),"function"!=typeof a.getSnapshotBeforeUpdate||o===e.memoizedProps&&d===e.memoizedState||(t.flags|=1024),r=!1)}return a=r,ox(e,t),r=0!=(128&t.flags),a||r?(a=t.stateNode,n=r&&"function"!=typeof n.getDerivedStateFromError?null:a.render(),t.flags|=1,null!==e&&r?(t.child=a1(t,e.child,null,l),t.child=a1(t,null,n,l)):oy(e,t,n,l),t.memoizedState=a.state,e=t.child):e=oI(e,t,l),e}function oP(e,t,n,r){return rL(),t.flags|=256,oy(e,t,n,r),t.child}var oz={dehydrated:null,treeContext:null,retryLane:0,hydrationErrors:null};function oN(e){return{baseLanes:e,cachePool:r9()}}function oT(e,t,n){return e=null!==e?e.childLanes&~n:0,t&&(e|=i$),e}function oL(e,t,n){var r,l=t.pendingProps,a=!1,o=0!=(128&t.flags);if((r=o)||(r=(null===e||null!==e.memoizedState)&&0!=(2&a7.current)),r&&(a=!0,t.flags&=-129),r=0!=(32&t.flags),t.flags&=-33,null===e){if(rx){if(a?a8(t):a5(t),rx){var i,s=rS;if(i=s){n:{for(i=s,s=rC;8!==i.nodeType;)if(!s||null===(i=sk(i.nextSibling))){s=null;break n}s=i}null!==s?(t.memoizedState={dehydrated:s,treeContext:null!==rm?{id:rh,overflow:rg}:null,retryLane:0x20000000,hydrationErrors:null},(i=re(18,null,null,0)).stateNode=s,i.return=t,t.child=i,rw=t,rS=null,i=!0):i=!1}i||rP(t)}if(null!==(s=t.memoizedState)&&null!==(s=s.dehydrated))return sb(s)?t.lanes=32:t.lanes=0x20000000,null;a9(t)}return(s=l.children,l=l.fallback,a)?(a5(t),s=oR({mode:"hidden",children:s},a=t.mode),l=ra(l,a,n,null),s.return=t,l.return=t,s.sibling=l,t.child=s,(a=t.child).memoizedState=oN(n),a.childLanes=oT(e,r,n),t.memoizedState=oz,l):(a8(t),oO(t,s))}if(null!==(i=e.memoizedState)&&null!==(s=i.dehydrated)){if(o)256&t.flags?(a8(t),t.flags&=-257,t=oD(e,t,n)):null!==t.memoizedState?(a5(t),t.child=e.child,t.flags|=128,t=null):(a5(t),a=l.fallback,s=t.mode,l=oR({mode:"visible",children:l.children},s),a=ra(a,s,n,null),a.flags|=2,l.return=t,a.return=t,l.sibling=a,t.child=l,a1(t,e.child,null,n),(l=t.child).memoizedState=oN(n),l.childLanes=oT(e,r,n),t.memoizedState=oz,t=a);else if(a8(t),sb(s)){if(r=s.nextSibling&&s.nextSibling.dataset)var c=r.dgst;r=c,(l=Error(u(419))).stack="",l.digest=r,rR({value:l,source:null,stack:null}),t=oD(e,t,n)}else if(og||rH(e,t,n,!1),r=0!=(n&e.childLanes),og||r){if(null!==(r=iN)&&0!==(l=0!=((l=0!=(42&(l=n&-n))?1:eP(l))&(r.suspendedLanes|n))?0:l)&&l!==i.retryLane)throw i.retryLane=l,n8(e,l),i9(r,e,l),oh;"$?"===s.data||uu(),t=oD(e,t,n)}else"$?"===s.data?(t.flags|=192,t.child=e.child,t=null):(e=i.treeContext,rS=sk(s.nextSibling),rw=t,rx=!0,rE=null,rC=!1,null!==e&&(rd[rp++]=rh,rd[rp++]=rg,rd[rp++]=rm,rh=e.id,rg=e.overflow,rm=t),t=oO(t,l.children),t.flags|=4096);return t}return a?(a5(t),a=l.fallback,s=t.mode,c=(i=e.child).sibling,(l=rn(i,{mode:"hidden",children:l.children})).subtreeFlags=0x3e00000&i.subtreeFlags,null!==c?a=rn(c,a):(a=ra(a,s,n,null),a.flags|=2),a.return=t,l.return=t,l.sibling=a,t.child=l,l=a,a=t.child,null===(s=e.child.memoizedState)?s=oN(n):(null!==(i=s.cachePool)?(c=rG._currentValue,i=i.parent!==c?{parent:c,pool:c}:i):i=r9(),s={baseLanes:s.baseLanes|n,cachePool:i}),a.memoizedState=s,a.childLanes=oT(e,r,n),t.memoizedState=oz,l):(a8(t),e=(n=e.child).sibling,(n=rn(n,{mode:"visible",children:l.children})).return=t,n.sibling=null,null!==e&&(null===(r=t.deletions)?(t.deletions=[e],t.flags|=16):r.push(e)),t.child=n,t.memoizedState=null,n)}function oO(e,t){return(t=oR({mode:"visible",children:t},e.mode)).return=e,e.child=t}function oR(e,t){return(e=re(22,e,null,t)).lanes=0,e.stateNode={_visibility:1,_pendingMarkers:null,_retryCache:null,_transitions:null},e}function oD(e,t,n){return a1(t,e.child,null,n),e=oO(t,t.pendingProps.children),e.flags|=2,t.memoizedState=null,e}function oA(e,t,n){e.lanes|=t;var r=e.alternate;null!==r&&(r.lanes|=t),rU(e.return,t,n)}function oF(e,t,n,r,l){var a=e.memoizedState;null===a?e.memoizedState={isBackwards:t,rendering:null,renderingStartTime:0,last:r,tail:n,tailMode:l}:(a.isBackwards=t,a.rendering=null,a.renderingStartTime=0,a.last=r,a.tail=n,a.tailMode=l)}function oM(e,t,n){var r=t.pendingProps,l=r.revealOrder,a=r.tail;if(oy(e,t,r.children,n),0!=(2&(r=a7.current)))r=1&r|2,t.flags|=128;else{if(null!==e&&0!=(128&e.flags))e:for(e=t.child;null!==e;){if(13===e.tag)null!==e.memoizedState&&oA(e,n,t);else if(19===e.tag)oA(e,n,t);else if(null!==e.child){e.child.return=e,e=e.child;continue}if(e===t)break;for(;null===e.sibling;){if(null===e.return||e.return===t)break e;e=e.return}e.sibling.return=e.return,e=e.sibling}r&=1}switch(H(a7,r),l){case"forwards":for(l=null,n=t.child;null!==n;)null!==(e=n.alternate)&&null===oe(e)&&(l=n),n=n.sibling;null===(n=l)?(l=t.child,t.child=null):(l=n.sibling,n.sibling=null),oF(t,!1,l,n,a);break;case"backwards":for(n=null,l=t.child,t.child=null;null!==l;){if(null!==(e=l.alternate)&&null===oe(e)){t.child=l;break}e=l.sibling,l.sibling=n,n=l,l=e}oF(t,!0,n,null,a);break;case"together":oF(t,!1,null,null,void 0);break;default:t.memoizedState=null}return t.child}function oI(e,t,n){if(null!==e&&(t.dependencies=e.dependencies),iU|=t.lanes,0==(n&t.childLanes)){if(null===e)return null;else if(rH(e,t,n,!1),0==(n&t.childLanes))return null}if(null!==e&&t.child!==e.child)throw Error(u(153));if(null!==t.child){for(n=rn(e=t.child,e.pendingProps),t.child=n,n.return=t;null!==e.sibling;)e=e.sibling,(n=n.sibling=rn(e,e.pendingProps)).return=t;n.sibling=null}return t.child}function oU(e,t){return 0!=(e.lanes&t)||!!(null!==(e=e.dependencies)&&r$(e))}function oj(e,t,n){if(null!==e)if(e.memoizedProps!==t.pendingProps)og=!0;else{if(!oU(e,n)&&0==(128&t.flags))return og=!1,function(e,t,n){switch(t.tag){case 3:W(t,t.stateNode.containerInfo),rM(t,rG,e.memoizedState.cache),rL();break;case 27:case 5:K(t);break;case 4:W(t,t.stateNode.containerInfo);break;case 10:rM(t,t.type,t.memoizedProps.value);break;case 13:var r=t.memoizedState;if(null!==r){if(null!==r.dehydrated)return a8(t),t.flags|=128,null;if(0!=(n&t.child.childLanes))return oL(e,t,n);return a8(t),null!==(e=oI(e,t,n))?e.sibling:null}a8(t);break;case 19:var l=0!=(128&e.flags);if((r=0!=(n&t.childLanes))||(rH(e,t,n,!1),r=0!=(n&t.childLanes)),l){if(r)return oM(e,t,n);t.flags|=128}if(null!==(l=t.memoizedState)&&(l.rendering=null,l.tail=null,l.lastEffect=null),H(a7,a7.current),!r)return null;break;case 22:case 23:return t.lanes=0,ow(e,t,n);case 24:rM(t,rG,e.memoizedState.cache)}return oI(e,t,n)}(e,t,n);og=0!=(131072&e.flags)}else og=!1,rx&&0!=(1048576&t.flags)&&rv(t,rf,t.index);switch(t.lanes=0,t.tag){case 16:e:{e=t.pendingProps;var r=t.elementType,l=r._init;if(r=l(r._payload),t.type=r,"function"==typeof r)rt(r)?(e=oa(r,e),t.tag=1,t=o_(null,t,r,e,n)):(t.tag=0,t=oE(null,t,r,e,n));else{if(null!=r){if((l=r.$$typeof)===x){t.tag=11,t=ov(null,t,r,e,n);break e}else if(l===_){t.tag=14,t=ob(null,t,r,e,n);break e}}throw Error(u(306,t=function e(t){if(null==t)return null;if("function"==typeof t)return t.$$typeof===O?null:t.displayName||t.name||null;if("string"==typeof t)return t;switch(t){case y:return"Fragment";case b:return"Profiler";case v:return"StrictMode";case E:return"Suspense";case C:return"SuspenseList";case z:return"Activity"}if("object"==typeof t)switch(t.$$typeof){case g:return"Portal";case S:return(t.displayName||"Context")+".Provider";case w:return(t._context.displayName||"Context")+".Consumer";case x:var n=t.render;return(t=t.displayName)||(t=""!==(t=n.displayName||n.name||"")?"ForwardRef("+t+")":"ForwardRef"),t;case _:return null!==(n=t.displayName||null)?n:e(t.type)||"Memo";case P:n=t._payload,t=t._init;try{return e(t(n))}catch(e){}}return null}(r)||r,""))}}return t;case 0:return oE(e,t,t.type,t.pendingProps,n);case 1:return l=oa(r=t.type,t.pendingProps),o_(e,t,r,l,n);case 3:e:{if(W(t,t.stateNode.containerInfo),null===e)throw Error(u(387));r=t.pendingProps;var a=t.memoizedState;l=a.element,lf(e,t),lv(t,r,null,n);var o=t.memoizedState;if(rM(t,rG,r=o.cache),r!==a.cache&&rj(t,[rG],n,!0),ly(),r=o.element,a.isDehydrated)if(a={element:r,isDehydrated:!1,cache:o.cache},t.updateQueue.baseState=a,t.memoizedState=a,256&t.flags){t=oP(e,t,r,n);break e}else if(r!==l){rR(l=nZ(Error(u(424)),t)),t=oP(e,t,r,n);break e}else for(rS=sk((e=9===(e=t.stateNode.containerInfo).nodeType?e.body:"HTML"===e.nodeName?e.ownerDocument.body:e).firstChild),rw=t,rx=!0,rE=null,rC=!0,n=a2(t,null,r,n),t.child=n;n;)n.flags=-3&n.flags|4096,n=n.sibling;else{if(rL(),r===l){t=oI(e,t,n);break e}oy(e,t,r,n)}t=t.child}return t;case 26:return ox(e,t),null===e?(n=sL(t.type,null,t.pendingProps,null))?t.memoizedState=n:rx||(n=t.type,e=t.pendingProps,(r=so(B.current).createElement(n))[eL]=t,r[eO]=e,sr(r,n,e),eB(r),t.stateNode=r):t.memoizedState=sL(t.type,e.memoizedProps,t.pendingProps,e.memoizedState),null;case 27:return K(t),null===e&&rx&&(r=t.stateNode=sx(t.type,t.pendingProps,B.current),rw=t,rC=!0,l=rS,sg(t.type)?(sw=l,rS=sk(r.firstChild)):rS=l),oy(e,t,t.pendingProps.children,n),ox(e,t),null===e&&(t.flags|=4194304),t.child;case 5:return null===e&&rx&&((l=r=rS)&&(null!==(r=function(e,t,n,r){for(;1===e.nodeType;){if(e.nodeName.toLowerCase()!==t.toLowerCase()){if(!r&&("INPUT"!==e.nodeName||"hidden"!==e.type))break}else if(r){if(!e[eI])switch(t){case"meta":if(!e.hasAttribute("itemprop"))break;return e;case"link":if("stylesheet"===(l=e.getAttribute("rel"))&&e.hasAttribute("data-precedence")||l!==n.rel||e.getAttribute("href")!==(null==n.href||""===n.href?null:n.href)||e.getAttribute("crossorigin")!==(null==n.crossOrigin?null:n.crossOrigin)||e.getAttribute("title")!==(null==n.title?null:n.title))break;return e;case"style":if(e.hasAttribute("data-precedence"))break;return e;case"script":if(((l=e.getAttribute("src"))!==(null==n.src?null:n.src)||e.getAttribute("type")!==(null==n.type?null:n.type)||e.getAttribute("crossorigin")!==(null==n.crossOrigin?null:n.crossOrigin))&&l&&e.hasAttribute("async")&&!e.hasAttribute("itemprop"))break;return e;default:return e}}else{if("input"!==t||"hidden"!==e.type)return e;var l=null==n.name?null:""+n.name;if("hidden"===n.type&&e.getAttribute("name")===l)return e}if(null===(e=sk(e.nextSibling)))break}return null}(r,t.type,t.pendingProps,rC))?(t.stateNode=r,rw=t,rS=sk(r.firstChild),rC=!1,l=!0):l=!1),l||rP(t)),K(t),l=t.type,a=t.pendingProps,o=null!==e?e.memoizedProps:null,r=a.children,ss(l,a)?r=null:null!==o&&ss(l,o)&&(t.flags|=32),null!==t.memoizedState&&(sX._currentValue=l=lU(e,t,l$,null,null,n)),ox(e,t),oy(e,t,r,n),t.child;case 6:return null===e&&rx&&((e=n=rS)&&(null!==(n=function(e,t,n){if(""===t)return null;for(;3!==e.nodeType;)if((1!==e.nodeType||"INPUT"!==e.nodeName||"hidden"!==e.type)&&!n||null===(e=sk(e.nextSibling)))return null;return e}(n,t.pendingProps,rC))?(t.stateNode=n,rw=t,rS=null,e=!0):e=!1),e||rP(t)),null;case 13:return oL(e,t,n);case 4:return W(t,t.stateNode.containerInfo),r=t.pendingProps,null===e?t.child=a1(t,null,r,n):oy(e,t,r,n),t.child;case 11:return ov(e,t,t.type,t.pendingProps,n);case 7:return oy(e,t,t.pendingProps,n),t.child;case 8:case 12:return oy(e,t,t.pendingProps.children,n),t.child;case 10:return r=t.pendingProps,rM(t,t.type,r.value),oy(e,t,r.children,n),t.child;case 9:return l=t.type._context,r=t.pendingProps.children,rV(t),r=r(l=rB(l)),t.flags|=1,oy(e,t,r,n),t.child;case 14:return ob(e,t,t.type,t.pendingProps,n);case 15:return ok(e,t,t.type,t.pendingProps,n);case 19:return oM(e,t,n);case 31:return r=t.pendingProps,n=t.mode,r={mode:r.mode,children:r.children},null===e?(n=oR(r,n)).ref=t.ref:(n=rn(e.child,r)).ref=t.ref,t.child=n,n.return=t,t=n;case 22:return ow(e,t,n);case 24:return rV(t),r=rB(rG),null===e?(null===(l=r6())&&(l=iN,a=rX(),l.pooledCache=a,a.refCount++,null!==a&&(l.pooledCacheLanes|=n),l=a),t.memoizedState={parent:r,cache:l},lc(t),rM(t,rG,l)):(0!=(e.lanes&n)&&(lf(e,t),lv(t,null,null,n),ly()),l=e.memoizedState,a=t.memoizedState,l.parent!==r?(l={parent:r,cache:r},t.memoizedState=l,0===t.lanes&&(t.memoizedState=t.updateQueue.baseState=l),rM(t,rG,r)):(rM(t,rG,r=a.cache),r!==l.cache&&rj(t,[rG],n,!0))),oy(e,t,t.pendingProps.children,n),t.child;case 29:throw t.pendingProps}throw Error(u(156,t.tag))}function oH(e){e.flags|=4}function o$(e,t){if("stylesheet"!==t.type||0!=(4&t.state.loading))e.flags&=-0x1000001;else if(e.flags|=0x1000000,!sB(t)){if(null!==(t=a3.current)&&((4194048&iL)===iL?null!==a4:(0x3c00000&iL)!==iL&&0==(0x20000000&iL)||t!==a4))throw lo=ln,le;e.flags|=8192}}function oV(e,t){null!==t&&(e.flags|=4),16384&e.flags&&(t=22!==e.tag?eS():0x20000000,e.lanes|=t,iV|=t)}function oB(e,t){if(!rx)switch(e.tailMode){case"hidden":t=e.tail;for(var n=null;null!==t;)null!==t.alternate&&(n=t),t=t.sibling;null===n?e.tail=null:n.sibling=null;break;case"collapsed":n=e.tail;for(var r=null;null!==n;)null!==n.alternate&&(r=n),n=n.sibling;null===r?t||null===e.tail?e.tail=null:e.tail.sibling=null:r.sibling=null}}function oQ(e){var t=null!==e.alternate&&e.alternate.child===e.child,n=0,r=0;if(t)for(var l=e.child;null!==l;)n|=l.lanes|l.childLanes,r|=0x3e00000&l.subtreeFlags,r|=0x3e00000&l.flags,l.return=e,l=l.sibling;else for(l=e.child;null!==l;)n|=l.lanes|l.childLanes,r|=l.subtreeFlags,r|=l.flags,l.return=e,l=l.sibling;return e.subtreeFlags|=r,e.childLanes=n,t}function oW(e,t){switch(rk(t),t.tag){case 3:rI(rG),q();break;case 26:case 27:case 5:Y(t);break;case 4:q();break;case 13:a9(t);break;case 19:j(a7);break;case 10:rI(t.type);break;case 22:case 23:a9(t),lC(),null!==e&&j(r8);break;case 24:rI(rG)}}function oq(e,t){try{var n=t.updateQueue,r=null!==n?n.lastEffect:null;if(null!==r){var l=r.next;n=l;do{if((n.tag&e)===e){r=void 0;var a=n.create;n.inst.destroy=r=a()}n=n.next}while(n!==l)}}catch(e){ux(t,t.return,e)}}function oK(e,t,n){try{var r=t.updateQueue,l=null!==r?r.lastEffect:null;if(null!==l){var a=l.next;r=a;do{if((r.tag&e)===e){var o=r.inst,i=o.destroy;if(void 0!==i){o.destroy=void 0,l=t;try{i()}catch(e){ux(l,n,e)}}}r=r.next}while(r!==a)}}catch(e){ux(t,t.return,e)}}function oY(e){var t=e.updateQueue;if(null!==t){var n=e.stateNode;try{lk(t,n)}catch(t){ux(e,e.return,t)}}}function oG(e,t,n){n.props=oa(e.type,e.memoizedProps),n.state=e.memoizedState;try{n.componentWillUnmount()}catch(n){ux(e,t,n)}}function oX(e,t){try{var n=e.ref;if(null!==n){switch(e.tag){case 26:case 27:case 5:var r=e.stateNode;break;default:r=e.stateNode}"function"==typeof n?e.refCleanup=n(r):n.current=r}}catch(n){ux(e,t,n)}}function oZ(e,t){var n=e.ref,r=e.refCleanup;if(null!==n)if("function"==typeof r)try{r()}catch(n){ux(e,t,n)}finally{e.refCleanup=null,null!=(e=e.alternate)&&(e.refCleanup=null)}else if("function"==typeof n)try{n(null)}catch(n){ux(e,t,n)}else n.current=null}function oJ(e){var t=e.type,n=e.memoizedProps,r=e.stateNode;try{switch(t){case"button":case"input":case"select":case"textarea":n.autoFocus&&r.focus();break;case"img":n.src?r.src=n.src:n.srcSet&&(r.srcset=n.srcSet)}}catch(t){ux(e,e.return,t)}}function o0(e,t,n){try{var r=e.stateNode;(function(e,t,n,r){switch(t){case"div":case"span":case"svg":case"path":case"a":case"g":case"p":case"li":break;case"input":var l=null,a=null,o=null,i=null,s=null,c=null,f=null;for(m in n){var d=n[m];if(n.hasOwnProperty(m)&&null!=d)switch(m){case"checked":case"value":break;case"defaultValue":s=d;default:r.hasOwnProperty(m)||st(e,t,m,null,r,d)}}for(var p in r){var m=r[p];if(d=n[p],r.hasOwnProperty(p)&&(null!=m||null!=d))switch(p){case"type":a=m;break;case"name":l=m;break;case"checked":c=m;break;case"defaultChecked":f=m;break;case"value":o=m;break;case"defaultValue":i=m;break;case"children":case"dangerouslySetInnerHTML":if(null!=m)throw Error(u(137,t));break;default:m!==d&&st(e,t,p,m,r,d)}}tn(e,o,i,s,c,f,a,l);return;case"select":for(a in m=o=i=p=null,n)if(s=n[a],n.hasOwnProperty(a)&&null!=s)switch(a){case"value":break;case"multiple":m=s;default:r.hasOwnProperty(a)||st(e,t,a,null,r,s)}for(l in r)if(a=r[l],s=n[l],r.hasOwnProperty(l)&&(null!=a||null!=s))switch(l){case"value":p=a;break;case"defaultValue":i=a;break;case"multiple":o=a;default:a!==s&&st(e,t,l,a,r,s)}t=i,n=o,r=m,null!=p?ta(e,!!n,p,!1):!!r!=!!n&&(null!=t?ta(e,!!n,t,!0):ta(e,!!n,n?[]:"",!1));return;case"textarea":for(i in m=p=null,n)if(l=n[i],n.hasOwnProperty(i)&&null!=l&&!r.hasOwnProperty(i))switch(i){case"value":case"children":break;default:st(e,t,i,null,r,l)}for(o in r)if(l=r[o],a=n[o],r.hasOwnProperty(o)&&(null!=l||null!=a))switch(o){case"value":p=l;break;case"defaultValue":m=l;break;case"children":break;case"dangerouslySetInnerHTML":if(null!=l)throw Error(u(91));break;default:l!==a&&st(e,t,o,l,r,a)}to(e,p,m);return;case"option":for(var h in n)p=n[h],n.hasOwnProperty(h)&&null!=p&&!r.hasOwnProperty(h)&&("selected"===h?e.selected=!1:st(e,t,h,null,r,p));for(s in r)p=r[s],m=n[s],r.hasOwnProperty(s)&&p!==m&&(null!=p||null!=m)&&("selected"===s?e.selected=p&&"function"!=typeof p&&"symbol"!=typeof p:st(e,t,s,p,r,m));return;case"img":case"link":case"area":case"base":case"br":case"col":case"embed":case"hr":case"keygen":case"meta":case"param":case"source":case"track":case"wbr":case"menuitem":for(var g in n)p=n[g],n.hasOwnProperty(g)&&null!=p&&!r.hasOwnProperty(g)&&st(e,t,g,null,r,p);for(c in r)if(p=r[c],m=n[c],r.hasOwnProperty(c)&&p!==m&&(null!=p||null!=m))switch(c){case"children":case"dangerouslySetInnerHTML":if(null!=p)throw Error(u(137,t));break;default:st(e,t,c,p,r,m)}return;default:if(td(t)){for(var y in n)p=n[y],n.hasOwnProperty(y)&&void 0!==p&&!r.hasOwnProperty(y)&&sn(e,t,y,void 0,r,p);for(f in r)p=r[f],m=n[f],r.hasOwnProperty(f)&&p!==m&&(void 0!==p||void 0!==m)&&sn(e,t,f,p,r,m);return}}for(var v in n)p=n[v],n.hasOwnProperty(v)&&null!=p&&!r.hasOwnProperty(v)&&st(e,t,v,null,r,p);for(d in r)p=r[d],m=n[d],r.hasOwnProperty(d)&&p!==m&&(null!=p||null!=m)&&st(e,t,d,p,r,m)})(r,e.type,n,t),r[eO]=t}catch(t){ux(e,e.return,t)}}function o1(e){return 5===e.tag||3===e.tag||26===e.tag||27===e.tag&&sg(e.type)||4===e.tag}function o2(e){e:for(;;){for(;null===e.sibling;){if(null===e.return||o1(e.return))return null;e=e.return}for(e.sibling.return=e.return,e=e.sibling;5!==e.tag&&6!==e.tag&&18!==e.tag;){if(27===e.tag&&sg(e.type)||2&e.flags||null===e.child||4===e.tag)continue e;e.child.return=e,e=e.child}if(!(2&e.flags))return e.stateNode}}function o3(e,t,n){var r=e.tag;if(5===r||6===r)e=e.stateNode,t?n.insertBefore(e,t):n.appendChild(e);else if(4!==r&&(27===r&&sg(e.type)&&(n=e.stateNode),null!==(e=e.child)))for(o3(e,t,n),e=e.sibling;null!==e;)o3(e,t,n),e=e.sibling}function o4(e){var t=e.stateNode,n=e.memoizedProps;try{for(var r=e.type,l=t.attributes;l.length;)t.removeAttributeNode(l[0]);sr(t,r,n),t[eL]=e,t[eO]=n}catch(t){ux(e,e.return,t)}}var o8=!1,o6=!1,o5=!1,o9="function"==typeof WeakSet?WeakSet:Set,o7=null;function ie(e,t,n){var r=n.flags;switch(n.tag){case 0:case 11:case 15:ip(e,n),4&r&&oq(5,n);break;case 1:if(ip(e,n),4&r)if(e=n.stateNode,null===t)try{e.componentDidMount()}catch(e){ux(n,n.return,e)}else{var l=oa(n.type,t.memoizedProps);t=t.memoizedState;try{e.componentDidUpdate(l,t,e.__reactInternalSnapshotBeforeUpdate)}catch(e){ux(n,n.return,e)}}64&r&&oY(n),512&r&&oX(n,n.return);break;case 3:if(ip(e,n),64&r&&null!==(e=n.updateQueue)){if(t=null,null!==n.child)switch(n.child.tag){case 27:case 5:case 1:t=n.child.stateNode}try{lk(e,t)}catch(e){ux(n,n.return,e)}}break;case 27:null===t&&4&r&&o4(n);case 26:case 5:ip(e,n),null===t&&4&r&&oJ(n),512&r&&oX(n,n.return);break;case 12:default:ip(e,n);break;case 13:ip(e,n),4&r&&io(e,n),64&r&&null!==(e=n.memoizedState)&&null!==(e=e.dehydrated)&&function(e,t){var n=e.ownerDocument;if("$?"!==e.data||"complete"===n.readyState)t();else{var r=function(){t(),n.removeEventListener("DOMContentLoaded",r)};n.addEventListener("DOMContentLoaded",r),e._reactRetry=r}}(e,n=uP.bind(null,n));break;case 22:if(!(r=null!==n.memoizedState||o8)){t=null!==t&&null!==t.memoizedState||o6,l=o8;var a=o6;o8=r,(o6=t)&&!a?function e(t,n,r){for(r=r&&0!=(8772&n.subtreeFlags),n=n.child;null!==n;){var l=n.alternate,a=t,o=n,i=o.flags;switch(o.tag){case 0:case 11:case 15:e(a,o,r),oq(4,o);break;case 1:if(e(a,o,r),"function"==typeof(a=(l=o).stateNode).componentDidMount)try{a.componentDidMount()}catch(e){ux(l,l.return,e)}if(null!==(a=(l=o).updateQueue)){var u=l.stateNode;try{var s=a.shared.hiddenCallbacks;if(null!==s)for(a.shared.hiddenCallbacks=null,a=0;a title"))),sr(a,r,n),a[eL]=e,eB(a),r=a;break e;case"link":var o=s$("link","href",l).get(r+(n.href||""));if(o){for(var i=0;i<\/script>",e=e.removeChild(e.firstChild);break;case"select":e="string"==typeof r.is?l.createElement("select",{is:r.is}):l.createElement("select"),r.multiple?e.multiple=!0:r.size&&(e.size=r.size);break;default:e="string"==typeof r.is?l.createElement(n,{is:r.is}):l.createElement(n)}}e[eL]=t,e[eO]=r;e:for(l=t.child;null!==l;){if(5===l.tag||6===l.tag)e.appendChild(l.stateNode);else if(4!==l.tag&&27!==l.tag&&null!==l.child){l.child.return=l,l=l.child;continue}if(l===t)break;for(;null===l.sibling;){if(null===l.return||l.return===t)break e;l=l.return}l.sibling.return=l.return,l=l.sibling}switch(t.stateNode=e,sr(e,n,r),n){case"button":case"input":case"select":case"textarea":e=!!r.autoFocus;break;case"img":e=!0;break;default:e=!1}e&&oH(t)}}return oQ(t),t.flags&=-0x1000001,null;case 6:if(e&&null!=t.stateNode)e.memoizedProps!==r&&oH(t);else{if("string"!=typeof r&&null===t.stateNode)throw Error(u(166));if(e=B.current,rT(t)){if(e=t.stateNode,n=t.memoizedProps,r=null,null!==(l=rw))switch(l.tag){case 27:case 5:r=l.memoizedProps}e[eL]=t,(e=!!(e.nodeValue===n||null!==r&&!0===r.suppressHydrationWarning||u7(e.nodeValue,n)))||rP(t)}else(e=so(e).createTextNode(r))[eL]=t,t.stateNode=e}return oQ(t),null;case 13:if(r=t.memoizedState,null===e||null!==e.memoizedState&&null!==e.memoizedState.dehydrated){if(l=rT(t),null!==r&&null!==r.dehydrated){if(null===e){if(!l)throw Error(u(318));if(!(l=null!==(l=t.memoizedState)?l.dehydrated:null))throw Error(u(317));l[eL]=t}else rL(),0==(128&t.flags)&&(t.memoizedState=null),t.flags|=4;oQ(t),l=!1}else l=rO(),null!==e&&null!==e.memoizedState&&(e.memoizedState.hydrationErrors=l),l=!0;if(!l){if(256&t.flags)return a9(t),t;return a9(t),null}}if(a9(t),0!=(128&t.flags))return t.lanes=n,t;if(n=null!==r,e=null!==e&&null!==e.memoizedState,n){r=t.child,l=null,null!==r.alternate&&null!==r.alternate.memoizedState&&null!==r.alternate.memoizedState.cachePool&&(l=r.alternate.memoizedState.cachePool.pool);var a=null;null!==r.memoizedState&&null!==r.memoizedState.cachePool&&(a=r.memoizedState.cachePool.pool),a!==l&&(r.flags|=2048)}return n!==e&&n&&(t.child.flags|=8192),oV(t,t.updateQueue),oQ(t),null;case 4:return q(),null===e&&uJ(t.stateNode.containerInfo),oQ(t),null;case 10:return rI(t.type),oQ(t),null;case 19:if(j(a7),null===(l=t.memoizedState))return oQ(t),null;if(r=0!=(128&t.flags),null===(a=l.rendering))if(r)oB(l,!1);else{if(0!==iI||null!==e&&0!=(128&e.flags))for(e=t.child;null!==e;){if(null!==(a=oe(e))){for(t.flags|=128,oB(l,!1),e=a.updateQueue,t.updateQueue=e,oV(t,e),t.subtreeFlags=0,e=n,n=t.child;null!==n;)rr(n,e),n=n.sibling;return H(a7,1&a7.current|2),t.child}e=e.sibling}null!==l.tail&&et()>iK&&(t.flags|=128,r=!0,oB(l,!1),t.lanes=4194304)}else{if(!r)if(null!==(e=oe(a))){if(t.flags|=128,r=!0,e=e.updateQueue,t.updateQueue=e,oV(t,e),oB(l,!0),null===l.tail&&"hidden"===l.tailMode&&!a.alternate&&!rx)return oQ(t),null}else 2*et()-l.renderingStartTime>iK&&0x20000000!==n&&(t.flags|=128,r=!0,oB(l,!1),t.lanes=4194304);l.isBackwards?(a.sibling=t.child,t.child=a):(null!==(e=l.last)?e.sibling=a:t.child=a,l.last=a)}if(null!==l.tail)return t=l.tail,l.rendering=t,l.tail=t.sibling,l.renderingStartTime=et(),t.sibling=null,e=a7.current,H(a7,r?1&e|2:1&e),t;return oQ(t),null;case 22:case 23:return a9(t),lC(),r=null!==t.memoizedState,null!==e?null!==e.memoizedState!==r&&(t.flags|=8192):r&&(t.flags|=8192),r?0!=(0x20000000&n)&&0==(128&t.flags)&&(oQ(t),6&t.subtreeFlags&&(t.flags|=8192)):oQ(t),null!==(n=t.updateQueue)&&oV(t,n.retryQueue),n=null,null!==e&&null!==e.memoizedState&&null!==e.memoizedState.cachePool&&(n=e.memoizedState.cachePool.pool),r=null,null!==t.memoizedState&&null!==t.memoizedState.cachePool&&(r=t.memoizedState.cachePool.pool),r!==n&&(t.flags|=2048),null!==e&&j(r8),null;case 24:return n=null,null!==e&&(n=e.memoizedState.cache),t.memoizedState.cache!==n&&(t.flags|=2048),rI(rG),oQ(t),null;case 25:case 30:return null}throw Error(u(156,t.tag))}(t.alternate,t,iM);if(null!==n){iT=n;return}if(null!==(t=t.sibling)){iT=t;return}iT=t=e}while(null!==t);0===iI&&(iI=5)}function um(e,t){do{var n=function(e,t){switch(rk(t),t.tag){case 1:return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 3:return rI(rG),q(),0!=(65536&(e=t.flags))&&0==(128&e)?(t.flags=-65537&e|128,t):null;case 26:case 27:case 5:return Y(t),null;case 13:if(a9(t),null!==(e=t.memoizedState)&&null!==e.dehydrated){if(null===t.alternate)throw Error(u(340));rL()}return 65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 19:return j(a7),null;case 4:return q(),null;case 10:return rI(t.type),null;case 22:case 23:return a9(t),lC(),null!==e&&j(r8),65536&(e=t.flags)?(t.flags=-65537&e|128,t):null;case 24:return rI(rG),null;default:return null}}(e.alternate,e);if(null!==n){n.flags&=32767,iT=n;return}if(null!==(n=e.return)&&(n.flags|=32768,n.subtreeFlags=0,n.deletions=null),!t&&null!==(e=e.sibling)){iT=e;return}iT=e=n}while(null!==e);iI=6,iT=null}function uh(e,t,n,r,l,a,o,i,s){e.cancelPendingCommit=null;do uk();while(0!==iX);if(0!=(6&iz))throw Error(u(327));if(null!==t){if(t===e.current)throw Error(u(177));if(!function(e,t,n,r,l,a){var o=e.pendingLanes;e.pendingLanes=n,e.suspendedLanes=0,e.pingedLanes=0,e.warmLanes=0,e.expiredLanes&=n,e.entangledLanes&=n,e.errorRecoveryDisabledLanes&=n,e.shellSuspendCounter=0;var i=e.entanglements,u=e.expirationTimes,s=e.hiddenUpdates;for(n=o&~n;0g&&(o=g,g=h,h=o);var y=nP(i,h),v=nP(i,g);if(y&&v&&(1!==p.rangeCount||p.anchorNode!==y.node||p.anchorOffset!==y.offset||p.focusNode!==v.node||p.focusOffset!==v.offset)){var b=f.createRange();b.setStart(y.node,y.offset),p.removeAllRanges(),h>g?(p.addRange(b),p.extend(v.node,v.offset)):(b.setEnd(v.node,v.offset),p.addRange(b))}}}}for(f=[],p=i;p=p.parentNode;)1===p.nodeType&&f.push({element:p,left:p.scrollLeft,top:p.scrollTop});for("function"==typeof i.focus&&i.focus(),i=0;in?32:n,D.T=null,n=i2,i2=null;var a=iZ,o=i0;if(iX=0,iJ=iZ=null,i0=0,0!=(6&iz))throw Error(u(331));var i=iz;if(iz|=4,iE(a.current),iy(a,a.current,o,n),iz=i,uF(0,!1),ef&&"function"==typeof ef.onPostCommitFiberRoot)try{ef.onPostCommitFiberRoot(ec,a)}catch(e){}return!0}finally{A.p=l,D.T=r,ub(e,t)}}function uS(e,t,n){t=nZ(n,t),t=od(e.stateNode,t,2),null!==(e=lp(e,t,2))&&(eE(e,2),uA(e))}function ux(e,t,n){if(3===e.tag)uS(e,e,n);else for(;null!==t;){if(3===t.tag){uS(t,e,n);break}if(1===t.tag){var r=t.stateNode;if("function"==typeof t.type.getDerivedStateFromError||"function"==typeof r.componentDidCatch&&(null===iG||!iG.has(r))){e=nZ(n,e),null!==(r=lp(t,n=op(2),2))&&(om(n,r,t,e),eE(r,2),uA(r));break}}t=t.return}}function uE(e,t,n){var r=e.pingCache;if(null===r){r=e.pingCache=new iP;var l=new Set;r.set(t,l)}else void 0===(l=r.get(t))&&(l=new Set,r.set(t,l));l.has(n)||(iF=!0,l.add(n),e=uC.bind(null,e,t,n),t.then(e,e))}function uC(e,t,n){var r=e.pingCache;null!==r&&r.delete(t),e.pingedLanes|=e.suspendedLanes&n,e.warmLanes&=~n,iN===e&&(iL&n)===n&&(4===iI||3===iI&&(0x3c00000&iL)===iL&&300>et()-iq?0==(2&iz)&&ul(e,0):iH|=n,iV===iL&&(iV=0)),uA(e)}function u_(e,t){0===t&&(t=eS()),null!==(e=n8(e,t))&&(eE(e,t),uA(e))}function uP(e){var t=e.memoizedState,n=0;null!==t&&(n=t.retryLane),u_(e,n)}function uz(e,t){var n=0;switch(e.tag){case 13:var r=e.stateNode,l=e.memoizedState;null!==l&&(n=l.retryLane);break;case 19:r=e.stateNode;break;case 22:r=e.stateNode._retryCache;break;default:throw Error(u(314))}null!==r&&r.delete(t),u_(e,n)}var uN=null,uT=null,uL=!1,uO=!1,uR=!1,uD=0;function uA(e){e!==uT&&null===e.next&&(null===uT?uN=uT=e:uT=uT.next=e),uO=!0,uL||(uL=!0,sm(function(){0!=(6&iz)?X(er,uM):uI()}))}function uF(e,t){if(!uR&&uO){uR=!0;do for(var n=!1,r=uN;null!==r;){if(!t)if(0!==e){var l=r.pendingLanes;if(0===l)var a=0;else{var o=r.suspendedLanes,i=r.pingedLanes;a=0xc000095&(a=(1<<31-ep(42|e)+1)-1&(l&~(o&~i)))?0xc000095&a|1:a?2|a:0}0!==a&&(n=!0,uH(r,a))}else a=iL,0==(3&(a=eb(r,r===iN?a:0,null!==r.cancelPendingCommit||-1!==r.timeoutHandle)))||ek(r,a)||(n=!0,uH(r,a));r=r.next}while(n);uR=!1}}function uM(){uI()}function uI(){uO=uL=!1;var e,t=0;0!==uD&&(((e=window.event)&&"popstate"===e.type?e===sc||(sc=e,0):(sc=null,1))||(t=uD),uD=0);for(var n=et(),r=null,l=uN;null!==l;){var a=l.next,o=uU(l,n);0===o?(l.next=null,null===r?uN=a:r.next=a,null===a&&(uT=r)):(r=l,(0!==t||0!=(3&o))&&(uO=!0)),l=a}uF(t,!1)}function uU(e,t){for(var n=e.suspendedLanes,r=e.pingedLanes,l=e.expirationTimes,a=-0x3c00001&e.pendingLanes;0r){n=r;var o=e.ownerDocument;if(1&n&&sE(o.documentElement),2&n&&sE(o.body),4&n)for(sE(n=o.head),o=n.firstChild;o;){var i=o.nextSibling,u=o.nodeName;o[eI]||"SCRIPT"===u||"STYLE"===u||"LINK"===u&&"stylesheet"===o.rel.toLowerCase()||n.removeChild(o),o=i}}if(0===l){e.removeChild(a),ck(t);return}l--}else"$"===n||"$?"===n||"$!"===n?l++:r=n.charCodeAt(0)-48;else r=0;n=a}while(n);ck(t)}function sv(e){var t=e.firstChild;for(t&&10===t.nodeType&&(t=t.nextSibling);t;){var n=t;switch(t=t.nextSibling,n.nodeName){case"HTML":case"HEAD":case"BODY":sv(n),eU(n);continue;case"SCRIPT":case"STYLE":continue;case"LINK":if("stylesheet"===n.rel.toLowerCase())continue}e.removeChild(n)}}function sb(e){return"$!"===e.data||"$?"===e.data&&"complete"===e.ownerDocument.readyState}function sk(e){for(;null!=e;e=e.nextSibling){var t=e.nodeType;if(1===t||3===t)break;if(8===t){if("$"===(t=e.data)||"$!"===t||"$?"===t||"F!"===t||"F"===t)break;if("/$"===t)return null}}return e}var sw=null;function sS(e){e=e.previousSibling;for(var t=0;e;){if(8===e.nodeType){var n=e.data;if("$"===n||"$!"===n||"$?"===n){if(0===t)return e;t--}else"/$"===n&&t++}e=e.previousSibling}return null}function sx(e,t,n){switch(t=so(n),e){case"html":if(!(e=t.documentElement))throw Error(u(452));return e;case"head":if(!(e=t.head))throw Error(u(453));return e;case"body":if(!(e=t.body))throw Error(u(454));return e;default:throw Error(u(451))}}function sE(e){for(var t=e.attributes;t.length;)e.removeAttributeNode(t[0]);eU(e)}var sC=new Map,s_=new Set;function sP(e){return"function"==typeof e.getRootNode?e.getRootNode():9===e.nodeType?e:e.ownerDocument}var sz=A.d;A.d={f:function(){var e=sz.f(),t=un();return e||t},r:function(e){var t=eH(e);null!==t&&5===t.tag&&"form"===t.type?aO(t):sz.r(e)},D:function(e){sz.D(e),sT("dns-prefetch",e,null)},C:function(e,t){sz.C(e,t),sT("preconnect",e,t)},L:function(e,t,n){if(sz.L(e,t,n),sN&&e&&t){var r='link[rel="preload"][as="'+tt(t)+'"]';"image"===t&&n&&n.imageSrcSet?(r+='[imagesrcset="'+tt(n.imageSrcSet)+'"]',"string"==typeof n.imageSizes&&(r+='[imagesizes="'+tt(n.imageSizes)+'"]')):r+='[href="'+tt(e)+'"]';var l=r;switch(t){case"style":l=sO(e);break;case"script":l=sA(e)}sC.has(l)||(e=p({rel:"preload",href:"image"===t&&n&&n.imageSrcSet?void 0:e,as:t},n),sC.set(l,e),null!==sN.querySelector(r)||"style"===t&&sN.querySelector(sR(l))||"script"===t&&sN.querySelector(sF(l))||(sr(t=sN.createElement("link"),"link",e),eB(t),sN.head.appendChild(t)))}},m:function(e,t){if(sz.m(e,t),sN&&e){var n=t&&"string"==typeof t.as?t.as:"script",r='link[rel="modulepreload"][as="'+tt(n)+'"][href="'+tt(e)+'"]',l=r;switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":l=sA(e)}if(!sC.has(l)&&(e=p({rel:"modulepreload",href:e},t),sC.set(l,e),null===sN.querySelector(r))){switch(n){case"audioworklet":case"paintworklet":case"serviceworker":case"sharedworker":case"worker":case"script":if(sN.querySelector(sF(l)))return}sr(n=sN.createElement("link"),"link",e),eB(n),sN.head.appendChild(n)}}},X:function(e,t){if(sz.X(e,t),sN&&e){var n=eV(sN).hoistableScripts,r=sA(e),l=n.get(r);l||((l=sN.querySelector(sF(r)))||(e=p({src:e,async:!0},t),(t=sC.get(r))&&sj(e,t),eB(l=sN.createElement("script")),sr(l,"link",e),sN.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},n.set(r,l))}},S:function(e,t,n){if(sz.S(e,t,n),sN&&e){var r=eV(sN).hoistableStyles,l=sO(e);t=t||"default";var a=r.get(l);if(!a){var o={loading:0,preload:null};if(a=sN.querySelector(sR(l)))o.loading=5;else{e=p({rel:"stylesheet",href:e,"data-precedence":t},n),(n=sC.get(l))&&sU(e,n);var i=a=sN.createElement("link");eB(i),sr(i,"link",e),i._p=new Promise(function(e,t){i.onload=e,i.onerror=t}),i.addEventListener("load",function(){o.loading|=1}),i.addEventListener("error",function(){o.loading|=2}),o.loading|=4,sI(a,t,sN)}a={type:"stylesheet",instance:a,count:1,state:o},r.set(l,a)}}},M:function(e,t){if(sz.M(e,t),sN&&e){var n=eV(sN).hoistableScripts,r=sA(e),l=n.get(r);l||((l=sN.querySelector(sF(r)))||(e=p({src:e,async:!0,type:"module"},t),(t=sC.get(r))&&sj(e,t),eB(l=sN.createElement("script")),sr(l,"link",e),sN.head.appendChild(l)),l={type:"script",instance:l,count:1,state:null},n.set(r,l))}}};var sN="undefined"==typeof document?null:document;function sT(e,t,n){if(sN&&"string"==typeof t&&t){var r=tt(t);r='link[rel="'+e+'"][href="'+r+'"]',"string"==typeof n&&(r+='[crossorigin="'+n+'"]'),s_.has(r)||(s_.add(r),e={rel:e,crossOrigin:n,href:t},null===sN.querySelector(r)&&(sr(t=sN.createElement("link"),"link",e),eB(t),sN.head.appendChild(t)))}}function sL(e,t,n,r){var l=(l=B.current)?sP(l):null;if(!l)throw Error(u(446));switch(e){case"meta":case"title":return null;case"style":return"string"==typeof n.precedence&&"string"==typeof n.href?(t=sO(n.href),(r=(n=eV(l).hoistableStyles).get(t))||(r={type:"style",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};case"link":if("stylesheet"===n.rel&&"string"==typeof n.href&&"string"==typeof n.precedence){e=sO(n.href);var a,o,i,s,c=eV(l).hoistableStyles,f=c.get(e);if(f||(l=l.ownerDocument||l,f={type:"stylesheet",instance:null,count:0,state:{loading:0,preload:null}},c.set(e,f),(c=l.querySelector(sR(e)))&&!c._p&&(f.instance=c,f.state.loading=5),sC.has(e)||(n={rel:"preload",as:"style",href:n.href,crossOrigin:n.crossOrigin,integrity:n.integrity,media:n.media,hrefLang:n.hrefLang,referrerPolicy:n.referrerPolicy},sC.set(e,n),c||(a=l,o=e,i=n,s=f.state,a.querySelector('link[rel="preload"][as="style"]['+o+"]")?s.loading=1:(s.preload=o=a.createElement("link"),o.addEventListener("load",function(){return s.loading|=1}),o.addEventListener("error",function(){return s.loading|=2}),sr(o,"link",i),eB(o),a.head.appendChild(o))))),t&&null===r)throw Error(u(528,""));return f}if(t&&null!==r)throw Error(u(529,""));return null;case"script":return t=n.async,"string"==typeof(n=n.src)&&t&&"function"!=typeof t&&"symbol"!=typeof t?(t=sA(n),(r=(n=eV(l).hoistableScripts).get(t))||(r={type:"script",instance:null,count:0,state:null},n.set(t,r)),r):{type:"void",instance:null,count:0,state:null};default:throw Error(u(444,e))}}function sO(e){return'href="'+tt(e)+'"'}function sR(e){return'link[rel="stylesheet"]['+e+"]"}function sD(e){return p({},e,{"data-precedence":e.precedence,precedence:null})}function sA(e){return'[src="'+tt(e)+'"]'}function sF(e){return"script[async]"+e}function sM(e,t,n){if(t.count++,null===t.instance)switch(t.type){case"style":var r=e.querySelector('style[data-href~="'+tt(n.href)+'"]');if(r)return t.instance=r,eB(r),r;var l=p({},n,{"data-href":n.href,"data-precedence":n.precedence,href:null,precedence:null});return eB(r=(e.ownerDocument||e).createElement("style")),sr(r,"style",l),sI(r,n.precedence,e),t.instance=r;case"stylesheet":l=sO(n.href);var a=e.querySelector(sR(l));if(a)return t.state.loading|=4,t.instance=a,eB(a),a;r=sD(n),(l=sC.get(l))&&sU(r,l),eB(a=(e.ownerDocument||e).createElement("link"));var o=a;return o._p=new Promise(function(e,t){o.onload=e,o.onerror=t}),sr(a,"link",r),t.state.loading|=4,sI(a,n.precedence,e),t.instance=a;case"script":if(a=sA(n.src),l=e.querySelector(sF(a)))return t.instance=l,eB(l),l;return r=n,(l=sC.get(a))&&sj(r=p({},n),l),eB(l=(e=e.ownerDocument||e).createElement("script")),sr(l,"link",r),e.head.appendChild(l),t.instance=l;case"void":return null;default:throw Error(u(443,t.type))}return"stylesheet"===t.type&&0==(4&t.state.loading)&&(r=t.instance,t.state.loading|=4,sI(r,n.precedence,e)),t.instance}function sI(e,t,n){for(var r=n.querySelectorAll('link[rel="stylesheet"][data-precedence],style[data-precedence]'),l=r.length?r[r.length-1]:null,a=l,o=0;o title"):null)}function sB(e){return"stylesheet"!==e.type||0!=(3&e.state.loading)}var sQ=null;function sW(){}function sq(){if(this.count--,0===this.count){if(this.stylesheets)sY(this,this.stylesheets);else if(this.unsuspend){var e=this.unsuspend;this.unsuspend=null,e()}}}var sK=null;function sY(e,t){e.stylesheets=null,null!==e.unsuspend&&(e.count++,sK=new Map,t.forEach(sG,e),sK=null,sq.call(e))}function sG(e,t){if(!(4&t.state.loading)){var n=sK.get(e);if(n)var r=n.get(null);else{n=new Map,sK.set(e,n);for(var l=e.querySelectorAll("link[data-precedence],style[data-precedence]"),a=0;a{var r=n(4232);function l(e){var t="https://react.dev/errors/"+e;if(1{function n(e,t){var n=e.length;for(e.push(t);0>>1,l=e[r];if(0>>1;ra(u,n))sa(c,u)?(e[r]=c,e[s]=n,r=s):(e[r]=u,e[i]=n,r=i);else if(sa(c,n))e[r]=c,e[s]=n,r=s;else break}}return t}function a(e,t){var n=e.sortIndex-t.sortIndex;return 0!==n?n:e.id-t.id}if(t.unstable_now=void 0,"object"==typeof performance&&"function"==typeof performance.now){var o,i=performance;t.unstable_now=function(){return i.now()}}else{var u=Date,s=u.now();t.unstable_now=function(){return u.now()-s}}var c=[],f=[],d=1,p=null,m=3,h=!1,g=!1,y=!1,v=!1,b="function"==typeof setTimeout?setTimeout:null,k="function"==typeof clearTimeout?clearTimeout:null,w="undefined"!=typeof setImmediate?setImmediate:null;function S(e){for(var t=r(f);null!==t;){if(null===t.callback)l(f);else if(t.startTime<=e)l(f),t.sortIndex=t.expirationTime,n(c,t);else break;t=r(f)}}function x(e){if(y=!1,S(e),!g)if(null!==r(c))g=!0,E||(E=!0,o());else{var t=r(f);null!==t&&O(x,t.startTime-e)}}var E=!1,C=-1,_=5,P=-1;function z(){return!!v||!(t.unstable_now()-P<_)}function N(){if(v=!1,E){var e=t.unstable_now();P=e;var n=!0;try{e:{g=!1,y&&(y=!1,k(C),C=-1),h=!0;var a=m;try{t:{for(S(e),p=r(c);null!==p&&!(p.expirationTime>e&&z());){var i=p.callback;if("function"==typeof i){p.callback=null,m=p.priorityLevel;var u=i(p.expirationTime<=e);if(e=t.unstable_now(),"function"==typeof u){p.callback=u,S(e),n=!0;break t}p===r(c)&&l(c),S(e)}else l(c);p=r(c)}if(null!==p)n=!0;else{var s=r(f);null!==s&&O(x,s.startTime-e),n=!1}}break e}finally{p=null,m=a,h=!1}}}finally{n?o():E=!1}}}if("function"==typeof w)o=function(){w(N)};else if("undefined"!=typeof MessageChannel){var T=new MessageChannel,L=T.port2;T.port1.onmessage=N,o=function(){L.postMessage(null)}}else o=function(){b(N,0)};function O(e,n){C=b(function(){e(t.unstable_now())},n)}t.unstable_IdlePriority=5,t.unstable_ImmediatePriority=1,t.unstable_LowPriority=4,t.unstable_NormalPriority=3,t.unstable_Profiling=null,t.unstable_UserBlockingPriority=2,t.unstable_cancelCallback=function(e){e.callback=null},t.unstable_forceFrameRate=function(e){0>e||125i?(e.sortIndex=a,n(f,e),null===r(c)&&e===r(f)&&(y?(k(C),C=-1):y=!0,O(x,a-i))):(e.sortIndex=u,n(c,e),g||h||(g=!0,E||(E=!0,o()))),e},t.unstable_shouldYield=z,t.unstable_wrapCallback=function(e){var t=m;return function(){var n=m;m=t;try{return e.apply(this,arguments)}finally{m=n}}}},7876:(e,t,n)=>{e.exports=n(8228)},8228:(e,t)=>{var n=Symbol.for("react.transitional.element");function r(e,t,r){var l=null;if(void 0!==r&&(l=""+r),void 0!==t.key&&(l=""+t.key),"key"in t)for(var a in r={},t)"key"!==a&&(r[a]=t[a]);else r=t;return{$$typeof:n,type:e,key:l,ref:void 0!==(t=r.ref)?t:null,props:r}}t.Fragment=Symbol.for("react.fragment"),t.jsx=r,t.jsxs=r},8477:(e,t,n)=>{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(4655)},8944:(e,t,n)=>{!function e(){if("undefined"!=typeof __REACT_DEVTOOLS_GLOBAL_HOOK__&&"function"==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE)try{__REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(e)}catch(e){console.error(e)}}(),e.exports=n(4279)}}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/main-5ab622ad5f4fefa1.js b/docs/_next/static/chunks/main-5ab622ad5f4fefa1.js deleted file mode 100644 index e0880f9b..00000000 --- a/docs/_next/static/chunks/main-5ab622ad5f4fefa1.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[792],{303:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"AmpStateContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext({})},472:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return u}});let n=r(4252),o=r(7876),a=n._(r(4232)),i=r(2746);async function l(e){let{Component:t,ctx:r}=e;return{pageProps:await (0,i.loadGetInitialProps)(t,r)}}class u extends a.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,o.jsx)(e,{...t})}}u.origGetInitialProps=l,u.getInitialProps=l,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},536:(e,t)=>{"use strict";function r(e){return e.split("/").map(e=>encodeURIComponent(e)).join("/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"encodeURIPath",{enumerable:!0,get:function(){return r}})},541:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parseRelativeUrl",{enumerable:!0,get:function(){return a}});let n=r(2746),o=r(8040);function a(e,t,r){void 0===r&&(r=!0);let a=new URL((0,n.getLocationOrigin)()),i=t?new URL(t,a):e.startsWith(".")?new URL(window.location.href):a,{pathname:l,searchParams:u,search:s,hash:c,href:f,origin:d}=new URL(e,i);if(d!==a.origin)throw Object.defineProperty(Error("invariant: invalid relative URL, router received "+e),"__NEXT_ERROR_CODE",{value:"E159",enumerable:!1,configurable:!0});return{pathname:l,query:r?(0,o.searchParamsToUrlQuery)(u):void 0,search:s,hash:c,href:f.slice(d.length)}}},938:(e,t)=>{"use strict";function r(e){return e.startsWith("/")?e:"/"+e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ensureLeadingSlash",{enumerable:!0,get:function(){return r}})},990:(e,t)=>{"use strict";function r(e,t){let r={};return Object.keys(e).forEach(n=>{t.includes(n)||(r[n]=e[n])}),r}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"omit",{enumerable:!0,get:function(){return r}})},1017:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RedirectStatusCode",{enumerable:!0,get:function(){return r}});var r=function(e){return e[e.SeeOther=303]="SeeOther",e[e.TemporaryRedirect=307]="TemporaryRedirect",e[e.PermanentRedirect=308]="PermanentRedirect",e}({});("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1025:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeBasePath",{enumerable:!0,get:function(){return o}}),r(6023);let n="/docs-site";function o(e){return 0===n.length||(e=e.slice(n.length)).startsWith("/")||(e="/"+e),e}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1226:()=>{},1291:()=>{"trimStart"in String.prototype||(String.prototype.trimStart=String.prototype.trimLeft),"trimEnd"in String.prototype||(String.prototype.trimEnd=String.prototype.trimRight),"description"in Symbol.prototype||Object.defineProperty(Symbol.prototype,"description",{configurable:!0,get:function(){var e=/\((.*)\)/.exec(this.toString());return e?e[1]:void 0}}),Array.prototype.flat||(Array.prototype.flat=function(e,t){return t=this.concat.apply([],this),e>1&&t.some(Array.isArray)?t.flat(e-1):t},Array.prototype.flatMap=function(e,t){return this.map(e,t).flat()}),Promise.prototype.finally||(Promise.prototype.finally=function(e){if("function"!=typeof e)return this.then(e,e);var t=this.constructor||Promise;return this.then(function(r){return t.resolve(e()).then(function(){return r})},function(r){return t.resolve(e()).then(function(){throw r})})}),Object.fromEntries||(Object.fromEntries=function(e){return Array.from(e).reduce(function(e,t){return e[t[0]]=t[1],e},{})}),Array.prototype.at||(Array.prototype.at=function(e){var t=Math.trunc(e)||0;if(t<0&&(t+=this.length),!(t<0||t>=this.length))return this[t]}),Object.hasOwn||(Object.hasOwn=function(e,t){if(null==e)throw TypeError("Cannot convert undefined or null to object");return Object.prototype.hasOwnProperty.call(Object(e),t)}),"canParse"in URL||(URL.canParse=function(e,t){try{return new URL(e,t),!0}catch(e){return!1}})},1318:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{RouteAnnouncer:function(){return u},default:function(){return s}});let n=r(4252),o=r(7876),a=n._(r(4232)),i=r(4294),l={border:0,clip:"rect(0 0 0 0)",height:"1px",margin:"-1px",overflow:"hidden",padding:0,position:"absolute",top:0,width:"1px",whiteSpace:"nowrap",wordWrap:"normal"},u=()=>{let{asPath:e}=(0,i.useRouter)(),[t,r]=a.default.useState(""),n=a.default.useRef(e);return a.default.useEffect(()=>{if(n.current!==e)if(n.current=e,document.title)r(document.title);else{var t;let n=document.querySelector("h1");r((null!=(t=null==n?void 0:n.innerText)?t:null==n?void 0:n.textContent)||e)}},[e]),(0,o.jsx)("p",{"aria-live":"assertive",id:"__next-route-announcer__",role:"alert",style:l,children:t})},s=u;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1533:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isLocalURL",{enumerable:!0,get:function(){return a}});let n=r(2746),o=r(6023);function a(e){if(!(0,n.isAbsoluteUrl)(e))return!0;try{let t=(0,n.getLocationOrigin)(),r=new URL(e,t);return r.origin===t&&(0,o.hasBasePath)(r.pathname)}catch(e){return!1}}},1827:(e,t)=>{"use strict";function r(e,t){return void 0===t&&(t=""),("/"===e?"/index":/^\/index(\/|$)/.test(e)?"/index"+e:e)+t}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},1862:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizeLocalePath",{enumerable:!0,get:function(){return n}});let r=new WeakMap;function n(e,t){let n;if(!t)return{pathname:e};let o=r.get(t);o||(o=t.map(e=>e.toLowerCase()),r.set(t,o));let a=e.split("/",2);if(!a[1])return{pathname:e};let i=a[1].toLowerCase(),l=o.indexOf(i);return l<0?{pathname:e}:(n=t[l],{pathname:e=e.slice(n.length+1)||"/",detectedLocale:n})}},1921:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"resolveHref",{enumerable:!0,get:function(){return f}});let n=r(8040),o=r(8480),a=r(990),i=r(2746),l=r(8205),u=r(1533),s=r(3069),c=r(8069);function f(e,t,r){let f,d="string"==typeof t?t:(0,o.formatWithValidation)(t),p=d.match(/^[a-zA-Z]{1,}:\/\//),h=p?d.slice(p[0].length):d;if((h.split("?",1)[0]||"").match(/(\/\/|\\)/)){console.error("Invalid href '"+d+"' passed to next/router in page: '"+e.pathname+"'. Repeated forward-slashes (//) or backslashes \\ are not valid in the href.");let t=(0,i.normalizeRepeatedSlashes)(h);d=(p?p[0]:"")+t}if(!(0,u.isLocalURL)(d))return r?[d]:d;try{f=new URL(d.startsWith("#")?e.asPath:e.pathname,"http://n")}catch(e){f=new URL("/","http://n")}try{let e=new URL(d,f);e.pathname=(0,l.normalizePathTrailingSlash)(e.pathname);let t="";if((0,s.isDynamicRoute)(e.pathname)&&e.searchParams&&r){let r=(0,n.searchParamsToUrlQuery)(e.searchParams),{result:i,params:l}=(0,c.interpolateAs)(e.pathname,e.pathname,r);i&&(t=(0,o.formatWithValidation)({pathname:i,hash:e.hash,query:(0,a.omit)(r,l)}))}let i=e.origin===f.origin?e.href.slice(e.origin.length):e.href;return r?[i,t||i]:i}catch(e){return r?[d]:d}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},1924:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"escapeStringRegexp",{enumerable:!0,get:function(){return o}});let r=/[|\\{}()[\]^$+*?.-]/,n=/[|\\{}()[\]^$+*?.-]/g;function o(e){return r.test(e)?e.replace(n,"\\$&"):e}},2092:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addBasePath",{enumerable:!0,get:function(){return a}});let n=r(2889),o=r(8205);function a(e,t){return(0,o.normalizePathTrailingSlash)((0,n.addPathPrefix)(e,"/docs-site"))}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2326:(e,t)=>{"use strict";function r(e){return"/api"===e||!!(null==e?void 0:e.startsWith("/api/"))}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isAPIRoute",{enumerable:!0,get:function(){return r}})},2455:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTML_LIMITED_BOT_UA_RE",{enumerable:!0,get:function(){return r}});let r=/Mediapartners-Google|Slurp|DuckDuckBot|baiduspider|yandex|sogou|bitlybot|tumblr|vkShare|quora link preview|redditbot|ia_archiver|Bingbot|BingPreview|applebot|facebookexternalhit|facebookcatalog|Twitterbot|LinkedInBot|Slackbot|Discordbot|WhatsApp|SkypeUriPreview|Yeti/i},2591:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{REDIRECT_ERROR_CODE:function(){return o},RedirectType:function(){return a},isRedirectError:function(){return i}});let n=r(1017),o="NEXT_REDIRECT";var a=function(e){return e.push="push",e.replace="replace",e}({});function i(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let t=e.digest.split(";"),[r,a]=t,i=t.slice(2,-2).join(";"),l=Number(t.at(-2));return r===o&&("replace"===a||"push"===a)&&"string"==typeof i&&!isNaN(l)&&l in n.RedirectStatusCode}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2616:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"detectDomainLocale",{enumerable:!0,get:function(){return r}});let r=function(){for(var e=arguments.length,t=Array(e),r=0;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DecodeError:function(){return h},MiddlewareNotFoundError:function(){return b},MissingStaticPage:function(){return g},NormalizeError:function(){return _},PageNotFoundError:function(){return m},SP:function(){return d},ST:function(){return p},WEB_VITALS:function(){return r},execOnce:function(){return n},getDisplayName:function(){return u},getLocationOrigin:function(){return i},getURL:function(){return l},isAbsoluteUrl:function(){return a},isResSent:function(){return s},loadGetInitialProps:function(){return f},normalizeRepeatedSlashes:function(){return c},stringifyError:function(){return E}});let r=["CLS","FCP","FID","INP","LCP","TTFB"];function n(e){let t,r=!1;return function(){for(var n=arguments.length,o=Array(n),a=0;ao.test(e);function i(){let{protocol:e,hostname:t,port:r}=window.location;return e+"//"+t+(r?":"+r:"")}function l(){let{href:e}=window.location,t=i();return e.substring(t.length)}function u(e){return"string"==typeof e?e:e.displayName||e.name||"Unknown"}function s(e){return e.finished||e.headersSent}function c(e){let t=e.split("?");return t[0].replace(/\\/g,"/").replace(/\/\/+/g,"/")+(t[1]?"?"+t.slice(1).join("?"):"")}async function f(e,t){let r=t.res||t.ctx&&t.ctx.res;if(!e.getInitialProps)return t.ctx&&t.Component?{pageProps:await f(t.Component,t.ctx)}:{};let n=await e.getInitialProps(t);if(r&&s(r))return n;if(!n)throw Object.defineProperty(Error('"'+u(e)+'.getInitialProps()" should resolve to an object. But found "'+n+'" instead.'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return n}let d="undefined"!=typeof performance,p=d&&["mark","measure","getEntriesByName"].every(e=>"function"==typeof performance[e]);class h extends Error{}class _ extends Error{}class m extends Error{constructor(e){super(),this.code="ENOENT",this.name="PageNotFoundError",this.message="Cannot find module for page: "+e}}class g extends Error{constructor(e,t){super(),this.message="Failed to load static file for page: "+e+" "+t}}class b extends Error{constructor(){super(),this.code="ENOENT",this.message="Cannot find the middleware module"}}function E(e){return JSON.stringify({message:e.message,stack:e.stack})}},2792:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return d}});let n=r(4252),o=r(2092),a=r(8069),i=n._(r(1827)),l=r(4591),u=r(9163),s=r(541),c=r(4902),f=r(7176);r(3802);class d{getPageList(){return(0,f.getClientBuildManifest)().then(e=>e.sortedPages)}getMiddleware(){return window.__MIDDLEWARE_MATCHERS=[],window.__MIDDLEWARE_MATCHERS}getDataHref(e){let{asPath:t,href:r,locale:n}=e,{pathname:f,query:d,search:p}=(0,s.parseRelativeUrl)(r),{pathname:h}=(0,s.parseRelativeUrl)(t),_=(0,c.removeTrailingSlash)(f);if("/"!==_[0])throw Object.defineProperty(Error('Route name should start with a "/", got "'+_+'"'),"__NEXT_ERROR_CODE",{value:"E303",enumerable:!1,configurable:!0});var m=e.skipInterpolation?h:(0,u.isDynamicRoute)(_)?(0,a.interpolateAs)(f,h,d).result:_;let g=(0,i.default)((0,c.removeTrailingSlash)((0,l.addLocale)(m,n)),".json");return(0,o.addBasePath)("/_next/data/"+this.buildId+g+p,!0)}_isSsg(e){return this.promisedSsgManifest.then(t=>t.has(e))}loadPage(e){return this.routeLoader.loadRoute(e).then(e=>{if("component"in e)return{page:e.component,mod:e.exports,styleSheets:e.styles.map(e=>({href:e.href,text:e.content}))};throw e.error})}prefetch(e){return this.routeLoader.prefetch(e)}constructor(e,t){this.routeLoader=(0,f.createRouteLoader)(t),this.buildId=e,this.assetPrefix=t,this.promisedSsgManifest=new Promise(e=>{window.__SSG_MANIFEST?e(window.__SSG_MANIFEST):window.__SSG_MANIFEST_CB=()=>{e(window.__SSG_MANIFEST)}})}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},2850:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{AppRouterContext:function(){return o},GlobalLayoutRouterContext:function(){return i},LayoutRouterContext:function(){return a},MissingSlotContext:function(){return u},TemplateContext:function(){return l}});let n=r(4252)._(r(4232)),o=n.default.createContext(null),a=n.default.createContext(null),i=n.default.createContext(null),l=n.default.createContext(null),u=n.default.createContext(new Set)},2889:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathPrefix",{enumerable:!0,get:function(){return o}});let n=r(3670);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+t+r+o+a}},2917:(e,t)=>{"use strict";let r;Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return n},setConfig:function(){return o}});let n=()=>r;function o(e){r=e}},2959:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{normalizeAppPath:function(){return a},normalizeRscURL:function(){return i}});let n=r(938),o=r(8714);function a(e){return(0,n.ensureLeadingSlash)(e.split("/").reduce((e,t,r,n)=>!t||(0,o.isGroupSegment)(t)||"@"===t[0]||("page"===t||"route"===t)&&r===n.length-1?e:e+"/"+t,""))}function i(e){return e.replace(/\.rsc($|\?)/,"$1")}},3069:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getSortedRouteObjects:function(){return n.getSortedRouteObjects},getSortedRoutes:function(){return n.getSortedRoutes},isDynamicRoute:function(){return o.isDynamicRoute}});let n=r(3703),o=r(9163)},3090:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Portal",{enumerable:!0,get:function(){return a}});let n=r(4232),o=r(8477),a=e=>{let{children:t,type:r}=e,[a,i]=(0,n.useState)(null);return(0,n.useEffect)(()=>{let e=document.createElement(r);return document.body.appendChild(e),i(e),()=>{document.body.removeChild(e)}},[r]),a?(0,o.createPortal)(t,a):null};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3123:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{BailoutToCSRError:function(){return n},isBailoutToCSRError:function(){return o}});let r="BAILOUT_TO_CLIENT_SIDE_RENDERING";class n extends Error{constructor(e){super("Bail out to client-side rendering: "+e),this.reason=e,this.digest=r}}function o(e){return"object"==typeof e&&null!==e&&"digest"in e&&e.digest===r}},3132:(e,t)=>{"use strict";function r(e,t){if(void 0===t&&(t={}),t.onlyHashChange)return void e();let r=document.documentElement,n=r.style.scrollBehavior;r.style.scrollBehavior="auto",t.dontForceLayout||r.getClientRects(),e(),r.style.scrollBehavior=n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"handleSmoothScroll",{enumerable:!0,get:function(){return r}})},3407:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getNextPathnameInfo",{enumerable:!0,get:function(){return i}});let n=r(1862),o=r(6292),a=r(3716);function i(e,t){var r,i;let{basePath:l,i18n:u,trailingSlash:s}=null!=(r=t.nextConfig)?r:{},c={pathname:e,trailingSlash:"/"!==e?e.endsWith("/"):s};l&&(0,a.pathHasPrefix)(c.pathname,l)&&(c.pathname=(0,o.removePathPrefix)(c.pathname,l),c.basePath=l);let f=c.pathname;if(c.pathname.startsWith("/_next/data/")&&c.pathname.endsWith(".json")){let e=c.pathname.replace(/^\/_next\/data\//,"").replace(/\.json$/,"").split("/");c.buildId=e[0],f="index"!==e[1]?"/"+e.slice(1).join("/"):"/",!0===t.parseData&&(c.pathname=f)}if(u){let e=t.i18nProvider?t.i18nProvider.analyze(c.pathname):(0,n.normalizeLocalePath)(c.pathname,u.locales);c.locale=e.detectedLocale,c.pathname=null!=(i=e.pathname)?i:c.pathname,!e.detectedLocale&&c.buildId&&(e=t.i18nProvider?t.i18nProvider.analyze(f):(0,n.normalizeLocalePath)(f,u.locales)).detectedLocale&&(c.locale=e.detectedLocale)}return c}},3575:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getReactStitchedError",{enumerable:!0,get:function(){return s}});let n=r(4252),o=n._(r(4232)),a=n._(r(6240)),i=r(8089),l="react-stack-bottom-frame",u=RegExp("(at "+l+" )|("+l+"\\@)");function s(e){let t=(0,a.default)(e),r=t&&e.stack||"",n=t?e.message:"",l=r.split("\n"),s=l.findIndex(e=>u.test(e)),c=s>=0?l.slice(0,s).join("\n"):r,f=Object.defineProperty(Error(n),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return Object.assign(f,e),(0,i.copyNextErrorCode)(e,f),f.stack=c,function(e){if(!o.default.captureOwnerStack)return;let t=e.stack||"",r=o.default.captureOwnerStack();r&&!1===t.endsWith(r)&&(e.stack=t+=r)}(f),f}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3670:(e,t)=>{"use strict";function r(e){let t=e.indexOf("#"),r=e.indexOf("?"),n=r>-1&&(t<0||r-1?{pathname:e.substring(0,n?r:t),query:n?e.substring(r,t>-1?t:void 0):"",hash:t>-1?e.slice(t):""}:{pathname:e,query:"",hash:""}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"parsePath",{enumerable:!0,get:function(){return r}})},3703:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getSortedRouteObjects:function(){return o},getSortedRoutes:function(){return n}});class r{insert(e){this._insert(e.split("/").filter(Boolean),[],!1)}smoosh(){return this._smoosh()}_smoosh(e){void 0===e&&(e="/");let t=[...this.children.keys()].sort();null!==this.slugName&&t.splice(t.indexOf("[]"),1),null!==this.restSlugName&&t.splice(t.indexOf("[...]"),1),null!==this.optionalRestSlugName&&t.splice(t.indexOf("[[...]]"),1);let r=t.map(t=>this.children.get(t)._smoosh(""+e+t+"/")).reduce((e,t)=>[...e,...t],[]);if(null!==this.slugName&&r.push(...this.children.get("[]")._smoosh(e+"["+this.slugName+"]/")),!this.placeholder){let t="/"===e?"/":e.slice(0,-1);if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error('You cannot define a route with the same specificity as a optional catch-all route ("'+t+'" and "'+t+"[[..."+this.optionalRestSlugName+']]").'),"__NEXT_ERROR_CODE",{value:"E458",enumerable:!1,configurable:!0});r.unshift(t)}return null!==this.restSlugName&&r.push(...this.children.get("[...]")._smoosh(e+"[..."+this.restSlugName+"]/")),null!==this.optionalRestSlugName&&r.push(...this.children.get("[[...]]")._smoosh(e+"[[..."+this.optionalRestSlugName+"]]/")),r}_insert(e,t,n){if(0===e.length){this.placeholder=!1;return}if(n)throw Object.defineProperty(Error("Catch-all must be the last part of the URL."),"__NEXT_ERROR_CODE",{value:"E392",enumerable:!1,configurable:!0});let o=e[0];if(o.startsWith("[")&&o.endsWith("]")){let r=o.slice(1,-1),i=!1;if(r.startsWith("[")&&r.endsWith("]")&&(r=r.slice(1,-1),i=!0),r.startsWith("…"))throw Object.defineProperty(Error("Detected a three-dot character ('…') at ('"+r+"'). Did you mean ('...')?"),"__NEXT_ERROR_CODE",{value:"E147",enumerable:!1,configurable:!0});if(r.startsWith("...")&&(r=r.substring(3),n=!0),r.startsWith("[")||r.endsWith("]"))throw Object.defineProperty(Error("Segment names may not start or end with extra brackets ('"+r+"')."),"__NEXT_ERROR_CODE",{value:"E421",enumerable:!1,configurable:!0});if(r.startsWith("."))throw Object.defineProperty(Error("Segment names may not start with erroneous periods ('"+r+"')."),"__NEXT_ERROR_CODE",{value:"E288",enumerable:!1,configurable:!0});function a(e,r){if(null!==e&&e!==r)throw Object.defineProperty(Error("You cannot use different slug names for the same dynamic path ('"+e+"' !== '"+r+"')."),"__NEXT_ERROR_CODE",{value:"E337",enumerable:!1,configurable:!0});t.forEach(e=>{if(e===r)throw Object.defineProperty(Error('You cannot have the same slug name "'+r+'" repeat within a single dynamic path'),"__NEXT_ERROR_CODE",{value:"E247",enumerable:!1,configurable:!0});if(e.replace(/\W/g,"")===o.replace(/\W/g,""))throw Object.defineProperty(Error('You cannot have the slug names "'+e+'" and "'+r+'" differ only by non-word symbols within a single dynamic path'),"__NEXT_ERROR_CODE",{value:"E499",enumerable:!1,configurable:!0})}),t.push(r)}if(n)if(i){if(null!=this.restSlugName)throw Object.defineProperty(Error('You cannot use both an required and optional catch-all route at the same level ("[...'+this.restSlugName+']" and "'+e[0]+'" ).'),"__NEXT_ERROR_CODE",{value:"E299",enumerable:!1,configurable:!0});a(this.optionalRestSlugName,r),this.optionalRestSlugName=r,o="[[...]]"}else{if(null!=this.optionalRestSlugName)throw Object.defineProperty(Error('You cannot use both an optional and required catch-all route at the same level ("[[...'+this.optionalRestSlugName+']]" and "'+e[0]+'").'),"__NEXT_ERROR_CODE",{value:"E300",enumerable:!1,configurable:!0});a(this.restSlugName,r),this.restSlugName=r,o="[...]"}else{if(i)throw Object.defineProperty(Error('Optional route parameters are not yet supported ("'+e[0]+'").'),"__NEXT_ERROR_CODE",{value:"E435",enumerable:!1,configurable:!0});a(this.slugName,r),this.slugName=r,o="[]"}}this.children.has(o)||this.children.set(o,new r),this.children.get(o)._insert(e.slice(1),t,n)}constructor(){this.placeholder=!0,this.children=new Map,this.slugName=null,this.restSlugName=null,this.optionalRestSlugName=null}}function n(e){let t=new r;return e.forEach(e=>t.insert(e)),t.smoosh()}function o(e,t){let r={},o=[];for(let n=0;ne[r[t]])}},3716:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"pathHasPrefix",{enumerable:!0,get:function(){return o}});let n=r(3670);function o(e,t){if("string"!=typeof e)return!1;let{pathname:r}=(0,n.parsePath)(e);return r===t||r.startsWith(t+"/")}},3718:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(8757),self.__next_set_public_path__=e=>{r.p=e},("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3776:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(4232),o=n.useLayoutEffect,a=n.useEffect;function i(e){let{headManager:t,reduceComponentsToState:r}=e;function i(){if(t&&t.mountedInstances){let o=n.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(o,e))}}return o(()=>{var r;return null==t||null==(r=t.mountedInstances)||r.add(e.children),()=>{var r;null==t||null==(r=t.mountedInstances)||r.delete(e.children)}}),o(()=>(t&&(t._pendingUpdate=i),()=>{t&&(t._pendingUpdate=i)})),a(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},3802:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{APP_BUILD_MANIFEST:function(){return E},APP_CLIENT_INTERNALS:function(){return Q},APP_PATHS_MANIFEST:function(){return m},APP_PATH_ROUTES_MANIFEST:function(){return g},BARREL_OPTIMIZATION_PREFIX:function(){return X},BLOCKED_PAGES:function(){return U},BUILD_ID_FILE:function(){return D},BUILD_MANIFEST:function(){return b},CLIENT_PUBLIC_FILES_PATH:function(){return k},CLIENT_REFERENCE_MANIFEST:function(){return W},CLIENT_STATIC_FILES_PATH:function(){return F},CLIENT_STATIC_FILES_RUNTIME_AMP:function(){return Z},CLIENT_STATIC_FILES_RUNTIME_MAIN:function(){return K},CLIENT_STATIC_FILES_RUNTIME_MAIN_APP:function(){return $},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS:function(){return et},CLIENT_STATIC_FILES_RUNTIME_POLYFILLS_SYMBOL:function(){return er},CLIENT_STATIC_FILES_RUNTIME_REACT_REFRESH:function(){return J},CLIENT_STATIC_FILES_RUNTIME_WEBPACK:function(){return ee},COMPILER_INDEXES:function(){return a},COMPILER_NAMES:function(){return o},CONFIG_FILES:function(){return L},DEFAULT_RUNTIME_WEBPACK:function(){return en},DEFAULT_SANS_SERIF_FONT:function(){return eu},DEFAULT_SERIF_FONT:function(){return el},DEV_CLIENT_MIDDLEWARE_MANIFEST:function(){return N},DEV_CLIENT_PAGES_MANIFEST:function(){return C},DYNAMIC_CSS_MANIFEST:function(){return Y},EDGE_RUNTIME_WEBPACK:function(){return eo},EDGE_UNSUPPORTED_NODE_APIS:function(){return ep},EXPORT_DETAIL:function(){return O},EXPORT_MARKER:function(){return R},FUNCTIONS_CONFIG_MANIFEST:function(){return y},IMAGES_MANIFEST:function(){return T},INTERCEPTION_ROUTE_REWRITE_MANIFEST:function(){return z},MIDDLEWARE_BUILD_MANIFEST:function(){return q},MIDDLEWARE_MANIFEST:function(){return w},MIDDLEWARE_REACT_LOADABLE_MANIFEST:function(){return V},MODERN_BROWSERSLIST_TARGET:function(){return n.default},NEXT_BUILTIN_DOCUMENT:function(){return H},NEXT_FONT_MANIFEST:function(){return v},PAGES_MANIFEST:function(){return h},PHASE_DEVELOPMENT_SERVER:function(){return f},PHASE_EXPORT:function(){return u},PHASE_INFO:function(){return p},PHASE_PRODUCTION_BUILD:function(){return s},PHASE_PRODUCTION_SERVER:function(){return c},PHASE_TEST:function(){return d},PRERENDER_MANIFEST:function(){return S},REACT_LOADABLE_MANIFEST:function(){return x},ROUTES_MANIFEST:function(){return j},RSC_MODULE_TYPES:function(){return ed},SERVER_DIRECTORY:function(){return M},SERVER_FILES_MANIFEST:function(){return A},SERVER_PROPS_ID:function(){return ei},SERVER_REFERENCE_MANIFEST:function(){return G},STATIC_PROPS_ID:function(){return ea},STATIC_STATUS_PAGES:function(){return es},STRING_LITERAL_DROP_BUNDLE:function(){return B},SUBRESOURCE_INTEGRITY_MANIFEST:function(){return P},SYSTEM_ENTRYPOINTS:function(){return eh},TRACE_OUTPUT_VERSION:function(){return ec},TURBOPACK_CLIENT_MIDDLEWARE_MANIFEST:function(){return I},TURBO_TRACE_DEFAULT_MEMORY_LIMIT:function(){return ef},UNDERSCORE_NOT_FOUND_ROUTE:function(){return i},UNDERSCORE_NOT_FOUND_ROUTE_ENTRY:function(){return l},WEBPACK_STATS:function(){return _}});let n=r(4252)._(r(6582)),o={client:"client",server:"server",edgeServer:"edge-server"},a={[o.client]:0,[o.server]:1,[o.edgeServer]:2},i="/_not-found",l=""+i+"/page",u="phase-export",s="phase-production-build",c="phase-production-server",f="phase-development-server",d="phase-test",p="phase-info",h="pages-manifest.json",_="webpack-stats.json",m="app-paths-manifest.json",g="app-path-routes-manifest.json",b="build-manifest.json",E="app-build-manifest.json",y="functions-config-manifest.json",P="subresource-integrity-manifest",v="next-font-manifest",R="export-marker.json",O="export-detail.json",S="prerender-manifest.json",j="routes-manifest.json",T="images-manifest.json",A="required-server-files.json",C="_devPagesManifest.json",w="middleware-manifest.json",I="_clientMiddlewareManifest.json",N="_devMiddlewareManifest.json",x="react-loadable-manifest.json",M="server",L=["next.config.js","next.config.mjs","next.config.ts"],D="BUILD_ID",U=["/_document","/_app","/_error"],k="public",F="static",B="__NEXT_DROP_CLIENT_FILE__",H="__NEXT_BUILTIN_DOCUMENT__",X="__barrel_optimize__",W="client-reference-manifest",G="server-reference-manifest",q="middleware-build-manifest",V="middleware-react-loadable-manifest",z="interception-route-rewrite-manifest",Y="dynamic-css-manifest",K="main",$=""+K+"-app",Q="app-pages-internals",J="react-refresh",Z="amp",ee="webpack",et="polyfills",er=Symbol(et),en="webpack-runtime",eo="edge-runtime-webpack",ea="__N_SSG",ei="__N_SSP",el={name:"Times New Roman",xAvgCharWidth:821,azAvgWidth:854.3953488372093,unitsPerEm:2048},eu={name:"Arial",xAvgCharWidth:904,azAvgWidth:934.5116279069767,unitsPerEm:2048},es=["/500"],ec=1,ef=6e3,ed={client:"client",server:"server"},ep=["clearImmediate","setImmediate","BroadcastChannel","ByteLengthQueuingStrategy","CompressionStream","CountQueuingStrategy","DecompressionStream","DomException","MessageChannel","MessageEvent","MessagePort","ReadableByteStreamController","ReadableStreamBYOBRequest","ReadableStreamDefaultController","TransformStreamDefaultController","WritableStreamDefaultController"],eh=new Set([K,J,Z,$]);("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3836:(e,t,r)=>{"use strict";function n(e,t){return e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeLocale",{enumerable:!0,get:function(){return n}}),r(3670),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},3996:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return b},handleClientScriptLoad:function(){return _},initScriptLoader:function(){return m}});let n=r(4252),o=r(8365),a=r(7876),i=n._(r(8477)),l=o._(r(4232)),u=r(8831),s=r(9611),c=r(6959),f=new Map,d=new Set,p=e=>{if(i.default.preinit)return void e.forEach(e=>{i.default.preinit(e,{as:"style"})});{let t=document.head;e.forEach(e=>{let r=document.createElement("link");r.type="text/css",r.rel="stylesheet",r.href=e,t.appendChild(r)})}},h=e=>{let{src:t,id:r,onLoad:n=()=>{},onReady:o=null,dangerouslySetInnerHTML:a,children:i="",strategy:l="afterInteractive",onError:u,stylesheets:c}=e,h=r||t;if(h&&d.has(h))return;if(f.has(t)){d.add(h),f.get(t).then(n,u);return}let _=()=>{o&&o(),d.add(h)},m=document.createElement("script"),g=new Promise((e,t)=>{m.addEventListener("load",function(t){e(),n&&n.call(this,t),_()}),m.addEventListener("error",function(e){t(e)})}).catch(function(e){u&&u(e)});a?(m.innerHTML=a.__html||"",_()):i?(m.textContent="string"==typeof i?i:Array.isArray(i)?i.join(""):"",_()):t&&(m.src=t,f.set(t,g)),(0,s.setAttributesFromProps)(m,e),"worker"===l&&m.setAttribute("type","text/partytown"),m.setAttribute("data-nscript",l),c&&p(c),document.body.appendChild(m)};function _(e){let{strategy:t="afterInteractive"}=e;"lazyOnload"===t?window.addEventListener("load",()=>{(0,c.requestIdleCallback)(()=>h(e))}):h(e)}function m(e){e.forEach(_),[...document.querySelectorAll('[data-nscript="beforeInteractive"]'),...document.querySelectorAll('[data-nscript="beforePageRender"]')].forEach(e=>{let t=e.id||e.getAttribute("src");d.add(t)})}function g(e){let{id:t,src:r="",onLoad:n=()=>{},onReady:o=null,strategy:s="afterInteractive",onError:f,stylesheets:p,..._}=e,{updateScripts:m,scripts:g,getIsSsr:b,appDir:E,nonce:y}=(0,l.useContext)(u.HeadManagerContext),P=(0,l.useRef)(!1);(0,l.useEffect)(()=>{let e=t||r;P.current||(o&&e&&d.has(e)&&o(),P.current=!0)},[o,t,r]);let v=(0,l.useRef)(!1);if((0,l.useEffect)(()=>{if(!v.current){if("afterInteractive"===s)h(e);else"lazyOnload"===s&&("complete"===document.readyState?(0,c.requestIdleCallback)(()=>h(e)):window.addEventListener("load",()=>{(0,c.requestIdleCallback)(()=>h(e))}));v.current=!0}},[e,s]),("beforeInteractive"===s||"worker"===s)&&(m?(g[s]=(g[s]||[]).concat([{id:t,src:r,onLoad:n,onReady:o,onError:f,..._}]),m(g)):b&&b()?d.add(t||r):b&&!b()&&h(e)),E){if(p&&p.forEach(e=>{i.default.preinit(e,{as:"style"})}),"beforeInteractive"===s)if(!r)return _.dangerouslySetInnerHTML&&(_.children=_.dangerouslySetInnerHTML.__html,delete _.dangerouslySetInnerHTML),(0,a.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([0,{..._,id:t}])+")"}});else return i.default.preload(r,_.integrity?{as:"script",integrity:_.integrity,nonce:y,crossOrigin:_.crossOrigin}:{as:"script",nonce:y,crossOrigin:_.crossOrigin}),(0,a.jsx)("script",{nonce:y,dangerouslySetInnerHTML:{__html:"(self.__next_s=self.__next_s||[]).push("+JSON.stringify([r,{..._,id:t}])+")"}});"afterInteractive"===s&&r&&i.default.preload(r,_.integrity?{as:"script",integrity:_.integrity,nonce:y,crossOrigin:_.crossOrigin}:{as:"script",nonce:y,crossOrigin:_.crossOrigin})}return null}Object.defineProperty(g,"__nextScript",{value:!0});let b=g;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4069:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"BloomFilter",{enumerable:!0,get:function(){return r}});class r{static from(e,t){void 0===t&&(t=1e-4);let n=new r(e.length,t);for(let t of e)n.add(t);return n}export(){return{numItems:this.numItems,errorRate:this.errorRate,numBits:this.numBits,numHashes:this.numHashes,bitArray:this.bitArray}}import(e){this.numItems=e.numItems,this.errorRate=e.errorRate,this.numBits=e.numBits,this.numHashes=e.numHashes,this.bitArray=e.bitArray}add(e){this.getHashValues(e).forEach(e=>{this.bitArray[e]=1})}contains(e){return this.getHashValues(e).every(e=>this.bitArray[e])}getHashValues(e){let t=[];for(let r=1;r<=this.numHashes;r++){let n=function(e){let t=0;for(let r=0;r>>13,t=Math.imul(t,0x5bd1e995);return t>>>0}(""+e+r)%this.numBits;t.push(n)}return t}constructor(e,t=1e-4){this.numItems=e,this.errorRate=t,this.numBits=Math.ceil(-(e*Math.log(t))/(Math.log(2)*Math.log(2))),this.numHashes=Math.ceil(this.numBits/e*Math.log(2)),this.bitArray=Array(this.numBits).fill(0)}}},4181:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTTPAccessErrorStatus:function(){return r},HTTP_ERROR_FALLBACK_ERROR_CODE:function(){return o},getAccessFallbackErrorTypeByStatus:function(){return l},getAccessFallbackHTTPStatus:function(){return i},isHTTPAccessFallbackError:function(){return a}});let r={NOT_FOUND:404,FORBIDDEN:403,UNAUTHORIZED:401},n=new Set(Object.values(r)),o="NEXT_HTTP_ERROR_FALLBACK";function a(e){if("object"!=typeof e||null===e||!("digest"in e)||"string"!=typeof e.digest)return!1;let[t,r]=e.digest.split(";");return t===o&&n.has(Number(r))}function i(e){return Number(e.digest.split(";")[1])}function l(e){switch(e){case 401:return"unauthorized";case 403:return"forbidden";case 404:return"not-found";default:return}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4252:(e,t,r)=>{"use strict";function n(e){return e&&e.__esModule?e:{default:e}}r.r(t),r.d(t,{_:()=>n})},4294:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{Router:function(){return a.default},createRouter:function(){return _},default:function(){return p},makePublicRouterInstance:function(){return m},useRouter:function(){return h},withRouter:function(){return u.default}});let n=r(4252),o=n._(r(4232)),a=n._(r(8276)),i=r(9948),l=n._(r(6240)),u=n._(r(8147)),s={router:null,readyCallbacks:[],ready(e){if(this.router)return e();this.readyCallbacks.push(e)}},c=["pathname","route","query","asPath","components","isFallback","basePath","locale","locales","defaultLocale","isReady","isPreview","isLocaleDomain","domainLocales"],f=["push","replace","reload","back","prefetch","beforePopState"];function d(){if(!s.router)throw Object.defineProperty(Error('No router instance found.\nYou should only use "next/router" on the client side of your app.\n'),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0});return s.router}Object.defineProperty(s,"events",{get:()=>a.default.events}),c.forEach(e=>{Object.defineProperty(s,e,{get:()=>d()[e]})}),f.forEach(e=>{s[e]=function(){for(var t=arguments.length,r=Array(t),n=0;n{s.ready(()=>{a.default.events.on(e,function(){for(var t=arguments.length,r=Array(t),n=0;ne()),s.readyCallbacks=[],s.router}function m(e){let t={};for(let r of c){if("object"==typeof e[r]){t[r]=Object.assign(Array.isArray(e[r])?[]:{},e[r]);continue}t[r]=e[r]}return t.events=a.default.events,f.forEach(r=>{t[r]=function(){for(var t=arguments.length,n=Array(t),o=0;o{"use strict";function r(e,t){let r=Object.keys(e);if(r.length!==Object.keys(t).length)return!1;for(let n=r.length;n--;){let o=r[n];if("query"===o){let r=Object.keys(e.query);if(r.length!==Object.keys(t.query).length)return!1;for(let n=r.length;n--;){let o=r[n];if(!t.query.hasOwnProperty(o)||e.query[o]!==t.query[o])return!1}}else if(!t.hasOwnProperty(o)||e[o]!==t[o])return!1}return!0}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"compareRouterStates",{enumerable:!0,get:function(){return r}})},4547:(e,t,r)=>{"use strict";let n;Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return i},isEqualNode:function(){return a}});let o=r(9611);function a(e,t){if(e instanceof HTMLElement&&t instanceof HTMLElement){let r=t.getAttribute("nonce");if(r&&!e.getAttribute("nonce")){let n=t.cloneNode(!0);return n.setAttribute("nonce",""),n.nonce=r,r===e.nonce&&e.isEqualNode(n)}}return e.isEqualNode(t)}function i(){return{mountedInstances:new Set,updateHead:e=>{let t={};e.forEach(e=>{if("link"===e.type&&e.props["data-optimized-fonts"])if(document.querySelector('style[data-href="'+e.props["data-href"]+'"]'))return;else e.props.href=e.props["data-href"],e.props["data-href"]=void 0;let r=t[e.type]||[];r.push(e),t[e.type]=r});let r=t.title?t.title[0]:null,o="";if(r){let{children:e}=r.props;o="string"==typeof e?e:Array.isArray(e)?e.join(""):""}o!==document.title&&(document.title=o),["meta","base","link","style","script"].forEach(e=>{n(e,t[e]||[])})}}}n=(e,t)=>{let r=document.querySelector("head");if(!r)return;let n=new Set(r.querySelectorAll(""+e+"[data-next-head]"));if("meta"===e){let e=r.querySelector("meta[charset]");null!==e&&n.add(e)}let i=[];for(let e=0;e{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"reportGlobalError",{enumerable:!0,get:function(){return r}});let r="function"==typeof reportError?reportError:e=>{globalThis.console.error(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4591:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return n}}),r(8205);let n=function(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return i}});let n=r(4252)._(r(9871));class o{end(e){if("ended"===this.state.state)throw Object.defineProperty(Error("Span has already ended"),"__NEXT_ERROR_CODE",{value:"E17",enumerable:!1,configurable:!0});this.state={state:"ended",endTime:null!=e?e:Date.now()},this.onSpanEnd(this)}constructor(e,t,r){var n,o;this.name=e,this.attributes=null!=(n=t.attributes)?n:{},this.startTime=null!=(o=t.startTime)?o:Date.now(),this.onSpanEnd=r,this.state={state:"inprogress"}}}class a{startSpan(e,t){return new o(e,t,this.handleSpanEnd)}onSpanEnd(e){return this._emitter.on("spanend",e),()=>{this._emitter.off("spanend",e)}}constructor(){this._emitter=(0,n.default)(),this.handleSpanEnd=e=>{this._emitter.emit("spanend",e)}}}let i=new a;("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4902:(e,t)=>{"use strict";function r(e){return e.replace(/\/$/,"")||"/"}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removeTrailingSlash",{enumerable:!0,get:function(){return r}})},4980:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"formatNextPathnameInfo",{enumerable:!0,get:function(){return l}});let n=r(4902),o=r(2889),a=r(7952),i=r(6711);function l(e){let t=(0,i.addLocale)(e.pathname,e.locale,e.buildId?void 0:e.defaultLocale,e.ignorePrefix);return(e.buildId||!e.trailingSlash)&&(t=(0,n.removeTrailingSlash)(t)),e.buildId&&(t=(0,a.addPathSuffix)((0,o.addPathPrefix)(t,"/_next/data/"+e.buildId),"/"===e.pathname?"index.json":".json")),t=(0,o.addPathPrefix)(t,e.basePath),!e.buildId&&e.trailingSlash?t.endsWith("/")?t:(0,a.addPathSuffix)(t,"/"):(0,n.removeTrailingSlash)(t)}},5195:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"denormalizePagePath",{enumerable:!0,get:function(){return a}});let n=r(3069),o=r(5419);function a(e){let t=(0,o.normalizePathSep)(e);return t.startsWith("/index/")&&!(0,n.isDynamicRoute)(t)?t.slice(6):"/index"!==t?t:"/"}},5214:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getNamedMiddlewareRegex:function(){return _},getNamedRouteRegex:function(){return h},getRouteRegex:function(){return f},parseParameter:function(){return u}});let n=r(9308),o=r(7188),a=r(1924),i=r(4902),l=/^([^[]*)\[((?:\[[^\]]*\])|[^\]]+)\](.*)$/;function u(e){let t=e.match(l);return t?s(t[2]):s(e)}function s(e){let t=e.startsWith("[")&&e.endsWith("]");t&&(e=e.slice(1,-1));let r=e.startsWith("...");return r&&(e=e.slice(3)),{key:e,repeat:r,optional:t}}function c(e,t,r){let n={},u=1,c=[];for(let f of(0,i.removeTrailingSlash)(e).slice(1).split("/")){let e=o.INTERCEPTION_ROUTE_MARKERS.find(e=>f.startsWith(e)),i=f.match(l);if(e&&i&&i[2]){let{key:t,optional:r,repeat:o}=s(i[2]);n[t]={pos:u++,repeat:o,optional:r},c.push("/"+(0,a.escapeStringRegexp)(e)+"([^/]+?)")}else if(i&&i[2]){let{key:e,repeat:t,optional:o}=s(i[2]);n[e]={pos:u++,repeat:t,optional:o},r&&i[1]&&c.push("/"+(0,a.escapeStringRegexp)(i[1]));let l=t?o?"(?:/(.+?))?":"/(.+?)":"/([^/]+?)";r&&i[1]&&(l=l.substring(1)),c.push(l)}else c.push("/"+(0,a.escapeStringRegexp)(f));t&&i&&i[3]&&c.push((0,a.escapeStringRegexp)(i[3]))}return{parameterizedRoute:c.join(""),groups:n}}function f(e,t){let{includeSuffix:r=!1,includePrefix:n=!1,excludeOptionalTrailingSlash:o=!1}=void 0===t?{}:t,{parameterizedRoute:a,groups:i}=c(e,r,n),l=a;return o||(l+="(?:/)?"),{re:RegExp("^"+l+"$"),groups:i}}function d(e){let t,{interceptionMarker:r,getSafeRouteKey:n,segment:o,routeKeys:i,keyPrefix:l,backreferenceDuplicateKeys:u}=e,{key:c,optional:f,repeat:d}=s(o),p=c.replace(/\W/g,"");l&&(p=""+l+p);let h=!1;(0===p.length||p.length>30)&&(h=!0),isNaN(parseInt(p.slice(0,1)))||(h=!0),h&&(p=n());let _=p in i;l?i[p]=""+l+c:i[p]=c;let m=r?(0,a.escapeStringRegexp)(r):"";return t=_&&u?"\\k<"+p+">":d?"(?<"+p+">.+?)":"(?<"+p+">[^/]+?)",f?"(?:/"+m+t+")?":"/"+m+t}function p(e,t,r,u,s){let c,f=(c=0,()=>{let e="",t=++c;for(;t>0;)e+=String.fromCharCode(97+(t-1)%26),t=Math.floor((t-1)/26);return e}),p={},h=[];for(let c of(0,i.removeTrailingSlash)(e).slice(1).split("/")){let e=o.INTERCEPTION_ROUTE_MARKERS.some(e=>c.startsWith(e)),i=c.match(l);if(e&&i&&i[2])h.push(d({getSafeRouteKey:f,interceptionMarker:i[1],segment:i[2],routeKeys:p,keyPrefix:t?n.NEXT_INTERCEPTION_MARKER_PREFIX:void 0,backreferenceDuplicateKeys:s}));else if(i&&i[2]){u&&i[1]&&h.push("/"+(0,a.escapeStringRegexp)(i[1]));let e=d({getSafeRouteKey:f,segment:i[2],routeKeys:p,keyPrefix:t?n.NEXT_QUERY_PARAM_PREFIX:void 0,backreferenceDuplicateKeys:s});u&&i[1]&&(e=e.substring(1)),h.push(e)}else h.push("/"+(0,a.escapeStringRegexp)(c));r&&i&&i[3]&&h.push((0,a.escapeStringRegexp)(i[3]))}return{namedParameterizedRoute:h.join(""),routeKeys:p}}function h(e,t){var r,n,o;let a=p(e,t.prefixRouteKeys,null!=(r=t.includeSuffix)&&r,null!=(n=t.includePrefix)&&n,null!=(o=t.backreferenceDuplicateKeys)&&o),i=a.namedParameterizedRoute;return t.excludeOptionalTrailingSlash||(i+="(?:/)?"),{...f(e,t),namedRegex:"^"+i+"$",routeKeys:a.routeKeys}}function _(e,t){let{parameterizedRoute:r}=c(e,!1,!1),{catchAll:n=!0}=t;if("/"===r)return{namedRegex:"^/"+(n?".*":"")+"$"};let{namedParameterizedRoute:o}=p(e,!1,!1,!1,!1);return{namedRegex:"^"+o+(n?"(?:(/.*)?)":"")+"$"}}},5364:(e,t,r)=>{"use strict";var n,o;e.exports=(null==(n=r.g.process)?void 0:n.env)&&"object"==typeof(null==(o=r.g.process)?void 0:o.env)?r.g.process:r(5861)},5419:(e,t)=>{"use strict";function r(e){return e.replace(/\\/g,"/")}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathSep",{enumerable:!0,get:function(){return r}})},5519:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getRouteMatcher",{enumerable:!0,get:function(){return o}});let n=r(2746);function o(e){let{re:t,groups:r}=e;return e=>{let o=t.exec(e);if(!o)return!1;let a=e=>{try{return decodeURIComponent(e)}catch(e){throw Object.defineProperty(new n.DecodeError("failed to decode param"),"__NEXT_ERROR_CODE",{value:"E528",enumerable:!1,configurable:!0})}},i={};for(let[e,t]of Object.entries(r)){let r=o[t.pos];void 0!==r&&(t.repeat?i[e]=r.split("/").map(e=>a(e)):i[e]=a(r))}return i}}},5679:(e,t,r)=>{"use strict";var n=r(5364);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return m},defaultHead:function(){return d}});let o=r(4252),a=r(8365),i=r(7876),l=a._(r(4232)),u=o._(r(3776)),s=r(303),c=r(8831),f=r(6807);function d(e){void 0===e&&(e=!1);let t=[(0,i.jsx)("meta",{charSet:"utf-8"},"charset")];return e||t.push((0,i.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")),t}function p(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===l.default.Fragment?e.concat(l.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}r(6079);let h=["name","httpEquiv","charSet","itemProp"];function _(e,t){let{inAmpMode:r}=t;return e.reduce(p,[]).reverse().concat(d(r).reverse()).filter(function(){let e=new Set,t=new Set,r=new Set,n={};return o=>{let a=!0,i=!1;if(o.key&&"number"!=typeof o.key&&o.key.indexOf("$")>0){i=!0;let t=o.key.slice(o.key.indexOf("$")+1);e.has(t)?a=!1:e.add(t)}switch(o.type){case"title":case"base":t.has(o.type)?a=!1:t.add(o.type);break;case"meta":for(let e=0,t=h.length;e{let o=e.key||t;if(n.env.__NEXT_OPTIMIZE_FONTS&&!r&&"link"===e.type&&e.props.href&&["https://fonts.googleapis.com/css","https://use.typekit.net/"].some(t=>e.props.href.startsWith(t))){let t={...e.props||{}};return t["data-href"]=t.href,t.href=void 0,t["data-optimized-fonts"]=!0,l.default.cloneElement(e,t)}return l.default.cloneElement(e,{key:o})})}let m=function(e){let{children:t}=e,r=(0,l.useContext)(s.AmpStateContext),n=(0,l.useContext)(c.HeadManagerContext);return(0,i.jsx)(u.default,{reduceComponentsToState:_,headManager:n,inAmpMode:(0,f.isInAmpMode)(r),children:t})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5842:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),r(3718),r(7647);let n=r(9525);window.next={version:n.version,get router(){return n.router},emitter:n.emitter},(0,n.initialize)({}).then(()=>(0,n.hydrate)()).catch(console.error),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5861:e=>{!function(){var t={229:function(e){var t,r,n,o=e.exports={};function a(){throw Error("setTimeout has not been defined")}function i(){throw Error("clearTimeout has not been defined")}try{t="function"==typeof setTimeout?setTimeout:a}catch(e){t=a}try{r="function"==typeof clearTimeout?clearTimeout:i}catch(e){r=i}function l(e){if(t===setTimeout)return setTimeout(e,0);if((t===a||!t)&&setTimeout)return t=setTimeout,setTimeout(e,0);try{return t(e,0)}catch(r){try{return t.call(null,e,0)}catch(r){return t.call(this,e,0)}}}var u=[],s=!1,c=-1;function f(){s&&n&&(s=!1,n.length?u=n.concat(u):c=-1,u.length&&d())}function d(){if(!s){var e=l(f);s=!0;for(var t=u.length;t;){for(n=u,u=[];++c1)for(var r=1;r{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PathParamsContext:function(){return i},PathnameContext:function(){return a},SearchParamsContext:function(){return o}});let n=r(4232),o=(0,n.createContext)(null),a=(0,n.createContext)(null),i=(0,n.createContext)(null)},6023:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"hasBasePath",{enumerable:!0,get:function(){return o}});let n=r(3716);function o(e){return(0,n.pathHasPrefix)(e,"/docs-site")}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6079:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"warnOnce",{enumerable:!0,get:function(){return r}});let r=e=>{}},6240:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{default:function(){return o},getProperError:function(){return a}});let n=r(8096);function o(e){return"object"==typeof e&&null!==e&&"name"in e&&"message"in e}function a(e){return o(e)?e:Object.defineProperty(Error((0,n.isPlainObject)(e)?function(e){let t=new WeakSet;return JSON.stringify(e,(e,r)=>{if("object"==typeof r&&null!==r){if(t.has(r))return"[Circular]";t.add(r)}return r})}(e):e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0})}},6292:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"removePathPrefix",{enumerable:!0,get:function(){return o}});let n=r(3716);function o(e,t){if(!(0,n.pathHasPrefix)(e,t))return e;let r=e.slice(t.length);return r.startsWith("/")?r:"/"+r}},6582:e=>{"use strict";e.exports=["chrome 64","edge 79","firefox 67","opera 51","safari 12"]},6711:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addLocale",{enumerable:!0,get:function(){return a}});let n=r(2889),o=r(3716);function a(e,t,r,a){if(!t||t===r)return e;let i=e.toLowerCase();return!a&&((0,o.pathHasPrefix)(i,"/api")||(0,o.pathHasPrefix)(i,"/"+t.toLowerCase()))?e:(0,n.addPathPrefix)(e,"/"+t)}},6807:(e,t)=>{"use strict";function r(e){let{ampFirst:t=!1,hybrid:r=!1,hasQuery:n=!1}=void 0===e?{}:e;return t||r&&n}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isInAmpMode",{enumerable:!0,get:function(){return r}})},6818:(e,t)=>{"use strict";let r;function n(e){var t;return(null==(t=function(){if(void 0===r){var e;r=(null==(e=window.trustedTypes)?void 0:e.createPolicy("nextjs",{createHTML:e=>e,createScript:e=>e,createScriptURL:e=>e}))||null}return r}())?void 0:t.createScriptURL(e))||e}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"__unsafeCreateTrustedScriptURL",{enumerable:!0,get:function(){return n}}),("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6959:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{cancelIdleCallback:function(){return n},requestIdleCallback:function(){return r}});let r="undefined"!=typeof self&&self.requestIdleCallback&&self.requestIdleCallback.bind(window)||function(e){let t=Date.now();return self.setTimeout(function(){e({didTimeout:!1,timeRemaining:function(){return Math.max(0,50-(Date.now()-t))}})},1)},n="undefined"!=typeof self&&self.cancelIdleCallback&&self.cancelIdleCallback.bind(window)||function(e){return clearTimeout(e)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},6999:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isNextRouterError",{enumerable:!0,get:function(){return a}});let n=r(4181),o=r(2591);function a(e){return(0,o.isRedirectError)(e)||(0,n.isHTTPAccessFallbackError)(e)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7176:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createRouteLoader:function(){return m},getClientBuildManifest:function(){return h},isAssetError:function(){return c},markAssetError:function(){return s}}),r(4252),r(1827);let n=r(6818),o=r(6959),a=r(8757),i=r(536);function l(e,t,r){let n,o=t.get(e);if(o)return"future"in o?o.future:Promise.resolve(o);let a=new Promise(e=>{n=e});return t.set(e,{resolve:n,future:a}),r?r().then(e=>(n(e),e)).catch(r=>{throw t.delete(e),r}):a}let u=Symbol("ASSET_LOAD_ERROR");function s(e){return Object.defineProperty(e,u,{})}function c(e){return e&&u in e}let f=function(e){try{return e=document.createElement("link"),!!window.MSInputMethodContext&&!!document.documentMode||e.relList.supports("prefetch")}catch(e){return!1}}(),d=()=>(0,a.getDeploymentIdQueryOrEmptyString)();function p(e,t,r){return new Promise((n,a)=>{let i=!1;e.then(e=>{i=!0,n(e)}).catch(a),(0,o.requestIdleCallback)(()=>setTimeout(()=>{i||a(r)},t))})}function h(){return self.__BUILD_MANIFEST?Promise.resolve(self.__BUILD_MANIFEST):p(new Promise(e=>{let t=self.__BUILD_MANIFEST_CB;self.__BUILD_MANIFEST_CB=()=>{e(self.__BUILD_MANIFEST),t&&t()}}),3800,s(Object.defineProperty(Error("Failed to load client build manifest"),"__NEXT_ERROR_CODE",{value:"E273",enumerable:!1,configurable:!0})))}function _(e,t){return h().then(r=>{if(!(t in r))throw s(Object.defineProperty(Error("Failed to lookup route: "+t),"__NEXT_ERROR_CODE",{value:"E446",enumerable:!1,configurable:!0}));let o=r[t].map(t=>e+"/_next/"+(0,i.encodeURIPath)(t));return{scripts:o.filter(e=>e.endsWith(".js")).map(e=>(0,n.__unsafeCreateTrustedScriptURL)(e)+d()),css:o.filter(e=>e.endsWith(".css")).map(e=>e+d())}})}function m(e){let t=new Map,r=new Map,n=new Map,a=new Map;function i(e){{var t;let n=r.get(e.toString());return n?n:document.querySelector('script[src^="'+e+'"]')?Promise.resolve():(r.set(e.toString(),n=new Promise((r,n)=>{(t=document.createElement("script")).onload=r,t.onerror=()=>n(s(Object.defineProperty(Error("Failed to load script: "+e),"__NEXT_ERROR_CODE",{value:"E74",enumerable:!1,configurable:!0}))),t.crossOrigin=void 0,t.src=e,document.body.appendChild(t)})),n)}}function u(e){let t=n.get(e);return t||n.set(e,t=fetch(e,{credentials:"same-origin"}).then(t=>{if(!t.ok)throw Object.defineProperty(Error("Failed to load stylesheet: "+e),"__NEXT_ERROR_CODE",{value:"E189",enumerable:!1,configurable:!0});return t.text().then(t=>({href:e,content:t}))}).catch(e=>{throw s(e)})),t}return{whenEntrypoint:e=>l(e,t),onEntrypoint(e,r){(r?Promise.resolve().then(()=>r()).then(e=>({component:e&&e.default||e,exports:e}),e=>({error:e})):Promise.resolve(void 0)).then(r=>{let n=t.get(e);n&&"resolve"in n?r&&(t.set(e,r),n.resolve(r)):(r?t.set(e,r):t.delete(e),a.delete(e))})},loadRoute(r,n){return l(r,a,()=>{let o;return p(_(e,r).then(e=>{let{scripts:n,css:o}=e;return Promise.all([t.has(r)?[]:Promise.all(n.map(i)),Promise.all(o.map(u))])}).then(e=>this.whenEntrypoint(r).then(t=>({entrypoint:t,styles:e[1]}))),3800,s(Object.defineProperty(Error("Route did not complete loading: "+r),"__NEXT_ERROR_CODE",{value:"E12",enumerable:!1,configurable:!0}))).then(e=>{let{entrypoint:t,styles:r}=e,n=Object.assign({styles:r},t);return"error"in t?t:n}).catch(e=>{if(n)throw e;return{error:e}}).finally(()=>null==o?void 0:o())})},prefetch(t){let r;return(r=navigator.connection)&&(r.saveData||/2g/.test(r.effectiveType))?Promise.resolve():_(e,t).then(e=>Promise.all(f?e.scripts.map(e=>{var t,r,n;return t=e.toString(),r="script",new Promise((e,o)=>{let a='\n link[rel="prefetch"][href^="'+t+'"],\n link[rel="preload"][href^="'+t+'"],\n script[src^="'+t+'"]';if(document.querySelector(a))return e();n=document.createElement("link"),r&&(n.as=r),n.rel="prefetch",n.crossOrigin=void 0,n.onload=e,n.onerror=()=>o(s(Object.defineProperty(Error("Failed to prefetch: "+t),"__NEXT_ERROR_CODE",{value:"E268",enumerable:!1,configurable:!0}))),n.href=t,document.head.appendChild(n)})}):[])).then(()=>{(0,o.requestIdleCallback)(()=>this.loadRoute(t,!0).catch(()=>{}))}).catch(()=>{})}}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7188:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{INTERCEPTION_ROUTE_MARKERS:function(){return o},extractInterceptionRouteInformation:function(){return i},isInterceptionRouteAppPath:function(){return a}});let n=r(2959),o=["(..)(..)","(.)","(..)","(...)"];function a(e){return void 0!==e.split("/").find(e=>o.find(t=>e.startsWith(t)))}function i(e){let t,r,a;for(let n of e.split("/"))if(r=o.find(e=>n.startsWith(e))){[t,a]=e.split(r,2);break}if(!t||!r||!a)throw Object.defineProperty(Error("Invalid interception route: "+e+". Must be in the format //(..|...|..)(..)/"),"__NEXT_ERROR_CODE",{value:"E269",enumerable:!1,configurable:!0});switch(t=(0,n.normalizeAppPath)(t),r){case"(.)":a="/"===t?"/"+a:t+"/"+a;break;case"(..)":if("/"===t)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..) marker at the root level, use (.) instead."),"__NEXT_ERROR_CODE",{value:"E207",enumerable:!1,configurable:!0});a=t.split("/").slice(0,-1).concat(a).join("/");break;case"(...)":a="/"+a;break;case"(..)(..)":let i=t.split("/");if(i.length<=2)throw Object.defineProperty(Error("Invalid interception route: "+e+". Cannot use (..)(..) marker at the root level or one level up."),"__NEXT_ERROR_CODE",{value:"E486",enumerable:!1,configurable:!0});a=i.slice(0,-2).concat(a).join("/");break;default:throw Object.defineProperty(Error("Invariant: unexpected marker"),"__NEXT_ERROR_CODE",{value:"E112",enumerable:!1,configurable:!0})}return{interceptingRoute:t,interceptedRoute:a}}},7207:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"onRecoverableError",{enumerable:!0,get:function(){return u}});let n=r(4252),o=r(3123),a=r(4569),i=r(3575),l=n._(r(6240)),u=(e,t)=>{let r=(0,l.default)(e)&&"cause"in e?e.cause:e,n=(0,i.getReactStitchedError)(r);(0,o.isBailoutToCSRError)(r)||(0,a.reportGlobalError)(n)};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},7407:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{HTML_LIMITED_BOT_UA_RE:function(){return n.HTML_LIMITED_BOT_UA_RE},HTML_LIMITED_BOT_UA_RE_STRING:function(){return a},getBotType:function(){return u},isBot:function(){return l}});let n=r(2455),o=/Googlebot|Google-PageRenderer|AdsBot-Google|googleweblight|Storebot-Google/i,a=n.HTML_LIMITED_BOT_UA_RE.source;function i(e){return n.HTML_LIMITED_BOT_UA_RE.test(e)}function l(e){return o.test(e)||i(e)}function u(e){return o.test(e)?"dom":i(e)?"html":void 0}},7539:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{VALID_LOADERS:function(){return r},imageConfigDefault:function(){return n}});let r=["default","imgix","cloudinary","akamai","custom"],n={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:60,formats:["image/webp"],dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:void 0,unoptimized:!1}},7647:(e,t,r)=>{"use strict";e.exports=r(9393)},7952:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"addPathSuffix",{enumerable:!0,get:function(){return o}});let n=r(3670);function o(e,t){if(!e.startsWith("/")||!t)return e;let{pathname:r,query:o,hash:a}=(0,n.parsePath)(e);return""+r+t+o+a}},8040:(e,t)=>{"use strict";function r(e){let t={};for(let[r,n]of e.entries()){let e=t[r];void 0===e?t[r]=n:Array.isArray(e)?e.push(n):t[r]=[e,n]}return t}function n(e){return"string"==typeof e?e:("number"!=typeof e||isNaN(e))&&"boolean"!=typeof e?"":String(e)}function o(e){let t=new URLSearchParams;for(let[r,o]of Object.entries(e))if(Array.isArray(o))for(let e of o)t.append(r,n(e));else t.set(r,n(o));return t}function a(e){for(var t=arguments.length,r=Array(t>1?t-1:0),n=1;n{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"interpolateAs",{enumerable:!0,get:function(){return a}});let n=r(5519),o=r(5214);function a(e,t,r){let a="",i=(0,o.getRouteRegex)(e),l=i.groups,u=(t!==e?(0,n.getRouteMatcher)(i)(t):"")||r;a=e;let s=Object.keys(l);return s.every(e=>{let t=u[e]||"",{repeat:r,optional:n}=l[e],o="["+(r?"...":"")+e+"]";return n&&(o=(t?"":"/")+"["+o+"]"),r&&!Array.isArray(t)&&(t=[t]),(n||e in u)&&(a=a.replace(o,r?t.map(e=>encodeURIComponent(e)).join("/"):encodeURIComponent(t))||"/")})||(a=""),{params:s,result:a}}},8089:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{copyNextErrorCode:function(){return n},createDigestWithErrorCode:function(){return r},extractNextErrorCode:function(){return o}});let r=(e,t)=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e?`${t}@${e.__NEXT_ERROR_CODE}`:t,n=(e,t)=>{let r=o(e);r&&"object"==typeof t&&null!==t&&Object.defineProperty(t,"__NEXT_ERROR_CODE",{value:r,enumerable:!1,configurable:!0})},o=e=>"object"==typeof e&&null!==e&&"__NEXT_ERROR_CODE"in e&&"string"==typeof e.__NEXT_ERROR_CODE?e.__NEXT_ERROR_CODE:"object"==typeof e&&null!==e&&"digest"in e&&"string"==typeof e.digest?e.digest.split("@").find(e=>e.startsWith("E")):void 0},8096:(e,t)=>{"use strict";function r(e){return Object.prototype.toString.call(e)}function n(e){if("[object Object]"!==r(e))return!1;let t=Object.getPrototypeOf(e);return null===t||t.hasOwnProperty("isPrototypeOf")}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{getObjectClassLabel:function(){return r},isPlainObject:function(){return n}})},8147:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return a}}),r(4252);let n=r(7876);r(4232);let o=r(4294);function a(e){function t(t){return(0,n.jsx)(e,{router:(0,o.useRouter)(),...t})}return t.getInitialProps=e.getInitialProps,t.origGetInitialProps=e.origGetInitialProps,t}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8205:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"normalizePathTrailingSlash",{enumerable:!0,get:function(){return a}});let n=r(4902),o=r(3670),a=e=>{if(!e.startsWith("/"))return e;let{pathname:t,query:r,hash:a}=(0,o.parsePath)(e);return""+(0,n.removeTrailingSlash)(t)+r+a};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8213:(e,t)=>{"use strict";function r(e){return new URL(e,"http://n").searchParams}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"asPathToSearchParams",{enumerable:!0,get:function(){return r}})},8276:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{createKey:function(){return G},default:function(){return z},matchesMiddleware:function(){return D}});let n=r(4252),o=r(8365),a=r(4902),i=r(7176),l=r(3996),u=o._(r(6240)),s=r(5195),c=r(1862),f=n._(r(9871)),d=r(2746),p=r(9163),h=r(541);r(1226);let _=r(5519),m=r(5214),g=r(8480);r(2616);let b=r(3670),E=r(4591),y=r(3836),P=r(1025),v=r(2092),R=r(6023),O=r(1921),S=r(2326),j=r(3407),T=r(4980),A=r(4359),C=r(1533),w=r(7407),I=r(990),N=r(8069),x=r(3132),M=r(9308);function L(){return Object.assign(Object.defineProperty(Error("Route Cancelled"),"__NEXT_ERROR_CODE",{value:"E315",enumerable:!1,configurable:!0}),{cancelled:!0})}async function D(e){let t=await Promise.resolve(e.router.pageLoader.getMiddleware());if(!t)return!1;let{pathname:r}=(0,b.parsePath)(e.asPath),n=(0,R.hasBasePath)(r)?(0,P.removeBasePath)(r):r,o=(0,v.addBasePath)((0,E.addLocale)(n,e.locale));return t.some(e=>new RegExp(e.regexp).test(o))}function U(e){let t=(0,d.getLocationOrigin)();return e.startsWith(t)?e.substring(t.length):e}function k(e,t,r){let[n,o]=(0,O.resolveHref)(e,t,!0),a=(0,d.getLocationOrigin)(),i=n.startsWith(a),l=o&&o.startsWith(a);n=U(n),o=o?U(o):o;let u=i?n:(0,v.addBasePath)(n),s=r?U((0,O.resolveHref)(e,r)):o||n;return{url:u,as:l?s:(0,v.addBasePath)(s)}}function F(e,t){let r=(0,a.removeTrailingSlash)((0,s.denormalizePagePath)(e));return"/404"===r||"/_error"===r?e:(t.includes(r)||t.some(t=>{if((0,p.isDynamicRoute)(t)&&(0,m.getRouteRegex)(t).re.test(r))return e=t,!0}),(0,a.removeTrailingSlash)(e))}async function B(e){if(!await D(e)||!e.fetchData)return null;let t=await e.fetchData(),r=await function(e,t,r){let n={basePath:r.router.basePath,i18n:{locales:r.router.locales},trailingSlash:!1},o=t.headers.get("x-nextjs-rewrite"),l=o||t.headers.get("x-nextjs-matched-path"),u=t.headers.get(M.MATCHED_PATH_HEADER);if(!u||l||u.includes("__next_data_catchall")||u.includes("/_error")||u.includes("/404")||(l=u),l){if(l.startsWith("/")){let t=(0,h.parseRelativeUrl)(l),u=(0,j.getNextPathnameInfo)(t.pathname,{nextConfig:n,parseData:!0}),s=(0,a.removeTrailingSlash)(u.pathname);return Promise.all([r.router.pageLoader.getPageList(),(0,i.getClientBuildManifest)()]).then(a=>{let[i,{__rewrites:l}]=a,f=(0,E.addLocale)(u.pathname,u.locale);if((0,p.isDynamicRoute)(f)||!o&&i.includes((0,c.normalizeLocalePath)((0,P.removeBasePath)(f),r.router.locales).pathname)){let r=(0,j.getNextPathnameInfo)((0,h.parseRelativeUrl)(e).pathname,{nextConfig:n,parseData:!0});t.pathname=f=(0,v.addBasePath)(r.pathname)}if(!i.includes(s)){let e=F(s,i);e!==s&&(s=e)}let d=i.includes(s)?s:F((0,c.normalizeLocalePath)((0,P.removeBasePath)(t.pathname),r.router.locales).pathname,i);if((0,p.isDynamicRoute)(d)){let e=(0,_.getRouteMatcher)((0,m.getRouteRegex)(d))(f);Object.assign(t.query,e||{})}return{type:"rewrite",parsedAs:t,resolvedHref:d}})}let t=(0,b.parsePath)(e);return Promise.resolve({type:"redirect-external",destination:""+(0,T.formatNextPathnameInfo)({...(0,j.getNextPathnameInfo)(t.pathname,{nextConfig:n,parseData:!0}),defaultLocale:r.router.defaultLocale,buildId:""})+t.query+t.hash})}let s=t.headers.get("x-nextjs-redirect");if(s){if(s.startsWith("/")){let e=(0,b.parsePath)(s),t=(0,T.formatNextPathnameInfo)({...(0,j.getNextPathnameInfo)(e.pathname,{nextConfig:n,parseData:!0}),defaultLocale:r.router.defaultLocale,buildId:""});return Promise.resolve({type:"redirect-internal",newAs:""+t+e.query+e.hash,newUrl:""+t+e.query+e.hash})}return Promise.resolve({type:"redirect-external",destination:s})}return Promise.resolve({type:"next"})}(t.dataHref,t.response,e);return{dataHref:t.dataHref,json:t.json,response:t.response,text:t.text,cacheKey:t.cacheKey,effect:r}}let H=Symbol("SSG_DATA_NOT_FOUND");function X(e){try{return JSON.parse(e)}catch(e){return null}}function W(e){let{dataHref:t,inflightCache:r,isPrefetch:n,hasMiddleware:o,isServerRender:a,parseJSON:l,persistCache:u,isBackground:s,unstable_skipClientCache:c}=e,{href:f}=new URL(t,window.location.href),d=e=>{var s;return(function e(t,r,n){return fetch(t,{credentials:"same-origin",method:n.method||"GET",headers:Object.assign({},n.headers,{"x-nextjs-data":"1"})}).then(o=>!o.ok&&r>1&&o.status>=500?e(t,r-1,n):o)})(t,a?3:1,{headers:Object.assign({},n?{purpose:"prefetch"}:{},n&&o?{"x-middleware-prefetch":"1"}:{},{}),method:null!=(s=null==e?void 0:e.method)?s:"GET"}).then(r=>r.ok&&(null==e?void 0:e.method)==="HEAD"?{dataHref:t,response:r,text:"",json:{},cacheKey:f}:r.text().then(e=>{if(!r.ok){if(o&&[301,302,307,308].includes(r.status))return{dataHref:t,response:r,text:e,json:{},cacheKey:f};if(404===r.status){var n;if(null==(n=X(e))?void 0:n.notFound)return{dataHref:t,json:{notFound:H},response:r,text:e,cacheKey:f}}let l=Object.defineProperty(Error("Failed to load static props"),"__NEXT_ERROR_CODE",{value:"E124",enumerable:!1,configurable:!0});throw a||(0,i.markAssetError)(l),l}return{dataHref:t,json:l?X(e):null,response:r,text:e,cacheKey:f}})).then(e=>(u&&"no-cache"!==e.response.headers.get("x-middleware-cache")||delete r[f],e)).catch(e=>{throw c||delete r[f],("Failed to fetch"===e.message||"NetworkError when attempting to fetch resource."===e.message||"Load failed"===e.message)&&(0,i.markAssetError)(e),e})};return c&&u?d({}).then(e=>("no-cache"!==e.response.headers.get("x-middleware-cache")&&(r[f]=Promise.resolve(e)),e)):void 0!==r[f]?r[f]:r[f]=d(s?{method:"HEAD"}:{})}function G(){return Math.random().toString(36).slice(2,10)}function q(e){let{url:t,router:r}=e;if(t===(0,v.addBasePath)((0,E.addLocale)(r.asPath,r.locale)))throw Object.defineProperty(Error("Invariant: attempted to hard navigate to the same URL "+t+" "+location.href),"__NEXT_ERROR_CODE",{value:"E282",enumerable:!1,configurable:!0});window.location.href=t}let V=e=>{let{route:t,router:r}=e,n=!1,o=r.clc=()=>{n=!0};return()=>{if(n){let e=Object.defineProperty(Error('Abort fetching component for route: "'+t+'"'),"__NEXT_ERROR_CODE",{value:"E483",enumerable:!1,configurable:!0});throw e.cancelled=!0,e}o===r.clc&&(r.clc=null)}};class z{reload(){window.location.reload()}back(){window.history.back()}forward(){window.history.forward()}push(e,t,r){return void 0===r&&(r={}),{url:e,as:t}=k(this,e,t),this.change("pushState",e,t,r)}replace(e,t,r){return void 0===r&&(r={}),{url:e,as:t}=k(this,e,t),this.change("replaceState",e,t,r)}async _bfl(e,t,n,o){{if(!this._bfl_s&&!this._bfl_d){let t,a,{BloomFilter:l}=r(4069);try{({__routerFilterStatic:t,__routerFilterDynamic:a}=await (0,i.getClientBuildManifest)())}catch(t){if(console.error(t),o)return!0;return q({url:(0,v.addBasePath)((0,E.addLocale)(e,n||this.locale,this.defaultLocale)),router:this}),new Promise(()=>{})}(null==t?void 0:t.numHashes)&&(this._bfl_s=new l(t.numItems,t.errorRate),this._bfl_s.import(t)),(null==a?void 0:a.numHashes)&&(this._bfl_d=new l(a.numItems,a.errorRate),this._bfl_d.import(a))}let c=!1,f=!1;for(let{as:r,allowMatchCurrent:i}of[{as:e},{as:t}])if(r){let t=(0,a.removeTrailingSlash)(new URL(r,"http://n").pathname),d=(0,v.addBasePath)((0,E.addLocale)(t,n||this.locale));if(i||t!==(0,a.removeTrailingSlash)(new URL(this.asPath,"http://n").pathname)){var l,u,s;for(let e of(c=c||!!(null==(l=this._bfl_s)?void 0:l.contains(t))||!!(null==(u=this._bfl_s)?void 0:u.contains(d)),[t,d])){let t=e.split("/");for(let e=0;!f&&e{})}}}}return!1}async change(e,t,r,n,o){var s,c,f,O,S,j,T,w,x;let M,U;if(!(0,C.isLocalURL)(t))return q({url:t,router:this}),!1;let B=1===n._h;B||n.shallow||await this._bfl(r,void 0,n.locale);let X=B||n._shouldResolveHref||(0,b.parsePath)(t).pathname===(0,b.parsePath)(r).pathname,W={...this.state},G=!0!==this.isReady;this.isReady=!0;let V=this.isSsr;if(B||(this.isSsr=!1),B&&this.clc)return!1;let Y=W.locale;d.ST&&performance.mark("routeChange");let{shallow:K=!1,scroll:$=!0}=n,Q={shallow:K};this._inFlightRoute&&this.clc&&(V||z.events.emit("routeChangeError",L(),this._inFlightRoute,Q),this.clc(),this.clc=null),r=(0,v.addBasePath)((0,E.addLocale)((0,R.hasBasePath)(r)?(0,P.removeBasePath)(r):r,n.locale,this.defaultLocale));let J=(0,y.removeLocale)((0,R.hasBasePath)(r)?(0,P.removeBasePath)(r):r,W.locale);this._inFlightRoute=r;let Z=Y!==W.locale;if(!B&&this.onlyAHashChange(J)&&!Z){W.asPath=J,z.events.emit("hashChangeStart",r,Q),this.changeState(e,t,r,{...n,scroll:!1}),$&&this.scrollToHash(J);try{await this.set(W,this.components[W.route],null)}catch(e){throw(0,u.default)(e)&&e.cancelled&&z.events.emit("routeChangeError",e,J,Q),e}return z.events.emit("hashChangeComplete",r,Q),!0}let ee=(0,h.parseRelativeUrl)(t),{pathname:et,query:er}=ee;try{[M,{__rewrites:U}]=await Promise.all([this.pageLoader.getPageList(),(0,i.getClientBuildManifest)(),this.pageLoader.getMiddleware()])}catch(e){return q({url:r,router:this}),!1}this.urlIsNew(J)||Z||(e="replaceState");let en=r;et=et?(0,a.removeTrailingSlash)((0,P.removeBasePath)(et)):et;let eo=(0,a.removeTrailingSlash)(et),ea=r.startsWith("/")&&(0,h.parseRelativeUrl)(r).pathname;if(null==(s=this.components[et])?void 0:s.__appRouter)return q({url:r,router:this}),new Promise(()=>{});let ei=!!(ea&&eo!==ea&&(!(0,p.isDynamicRoute)(eo)||!(0,_.getRouteMatcher)((0,m.getRouteRegex)(eo))(ea))),el=!n.shallow&&await D({asPath:r,locale:W.locale,router:this});if(B&&el&&(X=!1),X&&"/_error"!==et&&(n._shouldResolveHref=!0,ee.pathname=F(et,M),ee.pathname!==et&&(et=ee.pathname,ee.pathname=(0,v.addBasePath)(et),el||(t=(0,g.formatWithValidation)(ee)))),!(0,C.isLocalURL)(r))return q({url:r,router:this}),!1;en=(0,y.removeLocale)((0,P.removeBasePath)(en),W.locale),eo=(0,a.removeTrailingSlash)(et);let eu=!1;if((0,p.isDynamicRoute)(eo)){let e=(0,h.parseRelativeUrl)(en),n=e.pathname,o=(0,m.getRouteRegex)(eo);eu=(0,_.getRouteMatcher)(o)(n);let a=eo===n,i=a?(0,N.interpolateAs)(eo,n,er):{};if(eu&&(!a||i.result))a?r=(0,g.formatWithValidation)(Object.assign({},e,{pathname:i.result,query:(0,I.omit)(er,i.params)})):Object.assign(er,eu);else{let e=Object.keys(o.groups).filter(e=>!er[e]&&!o.groups[e].optional);if(e.length>0&&!el)throw Object.defineProperty(Error((a?"The provided `href` ("+t+") value is missing query values ("+e.join(", ")+") to be interpolated properly. ":"The provided `as` value ("+n+") is incompatible with the `href` value ("+eo+"). ")+"Read more: https://nextjs.org/docs/messages/"+(a?"href-interpolation-failed":"incompatible-href-as")),"__NEXT_ERROR_CODE",{value:"E344",enumerable:!1,configurable:!0})}}B||z.events.emit("routeChangeStart",r,Q);let es="/404"===this.pathname||"/_error"===this.pathname;try{let a=await this.getRouteInfo({route:eo,pathname:et,query:er,as:r,resolvedAs:en,routeProps:Q,locale:W.locale,isPreview:W.isPreview,hasMiddleware:el,unstable_skipClientCache:n.unstable_skipClientCache,isQueryUpdating:B&&!this.isFallback,isMiddlewareRewrite:ei});if(B||n.shallow||await this._bfl(r,"resolvedAs"in a?a.resolvedAs:void 0,W.locale),"route"in a&&el){eo=et=a.route||eo,Q.shallow||(er=Object.assign({},a.query||{},er));let e=(0,R.hasBasePath)(ee.pathname)?(0,P.removeBasePath)(ee.pathname):ee.pathname;if(eu&&et!==e&&Object.keys(eu).forEach(e=>{eu&&er[e]===eu[e]&&delete er[e]}),(0,p.isDynamicRoute)(et)){let e=!Q.shallow&&a.resolvedAs?a.resolvedAs:(0,v.addBasePath)((0,E.addLocale)(new URL(r,location.href).pathname,W.locale),!0);(0,R.hasBasePath)(e)&&(e=(0,P.removeBasePath)(e));let t=(0,m.getRouteRegex)(et),n=(0,_.getRouteMatcher)(t)(new URL(e,location.href).pathname);n&&Object.assign(er,n)}}if("type"in a)if("redirect-internal"===a.type)return this.change(e,a.newUrl,a.newAs,n);else return q({url:a.destination,router:this}),new Promise(()=>{});let i=a.Component;if(i&&i.unstable_scriptLoader&&[].concat(i.unstable_scriptLoader()).forEach(e=>{(0,l.handleClientScriptLoad)(e.props)}),(a.__N_SSG||a.__N_SSP)&&a.props){if(a.props.pageProps&&a.props.pageProps.__N_REDIRECT){n.locale=!1;let t=a.props.pageProps.__N_REDIRECT;if(t.startsWith("/")&&!1!==a.props.pageProps.__N_REDIRECT_BASE_PATH){let r=(0,h.parseRelativeUrl)(t);r.pathname=F(r.pathname,M);let{url:o,as:a}=k(this,t,t);return this.change(e,o,a,n)}return q({url:t,router:this}),new Promise(()=>{})}if(W.isPreview=!!a.props.__N_PREVIEW,a.props.notFound===H){let e;try{await this.fetchComponent("/404"),e="/404"}catch(t){e="/_error"}if(a=await this.getRouteInfo({route:e,pathname:e,query:er,as:r,resolvedAs:en,routeProps:{shallow:!1},locale:W.locale,isPreview:W.isPreview,isNotFound:!0}),"type"in a)throw Object.defineProperty(Error("Unexpected middleware effect on /404"),"__NEXT_ERROR_CODE",{value:"E158",enumerable:!1,configurable:!0})}}B&&"/_error"===this.pathname&&(null==(f=self.__NEXT_DATA__.props)||null==(c=f.pageProps)?void 0:c.statusCode)===500&&(null==(O=a.props)?void 0:O.pageProps)&&(a.props.pageProps.statusCode=500);let s=n.shallow&&W.route===(null!=(S=a.route)?S:eo),d=null!=(j=n.scroll)?j:!B&&!s,g=null!=o?o:d?{x:0,y:0}:null,b={...W,route:eo,pathname:et,query:er,asPath:J,isFallback:!1};if(B&&es){if(a=await this.getRouteInfo({route:this.pathname,pathname:this.pathname,query:er,as:r,resolvedAs:en,routeProps:{shallow:!1},locale:W.locale,isPreview:W.isPreview,isQueryUpdating:B&&!this.isFallback}),"type"in a)throw Object.defineProperty(Error("Unexpected middleware effect on "+this.pathname),"__NEXT_ERROR_CODE",{value:"E225",enumerable:!1,configurable:!0});"/_error"===this.pathname&&(null==(w=self.__NEXT_DATA__.props)||null==(T=w.pageProps)?void 0:T.statusCode)===500&&(null==(x=a.props)?void 0:x.pageProps)&&(a.props.pageProps.statusCode=500);try{await this.set(b,a,g)}catch(e){throw(0,u.default)(e)&&e.cancelled&&z.events.emit("routeChangeError",e,J,Q),e}return!0}if(z.events.emit("beforeHistoryChange",r,Q),this.changeState(e,t,r,n),!(B&&!g&&!G&&!Z&&(0,A.compareRouterStates)(b,this.state))){try{await this.set(b,a,g)}catch(e){if(e.cancelled)a.error=a.error||e;else throw e}if(a.error)throw B||z.events.emit("routeChangeError",a.error,J,Q),a.error;B||z.events.emit("routeChangeComplete",r,Q),d&&/#.+$/.test(r)&&this.scrollToHash(r)}return!0}catch(e){if((0,u.default)(e)&&e.cancelled)return!1;throw e}}changeState(e,t,r,n){void 0===n&&(n={}),("pushState"!==e||(0,d.getURL)()!==r)&&(this._shallow=n.shallow,window.history[e]({url:t,as:r,options:n,__N:!0,key:this._key="pushState"!==e?this._key:G()},"",r))}async handleRouteInfoError(e,t,r,n,o,a){if(e.cancelled)throw e;if((0,i.isAssetError)(e)||a)throw z.events.emit("routeChangeError",e,n,o),q({url:n,router:this}),L();console.error(e);try{let n,{page:o,styleSheets:a}=await this.fetchComponent("/_error"),i={props:n,Component:o,styleSheets:a,err:e,error:e};if(!i.props)try{i.props=await this.getInitialProps(o,{err:e,pathname:t,query:r})}catch(e){console.error("Error in error page `getInitialProps`: ",e),i.props={}}return i}catch(e){return this.handleRouteInfoError((0,u.default)(e)?e:Object.defineProperty(Error(e+""),"__NEXT_ERROR_CODE",{value:"E394",enumerable:!1,configurable:!0}),t,r,n,o,!0)}}async getRouteInfo(e){let{route:t,pathname:r,query:n,as:o,resolvedAs:i,routeProps:l,locale:s,hasMiddleware:f,isPreview:d,unstable_skipClientCache:p,isQueryUpdating:h,isMiddlewareRewrite:_,isNotFound:m}=e,b=t;try{var E,y,v,R;let e=this.components[b];if(l.shallow&&e&&this.route===b)return e;let t=V({route:b,router:this});f&&(e=void 0);let u=!e||"initial"in e?void 0:e,O={dataHref:this.pageLoader.getDataHref({href:(0,g.formatWithValidation)({pathname:r,query:n}),skipInterpolation:!0,asPath:m?"/404":i,locale:s}),hasMiddleware:!0,isServerRender:this.isSsr,parseJSON:!0,inflightCache:h?this.sbc:this.sdc,persistCache:!d,isPrefetch:!1,unstable_skipClientCache:p,isBackground:h},j=h&&!_?null:await B({fetchData:()=>W(O),asPath:m?"/404":i,locale:s,router:this}).catch(e=>{if(h)return null;throw e});if(j&&("/_error"===r||"/404"===r)&&(j.effect=void 0),h&&(j?j.json=self.__NEXT_DATA__.props:j={json:self.__NEXT_DATA__.props}),t(),(null==j||null==(E=j.effect)?void 0:E.type)==="redirect-internal"||(null==j||null==(y=j.effect)?void 0:y.type)==="redirect-external")return j.effect;if((null==j||null==(v=j.effect)?void 0:v.type)==="rewrite"){let t=(0,a.removeTrailingSlash)(j.effect.resolvedHref),o=await this.pageLoader.getPageList();if((!h||o.includes(t))&&(b=t,r=j.effect.resolvedHref,n={...n,...j.effect.parsedAs.query},i=(0,P.removeBasePath)((0,c.normalizeLocalePath)(j.effect.parsedAs.pathname,this.locales).pathname),e=this.components[b],l.shallow&&e&&this.route===b&&!f))return{...e,route:b}}if((0,S.isAPIRoute)(b))return q({url:o,router:this}),new Promise(()=>{});let T=u||await this.fetchComponent(b).then(e=>({Component:e.page,styleSheets:e.styleSheets,__N_SSG:e.mod.__N_SSG,__N_SSP:e.mod.__N_SSP})),A=null==j||null==(R=j.response)?void 0:R.headers.get("x-middleware-skip"),C=T.__N_SSG||T.__N_SSP;A&&(null==j?void 0:j.dataHref)&&delete this.sdc[j.dataHref];let{props:w,cacheKey:I}=await this._getData(async()=>{if(C){if((null==j?void 0:j.json)&&!A)return{cacheKey:j.cacheKey,props:j.json};let e=(null==j?void 0:j.dataHref)?j.dataHref:this.pageLoader.getDataHref({href:(0,g.formatWithValidation)({pathname:r,query:n}),asPath:i,locale:s}),t=await W({dataHref:e,isServerRender:this.isSsr,parseJSON:!0,inflightCache:A?{}:this.sdc,persistCache:!d,isPrefetch:!1,unstable_skipClientCache:p});return{cacheKey:t.cacheKey,props:t.json||{}}}return{headers:{},props:await this.getInitialProps(T.Component,{pathname:r,query:n,asPath:o,locale:s,locales:this.locales,defaultLocale:this.defaultLocale})}});return T.__N_SSP&&O.dataHref&&I&&delete this.sdc[I],this.isPreview||!T.__N_SSG||h||W(Object.assign({},O,{isBackground:!0,persistCache:!1,inflightCache:this.sbc})).catch(()=>{}),w.pageProps=Object.assign({},w.pageProps),T.props=w,T.route=b,T.query=n,T.resolvedAs=i,this.components[b]=T,T}catch(e){return this.handleRouteInfoError((0,u.getProperError)(e),r,n,o,l)}}set(e,t,r){return this.state=e,this.sub(t,this.components["/_app"].Component,r)}beforePopState(e){this._bps=e}onlyAHashChange(e){if(!this.asPath)return!1;let[t,r]=this.asPath.split("#",2),[n,o]=e.split("#",2);return!!o&&t===n&&r===o||t===n&&r!==o}scrollToHash(e){let[,t=""]=e.split("#",2);(0,x.handleSmoothScroll)(()=>{if(""===t||"top"===t)return void window.scrollTo(0,0);let e=decodeURIComponent(t),r=document.getElementById(e);if(r)return void r.scrollIntoView();let n=document.getElementsByName(e)[0];n&&n.scrollIntoView()},{onlyHashChange:this.onlyAHashChange(e)})}urlIsNew(e){return this.asPath!==e}async prefetch(e,t,r){if(void 0===t&&(t=e),void 0===r&&(r={}),(0,w.isBot)(window.navigator.userAgent))return;let n=(0,h.parseRelativeUrl)(e),o=n.pathname,{pathname:i,query:l}=n,u=i,s=await this.pageLoader.getPageList(),c=t,f=void 0!==r.locale?r.locale||void 0:this.locale,d=await D({asPath:t,locale:f,router:this});n.pathname=F(n.pathname,s),(0,p.isDynamicRoute)(n.pathname)&&(i=n.pathname,n.pathname=i,Object.assign(l,(0,_.getRouteMatcher)((0,m.getRouteRegex)(n.pathname))((0,b.parsePath)(t).pathname)||{}),d||(e=(0,g.formatWithValidation)(n)));let E=await B({fetchData:()=>W({dataHref:this.pageLoader.getDataHref({href:(0,g.formatWithValidation)({pathname:u,query:l}),skipInterpolation:!0,asPath:c,locale:f}),hasMiddleware:!0,isServerRender:!1,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0}),asPath:t,locale:f,router:this});if((null==E?void 0:E.effect.type)==="rewrite"&&(n.pathname=E.effect.resolvedHref,i=E.effect.resolvedHref,l={...l,...E.effect.parsedAs.query},c=E.effect.parsedAs.pathname,e=(0,g.formatWithValidation)(n)),(null==E?void 0:E.effect.type)==="redirect-external")return;let y=(0,a.removeTrailingSlash)(i);await this._bfl(t,c,r.locale,!0)&&(this.components[o]={__appRouter:!0}),await Promise.all([this.pageLoader._isSsg(y).then(t=>!!t&&W({dataHref:(null==E?void 0:E.json)?null==E?void 0:E.dataHref:this.pageLoader.getDataHref({href:e,asPath:c,locale:f}),isServerRender:!1,parseJSON:!0,inflightCache:this.sdc,persistCache:!this.isPreview,isPrefetch:!0,unstable_skipClientCache:r.unstable_skipClientCache||r.priority&&!0}).then(()=>!1).catch(()=>!1)),this.pageLoader[r.priority?"loadPage":"prefetch"](y)])}async fetchComponent(e){let t=V({route:e,router:this});try{let r=await this.pageLoader.loadPage(e);return t(),r}catch(e){throw t(),e}}_getData(e){let t=!1,r=()=>{t=!0};return this.clc=r,e().then(e=>{if(r===this.clc&&(this.clc=null),t){let e=Object.defineProperty(Error("Loading initial props cancelled"),"__NEXT_ERROR_CODE",{value:"E405",enumerable:!1,configurable:!0});throw e.cancelled=!0,e}return e})}getInitialProps(e,t){let{Component:r}=this.components["/_app"],n=this._wrapApp(r);return t.AppTree=n,(0,d.loadGetInitialProps)(r,{AppTree:n,Component:e,router:this,ctx:t})}get route(){return this.state.route}get pathname(){return this.state.pathname}get query(){return this.state.query}get asPath(){return this.state.asPath}get locale(){return this.state.locale}get isFallback(){return this.state.isFallback}get isPreview(){return this.state.isPreview}constructor(e,t,r,{initialProps:n,pageLoader:o,App:i,wrapApp:l,Component:u,err:s,subscription:c,isFallback:f,locale:_,locales:m,defaultLocale:b,domainLocales:E,isPreview:y}){this.sdc={},this.sbc={},this.isFirstPopStateEvent=!0,this._key=G(),this.onPopState=e=>{let t,{isFirstPopStateEvent:r}=this;this.isFirstPopStateEvent=!1;let n=e.state;if(!n){let{pathname:e,query:t}=this;this.changeState("replaceState",(0,g.formatWithValidation)({pathname:(0,v.addBasePath)(e),query:t}),(0,d.getURL)());return}if(n.__NA)return void window.location.reload();if(!n.__N||r&&this.locale===n.options.locale&&n.as===this.asPath)return;let{url:o,as:a,options:i,key:l}=n;this._key=l;let{pathname:u}=(0,h.parseRelativeUrl)(o);(!this.isSsr||a!==(0,v.addBasePath)(this.asPath)||u!==(0,v.addBasePath)(this.pathname))&&(!this._bps||this._bps(n))&&this.change("replaceState",o,a,Object.assign({},i,{shallow:i.shallow&&this._shallow,locale:i.locale||this.defaultLocale,_h:0}),t)};let P=(0,a.removeTrailingSlash)(e);this.components={},"/_error"!==e&&(this.components[P]={Component:u,initial:!0,props:n,err:s,__N_SSG:n&&n.__N_SSG,__N_SSP:n&&n.__N_SSP}),this.components["/_app"]={Component:i,styleSheets:[]},this.events=z.events,this.pageLoader=o;let R=(0,p.isDynamicRoute)(e)&&self.__NEXT_DATA__.autoExport;if(this.basePath="/docs-site",this.sub=c,this.clc=null,this._wrapApp=l,this.isSsr=!0,this.isLocaleDomain=!1,this.isReady=!!(self.__NEXT_DATA__.gssp||self.__NEXT_DATA__.gip||self.__NEXT_DATA__.isExperimentalCompile||self.__NEXT_DATA__.appGip&&!self.__NEXT_DATA__.gsp||!R&&!self.location.search),this.state={route:P,pathname:e,query:t,asPath:R?e:r,isPreview:!!y,locale:void 0,isFallback:f},this._initialMatchesMiddlewarePromise=Promise.resolve(!1),!r.startsWith("//")){let n={locale:_},o=(0,d.getURL)();this._initialMatchesMiddlewarePromise=D({router:this,locale:_,asPath:o}).then(a=>(n._shouldResolveHref=r!==e,this.changeState("replaceState",a?o:(0,g.formatWithValidation)({pathname:(0,v.addBasePath)(e),query:t}),o,n),a))}window.addEventListener("popstate",this.onPopState)}}z.events=(0,f.default)()},8365:(e,t,r)=>{"use strict";function n(e){if("function"!=typeof WeakMap)return null;var t=new WeakMap,r=new WeakMap;return(n=function(e){return e?r:t})(e)}function o(e,t){if(!t&&e&&e.__esModule)return e;if(null===e||"object"!=typeof e&&"function"!=typeof e)return{default:e};var r=n(t);if(r&&r.has(e))return r.get(e);var o={__proto__:null},a=Object.defineProperty&&Object.getOwnPropertyDescriptor;for(var i in e)if("default"!==i&&Object.prototype.hasOwnProperty.call(e,i)){var l=a?Object.getOwnPropertyDescriptor(e,i):null;l&&(l.get||l.set)?Object.defineProperty(o,i,l):o[i]=e[i]}return o.default=e,r&&r.set(e,o),o}r.r(t),r.d(t,{_:()=>o})},8480:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{formatUrl:function(){return a},formatWithValidation:function(){return l},urlObjectKeys:function(){return i}});let n=r(8365)._(r(8040)),o=/https?|ftp|gopher|file/;function a(e){let{auth:t,hostname:r}=e,a=e.protocol||"",i=e.pathname||"",l=e.hash||"",u=e.query||"",s=!1;t=t?encodeURIComponent(t).replace(/%3A/i,":")+"@":"",e.host?s=t+e.host:r&&(s=t+(~r.indexOf(":")?"["+r+"]":r),e.port&&(s+=":"+e.port)),u&&"object"==typeof u&&(u=String(n.urlQueryToSearchParams(u)));let c=e.search||u&&"?"+u||"";return a&&!a.endsWith(":")&&(a+=":"),e.slashes||(!a||o.test(a))&&!1!==s?(s="//"+(s||""),i&&"/"!==i[0]&&(i="/"+i)):s||(s=""),l&&"#"!==l[0]&&(l="#"+l),c&&"?"!==c[0]&&(c="?"+c),""+a+s+(i=i.replace(/[?#]/g,encodeURIComponent))+(c=c.replace("#","%23"))+l}let i=["auth","hash","host","hostname","href","path","pathname","port","protocol","query","search","slashes"];function l(e){return a(e)}},8677:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"ImageConfigContext",{enumerable:!0,get:function(){return a}});let n=r(4252)._(r(4232)),o=r(7539),a=n.default.createContext(o.imageConfigDefault)},8714:(e,t)=>{"use strict";function r(e){return"("===e[0]&&e.endsWith(")")}function n(e){return e.startsWith("@")&&"@children"!==e}function o(e,t){if(e.includes(a)){let e=JSON.stringify(t);return"{}"!==e?a+"?"+e:a}return e}Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{DEFAULT_SEGMENT_KEY:function(){return i},PAGE_SEGMENT_KEY:function(){return a},addSearchParamsIfPageSegment:function(){return o},isGroupSegment:function(){return r},isParallelRouteSegment:function(){return n}});let a="__PAGE__",i="__DEFAULT__"},8757:(e,t)=>{"use strict";function r(){return""}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"getDeploymentIdQueryOrEmptyString",{enumerable:!0,get:function(){return r}})},8831:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HeadManagerContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext({})},9163:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"isDynamicRoute",{enumerable:!0,get:function(){return i}});let n=r(7188),o=/\/[^/]*\[[^/]+\][^/]*(?=\/|$)/,a=/\/\[[^/]+\](?=\/|$)/;function i(e,t){return(void 0===t&&(t=!0),(0,n.isInterceptionRouteAppPath)(e)&&(e=(0,n.extractInterceptionRouteInformation)(e).interceptedRoute),t)?a.test(e):o.test(e)}},9308:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{ACTION_SUFFIX:function(){return f},APP_DIR_ALIAS:function(){return I},CACHE_ONE_YEAR:function(){return R},DOT_NEXT_ALIAS:function(){return C},ESLINT_DEFAULT_DIRS:function(){return $},GSP_NO_RETURNED_VALUE:function(){return G},GSSP_COMPONENT_MEMBER_ERROR:function(){return z},GSSP_NO_RETURNED_VALUE:function(){return q},INFINITE_CACHE:function(){return O},INSTRUMENTATION_HOOK_FILENAME:function(){return T},MATCHED_PATH_HEADER:function(){return o},MIDDLEWARE_FILENAME:function(){return S},MIDDLEWARE_LOCATION_REGEXP:function(){return j},NEXT_BODY_SUFFIX:function(){return h},NEXT_CACHE_IMPLICIT_TAG_ID:function(){return v},NEXT_CACHE_REVALIDATED_TAGS_HEADER:function(){return m},NEXT_CACHE_REVALIDATE_TAG_TOKEN_HEADER:function(){return g},NEXT_CACHE_SOFT_TAG_MAX_LENGTH:function(){return P},NEXT_CACHE_TAGS_HEADER:function(){return _},NEXT_CACHE_TAG_MAX_ITEMS:function(){return E},NEXT_CACHE_TAG_MAX_LENGTH:function(){return y},NEXT_DATA_SUFFIX:function(){return d},NEXT_INTERCEPTION_MARKER_PREFIX:function(){return n},NEXT_META_SUFFIX:function(){return p},NEXT_QUERY_PARAM_PREFIX:function(){return r},NEXT_RESUME_HEADER:function(){return b},NON_STANDARD_NODE_ENV:function(){return Y},PAGES_DIR_ALIAS:function(){return A},PRERENDER_REVALIDATE_HEADER:function(){return a},PRERENDER_REVALIDATE_ONLY_GENERATED_HEADER:function(){return i},PUBLIC_DIR_MIDDLEWARE_CONFLICT:function(){return k},ROOT_DIR_ALIAS:function(){return w},RSC_ACTION_CLIENT_WRAPPER_ALIAS:function(){return U},RSC_ACTION_ENCRYPTION_ALIAS:function(){return D},RSC_ACTION_PROXY_ALIAS:function(){return M},RSC_ACTION_VALIDATE_ALIAS:function(){return x},RSC_CACHE_WRAPPER_ALIAS:function(){return L},RSC_MOD_REF_PROXY_ALIAS:function(){return N},RSC_PREFETCH_SUFFIX:function(){return l},RSC_SEGMENTS_DIR_SUFFIX:function(){return u},RSC_SEGMENT_SUFFIX:function(){return s},RSC_SUFFIX:function(){return c},SERVER_PROPS_EXPORT_ERROR:function(){return W},SERVER_PROPS_GET_INIT_PROPS_CONFLICT:function(){return B},SERVER_PROPS_SSG_CONFLICT:function(){return H},SERVER_RUNTIME:function(){return Q},SSG_FALLBACK_EXPORT_ERROR:function(){return K},SSG_GET_INITIAL_PROPS_CONFLICT:function(){return F},STATIC_STATUS_PAGE_GET_INITIAL_PROPS_ERROR:function(){return X},UNSTABLE_REVALIDATE_RENAME_ERROR:function(){return V},WEBPACK_LAYERS:function(){return Z},WEBPACK_RESOURCE_QUERIES:function(){return ee}});let r="nxtP",n="nxtI",o="x-matched-path",a="x-prerender-revalidate",i="x-prerender-revalidate-if-generated",l=".prefetch.rsc",u=".segments",s=".segment.rsc",c=".rsc",f=".action",d=".json",p=".meta",h=".body",_="x-next-cache-tags",m="x-next-revalidated-tags",g="x-next-revalidate-tag-token",b="next-resume",E=128,y=256,P=1024,v="_N_T_",R=31536e3,O=0xfffffffe,S="middleware",j=`(?:src/)?${S}`,T="instrumentation",A="private-next-pages",C="private-dot-next",w="private-next-root-dir",I="private-next-app-dir",N="private-next-rsc-mod-ref-proxy",x="private-next-rsc-action-validate",M="private-next-rsc-server-reference",L="private-next-rsc-cache-wrapper",D="private-next-rsc-action-encryption",U="private-next-rsc-action-client-wrapper",k="You can not have a '_next' folder inside of your public folder. This conflicts with the internal '/_next' route. https://nextjs.org/docs/messages/public-next-folder-conflict",F="You can not use getInitialProps with getStaticProps. To use SSG, please remove your getInitialProps",B="You can not use getInitialProps with getServerSideProps. Please remove getInitialProps.",H="You can not use getStaticProps or getStaticPaths with getServerSideProps. To use SSG, please remove getServerSideProps",X="can not have getInitialProps/getServerSideProps, https://nextjs.org/docs/messages/404-get-initial-props",W="pages with `getServerSideProps` can not be exported. See more info here: https://nextjs.org/docs/messages/gssp-export",G="Your `getStaticProps` function did not return an object. Did you forget to add a `return`?",q="Your `getServerSideProps` function did not return an object. Did you forget to add a `return`?",V="The `unstable_revalidate` property is available for general use.\nPlease use `revalidate` instead.",z="can not be attached to a page's component and must be exported from the page. See more info here: https://nextjs.org/docs/messages/gssp-component-member",Y='You are using a non-standard "NODE_ENV" value in your environment. This creates inconsistencies in the project and is strongly advised against. Read more: https://nextjs.org/docs/messages/non-standard-node-env',K="Pages with `fallback` enabled in `getStaticPaths` can not be exported. See more info here: https://nextjs.org/docs/messages/ssg-fallback-true-export",$=["app","pages","components","lib","src"],Q={edge:"edge",experimentalEdge:"experimental-edge",nodejs:"nodejs"},J={shared:"shared",reactServerComponents:"rsc",serverSideRendering:"ssr",actionBrowser:"action-browser",apiNode:"api-node",apiEdge:"api-edge",middleware:"middleware",instrument:"instrument",edgeAsset:"edge-asset",appPagesBrowser:"app-pages-browser",pagesDirBrowser:"pages-dir-browser",pagesDirEdge:"pages-dir-edge",pagesDirNode:"pages-dir-node"},Z={...J,GROUP:{builtinReact:[J.reactServerComponents,J.actionBrowser],serverOnly:[J.reactServerComponents,J.actionBrowser,J.instrument,J.middleware],neutralTarget:[J.apiNode,J.apiEdge],clientOnly:[J.serverSideRendering,J.appPagesBrowser],bundled:[J.reactServerComponents,J.actionBrowser,J.serverSideRendering,J.appPagesBrowser,J.shared,J.instrument,J.middleware],appPages:[J.reactServerComponents,J.serverSideRendering,J.appPagesBrowser,J.actionBrowser]}},ee={edgeSSREntry:"__next_edge_ssr_entry__",metadata:"__next_metadata__",metadataRoute:"__next_metadata_route__",metadataImageMeta:"__next_metadata_image_meta__"}},9341:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return c}});let n=r(4252),o=r(7876),a=n._(r(4232)),i=n._(r(5679)),l={400:"Bad Request",404:"This page could not be found",405:"Method Not Allowed",500:"Internal Server Error"};function u(e){let{req:t,res:r,err:n}=e;return{statusCode:r&&r.statusCode?r.statusCode:n?n.statusCode:404,hostname:window.location.hostname}}let s={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{lineHeight:"48px"},h1:{display:"inline-block",margin:"0 20px 0 0",paddingRight:23,fontSize:24,fontWeight:500,verticalAlign:"top"},h2:{fontSize:14,fontWeight:400,lineHeight:"28px"},wrap:{display:"inline-block"}};class c extends a.default.Component{render(){let{statusCode:e,withDarkMode:t=!0}=this.props,r=this.props.title||l[e]||"An unexpected error has occurred";return(0,o.jsxs)("div",{style:s.error,children:[(0,o.jsx)(i.default,{children:(0,o.jsx)("title",{children:e?e+": "+r:"Application error: a client-side exception has occurred"})}),(0,o.jsxs)("div",{style:s.desc,children:[(0,o.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}"+(t?"@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}":"")}}),e?(0,o.jsx)("h1",{className:"next-error-h1",style:s.h1,children:e}):null,(0,o.jsx)("div",{style:s.wrap,children:(0,o.jsxs)("h2",{style:s.h2,children:[this.props.title||e?r:(0,o.jsxs)(o.Fragment,{children:["Application error: a client-side exception has occurred"," ",!!this.props.hostname&&(0,o.jsxs)(o.Fragment,{children:["while loading ",this.props.hostname]})," ","(see the browser console for more information)"]}),"."]})})]})]})}}c.displayName="ErrorPage",c.getInitialProps=u,c.origGetInitialProps=u,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9393:()=>{},9525:(e,t,r)=>{"use strict";let n,o,a,i,l,u,s,c,f,d,p,h;Object.defineProperty(t,"__esModule",{value:!0});let _=r(8365);Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{emitter:function(){return X},hydrate:function(){return eu},initialize:function(){return V},router:function(){return n},version:function(){return H}});let m=r(4252),g=r(7876);r(1291);let b=m._(r(4232)),E=m._(r(8944)),y=r(8831),P=m._(r(9871)),v=r(9948),R=r(3132),O=r(9163),S=r(8040),j=r(2917),T=r(2746),A=r(3090),C=m._(r(4547)),w=m._(r(2792)),I=r(1318),N=r(4294),x=r(6240),M=r(8677),L=r(1025),D=r(6023),U=r(2850),k=r(9609),F=r(5931),B=r(7207);r(4609),r(6999);let H="15.3.1",X=(0,P.default)(),W=e=>[].slice.call(e),G=!1;class q extends b.default.Component{componentDidCatch(e,t){this.props.fn(e,t)}componentDidMount(){this.scrollToHash(),n.isSsr&&(o.isFallback||o.nextExport&&((0,O.isDynamicRoute)(n.pathname)||location.search||G)||o.props&&o.props.__N_SSG&&(location.search||G))&&n.replace(n.pathname+"?"+String((0,S.assign)((0,S.urlQueryToSearchParams)(n.query),new URLSearchParams(location.search))),a,{_h:1,shallow:!o.isFallback&&!G}).catch(e=>{if(!e.cancelled)throw e})}componentDidUpdate(){this.scrollToHash()}scrollToHash(){let{hash:e}=location;if(!(e=e&&e.substring(1)))return;let t=document.getElementById(e);t&&setTimeout(()=>t.scrollIntoView(),0)}render(){return this.props.children}}async function V(e){void 0===e&&(e={}),o=JSON.parse(document.getElementById("__NEXT_DATA__").textContent),window.__NEXT_DATA__=o,h=o.defaultLocale;let t=o.assetPrefix||"";if(self.__next_set_public_path__(""+t+"/_next/"),(0,j.setConfig)({serverRuntimeConfig:{},publicRuntimeConfig:o.runtimeConfig||{}}),a=(0,T.getURL)(),(0,D.hasBasePath)(a)&&(a=(0,L.removeBasePath)(a)),o.scriptLoader){let{initScriptLoader:e}=r(3996);e(o.scriptLoader)}i=new w.default(o.buildId,t);let s=e=>{let[t,r]=e;return i.routeLoader.onEntrypoint(t,r)};return window.__NEXT_P&&window.__NEXT_P.map(e=>setTimeout(()=>s(e),0)),window.__NEXT_P=[],window.__NEXT_P.push=s,(u=(0,C.default)()).getIsSsr=()=>n.isSsr,l=document.getElementById("__next"),{assetPrefix:t}}function z(e,t){return(0,g.jsx)(e,{...t})}function Y(e){var t;let{children:r}=e,o=b.default.useMemo(()=>(0,k.adaptForAppRouterInstance)(n),[]);return(0,g.jsx)(q,{fn:e=>$({App:f,err:e}).catch(e=>console.error("Error rendering page: ",e)),children:(0,g.jsx)(U.AppRouterContext.Provider,{value:o,children:(0,g.jsx)(F.SearchParamsContext.Provider,{value:(0,k.adaptForSearchParams)(n),children:(0,g.jsx)(k.PathnameContextProviderAdapter,{router:n,isAutoExport:null!=(t=self.__NEXT_DATA__.autoExport)&&t,children:(0,g.jsx)(F.PathParamsContext.Provider,{value:(0,k.adaptForPathParams)(n),children:(0,g.jsx)(v.RouterContext.Provider,{value:(0,N.makePublicRouterInstance)(n),children:(0,g.jsx)(y.HeadManagerContext.Provider,{value:u,children:(0,g.jsx)(M.ImageConfigContext.Provider,{value:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[16,32,48,64,96,128,256,384],path:"/docs-site/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!1},children:r})})})})})})})})}let K=e=>t=>{let r={...t,Component:p,err:o.err,router:n};return(0,g.jsx)(Y,{children:z(e,r)})};function $(e){let{App:t,err:l}=e;return console.error(l),console.error("A client-side exception has occurred, see here for more info: https://nextjs.org/docs/messages/client-side-exception-occurred"),i.loadPage("/_error").then(n=>{let{page:o,styleSheets:a}=n;return(null==s?void 0:s.Component)===o?Promise.resolve().then(()=>_._(r(9341))).then(n=>Promise.resolve().then(()=>_._(r(472))).then(r=>(e.App=t=r.default,n))).then(e=>({ErrorComponent:e.default,styleSheets:[]})):{ErrorComponent:o,styleSheets:a}}).then(r=>{var i;let{ErrorComponent:u,styleSheets:s}=r,c=K(t),f={Component:u,AppTree:c,router:n,ctx:{err:l,pathname:o.page,query:o.query,asPath:a,AppTree:c}};return Promise.resolve((null==(i=e.props)?void 0:i.err)?e.props:(0,T.loadGetInitialProps)(t,f)).then(t=>ei({...e,err:l,Component:u,styleSheets:s,props:t}))})}function Q(e){let{callback:t}=e;return b.default.useLayoutEffect(()=>t(),[t]),null}let J={navigationStart:"navigationStart",beforeRender:"beforeRender",afterRender:"afterRender",afterHydrate:"afterHydrate",routeChange:"routeChange"},Z={hydration:"Next.js-hydration",beforeHydration:"Next.js-before-hydration",routeChangeToRender:"Next.js-route-change-to-render",render:"Next.js-render"},ee=null,et=!0;function er(){[J.beforeRender,J.afterHydrate,J.afterRender,J.routeChange].forEach(e=>performance.clearMarks(e))}function en(){T.ST&&(performance.mark(J.afterHydrate),performance.getEntriesByName(J.beforeRender,"mark").length&&(performance.measure(Z.beforeHydration,J.navigationStart,J.beforeRender),performance.measure(Z.hydration,J.beforeRender,J.afterHydrate)),d&&performance.getEntriesByName(Z.hydration).forEach(d),er())}function eo(){if(!T.ST)return;performance.mark(J.afterRender);let e=performance.getEntriesByName(J.routeChange,"mark");e.length&&(performance.getEntriesByName(J.beforeRender,"mark").length&&(performance.measure(Z.routeChangeToRender,e[0].name,J.beforeRender),performance.measure(Z.render,J.beforeRender,J.afterRender),d&&(performance.getEntriesByName(Z.render).forEach(d),performance.getEntriesByName(Z.routeChangeToRender).forEach(d))),er(),[Z.routeChangeToRender,Z.render].forEach(e=>performance.clearMeasures(e)))}function ea(e){let{callbacks:t,children:r}=e;return b.default.useLayoutEffect(()=>t.forEach(e=>e()),[t]),r}function ei(e){let t,r,{App:o,Component:a,props:i,err:u}=e,f="initial"in e?void 0:e.styleSheets;a=a||s.Component;let d={...i=i||s.props,Component:a,err:u,router:n};s=d;let p=!1,h=new Promise((e,t)=>{c&&c(),r=()=>{c=null,e()},c=()=>{p=!0,c=null;let e=Object.defineProperty(Error("Cancel rendering route"),"__NEXT_ERROR_CODE",{value:"E503",enumerable:!1,configurable:!0});e.cancelled=!0,t(e)}});function _(){r()}!function(){if(!f)return;let e=new Set(W(document.querySelectorAll("style[data-n-href]")).map(e=>e.getAttribute("data-n-href"))),t=document.querySelector("noscript[data-n-css]"),r=null==t?void 0:t.getAttribute("data-n-css");f.forEach(t=>{let{href:n,text:o}=t;if(!e.has(n)){let e=document.createElement("style");e.setAttribute("data-n-href",n),e.setAttribute("media","x"),r&&e.setAttribute("nonce",r),document.head.appendChild(e),e.appendChild(document.createTextNode(o))}})}();let m=(0,g.jsxs)(g.Fragment,{children:[(0,g.jsx)(Q,{callback:function(){if(f&&!p){let e=new Set(f.map(e=>e.href)),t=W(document.querySelectorAll("style[data-n-href]")),r=t.map(e=>e.getAttribute("data-n-href"));for(let n=0;n{let{href:t}=e,r=document.querySelector('style[data-n-href="'+t+'"]');r&&(n.parentNode.insertBefore(r,n.nextSibling),n=r)}),W(document.querySelectorAll("link[data-n-p]")).forEach(e=>{e.parentNode.removeChild(e)})}if(e.scroll){let{x:t,y:r}=e.scroll;(0,R.handleSmoothScroll)(()=>{window.scrollTo(t,r)})}}}),(0,g.jsxs)(Y,{children:[z(o,d),(0,g.jsx)(A.Portal,{type:"next-route-announcer",children:(0,g.jsx)(I.RouteAnnouncer,{})})]})]});var y=l;T.ST&&performance.mark(J.beforeRender);let P=(t=et?en:eo,(0,g.jsx)(ea,{callbacks:[t,_],children:(0,g.jsx)(b.default.StrictMode,{children:m})}));return ee?(0,b.default.startTransition)(()=>{ee.render(P)}):(ee=E.default.hydrateRoot(y,P,{onRecoverableError:B.onRecoverableError}),et=!1),h}async function el(e){if(e.err&&(void 0===e.Component||!e.isHydratePass))return void await $(e);try{await ei(e)}catch(r){let t=(0,x.getProperError)(r);if(t.cancelled)throw t;await $({...e,err:t})}}async function eu(e){let t=o.err;try{let e=await i.routeLoader.whenEntrypoint("/_app");if("error"in e)throw e.error;let{component:t,exports:r}=e;f=t,r&&r.reportWebVitals&&(d=e=>{let t,{id:n,name:o,startTime:a,value:i,duration:l,entryType:u,entries:s,attribution:c}=e,f=Date.now()+"-"+(Math.floor(Math.random()*(9e12-1))+1e12);s&&s.length&&(t=s[0].startTime);let d={id:n||f,name:o,startTime:a||t,value:null==i?l:i,label:"mark"===u||"measure"===u?"custom":"web-vital"};c&&(d.attribution=c),r.reportWebVitals(d)});let n=await i.routeLoader.whenEntrypoint(o.page);if("error"in n)throw n.error;p=n.component}catch(e){t=(0,x.getProperError)(e)}window.__NEXT_PRELOADREADY&&await window.__NEXT_PRELOADREADY(o.dynamicIds),n=(0,N.createRouter)(o.page,o.query,a,{initialProps:o.props,pageLoader:i,App:f,Component:p,wrapApp:K,err:t,isFallback:!!o.isFallback,subscription:(e,t,r)=>el(Object.assign({},e,{App:t,scroll:r})),locale:o.locale,locales:o.locales,defaultLocale:h,domainLocales:o.domainLocales,isPreview:o.isPreview}),G=await n._initialMatchesMiddlewarePromise;let r={App:f,initial:!0,Component:p,props:o.props,err:t,isHydratePass:!0};(null==e?void 0:e.beforeRender)&&await e.beforeRender(),el(r)}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9609:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),!function(e,t){for(var r in t)Object.defineProperty(e,r,{enumerable:!0,get:t[r]})}(t,{PathnameContextProviderAdapter:function(){return p},adaptForAppRouterInstance:function(){return c},adaptForPathParams:function(){return d},adaptForSearchParams:function(){return f}});let n=r(8365),o=r(7876),a=n._(r(4232)),i=r(5931),l=r(3069),u=r(8213),s=r(5214);function c(e){return{back(){e.back()},forward(){e.forward()},refresh(){e.reload()},hmrRefresh(){},push(t,r){let{scroll:n}=void 0===r?{}:r;e.push(t,void 0,{scroll:n})},replace(t,r){let{scroll:n}=void 0===r?{}:r;e.replace(t,void 0,{scroll:n})},prefetch(t){e.prefetch(t)}}}function f(e){return e.isReady&&e.query?(0,u.asPathToSearchParams)(e.asPath):new URLSearchParams}function d(e){if(!e.isReady||!e.query)return null;let t={};for(let r of Object.keys((0,s.getRouteRegex)(e.pathname).groups))t[r]=e.query[r];return t}function p(e){let{children:t,router:r,...n}=e,u=(0,a.useRef)(n.isAutoExport),s=(0,a.useMemo)(()=>{let e,t=u.current;if(t&&(u.current=!1),(0,l.isDynamicRoute)(r.pathname)&&(r.isFallback||t&&!r.isReady))return null;try{e=new URL(r.asPath,"http://f")}catch(e){return"/"}return e.pathname},[r.asPath,r.isFallback,r.isReady,r.pathname]);return(0,o.jsx)(i.PathnameContext.Provider,{value:s,children:t})}},9611:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"setAttributesFromProps",{enumerable:!0,get:function(){return a}});let r={acceptCharset:"accept-charset",className:"class",htmlFor:"for",httpEquiv:"http-equiv",noModule:"noModule"},n=["onLoad","onReady","dangerouslySetInnerHTML","children","onError","strategy","stylesheets"];function o(e){return["async","defer","noModule"].includes(e)}function a(e,t){for(let[a,i]of Object.entries(t)){if(!t.hasOwnProperty(a)||n.includes(a)||void 0===i)continue;let l=r[a]||a.toLowerCase();"SCRIPT"===e.tagName&&o(l)?e[l]=!!i:e.setAttribute(l,String(i)),(!1===i||"SCRIPT"===e.tagName&&o(l)&&(!i||"false"===i))&&(e.setAttribute(l,""),e.removeAttribute(l))}}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},9871:(e,t)=>{"use strict";function r(){let e=Object.create(null);return{on(t,r){(e[t]||(e[t]=[])).push(r)},off(t,r){e[t]&&e[t].splice(e[t].indexOf(r)>>>0,1)},emit(t){for(var r=arguments.length,n=Array(r>1?r-1:0),o=1;o{e(...n)})}}}Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return r}})},9948:(e,t,r)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"RouterContext",{enumerable:!0,get:function(){return n}});let n=r(4252)._(r(4232)).default.createContext(null)}},e=>{var t=t=>e(e.s=t);e.O(0,[593],()=>t(5842)),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/main-app-d5ad76d309db59c9.js b/docs/_next/static/chunks/main-app-d5ad76d309db59c9.js deleted file mode 100644 index 2becdd35..00000000 --- a/docs/_next/static/chunks/main-app-d5ad76d309db59c9.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{5715:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,894,23)),Promise.resolve().then(n.t.bind(n,4970,23)),Promise.resolve().then(n.t.bind(n,6614,23)),Promise.resolve().then(n.t.bind(n,6975,23)),Promise.resolve().then(n.t.bind(n,7555,23)),Promise.resolve().then(n.t.bind(n,4911,23)),Promise.resolve().then(n.t.bind(n,9665,23)),Promise.resolve().then(n.t.bind(n,1295,23))},9393:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[441,684],()=>(s(5415),s(5715))),_N_E=e.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/_app-da15c11dea942c36.js b/docs/_next/static/chunks/pages/_app-da15c11dea942c36.js deleted file mode 100644 index 5c39d7be..00000000 --- a/docs/_next/static/chunks/pages/_app-da15c11dea942c36.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636],{326:(_,n,p)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return p(472)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[593,792],()=>(n(326),n(4294))),_N_E=_.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js b/docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js deleted file mode 100644 index 554b197b..00000000 --- a/docs/_next/static/chunks/pages/_error-cc3f077a18ea1793.js +++ /dev/null @@ -1 +0,0 @@ -(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[731],{2164:(_,n,e)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_error",function(){return e(9341)}])}},_=>{var n=n=>_(_.s=n);_.O(0,[636,593,792],()=>n(2164)),_N_E=_.O()}]); \ No newline at end of file diff --git a/docs/_next/static/chunks/polyfills-42372ed130431b0a.js b/docs/_next/static/chunks/polyfills-42372ed130431b0a.js deleted file mode 100644 index ab422b94..00000000 --- a/docs/_next/static/chunks/polyfills-42372ed130431b0a.js +++ /dev/null @@ -1 +0,0 @@ -!function(){var t="undefined"!=typeof globalThis?globalThis:"undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:{};function e(t){var e={exports:{}};return t(e,e.exports),e.exports}var r,n,o=function(t){return t&&t.Math===Math&&t},i=o("object"==typeof globalThis&&globalThis)||o("object"==typeof window&&window)||o("object"==typeof self&&self)||o("object"==typeof t&&t)||o("object"==typeof t&&t)||function(){return this}()||Function("return this")(),a=function(t){try{return!!t()}catch(t){return!0}},u=!a(function(){return 7!==Object.defineProperty({},1,{get:function(){return 7}})[1]}),s=!a(function(){var t=function(){}.bind();return"function"!=typeof t||t.hasOwnProperty("prototype")}),c=Function.prototype.call,f=s?c.bind(c):function(){return c.apply(c,arguments)},l={}.propertyIsEnumerable,h=Object.getOwnPropertyDescriptor,p=h&&!l.call({1:2},1)?function(t){var e=h(this,t);return!!e&&e.enumerable}:l,v={f:p},d=function(t,e){return{enumerable:!(1&t),configurable:!(2&t),writable:!(4&t),value:e}},g=Function.prototype,y=g.call,m=s&&g.bind.bind(y,y),b=s?m:function(t){return function(){return y.apply(t,arguments)}},w=b({}.toString),S=b("".slice),E=function(t){return S(w(t),8,-1)},O=Object,x=b("".split),R=a(function(){return!O("z").propertyIsEnumerable(0)})?function(t){return"String"===E(t)?x(t,""):O(t)}:O,P=function(t){return null==t},A=TypeError,j=function(t){if(P(t))throw new A("Can't call method on "+t);return t},k=function(t){return R(j(t))},I="object"==typeof document&&document.all,T=void 0===I&&void 0!==I?function(t){return"function"==typeof t||t===I}:function(t){return"function"==typeof t},M=function(t){return"object"==typeof t?null!==t:T(t)},L=function(t,e){return arguments.length<2?T(r=i[t])?r:void 0:i[t]&&i[t][e];var r},U=b({}.isPrototypeOf),N=i.navigator,C=N&&N.userAgent,_=C?String(C):"",F=i.process,B=i.Deno,D=F&&F.versions||B&&B.version,z=D&&D.v8;z&&(n=(r=z.split("."))[0]>0&&r[0]<4?1:+(r[0]+r[1])),!n&&_&&(!(r=_.match(/Edge\/(\d+)/))||r[1]>=74)&&(r=_.match(/Chrome\/(\d+)/))&&(n=+r[1]);var W=n,q=i.String,H=!!Object.getOwnPropertySymbols&&!a(function(){var t=Symbol("symbol detection");return!q(t)||!(Object(t)instanceof Symbol)||!Symbol.sham&&W&&W<41}),$=H&&!Symbol.sham&&"symbol"==typeof Symbol.iterator,K=Object,G=$?function(t){return"symbol"==typeof t}:function(t){var e=L("Symbol");return T(e)&&U(e.prototype,K(t))},V=String,Y=function(t){try{return V(t)}catch(t){return"Object"}},X=TypeError,J=function(t){if(T(t))return t;throw new X(Y(t)+" is not a function")},Q=function(t,e){var r=t[e];return P(r)?void 0:J(r)},Z=TypeError,tt=Object.defineProperty,et=function(t,e){try{tt(i,t,{value:e,configurable:!0,writable:!0})}catch(r){i[t]=e}return e},rt=e(function(t){var e="__core-js_shared__",r=t.exports=i[e]||et(e,{});(r.versions||(r.versions=[])).push({version:"3.38.1",mode:"global",copyright:"© 2014-2024 Denis Pushkarev (zloirock.ru)",license:"https://github.com/zloirock/core-js/blob/v3.38.1/LICENSE",source:"https://github.com/zloirock/core-js"})}),nt=function(t,e){return rt[t]||(rt[t]=e||{})},ot=Object,it=function(t){return ot(j(t))},at=b({}.hasOwnProperty),ut=Object.hasOwn||function(t,e){return at(it(t),e)},st=0,ct=Math.random(),ft=b(1..toString),lt=function(t){return"Symbol("+(void 0===t?"":t)+")_"+ft(++st+ct,36)},ht=i.Symbol,pt=nt("wks"),vt=$?ht.for||ht:ht&&ht.withoutSetter||lt,dt=function(t){return ut(pt,t)||(pt[t]=H&&ut(ht,t)?ht[t]:vt("Symbol."+t)),pt[t]},gt=TypeError,yt=dt("toPrimitive"),mt=function(t,e){if(!M(t)||G(t))return t;var r,n=Q(t,yt);if(n){if(void 0===e&&(e="default"),r=f(n,t,e),!M(r)||G(r))return r;throw new gt("Can't convert object to primitive value")}return void 0===e&&(e="number"),function(t,e){var r,n;if("string"===e&&T(r=t.toString)&&!M(n=f(r,t)))return n;if(T(r=t.valueOf)&&!M(n=f(r,t)))return n;if("string"!==e&&T(r=t.toString)&&!M(n=f(r,t)))return n;throw new Z("Can't convert object to primitive value")}(t,e)},bt=function(t){var e=mt(t,"string");return G(e)?e:e+""},wt=i.document,St=M(wt)&&M(wt.createElement),Et=function(t){return St?wt.createElement(t):{}},Ot=!u&&!a(function(){return 7!==Object.defineProperty(Et("div"),"a",{get:function(){return 7}}).a}),xt=Object.getOwnPropertyDescriptor,Rt={f:u?xt:function(t,e){if(t=k(t),e=bt(e),Ot)try{return xt(t,e)}catch(t){}if(ut(t,e))return d(!f(v.f,t,e),t[e])}},Pt=u&&a(function(){return 42!==Object.defineProperty(function(){},"prototype",{value:42,writable:!1}).prototype}),At=String,jt=TypeError,kt=function(t){if(M(t))return t;throw new jt(At(t)+" is not an object")},It=TypeError,Tt=Object.defineProperty,Mt=Object.getOwnPropertyDescriptor,Lt="enumerable",Ut="configurable",Nt="writable",Ct={f:u?Pt?function(t,e,r){if(kt(t),e=bt(e),kt(r),"function"==typeof t&&"prototype"===e&&"value"in r&&Nt in r&&!r[Nt]){var n=Mt(t,e);n&&n[Nt]&&(t[e]=r.value,r={configurable:Ut in r?r[Ut]:n[Ut],enumerable:Lt in r?r[Lt]:n[Lt],writable:!1})}return Tt(t,e,r)}:Tt:function(t,e,r){if(kt(t),e=bt(e),kt(r),Ot)try{return Tt(t,e,r)}catch(t){}if("get"in r||"set"in r)throw new It("Accessors not supported");return"value"in r&&(t[e]=r.value),t}},_t=u?function(t,e,r){return Ct.f(t,e,d(1,r))}:function(t,e,r){return t[e]=r,t},Ft=Function.prototype,Bt=u&&Object.getOwnPropertyDescriptor,Dt=ut(Ft,"name"),zt={EXISTS:Dt,PROPER:Dt&&"something"===function(){}.name,CONFIGURABLE:Dt&&(!u||u&&Bt(Ft,"name").configurable)},Wt=b(Function.toString);T(rt.inspectSource)||(rt.inspectSource=function(t){return Wt(t)});var qt,Ht,$t,Kt=rt.inspectSource,Gt=i.WeakMap,Vt=T(Gt)&&/native code/.test(String(Gt)),Yt=nt("keys"),Xt=function(t){return Yt[t]||(Yt[t]=lt(t))},Jt={},Qt="Object already initialized",Zt=i.TypeError;if(Vt||rt.state){var te=rt.state||(rt.state=new(0,i.WeakMap));te.get=te.get,te.has=te.has,te.set=te.set,qt=function(t,e){if(te.has(t))throw new Zt(Qt);return e.facade=t,te.set(t,e),e},Ht=function(t){return te.get(t)||{}},$t=function(t){return te.has(t)}}else{var ee=Xt("state");Jt[ee]=!0,qt=function(t,e){if(ut(t,ee))throw new Zt(Qt);return e.facade=t,_t(t,ee,e),e},Ht=function(t){return ut(t,ee)?t[ee]:{}},$t=function(t){return ut(t,ee)}}var re,ne={set:qt,get:Ht,has:$t,enforce:function(t){return $t(t)?Ht(t):qt(t,{})},getterFor:function(t){return function(e){var r;if(!M(e)||(r=Ht(e)).type!==t)throw new Zt("Incompatible receiver, "+t+" required");return r}}},oe=e(function(t){var e=zt.CONFIGURABLE,r=ne.enforce,n=ne.get,o=String,i=Object.defineProperty,s=b("".slice),c=b("".replace),f=b([].join),l=u&&!a(function(){return 8!==i(function(){},"length",{value:8}).length}),h=String(String).split("String"),p=t.exports=function(t,n,a){"Symbol("===s(o(n),0,7)&&(n="["+c(o(n),/^Symbol\(([^)]*)\).*$/,"$1")+"]"),a&&a.getter&&(n="get "+n),a&&a.setter&&(n="set "+n),(!ut(t,"name")||e&&t.name!==n)&&(u?i(t,"name",{value:n,configurable:!0}):t.name=n),l&&a&&ut(a,"arity")&&t.length!==a.arity&&i(t,"length",{value:a.arity});try{a&&ut(a,"constructor")&&a.constructor?u&&i(t,"prototype",{writable:!1}):t.prototype&&(t.prototype=void 0)}catch(t){}var p=r(t);return ut(p,"source")||(p.source=f(h,"string"==typeof n?n:"")),t};Function.prototype.toString=p(function(){return T(this)&&n(this).source||Kt(this)},"toString")}),ie=function(t,e,r,n){n||(n={});var o=n.enumerable,i=void 0!==n.name?n.name:e;if(T(r)&&oe(r,i,n),n.global)o?t[e]=r:et(e,r);else{try{n.unsafe?t[e]&&(o=!0):delete t[e]}catch(t){}o?t[e]=r:Ct.f(t,e,{value:r,enumerable:!1,configurable:!n.nonConfigurable,writable:!n.nonWritable})}return t},ae=Math.ceil,ue=Math.floor,se=Math.trunc||function(t){var e=+t;return(e>0?ue:ae)(e)},ce=function(t){var e=+t;return e!=e||0===e?0:se(e)},fe=Math.max,le=Math.min,he=function(t,e){var r=ce(t);return r<0?fe(r+e,0):le(r,e)},pe=Math.min,ve=function(t){var e=ce(t);return e>0?pe(e,9007199254740991):0},de=function(t){return ve(t.length)},ge=function(t){return function(e,r,n){var o=k(e),i=de(o);if(0===i)return!t&&-1;var a,u=he(n,i);if(t&&r!=r){for(;i>u;)if((a=o[u++])!=a)return!0}else for(;i>u;u++)if((t||u in o)&&o[u]===r)return t||u||0;return!t&&-1}},ye={includes:ge(!0),indexOf:ge(!1)},me=ye.indexOf,be=b([].push),we=function(t,e){var r,n=k(t),o=0,i=[];for(r in n)!ut(Jt,r)&&ut(n,r)&&be(i,r);for(;e.length>o;)ut(n,r=e[o++])&&(~me(i,r)||be(i,r));return i},Se=["constructor","hasOwnProperty","isPrototypeOf","propertyIsEnumerable","toLocaleString","toString","valueOf"],Ee=Se.concat("length","prototype"),Oe={f:Object.getOwnPropertyNames||function(t){return we(t,Ee)}},xe={f:Object.getOwnPropertySymbols},Re=b([].concat),Pe=L("Reflect","ownKeys")||function(t){var e=Oe.f(kt(t)),r=xe.f;return r?Re(e,r(t)):e},Ae=function(t,e,r){for(var n=Pe(e),o=Ct.f,i=Rt.f,a=0;aa;)Ct.f(t,r=o[a++],n[r]);return t},Be={f:Fe},De=L("document","documentElement"),ze="prototype",We="script",qe=Xt("IE_PROTO"),He=function(){},$e=function(t){return"<"+We+">"+t+""},Ke=function(t){t.write($e("")),t.close();var e=t.parentWindow.Object;return t=null,e},Ge=function(){try{re=new ActiveXObject("htmlfile")}catch(t){}var t,e,r;Ge="undefined"!=typeof document?document.domain&&re?Ke(re):(e=Et("iframe"),r="java"+We+":",e.style.display="none",De.appendChild(e),e.src=String(r),(t=e.contentWindow.document).open(),t.write($e("document.F=Object")),t.close(),t.F):Ke(re);for(var n=Se.length;n--;)delete Ge[ze][Se[n]];return Ge()};Jt[qe]=!0;var Ve=Object.create||function(t,e){var r;return null!==t?(He[ze]=kt(t),r=new He,He[ze]=null,r[qe]=t):r=Ge(),void 0===e?r:Be.f(r,e)},Ye=Ct.f,Xe=dt("unscopables"),Je=Array.prototype;void 0===Je[Xe]&&Ye(Je,Xe,{configurable:!0,value:Ve(null)});var Qe=function(t){Je[Xe][t]=!0};Ce({target:"Array",proto:!0},{at:function(t){var e=it(this),r=de(e),n=ce(t),o=n>=0?n:r+n;return o<0||o>=r?void 0:e[o]}}),Qe("at");var Ze=function(t,e){return b(i[t].prototype[e])},tr=(Ze("Array","at"),TypeError),er=function(t,e){if(!delete t[e])throw new tr("Cannot delete property "+Y(e)+" of "+Y(t))},rr=Math.min,nr=[].copyWithin||function(t,e){var r=it(this),n=de(r),o=he(t,n),i=he(e,n),a=arguments.length>2?arguments[2]:void 0,u=rr((void 0===a?n:he(a,n))-i,n-o),s=1;for(i0;)i in r?r[o]=r[i]:er(r,o),o+=s,i+=s;return r};Ce({target:"Array",proto:!0},{copyWithin:nr}),Qe("copyWithin"),Ze("Array","copyWithin"),Ce({target:"Array",proto:!0},{fill:function(t){for(var e=it(this),r=de(e),n=arguments.length,o=he(n>1?arguments[1]:void 0,r),i=n>2?arguments[2]:void 0,a=void 0===i?r:he(i,r);a>o;)e[o++]=t;return e}}),Qe("fill"),Ze("Array","fill");var or=function(t){if("Function"===E(t))return b(t)},ir=or(or.bind),ar=function(t,e){return J(t),void 0===e?t:s?ir(t,e):function(){return t.apply(e,arguments)}},ur=Array.isArray||function(t){return"Array"===E(t)},sr={};sr[dt("toStringTag")]="z";var cr="[object z]"===String(sr),fr=dt("toStringTag"),lr=Object,hr="Arguments"===E(function(){return arguments}()),pr=cr?E:function(t){var e,r,n;return void 0===t?"Undefined":null===t?"Null":"string"==typeof(r=function(t,e){try{return t[e]}catch(t){}}(e=lr(t),fr))?r:hr?E(e):"Object"===(n=E(e))&&T(e.callee)?"Arguments":n},vr=function(){},dr=L("Reflect","construct"),gr=/^\s*(?:class|function)\b/,yr=b(gr.exec),mr=!gr.test(vr),br=function(t){if(!T(t))return!1;try{return dr(vr,[],t),!0}catch(t){return!1}},wr=function(t){if(!T(t))return!1;switch(pr(t)){case"AsyncFunction":case"GeneratorFunction":case"AsyncGeneratorFunction":return!1}try{return mr||!!yr(gr,Kt(t))}catch(t){return!0}};wr.sham=!0;var Sr=!dr||a(function(){var t;return br(br.call)||!br(Object)||!br(function(){t=!0})||t})?wr:br,Er=dt("species"),Or=Array,xr=function(t,e){return new(function(t){var e;return ur(t)&&(Sr(e=t.constructor)&&(e===Or||ur(e.prototype))||M(e)&&null===(e=e[Er]))&&(e=void 0),void 0===e?Or:e}(t))(0===e?0:e)},Rr=b([].push),Pr=function(t){var e=1===t,r=2===t,n=3===t,o=4===t,i=6===t,a=7===t,u=5===t||i;return function(s,c,f,l){for(var h,p,v=it(s),d=R(v),g=de(d),y=ar(c,f),m=0,b=l||xr,w=e?b(s,g):r||a?b(s,0):void 0;g>m;m++)if((u||m in d)&&(p=y(h=d[m],m,v),t))if(e)w[m]=p;else if(p)switch(t){case 3:return!0;case 5:return h;case 6:return m;case 2:Rr(w,h)}else switch(t){case 4:return!1;case 7:Rr(w,h)}return i?-1:n||o?o:w}},Ar={forEach:Pr(0),map:Pr(1),filter:Pr(2),some:Pr(3),every:Pr(4),find:Pr(5),findIndex:Pr(6),filterReject:Pr(7)},jr=Ar.find,kr="find",Ir=!0;kr in[]&&Array(1)[kr](function(){Ir=!1}),Ce({target:"Array",proto:!0,forced:Ir},{find:function(t){return jr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(kr),Ze("Array","find");var Tr=Ar.findIndex,Mr="findIndex",Lr=!0;Mr in[]&&Array(1)[Mr](function(){Lr=!1}),Ce({target:"Array",proto:!0,forced:Lr},{findIndex:function(t){return Tr(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe(Mr),Ze("Array","findIndex");var Ur=TypeError,Nr=function(t){if(t>9007199254740991)throw Ur("Maximum allowed index exceeded");return t},Cr=function(t,e,r,n,o,i,a,u){for(var s,c,f=o,l=0,h=!!a&&ar(a,u);l0&&ur(s)?(c=de(s),f=Cr(t,e,s,c,f,i-1)-1):(Nr(f+1),t[f]=s),f++),l++;return f},_r=Cr;Ce({target:"Array",proto:!0},{flatMap:function(t){var e,r=it(this),n=de(r);return J(t),(e=xr(r,0)).length=_r(e,r,r,n,0,1,t,arguments.length>1?arguments[1]:void 0),e}}),Qe("flatMap"),Ze("Array","flatMap"),Ce({target:"Array",proto:!0},{flat:function(){var t=arguments.length?arguments[0]:void 0,e=it(this),r=de(e),n=xr(e,0);return n.length=_r(n,e,e,r,0,void 0===t?1:ce(t)),n}}),Qe("flat"),Ze("Array","flat");var Fr,Br,Dr,zr=String,Wr=function(t){if("Symbol"===pr(t))throw new TypeError("Cannot convert a Symbol value to a string");return zr(t)},qr=b("".charAt),Hr=b("".charCodeAt),$r=b("".slice),Kr=function(t){return function(e,r){var n,o,i=Wr(j(e)),a=ce(r),u=i.length;return a<0||a>=u?t?"":void 0:(n=Hr(i,a))<55296||n>56319||a+1===u||(o=Hr(i,a+1))<56320||o>57343?t?qr(i,a):n:t?$r(i,a,a+2):o-56320+(n-55296<<10)+65536}},Gr={codeAt:Kr(!1),charAt:Kr(!0)},Vr=!a(function(){function t(){}return t.prototype.constructor=null,Object.getPrototypeOf(new t)!==t.prototype}),Yr=Xt("IE_PROTO"),Xr=Object,Jr=Xr.prototype,Qr=Vr?Xr.getPrototypeOf:function(t){var e=it(t);if(ut(e,Yr))return e[Yr];var r=e.constructor;return T(r)&&e instanceof r?r.prototype:e instanceof Xr?Jr:null},Zr=dt("iterator"),tn=!1;[].keys&&("next"in(Dr=[].keys())?(Br=Qr(Qr(Dr)))!==Object.prototype&&(Fr=Br):tn=!0);var en=!M(Fr)||a(function(){var t={};return Fr[Zr].call(t)!==t});en&&(Fr={}),T(Fr[Zr])||ie(Fr,Zr,function(){return this});var rn={IteratorPrototype:Fr,BUGGY_SAFARI_ITERATORS:tn},nn=Ct.f,on=dt("toStringTag"),an=function(t,e,r){t&&!r&&(t=t.prototype),t&&!ut(t,on)&&nn(t,on,{configurable:!0,value:e})},un={},sn=rn.IteratorPrototype,cn=function(){return this},fn=function(t,e,r,n){var o=e+" Iterator";return t.prototype=Ve(sn,{next:d(+!n,r)}),an(t,o,!1),un[o]=cn,t},ln=function(t,e,r){try{return b(J(Object.getOwnPropertyDescriptor(t,e)[r]))}catch(t){}},hn=String,pn=TypeError,vn=function(t){if(function(t){return M(t)||null===t}(t))return t;throw new pn("Can't set "+hn(t)+" as a prototype")},dn=Object.setPrototypeOf||("__proto__"in{}?function(){var t,e=!1,r={};try{(t=ln(Object.prototype,"__proto__","set"))(r,[]),e=r instanceof Array}catch(t){}return function(r,n){return j(r),vn(n),M(r)?(e?t(r,n):r.__proto__=n,r):r}}():void 0),gn=zt.PROPER,yn=zt.CONFIGURABLE,mn=rn.IteratorPrototype,bn=rn.BUGGY_SAFARI_ITERATORS,wn=dt("iterator"),Sn="keys",En="values",On="entries",xn=function(){return this},Rn=function(t,e,r,n,o,i,a){fn(r,e,n);var u,s,c,l=function(t){if(t===o&&g)return g;if(!bn&&t&&t in v)return v[t];switch(t){case Sn:case En:case On:return function(){return new r(this,t)}}return function(){return new r(this)}},h=e+" Iterator",p=!1,v=t.prototype,d=v[wn]||v["@@iterator"]||o&&v[o],g=!bn&&d||l(o),y="Array"===e&&v.entries||d;if(y&&(u=Qr(y.call(new t)))!==Object.prototype&&u.next&&(Qr(u)!==mn&&(dn?dn(u,mn):T(u[wn])||ie(u,wn,xn)),an(u,h,!0)),gn&&o===En&&d&&d.name!==En&&(yn?_t(v,"name",En):(p=!0,g=function(){return f(d,this)})),o)if(s={values:l(En),keys:i?g:l(Sn),entries:l(On)},a)for(c in s)(bn||p||!(c in v))&&ie(v,c,s[c]);else Ce({target:e,proto:!0,forced:bn||p},s);return v[wn]!==g&&ie(v,wn,g,{name:o}),un[e]=g,s},Pn=function(t,e){return{value:t,done:e}},An=Gr.charAt,jn="String Iterator",kn=ne.set,In=ne.getterFor(jn);Rn(String,"String",function(t){kn(this,{type:jn,string:Wr(t),index:0})},function(){var t,e=In(this),r=e.string,n=e.index;return n>=r.length?Pn(void 0,!0):(t=An(r,n),e.index+=t.length,Pn(t,!1))});var Tn=function(t,e,r){var n,o;kt(t);try{if(!(n=Q(t,"return"))){if("throw"===e)throw r;return r}n=f(n,t)}catch(t){o=!0,n=t}if("throw"===e)throw r;if(o)throw n;return kt(n),r},Mn=function(t,e,r,n){try{return n?e(kt(r)[0],r[1]):e(r)}catch(e){Tn(t,"throw",e)}},Ln=dt("iterator"),Un=Array.prototype,Nn=function(t){return void 0!==t&&(un.Array===t||Un[Ln]===t)},Cn=function(t,e,r){u?Ct.f(t,e,d(0,r)):t[e]=r},_n=dt("iterator"),Fn=function(t){if(!P(t))return Q(t,_n)||Q(t,"@@iterator")||un[pr(t)]},Bn=TypeError,Dn=function(t,e){var r=arguments.length<2?Fn(t):e;if(J(r))return kt(f(r,t));throw new Bn(Y(t)+" is not iterable")},zn=Array,Wn=function(t){var e=it(t),r=Sr(this),n=arguments.length,o=n>1?arguments[1]:void 0,i=void 0!==o;i&&(o=ar(o,n>2?arguments[2]:void 0));var a,u,s,c,l,h,p=Fn(e),v=0;if(!p||this===zn&&Nn(p))for(a=de(e),u=r?new this(a):zn(a);a>v;v++)h=i?o(e[v],v):e[v],Cn(u,v,h);else for(u=r?new this:[],l=(c=Dn(e,p)).next;!(s=f(l,c)).done;v++)h=i?Mn(c,o,[s.value,v],!0):s.value,Cn(u,v,h);return u.length=v,u},qn=dt("iterator"),Hn=!1;try{var $n=0,Kn={next:function(){return{done:!!$n++}},return:function(){Hn=!0}};Kn[qn]=function(){return this},Array.from(Kn,function(){throw 2})}catch(t){}var Gn=function(t,e){try{if(!e&&!Hn)return!1}catch(t){return!1}var r=!1;try{var n={};n[qn]=function(){return{next:function(){return{done:r=!0}}}},t(n)}catch(t){}return r},Vn=!Gn(function(t){Array.from(t)});Ce({target:"Array",stat:!0,forced:Vn},{from:Wn});var Yn=i,Xn=ye.includes,Jn=a(function(){return!Array(1).includes()});Ce({target:"Array",proto:!0,forced:Jn},{includes:function(t){return Xn(this,t,arguments.length>1?arguments[1]:void 0)}}),Qe("includes"),Ze("Array","includes");var Qn=Ct.f,Zn="Array Iterator",to=ne.set,eo=ne.getterFor(Zn),ro=Rn(Array,"Array",function(t,e){to(this,{type:Zn,target:k(t),index:0,kind:e})},function(){var t=eo(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);switch(t.kind){case"keys":return Pn(r,!1);case"values":return Pn(e[r],!1)}return Pn([r,e[r]],!1)},"values"),no=un.Arguments=un.Array;if(Qe("keys"),Qe("values"),Qe("entries"),u&&"values"!==no.name)try{Qn(no,"name",{value:"values"})}catch(t){}cr||ie(Object.prototype,"toString",cr?{}.toString:function(){return"[object "+pr(this)+"]"},{unsafe:!0}),Ze("Array","values");var oo=Array,io=a(function(){function t(){}return!(oo.of.call(t)instanceof t)});Ce({target:"Array",stat:!0,forced:io},{of:function(){for(var t=0,e=arguments.length,r=new(Sr(this)?this:oo)(e);e>t;)Cn(r,t,arguments[t++]);return r.length=e,r}});var ao=dt("hasInstance"),uo=Function.prototype;ao in uo||Ct.f(uo,ao,{value:oe(function(t){if(!T(this)||!M(t))return!1;var e=this.prototype;return M(e)?U(e,t):t instanceof this},ao)}),dt("hasInstance");var so=function(t,e,r){return r.get&&oe(r.get,e,{getter:!0}),r.set&&oe(r.set,e,{setter:!0}),Ct.f(t,e,r)},co=zt.EXISTS,fo=Function.prototype,lo=b(fo.toString),ho=/function\b(?:\s|\/\*[\S\s]*?\*\/|\/\/[^\n\r]*[\n\r]+)*([^\s(/]*)/,po=b(ho.exec);u&&!co&&so(fo,"name",{configurable:!0,get:function(){try{return po(ho,lo(this))[1]}catch(t){return""}}});var vo=b([].slice),go=Oe.f,yo="object"==typeof window&&window&&Object.getOwnPropertyNames?Object.getOwnPropertyNames(window):[],mo={f:function(t){return yo&&"Window"===E(t)?function(t){try{return go(t)}catch(t){return vo(yo)}}(t):go(k(t))}},bo=a(function(){if("function"==typeof ArrayBuffer){var t=new ArrayBuffer(8);Object.isExtensible(t)&&Object.defineProperty(t,"a",{value:8})}}),wo=Object.isExtensible,So=a(function(){wo(1)})||bo?function(t){return!!M(t)&&(!bo||"ArrayBuffer"!==E(t))&&(!wo||wo(t))}:wo,Eo=!a(function(){return Object.isExtensible(Object.preventExtensions({}))}),Oo=e(function(t){var e=Ct.f,r=!1,n=lt("meta"),o=0,i=function(t){e(t,n,{value:{objectID:"O"+o++,weakData:{}}})},a=t.exports={enable:function(){a.enable=function(){},r=!0;var t=Oe.f,e=b([].splice),o={};o[n]=1,t(o).length&&(Oe.f=function(r){for(var o=t(r),i=0,a=o.length;ii;i++)if((u=y(t[i]))&&U(Po,u))return u;return new Ro(!1)}n=Dn(t,o)}for(s=h?t.next:n.next;!(c=f(s,n)).done;){try{u=y(c.value)}catch(t){Tn(n,"throw",t)}if("object"==typeof u&&u&&U(Po,u))return u}return new Ro(!1)},jo=TypeError,ko=function(t,e){if(U(e,t))return t;throw new jo("Incorrect invocation")},Io=function(t,e,r){var n,o;return dn&&T(n=e.constructor)&&n!==r&&M(o=n.prototype)&&o!==r.prototype&&dn(t,o),t},To=function(t,e,r){var n=-1!==t.indexOf("Map"),o=-1!==t.indexOf("Weak"),u=n?"set":"add",s=i[t],c=s&&s.prototype,f=s,l={},h=function(t){var e=b(c[t]);ie(c,t,"add"===t?function(t){return e(this,0===t?0:t),this}:"delete"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:"get"===t?function(t){return o&&!M(t)?void 0:e(this,0===t?0:t)}:"has"===t?function(t){return!(o&&!M(t))&&e(this,0===t?0:t)}:function(t,r){return e(this,0===t?0:t,r),this})};if(Ue(t,!T(s)||!(o||c.forEach&&!a(function(){(new s).entries().next()}))))f=r.getConstructor(e,t,n,u),Oo.enable();else if(Ue(t,!0)){var p=new f,v=p[u](o?{}:-0,1)!==p,d=a(function(){p.has(1)}),g=Gn(function(t){new s(t)}),y=!o&&a(function(){for(var t=new s,e=5;e--;)t[u](e,e);return!t.has(-0)});g||((f=e(function(t,e){ko(t,c);var r=Io(new s,t,f);return P(e)||Ao(e,r[u],{that:r,AS_ENTRIES:n}),r})).prototype=c,c.constructor=f),(d||y)&&(h("delete"),h("has"),n&&h("get")),(y||v)&&h(u),o&&c.clear&&delete c.clear}return l[t]=f,Ce({global:!0,constructor:!0,forced:f!==s},l),an(f,t),o||r.setStrong(f,t,n),f},Mo=function(t,e,r){for(var n in e)ie(t,n,e[n],r);return t},Lo=dt("species"),Uo=function(t){var e=L(t);u&&e&&!e[Lo]&&so(e,Lo,{configurable:!0,get:function(){return this}})},No=Oo.fastKey,Co=ne.set,_o=ne.getterFor,Fo={getConstructor:function(t,e,r,n){var o=t(function(t,o){ko(t,i),Co(t,{type:e,index:Ve(null),first:null,last:null,size:0}),u||(t.size=0),P(o)||Ao(o,t[n],{that:t,AS_ENTRIES:r})}),i=o.prototype,a=_o(e),s=function(t,e,r){var n,o,i=a(t),s=c(t,e);return s?s.value=r:(i.last=s={index:o=No(e,!0),key:e,value:r,previous:n=i.last,next:null,removed:!1},i.first||(i.first=s),n&&(n.next=s),u?i.size++:t.size++,"F"!==o&&(i.index[o]=s)),t},c=function(t,e){var r,n=a(t),o=No(e);if("F"!==o)return n.index[o];for(r=n.first;r;r=r.next)if(r.key===e)return r};return Mo(i,{clear:function(){for(var t=a(this),e=t.first;e;)e.removed=!0,e.previous&&(e.previous=e.previous.next=null),e=e.next;t.first=t.last=null,t.index=Ve(null),u?t.size=0:this.size=0},delete:function(t){var e=this,r=a(e),n=c(e,t);if(n){var o=n.next,i=n.previous;delete r.index[n.index],n.removed=!0,i&&(i.next=o),o&&(o.previous=i),r.first===n&&(r.first=o),r.last===n&&(r.last=i),u?r.size--:e.size--}return!!n},forEach:function(t){for(var e,r=a(this),n=ar(t,arguments.length>1?arguments[1]:void 0);e=e?e.next:r.first;)for(n(e.value,e.key,this);e&&e.removed;)e=e.previous},has:function(t){return!!c(this,t)}}),Mo(i,r?{get:function(t){var e=c(this,t);return e&&e.value},set:function(t,e){return s(this,0===t?0:t,e)}}:{add:function(t){return s(this,t=0===t?0:t,t)}}),u&&so(i,"size",{configurable:!0,get:function(){return a(this).size}}),o},setStrong:function(t,e,r){var n=e+" Iterator",o=_o(e),i=_o(n);Rn(t,e,function(t,e){Co(this,{type:n,target:t,state:o(t),kind:e,last:null})},function(){for(var t=i(this),e=t.kind,r=t.last;r&&r.removed;)r=r.previous;return t.target&&(t.last=r=r?r.next:t.state.first)?Pn("keys"===e?r.key:"values"===e?r.value:[r.key,r.value],!1):(t.target=null,Pn(void 0,!0))},r?"entries":"values",!r,!0),Uo(e)}};To("Map",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var Bo=Map.prototype,Do={Map:Map,set:b(Bo.set),get:b(Bo.get),has:b(Bo.has),remove:b(Bo.delete),proto:Bo},zo=Do.Map,Wo=Do.has,qo=Do.get,Ho=Do.set,$o=b([].push),Ko=a(function(){return 1!==zo.groupBy("ab",function(t){return t}).get("a").length});Ce({target:"Map",stat:!0,forced:Ko},{groupBy:function(t,e){j(t),J(e);var r=new zo,n=0;return Ao(t,function(t){var o=e(t,n++);Wo(r,o)?$o(qo(r,o),t):Ho(r,o,[t])}),r}});var Go={CSSRuleList:0,CSSStyleDeclaration:0,CSSValueList:0,ClientRectList:0,DOMRectList:0,DOMStringList:0,DOMTokenList:1,DataTransferItemList:0,FileList:0,HTMLAllCollection:0,HTMLCollection:0,HTMLFormElement:0,HTMLSelectElement:0,MediaList:0,MimeTypeArray:0,NamedNodeMap:0,NodeList:1,PaintRequestList:0,Plugin:0,PluginArray:0,SVGLengthList:0,SVGNumberList:0,SVGPathSegList:0,SVGPointList:0,SVGStringList:0,SVGTransformList:0,SourceBufferList:0,StyleSheetList:0,TextTrackCueList:0,TextTrackList:0,TouchList:0},Vo=Et("span").classList,Yo=Vo&&Vo.constructor&&Vo.constructor.prototype,Xo=Yo===Object.prototype?void 0:Yo,Jo=dt("iterator"),Qo=ro.values,Zo=function(t,e){if(t){if(t[Jo]!==Qo)try{_t(t,Jo,Qo)}catch(e){t[Jo]=Qo}if(an(t,e,!0),Go[e])for(var r in ro)if(t[r]!==ro[r])try{_t(t,r,ro[r])}catch(e){t[r]=ro[r]}}};for(var ti in Go)Zo(i[ti]&&i[ti].prototype,ti);Zo(Xo,"DOMTokenList");var ei=function(t,e,r){return function(n){var o=it(n),i=arguments.length,a=i>1?arguments[1]:void 0,u=void 0!==a,s=u?ar(a,i>2?arguments[2]:void 0):void 0,c=new t,f=0;return Ao(o,function(t){var n=u?s(t,f++):t;r?e(c,kt(n)[0],n[1]):e(c,n)}),c}};Ce({target:"Map",stat:!0,forced:!0},{from:ei(Do.Map,Do.set,!0)});var ri=function(t,e,r){return function(){for(var n=new t,o=arguments.length,i=0;i1?arguments[1]:void 0);return!1!==di(e,function(t,n){if(!r(t,n,e))return!1},!0)}});var gi=Do.Map,yi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{filter:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new gi;return di(e,function(t,o){r(t,o,e)&&yi(n,o,t)}),n}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{find:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{findKey:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=di(e,function(t,n){if(r(t,n,e))return{key:n}},!0);return n&&n.key}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{includes:function(t){return!0===di(oi(this),function(e){if((r=e)===(n=t)||r!=r&&n!=n)return!0;var r,n},!0)}});var mi=Do.Map;Ce({target:"Map",stat:!0,forced:!0},{keyBy:function(t,e){var r=new(T(this)?this:mi);J(e);var n=J(r.set);return Ao(t,function(t){f(n,r,e(t),t)}),r}}),Ce({target:"Map",proto:!0,real:!0,forced:!0},{keyOf:function(t){var e=di(oi(this),function(e,r){if(e===t)return{key:r}},!0);return e&&e.key}});var bi=Do.Map,wi=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapKeys:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new bi;return di(e,function(t,o){wi(n,r(t,o,e),t)}),n}});var Si=Do.Map,Ei=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{mapValues:function(t){var e=oi(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new Si;return di(e,function(t,o){Ei(n,o,r(t,o,e))}),n}});var Oi=Do.set;Ce({target:"Map",proto:!0,real:!0,arity:1,forced:!0},{merge:function(t){for(var e=oi(this),r=arguments.length,n=0;n1?arguments[1]:void 0);return!0===di(e,function(t,n){if(r(t,n,e))return!0},!0)}});var Ri=TypeError,Pi=Do.get,Ai=Do.has,ji=Do.set;Ce({target:"Map",proto:!0,real:!0,forced:!0},{update:function(t,e){var r=oi(this),n=arguments.length;J(e);var o=Ai(r,t);if(!o&&n<3)throw new Ri("Updating absent value");var i=o?Pi(r,t):J(n>2?arguments[2]:void 0)(t,r);return ji(r,t,e(i,t,r)),r}});var ki=TypeError,Ii=function(t,e){var r,n=kt(this),o=J(n.get),i=J(n.has),a=J(n.set),u=arguments.length>2?arguments[2]:void 0;if(!T(e)&&!T(u))throw new ki("At least one callback required");return f(i,n,t)?(r=f(o,n,t),T(e)&&(r=e(r),f(a,n,t,r))):T(u)&&(r=u(),f(a,n,t,r)),r};Ce({target:"Map",proto:!0,real:!0,forced:!0},{upsert:Ii}),Ce({target:"Map",proto:!0,real:!0,name:"upsert",forced:!0},{updateOrInsert:Ii});var Ti=b(1..valueOf),Mi="\t\n\v\f\r                 \u2028\u2029\ufeff",Li=b("".replace),Ui=RegExp("^["+Mi+"]+"),Ni=RegExp("(^|[^"+Mi+"])["+Mi+"]+$"),Ci=function(t){return function(e){var r=Wr(j(e));return 1&t&&(r=Li(r,Ui,"")),2&t&&(r=Li(r,Ni,"$1")),r}},_i={start:Ci(1),end:Ci(2),trim:Ci(3)},Fi=Oe.f,Bi=Rt.f,Di=Ct.f,zi=_i.trim,Wi="Number",qi=i[Wi],Hi=qi.prototype,$i=i.TypeError,Ki=b("".slice),Gi=b("".charCodeAt),Vi=Ue(Wi,!qi(" 0o1")||!qi("0b1")||qi("+0x1")),Yi=function(t){var e,r=arguments.length<1?0:qi(function(t){var e=mt(t,"number");return"bigint"==typeof e?e:function(t){var e,r,n,o,i,a,u,s,c=mt(t,"number");if(G(c))throw new $i("Cannot convert a Symbol value to a number");if("string"==typeof c&&c.length>2)if(c=zi(c),43===(e=Gi(c,0))||45===e){if(88===(r=Gi(c,2))||120===r)return NaN}else if(48===e){switch(Gi(c,1)){case 66:case 98:n=2,o=49;break;case 79:case 111:n=8,o=55;break;default:return+c}for(a=(i=Ki(c,2)).length,u=0;uo)return NaN;return parseInt(i,n)}return+c}(e)}(t));return U(Hi,e=this)&&a(function(){Ti(e)})?Io(Object(r),this,Yi):r};Yi.prototype=Hi,Vi&&(Hi.constructor=Yi),Ce({global:!0,constructor:!0,wrap:!0,forced:Vi},{Number:Yi}),Vi&&function(t,e){for(var r,n=u?Fi(e):"MAX_VALUE,MIN_VALUE,NaN,NEGATIVE_INFINITY,POSITIVE_INFINITY,EPSILON,MAX_SAFE_INTEGER,MIN_SAFE_INTEGER,isFinite,isInteger,isNaN,isSafeInteger,parseFloat,parseInt,fromString,range".split(","),o=0;n.length>o;o++)ut(e,r=n[o])&&!ut(t,r)&&Di(t,r,Bi(e,r))}(Yn[Wi],qi),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{EPSILON:Math.pow(2,-52)});var Xi=i.isFinite;Ce({target:"Number",stat:!0},{isFinite:Number.isFinite||function(t){return"number"==typeof t&&Xi(t)}});var Ji=Math.floor,Qi=Number.isInteger||function(t){return!M(t)&&isFinite(t)&&Ji(t)===t};Ce({target:"Number",stat:!0},{isInteger:Qi}),Ce({target:"Number",stat:!0},{isNaN:function(t){return t!=t}});var Zi=Math.abs;Ce({target:"Number",stat:!0},{isSafeInteger:function(t){return Qi(t)&&Zi(t)<=9007199254740991}}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MAX_SAFE_INTEGER:9007199254740991}),Ce({target:"Number",stat:!0,nonConfigurable:!0,nonWritable:!0},{MIN_SAFE_INTEGER:-9007199254740991});var ta=_i.trim,ea=b("".charAt),ra=i.parseFloat,na=i.Symbol,oa=na&&na.iterator,ia=1/ra(Mi+"-0")!=-Infinity||oa&&!a(function(){ra(Object(oa))})?function(t){var e=ta(Wr(t)),r=ra(e);return 0===r&&"-"===ea(e,0)?-0:r}:ra;Ce({target:"Number",stat:!0,forced:Number.parseFloat!==ia},{parseFloat:ia});var aa=_i.trim,ua=i.parseInt,sa=i.Symbol,ca=sa&&sa.iterator,fa=/^[+-]?0x/i,la=b(fa.exec),ha=8!==ua(Mi+"08")||22!==ua(Mi+"0x16")||ca&&!a(function(){ua(Object(ca))})?function(t,e){var r=aa(Wr(t));return ua(r,e>>>0||(la(fa,r)?16:10))}:ua;Ce({target:"Number",stat:!0,forced:Number.parseInt!==ha},{parseInt:ha});var pa=b(v.f),va=b([].push),da=u&&a(function(){var t=Object.create(null);return t[2]=2,!pa(t,2)}),ga=function(t){return function(e){for(var r,n=k(e),o=_e(n),i=da&&null===Qr(n),a=o.length,s=0,c=[];a>s;)r=o[s++],u&&!(i?r in n:pa(n,r))||va(c,t?[r,n[r]]:n[r]);return c}},ya={entries:ga(!0),values:ga(!1)},ma=ya.entries;Ce({target:"Object",stat:!0},{entries:function(t){return ma(t)}}),Ce({target:"Object",stat:!0,sham:!u},{getOwnPropertyDescriptors:function(t){for(var e,r,n=k(t),o=Rt.f,i=Pe(n),a={},u=0;i.length>u;)void 0!==(r=o(n,e=i[u++]))&&Cn(a,e,r);return a}});var ba=a(function(){_e(1)});Ce({target:"Object",stat:!0,forced:ba},{keys:function(t){return _e(it(t))}});var wa=Object.is||function(t,e){return t===e?0!==t||1/t==1/e:t!=t&&e!=e};Ce({target:"Object",stat:!0},{is:wa});var Sa=ya.values;Ce({target:"Object",stat:!0},{values:function(t){return Sa(t)}}),Ce({target:"Object",stat:!0},{hasOwn:ut});var Ea=Function.prototype,Oa=Ea.apply,xa=Ea.call,Ra="object"==typeof Reflect&&Reflect.apply||(s?xa.bind(Oa):function(){return xa.apply(Oa,arguments)}),Pa=!a(function(){Reflect.apply(function(){})});Ce({target:"Reflect",stat:!0,forced:Pa},{apply:function(t,e,r){return Ra(J(t),e,kt(r))}});var Aa=Function,ja=b([].concat),ka=b([].join),Ia={},Ta=s?Aa.bind:function(t){var e=J(this),r=e.prototype,n=vo(arguments,1),o=function(){var r=ja(n,vo(arguments));return this instanceof o?function(t,e,r){if(!ut(Ia,e)){for(var n=[],o=0;ob)","g");return"b"!==t.exec("b").groups.a||"bc"!=="b".replace(t,"$c")}),gs=Oe.f,ys=ne.enforce,ms=dt("match"),bs=i.RegExp,ws=bs.prototype,Ss=i.SyntaxError,Es=b(ws.exec),Os=b("".charAt),xs=b("".replace),Rs=b("".indexOf),Ps=b("".slice),As=/^\?<[^\s\d!#%&*+<=>@^][^\s!#%&*+<=>@^]*>/,js=/a/g,ks=/a/g,Is=new bs(js)!==js,Ts=cs.MISSED_STICKY,Ms=cs.UNSUPPORTED_Y,Ls=u&&(!Is||Ts||ps||ds||a(function(){return ks[ms]=!1,bs(js)!==js||bs(ks)===ks||"/a/i"!==String(bs(js,"i"))}));if(Ue("RegExp",Ls)){for(var Us=function(t,e){var r,n,o,i,a,u,s=U(ws,this),c=es(t),f=void 0===e,l=[],h=t;if(!s&&c&&f&&t.constructor===Us)return t;if((c||U(ws,t))&&(t=t.source,f&&(e=os(h))),t=void 0===t?"":Wr(t),e=void 0===e?"":Wr(e),h=t,ps&&"dotAll"in js&&(n=!!e&&Rs(e,"s")>-1)&&(e=xs(e,/s/g,"")),r=e,Ts&&"sticky"in js&&(o=!!e&&Rs(e,"y")>-1)&&Ms&&(e=xs(e,/y/g,"")),ds&&(i=function(t){for(var e,r=t.length,n=0,o="",i=[],a=Ve(null),u=!1,s=!1,c=0,f="";n<=r;n++){if("\\"===(e=Os(t,n)))e+=Os(t,++n);else if("]"===e)u=!1;else if(!u)switch(!0){case"["===e:u=!0;break;case"("===e:if(o+=e,"?:"===Ps(t,n+1,n+3))continue;Es(As,Ps(t,n+1))&&(n+=2,s=!0),c++;continue;case">"===e&&s:if(""===f||ut(a,f))throw new Ss("Invalid capture group name");a[f]=!0,i[i.length]=[f,c],s=!1,f="";continue}s?f+=e:o+=e}return[o,i]}(t),t=i[0],l=i[1]),a=Io(bs(t,e),s?this:ws,Us),(n||o||l.length)&&(u=ys(a),n&&(u.dotAll=!0,u.raw=Us(function(t){for(var e,r=t.length,n=0,o="",i=!1;n<=r;n++)"\\"!==(e=Os(t,n))?i||"."!==e?("["===e?i=!0:"]"===e&&(i=!1),o+=e):o+="[\\s\\S]":o+=e+Os(t,++n);return o}(t),r)),o&&(u.sticky=!0),l.length&&(u.groups=l)),t!==h)try{_t(a,"source",""===h?"(?:)":h)}catch(t){}return a},Ns=gs(bs),Cs=0;Ns.length>Cs;)ls(Us,bs,Ns[Cs++]);ws.constructor=Us,Us.prototype=ws,ie(i,"RegExp",Us,{constructor:!0})}Uo("RegExp");var _s=zt.PROPER,Fs="toString",Bs=RegExp.prototype,Ds=Bs[Fs];(a(function(){return"/a/b"!==Ds.call({source:"a",flags:"b"})})||_s&&Ds.name!==Fs)&&ie(Bs,Fs,function(){var t=kt(this);return"/"+Wr(t.source)+"/"+Wr(os(t))},{unsafe:!0});var zs=ne.get,Ws=RegExp.prototype,qs=TypeError;u&&ps&&so(Ws,"dotAll",{configurable:!0,get:function(){if(this!==Ws){if("RegExp"===E(this))return!!zs(this).dotAll;throw new qs("Incompatible receiver, RegExp required")}}});var Hs=ne.get,$s=nt("native-string-replace",String.prototype.replace),Ks=RegExp.prototype.exec,Gs=Ks,Vs=b("".charAt),Ys=b("".indexOf),Xs=b("".replace),Js=b("".slice),Qs=function(){var t=/a/,e=/b*/g;return f(Ks,t,"a"),f(Ks,e,"a"),0!==t.lastIndex||0!==e.lastIndex}(),Zs=cs.BROKEN_CARET,tc=void 0!==/()??/.exec("")[1];(Qs||tc||Zs||ps||ds)&&(Gs=function(t){var e,r,n,o,i,a,u,s=this,c=Hs(s),l=Wr(t),h=c.raw;if(h)return h.lastIndex=s.lastIndex,e=f(Gs,h,l),s.lastIndex=h.lastIndex,e;var p=c.groups,v=Zs&&s.sticky,d=f(rs,s),g=s.source,y=0,m=l;if(v&&(d=Xs(d,"y",""),-1===Ys(d,"g")&&(d+="g"),m=Js(l,s.lastIndex),s.lastIndex>0&&(!s.multiline||s.multiline&&"\n"!==Vs(l,s.lastIndex-1))&&(g="(?: "+g+")",m=" "+m,y++),r=new RegExp("^(?:"+g+")",d)),tc&&(r=new RegExp("^"+g+"$(?!\\s)",d)),Qs&&(n=s.lastIndex),o=f(Ks,v?r:s,m),v?o?(o.input=Js(o.input,y),o[0]=Js(o[0],y),o.index=s.lastIndex,s.lastIndex+=o[0].length):s.lastIndex=0:Qs&&o&&(s.lastIndex=s.global?o.index+o[0].length:n),tc&&o&&o.length>1&&f($s,o[0],r,function(){for(i=1;i]*>)/g,Oc=/\$([$&'`]|\d{1,2})/g,xc=function(t,e,r,n,o,i){var a=r+t.length,u=n.length,s=Oc;return void 0!==o&&(o=it(o),s=Ec),wc(i,s,function(i,s){var c;switch(bc(s,0)){case"$":return"$";case"&":return t;case"`":return Sc(e,0,r);case"'":return Sc(e,a);case"<":c=o[Sc(s,1,-1)];break;default:var f=+s;if(0===f)return i;if(f>u){var l=mc(f/10);return 0===l?i:l<=u?void 0===n[l-1]?bc(s,1):n[l-1]+bc(s,1):i}c=n[f-1]}return void 0===c?"":c})},Rc=dt("replace"),Pc=Math.max,Ac=Math.min,jc=b([].concat),kc=b([].push),Ic=b("".indexOf),Tc=b("".slice),Mc="$0"==="a".replace(/./,"$0"),Lc=!!/./[Rc]&&""===/./[Rc]("a","$0"),Uc=!a(function(){var t=/./;return t.exec=function(){var t=[];return t.groups={a:"7"},t},"7"!=="".replace(t,"$")});pc("replace",function(t,e,r){var n=Lc?"$":"$0";return[function(t,r){var n=j(this),o=P(t)?void 0:Q(t,Rc);return o?f(o,t,n,r):f(e,Wr(n),t,r)},function(t,o){var i=kt(this),a=Wr(t);if("string"==typeof o&&-1===Ic(o,n)&&-1===Ic(o,"$<")){var u=r(e,i,a,o);if(u.done)return u.value}var s=T(o);s||(o=Wr(o));var c,f=i.global;f&&(c=i.unicode,i.lastIndex=0);for(var l,h=[];null!==(l=yc(i,a))&&(kc(h,l),f);)""===Wr(l[0])&&(i.lastIndex=dc(a,ve(i.lastIndex),c));for(var p,v="",d=0,g=0;g=d&&(v+=Tc(a,d,b)+y,d=b+m.length)}return v+Tc(a,d)}]},!Uc||!Mc||Lc),pc("search",function(t,e,r){return[function(e){var r=j(this),n=P(e)?void 0:Q(e,t);return n?f(n,e,r):new RegExp(e)[t](Wr(r))},function(t){var n=kt(this),o=Wr(t),i=r(e,n,o);if(i.done)return i.value;var a=n.lastIndex;wa(a,0)||(n.lastIndex=0);var u=yc(n,o);return wa(n.lastIndex,a)||(n.lastIndex=a),null===u?-1:u.index}]});var Nc=dt("species"),Cc=function(t,e){var r,n=kt(t).constructor;return void 0===n||P(r=kt(n)[Nc])?e:La(r)},_c=cs.UNSUPPORTED_Y,Fc=Math.min,Bc=b([].push),Dc=b("".slice),zc=!a(function(){var t=/(?:)/,e=t.exec;t.exec=function(){return e.apply(this,arguments)};var r="ab".split(t);return 2!==r.length||"a"!==r[0]||"b"!==r[1]}),Wc="c"==="abbc".split(/(b)*/)[1]||4!=="test".split(/(?:)/,-1).length||2!=="ab".split(/(?:ab)*/).length||4!==".".split(/(.?)(.?)/).length||".".split(/()()/).length>1||"".split(/.?/).length;pc("split",function(t,e,r){var n="0".split(void 0,0).length?function(t,r){return void 0===t&&0===r?[]:f(e,this,t,r)}:e;return[function(e,r){var o=j(this),i=P(e)?void 0:Q(e,t);return i?f(i,e,o,r):f(n,Wr(o),e,r)},function(t,o){var i=kt(this),a=Wr(t);if(!Wc){var u=r(n,i,a,o,n!==e);if(u.done)return u.value}var s=Cc(i,RegExp),c=i.unicode,f=new s(_c?"^(?:"+i.source+")":i,(i.ignoreCase?"i":"")+(i.multiline?"m":"")+(i.unicode?"u":"")+(_c?"g":"y")),l=void 0===o?4294967295:o>>>0;if(0===l)return[];if(0===a.length)return null===yc(f,a)?[a]:[];for(var h=0,p=0,v=[];p0;(n>>>=1)&&(e+=e))1&n&&(r+=e);return r},Kc=b($c),Gc=b("".slice),Vc=Math.ceil,Yc=function(t){return function(e,r,n){var o,i,a=Wr(j(e)),u=ve(r),s=a.length,c=void 0===n?" ":Wr(n);return u<=s||""===c?a:((i=Kc(c,Vc((o=u-s)/c.length))).length>o&&(i=Gc(i,0,o)),t?a+i:i+a)}},Xc={start:Yc(!1),end:Yc(!0)},Jc=Xc.start,Qc=Array,Zc=RegExp.escape,tf=b("".charAt),ef=b("".charCodeAt),rf=b(1.1.toString),nf=b([].join),of=/^[0-9a-z]/i,af=/^[$()*+./?[\\\]^{|}]/,uf=RegExp("^[!\"#%&',\\-:;<=>@`~"+Mi+"]"),sf=b(of.exec),cf={"\t":"t","\n":"n","\v":"v","\f":"f","\r":"r"},ff=function(t){var e=rf(ef(t,0),16);return e.length<3?"\\x"+Jc(e,2,"0"):"\\u"+Jc(e,4,"0")},lf=!Zc||"\\x61b"!==Zc("ab");Ce({target:"RegExp",stat:!0,forced:lf},{escape:function(t){!function(t){if("string"==typeof t)return t;throw new qc("Argument is not a string")}(t);for(var e=t.length,r=Qc(e),n=0;n=56320||n+1>=e||56320!=(64512&ef(t,n+1))?r[n]=ff(o):(r[n]=o,r[++n]=tf(t,n))}}return nf(r,"")}}),To("Set",function(t){return function(){return t(this,arguments.length?arguments[0]:void 0)}},Fo);var hf=Set.prototype,pf={Set:Set,add:b(hf.add),has:b(hf.has),remove:b(hf.delete),proto:hf},vf=pf.has,df=function(t){return vf(t),t},gf=pf.Set,yf=pf.proto,mf=b(yf.forEach),bf=b(yf.keys),wf=bf(new gf).next,Sf=function(t,e,r){return r?ci({iterator:bf(t),next:wf},e):mf(t,e)},Ef=pf.Set,Of=pf.add,xf=function(t){var e=new Ef;return Sf(t,function(t){Of(e,t)}),e},Rf=ln(pf.proto,"size","get")||function(t){return t.size},Pf="Invalid size",Af=RangeError,jf=TypeError,kf=Math.max,If=function(t,e){this.set=t,this.size=kf(e,0),this.has=J(t.has),this.keys=J(t.keys)};If.prototype={getIterator:function(){return{iterator:t=kt(f(this.keys,this.set)),next:t.next,done:!1};var t},includes:function(t){return f(this.has,this.set,t)}};var Tf=function(t){kt(t);var e=+t.size;if(e!=e)throw new jf(Pf);var r=ce(e);if(r<0)throw new Af(Pf);return new If(t,r)},Mf=pf.has,Lf=pf.remove,Uf=function(t){var e=df(this),r=Tf(t),n=xf(e);return Rf(e)<=r.size?Sf(e,function(t){r.includes(t)&&Lf(n,t)}):ci(r.getIterator(),function(t){Mf(e,t)&&Lf(n,t)}),n},Nf=function(t){return{size:t,has:function(){return!1},keys:function(){return{next:function(){return{done:!0}}}}}},Cf=function(t){var e=L("Set");try{(new e)[t](Nf(0));try{return(new e)[t](Nf(-1)),!1}catch(t){return!0}}catch(t){return!1}};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("difference")},{difference:Uf});var _f=pf.Set,Ff=pf.add,Bf=pf.has,Df=function(t){var e=df(this),r=Tf(t),n=new _f;return Rf(e)>r.size?ci(r.getIterator(),function(t){Bf(e,t)&&Ff(n,t)}):Sf(e,function(t){r.includes(t)&&Ff(n,t)}),n},zf=!Cf("intersection")||a(function(){return"3,2"!==String(Array.from(new Set([1,2,3]).intersection(new Set([3,2]))))});Ce({target:"Set",proto:!0,real:!0,forced:zf},{intersection:Df});var Wf=pf.has,qf=function(t){var e=df(this),r=Tf(t);if(Rf(e)<=r.size)return!1!==Sf(e,function(t){if(r.includes(t))return!1},!0);var n=r.getIterator();return!1!==ci(n,function(t){if(Wf(e,t))return Tn(n,"normal",!1)})};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isDisjointFrom")},{isDisjointFrom:qf});var Hf=function(t){var e=df(this),r=Tf(t);return!(Rf(e)>r.size)&&!1!==Sf(e,function(t){if(!r.includes(t))return!1},!0)};Ce({target:"Set",proto:!0,real:!0,forced:!Cf("isSubsetOf")},{isSubsetOf:Hf});var $f=pf.has,Kf=function(t){var e=df(this),r=Tf(t);if(Rf(e)1?arguments[1]:void 0);return!1!==Sf(e,function(t){if(!r(t,t,e))return!1},!0)}});var el=dt("iterator"),rl=Object,nl=L("Set"),ol=function(t){return function(t){return M(t)&&"number"==typeof t.size&&T(t.has)&&T(t.keys)}(t)?t:function(t){if(P(t))return!1;var e=rl(t);return void 0!==e[el]||"@@iterator"in e||ut(un,pr(e))}(t)?new nl(t):t};Ce({target:"Set",proto:!0,real:!0,forced:!0},{difference:function(t){return f(Uf,this,ol(t))}});var il=pf.Set,al=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{filter:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new il;return Sf(e,function(t){r(t,t,e)&&al(n,t)}),n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{find:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=Sf(e,function(t){if(r(t,t,e))return{value:t}},!0);return n&&n.value}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{intersection:function(t){return f(Df,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isDisjointFrom:function(t){return f(qf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSubsetOf:function(t){return f(Hf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{isSupersetOf:function(t){return f(Kf,this,ol(t))}});var ul=b([].join),sl=b([].push);Ce({target:"Set",proto:!0,real:!0,forced:!0},{join:function(t){var e=df(this),r=void 0===t?",":Wr(t),n=[];return Sf(e,function(t){sl(n,t)}),ul(n,r)}});var cl=pf.Set,fl=pf.add;Ce({target:"Set",proto:!0,real:!0,forced:!0},{map:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0),n=new cl;return Sf(e,function(t){fl(n,r(t,t,e))}),n}});var ll=TypeError;Ce({target:"Set",proto:!0,real:!0,forced:!0},{reduce:function(t){var e=df(this),r=arguments.length<2,n=r?void 0:arguments[1];if(J(t),Sf(e,function(o){r?(r=!1,n=o):n=t(n,o,o,e)}),r)throw new ll("Reduce of empty set with no initial value");return n}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{some:function(t){var e=df(this),r=ar(t,arguments.length>1?arguments[1]:void 0);return!0===Sf(e,function(t){if(r(t,t,e))return!0},!0)}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{symmetricDifference:function(t){return f(Xf,this,ol(t))}}),Ce({target:"Set",proto:!0,real:!0,forced:!0},{union:function(t){return f(Qf,this,ol(t))}});var hl=dt("species"),pl=dt("isConcatSpreadable"),vl=W>=51||!a(function(){var t=[];return t[pl]=!1,t.concat()[0]!==t}),dl=function(t){if(!M(t))return!1;var e=t[pl];return void 0!==e?!!e:ur(t)},gl=!(vl&&(W>=51||!a(function(){var t=[];return(t.constructor={})[hl]=function(){return{foo:1}},1!==t.concat(Boolean).foo})));Ce({target:"Array",proto:!0,arity:1,forced:gl},{concat:function(t){var e,r,n,o,i,a=it(this),u=xr(a,0),s=0;for(e=-1,n=arguments.length;e1?arguments[1]:void 0,n=e.length,o=void 0===r?n:ip(ve(r),n),i=Wr(t);return op(e,o-i.length,o)===i}}),Ze("String","endsWith");var sp=RangeError,cp=String.fromCharCode,fp=String.fromCodePoint,lp=b([].join);Ce({target:"String",stat:!0,arity:1,forced:!!fp&&1!==fp.length},{fromCodePoint:function(t){for(var e,r=[],n=arguments.length,o=0;n>o;){if(e=+arguments[o++],he(e,1114111)!==e)throw new sp(e+" is not a valid code point");r[o]=e<65536?cp(e):cp(55296+((e-=65536)>>10),e%1024+56320)}return lp(r,"")}});var hp=b("".indexOf);Ce({target:"String",proto:!0,forced:!rp("includes")},{includes:function(t){return!!~hp(Wr(j(this)),Wr(tp(t)),arguments.length>1?arguments[1]:void 0)}}),Ze("String","includes"),b(un.String);var pp=/Version\/10(?:\.\d+){1,2}(?: [\w./]+)?(?: Mobile\/\w+)? Safari\//.test(_),vp=Xc.start;Ce({target:"String",proto:!0,forced:pp},{padStart:function(t){return vp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padStart");var dp=Xc.end;Ce({target:"String",proto:!0,forced:pp},{padEnd:function(t){return dp(this,t,arguments.length>1?arguments[1]:void 0)}}),Ze("String","padEnd");var gp=b([].push),yp=b([].join);Ce({target:"String",stat:!0},{raw:function(t){var e=k(it(t).raw),r=de(e);if(!r)return"";for(var n=arguments.length,o=[],i=0;;){if(gp(o,Wr(e[i++])),i===r)return yp(o,"");i1?arguments[1]:void 0,e.length)),n=Wr(t);return bp(e,r,r+n.length)===n}}),Ze("String","startsWith");var Op=zt.PROPER,xp=function(t){return a(function(){return!!Mi[t]()||"​…᠎"!=="​…᠎"[t]()||Op&&Mi[t].name!==t})},Rp=_i.start,Pp=xp("trimStart")?function(){return Rp(this)}:"".trimStart;Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimLeft!==Pp},{trimLeft:Pp}),Ce({target:"String",proto:!0,name:"trimStart",forced:"".trimStart!==Pp},{trimStart:Pp}),Ze("String","trimLeft");var Ap=_i.end,jp=xp("trimEnd")?function(){return Ap(this)}:"".trimEnd;Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimRight!==jp},{trimRight:jp}),Ce({target:"String",proto:!0,name:"trimEnd",forced:"".trimEnd!==jp},{trimEnd:jp}),Ze("String","trimRight");var kp=Object.getOwnPropertyDescriptor,Ip=function(t){if(!u)return i[t];var e=kp(i,t);return e&&e.value},Tp=dt("iterator"),Mp=!a(function(){var t=new URL("b?a=1&b=2&c=3","https://a"),e=t.searchParams,r=new URLSearchParams("a=1&a=2&b=3"),n="";return t.pathname="c%20d",e.forEach(function(t,r){e.delete("b"),n+=r+t}),r.delete("a",2),r.delete("b",void 0),!e.size&&!u||!e.sort||"https://a/c%20d?a=1&c=3"!==t.href||"3"!==e.get("c")||"a=1"!==String(new URLSearchParams("?a=1"))||!e[Tp]||"a"!==new URL("https://a@b").username||"b"!==new URLSearchParams(new URLSearchParams("a=b")).get("a")||"xn--e1aybc"!==new URL("https://тест").host||"#%D0%B1"!==new URL("https://a#б").hash||"a1c3"!==n||"x"!==new URL("https://x",void 0).host}),Lp=TypeError,Up=function(t,e){if(t0;)t[o]=t[--o];o!==i++&&(t[o]=n)}else for(var a=Np(r/2),u=Cp(vo(t,0,a),e),s=Cp(vo(t,a),e),c=u.length,f=s.length,l=0,h=0;l0&&0!=(t&r);r>>=1)e++;return e},pv=function(t){var e=null;switch(t.length){case 1:e=t[0];break;case 2:e=(31&t[0])<<6|63&t[1];break;case 3:e=(15&t[0])<<12|(63&t[1])<<6|63&t[2];break;case 4:e=(7&t[0])<<18|(63&t[1])<<12|(63&t[2])<<6|63&t[3]}return e>1114111?null:e},vv=function(t){for(var e=(t=nv(t,cv," ")).length,r="",n=0;ne){r+="%",n++;continue}var i=lv(t,n+1);if(i!=i){r+=o,n++;continue}n+=2;var a=hv(i);if(0===a)o=Jp(i);else{if(1===a||a>4){r+="�",n++;continue}for(var u=[i],s=1;se||"%"!==tv(t,n));){var c=lv(t,n+1);if(c!=c){n+=3;break}if(c>191||c<128)break;rv(u,c),n+=2,s++}if(u.length!==a){r+="�";continue}var f=pv(u);null===f?r+="�":o=Qp(f)}}r+=o,n++}return r},dv=/[!'()~]|%20/g,gv={"!":"%21","'":"%27","(":"%28",")":"%29","~":"%7E","%20":"+"},yv=function(t){return gv[t]},mv=function(t){return nv(Xp(t),dv,yv)},bv=fn(function(t,e){zp(this,{type:Dp,target:Wp(t).entries,index:0,kind:e})},Bp,function(){var t=qp(this),e=t.target,r=t.index++;if(!e||r>=e.length)return t.target=null,Pn(void 0,!0);var n=e[r];switch(t.kind){case"keys":return Pn(n.key,!1);case"values":return Pn(n.value,!1)}return Pn([n.key,n.value],!1)},!0),wv=function(t){this.entries=[],this.url=null,void 0!==t&&(M(t)?this.parseObject(t):this.parseQuery("string"==typeof t?"?"===tv(t,0)?uv(t,1):t:Wr(t)))};wv.prototype={type:Bp,bindURL:function(t){this.url=t,this.update()},parseObject:function(t){var e,r,n,o,i,a,u,s=this.entries,c=Fn(t);if(c)for(r=(e=Dn(t,c)).next;!(n=f(r,e)).done;){if(o=Dn(kt(n.value)),(a=f(i=o.next,o)).done||(u=f(i,o)).done||!f(i,o).done)throw new Yp("Expected sequence with length 2");rv(s,{key:Wr(a.value),value:Wr(u.value)})}else for(var l in t)ut(t,l)&&rv(s,{key:l,value:Wr(t[l])})},parseQuery:function(t){if(t)for(var e,r,n=this.entries,o=av(t,"&"),i=0;i0?arguments[0]:void 0));u||(this.size=t.entries.length)},Ev=Sv.prototype;if(Mo(Ev,{append:function(t,e){var r=Wp(this);Up(arguments.length,2),rv(r.entries,{key:Wr(t),value:Wr(e)}),u||this.length++,r.updateURL()},delete:function(t){for(var e=Wp(this),r=Up(arguments.length,1),n=e.entries,o=Wr(t),i=r<2?void 0:arguments[1],a=void 0===i?i:Wr(i),s=0;se.key?1:-1}),t.updateURL()},forEach:function(t){for(var e,r=Wp(this).entries,n=ar(t,arguments.length>1?arguments[1]:void 0),o=0;o1?Rv(arguments[1]):{})}}),T($p)){var Pv=function(t){return ko(this,Gp),new $p(t,arguments.length>1?Rv(arguments[1]):{})};Gp.constructor=Pv,Pv.prototype=Gp,Ce({global:!0,constructor:!0,dontCallGetSet:!0,forced:!0},{Request:Pv})}}var Av={URLSearchParams:Sv,getState:Wp},jv=URLSearchParams,kv=jv.prototype,Iv=b(kv.append),Tv=b(kv.delete),Mv=b(kv.forEach),Lv=b([].push),Uv=new jv("a=1&a=2&b=3");Uv.delete("a",1),Uv.delete("b",void 0),Uv+""!="a=2"&&ie(kv,"delete",function(t){var e=arguments.length,r=e<2?void 0:arguments[1];if(e&&void 0===r)return Tv(this,t);var n=[];Mv(this,function(t,e){Lv(n,{key:e,value:t})}),Up(e,1);for(var o,i=Wr(t),a=Wr(r),u=0,s=0,c=!1,f=n.length;uo;)for(var s,c=R(arguments[o++]),l=i?$v(_e(c),i(c)):_e(c),h=l.length,p=0;h>p;)s=l[p++],u&&!f(a,c,s)||(r[s]=c[s]);return r}:qv,Gv=2147483647,Vv=/[^\0-\u007E]/,Yv=/[.\u3002\uFF0E\uFF61]/g,Xv="Overflow: input needs wider integers to process",Jv=RangeError,Qv=b(Yv.exec),Zv=Math.floor,td=String.fromCharCode,ed=b("".charCodeAt),rd=b([].join),nd=b([].push),od=b("".replace),id=b("".split),ad=b("".toLowerCase),ud=function(t){return t+22+75*(t<26)},sd=function(t,e,r){var n=0;for(t=r?Zv(t/700):t>>1,t+=Zv(t/e);t>455;)t=Zv(t/35),n+=36;return Zv(n+36*t/(t+38))},cd=function(t){var e=[];t=function(t){for(var e=[],r=0,n=t.length;r=55296&&o<=56319&&r=i&&nZv((Gv-a)/l))throw new Jv(Xv);for(a+=(f-i)*l,i=f,r=0;rGv)throw new Jv(Xv);if(n===i){for(var h=a,p=36;;){var v=p<=u?1:p>=u+26?26:p-u;if(h?@[\\\]^|]/,qd=/[\0\t\n\r #/:<>?@[\\\]^|]/,Hd=/^[\u0000-\u0020]+/,$d=/(^|[^\u0000-\u0020])[\u0000-\u0020]+$/,Kd=/[\t\n\r]/g,Gd=function(t){var e,r,n,o;if("number"==typeof t){for(e=[],r=0;r<4;r++)Td(e,t%256),t=md(t/256);return Ed(e,".")}if("object"==typeof t){for(e="",n=function(t){for(var e=null,r=1,n=null,o=0,i=0;i<8;i++)0!==t[i]?(o>r&&(e=n,r=o),n=null,o=0):(null===n&&(n=i),++o);return o>r?n:e}(t),r=0;r<8;r++)o&&0===t[r]||(o&&(o=!1),n===r?(e+=r?":":"::",o=!0):(e+=Od(t[r],16),r<7&&(e+=":")));return"["+e+"]"}return t},Vd={},Yd=Kv({},Vd,{" ":1,'"':1,"<":1,">":1,"`":1}),Xd=Kv({},Yd,{"#":1,"?":1,"{":1,"}":1}),Jd=Kv({},Xd,{"/":1,":":1,";":1,"=":1,"@":1,"[":1,"\\":1,"]":1,"^":1,"|":1}),Qd=function(t,e){var r=fd(t,0);return r>32&&r<127&&!ut(e,t)?t:encodeURIComponent(t)},Zd={ftp:21,file:null,http:80,https:443,ws:80,wss:443},tg=function(t,e){var r;return 2===t.length&&Sd(Nd,wd(t,0))&&(":"===(r=wd(t,1))||!e&&"|"===r)},eg=function(t){var e;return t.length>1&&tg(kd(t,0,2))&&(2===t.length||"/"===(e=wd(t,2))||"\\"===e||"?"===e||"#"===e)},rg=function(t){return"."===t||"%2e"===Id(t)},ng={},og={},ig={},ag={},ug={},sg={},cg={},fg={},lg={},hg={},pg={},vg={},dg={},gg={},yg={},mg={},bg={},wg={},Sg={},Eg={},Og={},xg=function(t,e,r){var n,o,i,a=Wr(t);if(e){if(o=this.parse(a))throw new gd(o);this.searchParams=null}else{if(void 0!==r&&(n=new xg(r,!0)),o=this.parse(a,null,n))throw new gd(o);(i=vd(new pd)).bindURL(this),this.searchParams=i}};xg.prototype={type:"URL",parse:function(t,e,r){var n,o,i,a,u,s=this,c=e||ng,f=0,l="",h=!1,p=!1,v=!1;for(t=Wr(t),e||(s.scheme="",s.username="",s.password="",s.host=null,s.port=null,s.path=[],s.query=null,s.fragment=null,s.cannotBeABaseURL=!1,t=Pd(t,Hd,""),t=Pd(t,$d,"$1")),t=Pd(t,Kd,""),n=Wn(t);f<=n.length;){switch(o=n[f],c){case ng:if(!o||!Sd(Nd,o)){if(e)return Md;c=ig;continue}l+=Id(o),c=og;break;case og:if(o&&(Sd(Cd,o)||"+"===o||"-"===o||"."===o))l+=Id(o);else{if(":"!==o){if(e)return Md;l="",c=ig,f=0;continue}if(e&&(s.isSpecial()!==ut(Zd,l)||"file"===l&&(s.includesCredentials()||null!==s.port)||"file"===s.scheme&&!s.host))return;if(s.scheme=l,e)return void(s.isSpecial()&&Zd[s.scheme]===s.port&&(s.port=null));l="","file"===s.scheme?c=gg:s.isSpecial()&&r&&r.scheme===s.scheme?c=ag:s.isSpecial()?c=fg:"/"===n[f+1]?(c=ug,f++):(s.cannotBeABaseURL=!0,Rd(s.path,""),c=Sg)}break;case ig:if(!r||r.cannotBeABaseURL&&"#"!==o)return Md;if(r.cannotBeABaseURL&&"#"===o){s.scheme=r.scheme,s.path=vo(r.path),s.query=r.query,s.fragment="",s.cannotBeABaseURL=!0,c=Og;break}c="file"===r.scheme?gg:sg;continue;case ag:if("/"!==o||"/"!==n[f+1]){c=sg;continue}c=lg,f++;break;case ug:if("/"===o){c=hg;break}c=wg;continue;case sg:if(s.scheme=r.scheme,o===Wv)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query;else if("/"===o||"\\"===o&&s.isSpecial())c=cg;else if("?"===o)s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query="",c=Eg;else{if("#"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.path.length--,c=wg;continue}s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og}break;case cg:if(!s.isSpecial()||"/"!==o&&"\\"!==o){if("/"!==o){s.username=r.username,s.password=r.password,s.host=r.host,s.port=r.port,c=wg;continue}c=hg}else c=lg;break;case fg:if(c=lg,"/"!==o||"/"!==wd(l,f+1))continue;f++;break;case lg:if("/"!==o&&"\\"!==o){c=hg;continue}break;case hg:if("@"===o){h&&(l="%40"+l),h=!0,i=Wn(l);for(var d=0;d65535)return Ud;s.port=s.isSpecial()&&m===Zd[s.scheme]?null:m,l=""}if(e)return;c=bg;continue}return Ud}l+=o;break;case gg:if(s.scheme="file","/"===o||"\\"===o)c=yg;else{if(!r||"file"!==r.scheme){c=wg;continue}switch(o){case Wv:s.host=r.host,s.path=vo(r.path),s.query=r.query;break;case"?":s.host=r.host,s.path=vo(r.path),s.query="",c=Eg;break;case"#":s.host=r.host,s.path=vo(r.path),s.query=r.query,s.fragment="",c=Og;break;default:eg(Ed(vo(n,f),""))||(s.host=r.host,s.path=vo(r.path),s.shortenPath()),c=wg;continue}}break;case yg:if("/"===o||"\\"===o){c=mg;break}r&&"file"===r.scheme&&!eg(Ed(vo(n,f),""))&&(tg(r.path[0],!0)?Rd(s.path,r.path[0]):s.host=r.host),c=wg;continue;case mg:if(o===Wv||"/"===o||"\\"===o||"?"===o||"#"===o){if(!e&&tg(l))c=wg;else if(""===l){if(s.host="",e)return;c=bg}else{if(a=s.parseHost(l))return a;if("localhost"===s.host&&(s.host=""),e)return;l="",c=bg}continue}l+=o;break;case bg:if(s.isSpecial()){if(c=wg,"/"!==o&&"\\"!==o)continue}else if(e||"?"!==o)if(e||"#"!==o){if(o!==Wv&&(c=wg,"/"!==o))continue}else s.fragment="",c=Og;else s.query="",c=Eg;break;case wg:if(o===Wv||"/"===o||"\\"===o&&s.isSpecial()||!e&&("?"===o||"#"===o)){if(".."===(u=Id(u=l))||"%2e."===u||".%2e"===u||"%2e%2e"===u?(s.shortenPath(),"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,"")):rg(l)?"/"===o||"\\"===o&&s.isSpecial()||Rd(s.path,""):("file"===s.scheme&&!s.path.length&&tg(l)&&(s.host&&(s.host=""),l=wd(l,0)+":"),Rd(s.path,l)),l="","file"===s.scheme&&(o===Wv||"?"===o||"#"===o))for(;s.path.length>1&&""===s.path[0];)Ad(s.path);"?"===o?(s.query="",c=Eg):"#"===o&&(s.fragment="",c=Og)}else l+=Qd(o,Xd);break;case Sg:"?"===o?(s.query="",c=Eg):"#"===o?(s.fragment="",c=Og):o!==Wv&&(s.path[0]+=Qd(o,Vd));break;case Eg:e||"#"!==o?o!==Wv&&("'"===o&&s.isSpecial()?s.query+="%27":s.query+="#"===o?"%23":Qd(o,Vd)):(s.fragment="",c=Og);break;case Og:o!==Wv&&(s.fragment+=Qd(o,Yd))}f++}},parseHost:function(t){var e,r,n;if("["===wd(t,0)){if("]"!==wd(t,t.length-1))return Ld;if(e=function(t){var e,r,n,o,i,a,u,s=[0,0,0,0,0,0,0,0],c=0,f=null,l=0,h=function(){return wd(t,l)};if(":"===h()){if(":"!==wd(t,1))return;l+=2,f=++c}for(;h();){if(8===c)return;if(":"!==h()){for(e=r=0;r<4&&Sd(zd,h());)e=16*e+yd(h(),16),l++,r++;if("."===h()){if(0===r)return;if(l-=r,c>6)return;for(n=0;h();){if(o=null,n>0){if(!("."===h()&&n<4))return;l++}if(!Sd(_d,h()))return;for(;Sd(_d,h());){if(i=yd(h(),10),null===o)o=i;else{if(0===o)return;o=10*o+i}if(o>255)return;l++}s[c]=256*s[c]+o,2!=++n&&4!==n||c++}if(4!==n)return;break}if(":"===h()){if(l++,!h())return}else if(h())return;s[c++]=e}else{if(null!==f)return;l++,f=++c}}if(null!==f)for(a=c-f,c=7;0!==c&&a>0;)u=s[c],s[c--]=s[f+a-1],s[f+--a]=u;else if(8!==c)return;return s}(kd(t,1,-1)),!e)return Ld;this.host=e}else if(this.isSpecial()){if(t=function(t){var e,r,n=[],o=id(od(ad(t),Yv,"."),".");for(e=0;e4)return t;for(r=[],n=0;n1&&"0"===wd(o,0)&&(i=Sd(Fd,o)?16:8,o=kd(o,8===i?1:2)),""===o)a=0;else{if(!Sd(10===i?Dd:8===i?Bd:zd,o))return t;a=yd(o,i)}Rd(r,a)}for(n=0;n=bd(256,5-e))return null}else if(a>255)return null;for(u=xd(r),n=0;n1?arguments[1]:void 0,n=ld(e,new xg(t,!1,r));u||(e.href=n.serialize(),e.origin=n.getOrigin(),e.protocol=n.getProtocol(),e.username=n.getUsername(),e.password=n.getPassword(),e.host=n.getHost(),e.hostname=n.getHostname(),e.port=n.getPort(),e.pathname=n.getPathname(),e.search=n.getSearch(),e.searchParams=n.getSearchParams(),e.hash=n.getHash())},Pg=Rg.prototype,Ag=function(t,e){return{get:function(){return hd(this)[t]()},set:e&&function(t){return hd(this)[e](t)},configurable:!0,enumerable:!0}};if(u&&(so(Pg,"href",Ag("serialize","setHref")),so(Pg,"origin",Ag("getOrigin")),so(Pg,"protocol",Ag("getProtocol","setProtocol")),so(Pg,"username",Ag("getUsername","setUsername")),so(Pg,"password",Ag("getPassword","setPassword")),so(Pg,"host",Ag("getHost","setHost")),so(Pg,"hostname",Ag("getHostname","setHostname")),so(Pg,"port",Ag("getPort","setPort")),so(Pg,"pathname",Ag("getPathname","setPathname")),so(Pg,"search",Ag("getSearch","setSearch")),so(Pg,"searchParams",Ag("getSearchParams")),so(Pg,"hash",Ag("getHash","setHash"))),ie(Pg,"toJSON",function(){return hd(this).serialize()},{enumerable:!0}),ie(Pg,"toString",function(){return hd(this).serialize()},{enumerable:!0}),dd){var jg=dd.createObjectURL,kg=dd.revokeObjectURL;jg&&ie(Rg,"createObjectURL",ar(jg,dd)),kg&&ie(Rg,"revokeObjectURL",ar(kg,dd))}an(Rg,"URL"),Ce({global:!0,constructor:!0,forced:!Mp,sham:!u},{URL:Rg});var Ig=L("URL"),Tg=Mp&&a(function(){Ig.canParse()}),Mg=a(function(){return 1!==Ig.canParse.length});Ce({target:"URL",stat:!0,forced:!Tg||Mg},{canParse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return!!new Ig(r,n)}catch(t){return!1}}});var Lg=L("URL");Ce({target:"URL",stat:!0,forced:!Mp},{parse:function(t){var e=Up(arguments.length,1),r=Wr(t),n=e<2||void 0===arguments[1]?void 0:Wr(arguments[1]);try{return new Lg(r,n)}catch(t){return null}}}),Ce({target:"URL",proto:!0,enumerable:!0},{toJSON:function(){return f(URL.prototype.toString,this)}});var Ug=WeakMap.prototype,Ng={WeakMap:WeakMap,set:b(Ug.set),get:b(Ug.get),has:b(Ug.has),remove:b(Ug.delete)},Cg=Ng.has,_g=function(t){return Cg(t),t},Fg=Ng.get,Bg=Ng.has,Dg=Ng.set;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{emplace:function(t,e){var r,n,o=_g(this);return Bg(o,t)?(r=Fg(o,t),"update"in e&&(r=e.update(r,t,o),Dg(o,t,r)),r):(n=e.insert(t,o),Dg(o,t,n),n)}}),Ce({target:"WeakMap",stat:!0,forced:!0},{from:ei(Ng.WeakMap,Ng.set,!0)}),Ce({target:"WeakMap",stat:!0,forced:!0},{of:ri(Ng.WeakMap,Ng.set,!0)});var zg=Ng.remove;Ce({target:"WeakMap",proto:!0,real:!0,forced:!0},{deleteAll:function(){for(var t,e=_g(this),r=!0,n=0,o=arguments.length;n2&&(n=r,M(o=arguments[2])&&"cause"in o&&_t(n,"cause",o.cause));var s=[];return Ao(t,ny,{that:s}),_t(r,"errors",s),r};dn?dn(oy,ry):Ae(oy,ry,{name:!0});var iy=oy.prototype=Ve(ry.prototype,{constructor:d(1,oy),message:d(1,""),name:d(1,"AggregateError")});Ce({global:!0,constructor:!0,arity:2},{AggregateError:oy});var ay,uy,sy,cy,fy=function(t){return _.slice(0,t.length)===t},ly=fy("Bun/")?"BUN":fy("Cloudflare-Workers")?"CLOUDFLARE":fy("Deno/")?"DENO":fy("Node.js/")?"NODE":i.Bun&&"string"==typeof Bun.version?"BUN":i.Deno&&"object"==typeof Deno.version?"DENO":"process"===E(i.process)?"NODE":i.window&&i.document?"BROWSER":"REST",hy="NODE"===ly,py=/(?:ipad|iphone|ipod).*applewebkit/i.test(_),vy=i.setImmediate,dy=i.clearImmediate,gy=i.process,yy=i.Dispatch,my=i.Function,by=i.MessageChannel,wy=i.String,Sy=0,Ey={},Oy="onreadystatechange";a(function(){ay=i.location});var xy=function(t){if(ut(Ey,t)){var e=Ey[t];delete Ey[t],e()}},Ry=function(t){return function(){xy(t)}},Py=function(t){xy(t.data)},Ay=function(t){i.postMessage(wy(t),ay.protocol+"//"+ay.host)};vy&&dy||(vy=function(t){Up(arguments.length,1);var e=T(t)?t:my(t),r=vo(arguments,1);return Ey[++Sy]=function(){Ra(e,void 0,r)},uy(Sy),Sy},dy=function(t){delete Ey[t]},hy?uy=function(t){gy.nextTick(Ry(t))}:yy&&yy.now?uy=function(t){yy.now(Ry(t))}:by&&!py?(cy=(sy=new by).port2,sy.port1.onmessage=Py,uy=ar(cy.postMessage,cy)):i.addEventListener&&T(i.postMessage)&&!i.importScripts&&ay&&"file:"!==ay.protocol&&!a(Ay)?(uy=Ay,i.addEventListener("message",Py,!1)):uy=Oy in Et("script")?function(t){De.appendChild(Et("script"))[Oy]=function(){De.removeChild(this),xy(t)}}:function(t){setTimeout(Ry(t),0)});var jy={set:vy,clear:dy},ky=function(){this.head=null,this.tail=null};ky.prototype={add:function(t){var e={item:t,next:null},r=this.tail;r?r.next=e:this.head=e,this.tail=e},get:function(){var t=this.head;if(t)return null===(this.head=t.next)&&(this.tail=null),t.item}};var Iy,Ty,My,Ly,Uy,Ny=ky,Cy=/ipad|iphone|ipod/i.test(_)&&"undefined"!=typeof Pebble,_y=/web0s(?!.*chrome)/i.test(_),Fy=jy.set,By=i.MutationObserver||i.WebKitMutationObserver,Dy=i.document,zy=i.process,Wy=i.Promise,qy=Ip("queueMicrotask");if(!qy){var Hy=new Ny,$y=function(){var t,e;for(hy&&(t=zy.domain)&&t.exit();e=Hy.get();)try{e()}catch(t){throw Hy.head&&Iy(),t}t&&t.enter()};py||hy||_y||!By||!Dy?!Cy&&Wy&&Wy.resolve?((Ly=Wy.resolve(void 0)).constructor=Wy,Uy=ar(Ly.then,Ly),Iy=function(){Uy($y)}):hy?Iy=function(){zy.nextTick($y)}:(Fy=ar(Fy,i),Iy=function(){Fy($y)}):(Ty=!0,My=Dy.createTextNode(""),new By($y).observe(My,{characterData:!0}),Iy=function(){My.data=Ty=!Ty}),qy=function(t){Hy.head||Iy(),Hy.add(t)}}var Ky,Gy,Vy,Yy=qy,Xy=function(t){try{return{error:!1,value:t()}}catch(t){return{error:!0,value:t}}},Jy=i.Promise,Qy=dt("species"),Zy=!1,tm=T(i.PromiseRejectionEvent),em=Ue("Promise",function(){var t=Kt(Jy),e=t!==String(Jy);if(!e&&66===W)return!0;if(!W||W<51||!/native code/.test(t)){var r=new Jy(function(t){t(1)}),n=function(t){t(function(){},function(){})};if((r.constructor={})[Qy]=n,!(Zy=r.then(function(){})instanceof n))return!0}return!(e||"BROWSER"!==ly&&"DENO"!==ly||tm)}),rm={CONSTRUCTOR:em,REJECTION_EVENT:tm,SUBCLASSING:Zy},nm=TypeError,om=function(t){var e,r;this.promise=new t(function(t,n){if(void 0!==e||void 0!==r)throw new nm("Bad Promise constructor");e=t,r=n}),this.resolve=J(e),this.reject=J(r)},im={f:function(t){return new om(t)}},am=jy.set,um="Promise",sm=rm.CONSTRUCTOR,cm=rm.REJECTION_EVENT,fm=rm.SUBCLASSING,lm=ne.getterFor(um),hm=ne.set,pm=Jy&&Jy.prototype,vm=Jy,dm=pm,gm=i.TypeError,ym=i.document,mm=i.process,bm=im.f,wm=bm,Sm=!!(ym&&ym.createEvent&&i.dispatchEvent),Em="unhandledrejection",Om=function(t){var e;return!(!M(t)||!T(e=t.then))&&e},xm=function(t,e){var r,n,o,i=e.value,a=1===e.state,u=a?t.ok:t.fail,s=t.resolve,c=t.reject,l=t.domain;try{u?(a||(2===e.rejection&&km(e),e.rejection=1),!0===u?r=i:(l&&l.enter(),r=u(i),l&&(l.exit(),o=!0)),r===t.promise?c(new gm("Promise-chain cycle")):(n=Om(r))?f(n,r,s,c):s(r)):c(i)}catch(t){l&&!o&&l.exit(),c(t)}},Rm=function(t,e){t.notified||(t.notified=!0,Yy(function(){for(var r,n=t.reactions;r=n.get();)xm(r,t);t.notified=!1,e&&!t.rejection&&Am(t)}))},Pm=function(t,e,r){var n,o;Sm?((n=ym.createEvent("Event")).promise=e,n.reason=r,n.initEvent(t,!1,!0),i.dispatchEvent(n)):n={promise:e,reason:r},!cm&&(o=i["on"+t])?o(n):t===Em&&function(t,e){try{1===arguments.length?console.error(t):console.error(t,e)}catch(t){}}("Unhandled promise rejection",r)},Am=function(t){f(am,i,function(){var e,r=t.facade,n=t.value;if(jm(t)&&(e=Xy(function(){hy?mm.emit("unhandledRejection",n,r):Pm(Em,r,n)}),t.rejection=hy||jm(t)?2:1,e.error))throw e.value})},jm=function(t){return 1!==t.rejection&&!t.parent},km=function(t){f(am,i,function(){var e=t.facade;hy?mm.emit("rejectionHandled",e):Pm("rejectionhandled",e,t.value)})},Im=function(t,e,r){return function(n){t(e,n,r)}},Tm=function(t,e,r){t.done||(t.done=!0,r&&(t=r),t.value=e,t.state=2,Rm(t,!0))},Mm=function(t,e,r){if(!t.done){t.done=!0,r&&(t=r);try{if(t.facade===e)throw new gm("Promise can't be resolved itself");var n=Om(e);n?Yy(function(){var r={done:!1};try{f(n,e,Im(Mm,r,t),Im(Tm,r,t))}catch(e){Tm(r,e,t)}}):(t.value=e,t.state=1,Rm(t,!1))}catch(e){Tm({done:!1},e,t)}}};if(sm&&(vm=function(t){ko(this,dm),J(t),f(Ky,this);var e=lm(this);try{t(Im(Mm,e),Im(Tm,e))}catch(t){Tm(e,t)}},(Ky=function(t){hm(this,{type:um,done:!1,notified:!1,parent:!1,reactions:new Ny,rejection:!1,state:0,value:null})}).prototype=ie(dm=vm.prototype,"then",function(t,e){var r=lm(this),n=bm(Cc(this,vm));return r.parent=!0,n.ok=!T(t)||t,n.fail=T(e)&&e,n.domain=hy?mm.domain:void 0,0===r.state?r.reactions.add(n):Yy(function(){xm(n,r)}),n.promise}),Gy=function(){var t=new Ky,e=lm(t);this.promise=t,this.resolve=Im(Mm,e),this.reject=Im(Tm,e)},im.f=bm=function(t){return t===vm||void 0===t?new Gy(t):wm(t)},T(Jy)&&pm!==Object.prototype)){Vy=pm.then,fm||ie(pm,"then",function(t,e){var r=this;return new vm(function(t,e){f(Vy,r,t,e)}).then(t,e)},{unsafe:!0});try{delete pm.constructor}catch(t){}dn&&dn(pm,dm)}Ce({global:!0,constructor:!0,wrap:!0,forced:sm},{Promise:vm}),an(vm,um,!1),Uo(um);var Lm=rm.CONSTRUCTOR||!Gn(function(t){Jy.all(t).then(void 0,function(){})});Ce({target:"Promise",stat:!0,forced:Lm},{all:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),i=[],a=0,u=1;Ao(t,function(t){var s=a++,c=!1;u++,f(r,e,t).then(function(t){c||(c=!0,i[s]=t,--u||n(i))},o)}),--u||n(i)});return i.error&&o(i.value),r.promise}});var Um=Jy&&Jy.prototype;if(Ce({target:"Promise",proto:!0,forced:rm.CONSTRUCTOR,real:!0},{catch:function(t){return this.then(void 0,t)}}),T(Jy)){var Nm=L("Promise").prototype.catch;Um.catch!==Nm&&ie(Um,"catch",Nm,{unsafe:!0})}Ce({target:"Promise",stat:!0,forced:Lm},{race:function(t){var e=this,r=im.f(e),n=r.reject,o=Xy(function(){var o=J(e.resolve);Ao(t,function(t){f(o,e,t).then(r.resolve,n)})});return o.error&&n(o.value),r.promise}}),Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{reject:function(t){var e=im.f(this);return(0,e.reject)(t),e.promise}});var Cm=function(t,e){if(kt(t),M(e)&&e.constructor===t)return e;var r=im.f(t);return(0,r.resolve)(e),r.promise};Ce({target:"Promise",stat:!0,forced:rm.CONSTRUCTOR},{resolve:function(t){return Cm(this,t)}}),Ce({target:"Promise",stat:!0,forced:Lm},{allSettled:function(t){var e=this,r=im.f(e),n=r.resolve,o=r.reject,i=Xy(function(){var r=J(e.resolve),o=[],i=0,a=1;Ao(t,function(t){var u=i++,s=!1;a++,f(r,e,t).then(function(t){s||(s=!0,o[u]={status:"fulfilled",value:t},--a||n(o))},function(t){s||(s=!0,o[u]={status:"rejected",reason:t},--a||n(o))})}),--a||n(o)});return i.error&&o(i.value),r.promise}});var _m="No one promise resolved";Ce({target:"Promise",stat:!0,forced:Lm},{any:function(t){var e=this,r=L("AggregateError"),n=im.f(e),o=n.resolve,i=n.reject,a=Xy(function(){var n=J(e.resolve),a=[],u=0,s=1,c=!1;Ao(t,function(t){var l=u++,h=!1;s++,f(n,e,t).then(function(t){h||c||(c=!0,o(t))},function(t){h||c||(h=!0,a[l]=t,--s||i(new r(a,_m)))})}),--s||i(new r(a,_m))});return a.error&&i(a.value),n.promise}}),Ce({target:"Promise",stat:!0},{withResolvers:function(){var t=im.f(this);return{promise:t.promise,resolve:t.resolve,reject:t.reject}}});var Fm=Jy&&Jy.prototype,Bm=!!Jy&&a(function(){Fm.finally.call({then:function(){}},function(){})});if(Ce({target:"Promise",proto:!0,real:!0,forced:Bm},{finally:function(t){var e=Cc(this,L("Promise")),r=T(t);return this.then(r?function(r){return Cm(e,t()).then(function(){return r})}:t,r?function(r){return Cm(e,t()).then(function(){throw r})}:t)}}),T(Jy)){var Dm=L("Promise").prototype.finally;Fm.finally!==Dm&&ie(Fm,"finally",Dm,{unsafe:!0})}var zm=i.Promise,Wm=!1,qm=!zm||!zm.try||Xy(function(){zm.try(function(t){Wm=8===t},8)}).error||!Wm;Ce({target:"Promise",stat:!0,forced:qm},{try:function(t){var e=arguments.length>1?vo(arguments,1):[],r=im.f(this),n=Xy(function(){return Ra(J(t),void 0,e)});return(n.error?r.reject:r.resolve)(n.value),r.promise}}),Ze("Promise","finally");var Hm="URLSearchParams"in self,$m="Symbol"in self&&"iterator"in Symbol,Km="FileReader"in self&&"Blob"in self&&function(){try{return new Blob,!0}catch(t){return!1}}(),Gm="FormData"in self,Vm="ArrayBuffer"in self;if(Vm)var Ym=["[object Int8Array]","[object Uint8Array]","[object Uint8ClampedArray]","[object Int16Array]","[object Uint16Array]","[object Int32Array]","[object Uint32Array]","[object Float32Array]","[object Float64Array]"],Xm=ArrayBuffer.isView||function(t){return t&&Ym.indexOf(Object.prototype.toString.call(t))>-1};function Jm(t){if("string"!=typeof t&&(t=String(t)),/[^a-z0-9\-#$%&'*+.^_`|~]/i.test(t))throw new TypeError("Invalid character in header field name");return t.toLowerCase()}function Qm(t){return"string"!=typeof t&&(t=String(t)),t}function Zm(t){var e={next:function(){var e=t.shift();return{done:void 0===e,value:e}}};return $m&&(e[Symbol.iterator]=function(){return e}),e}function tb(t){this.map={},t instanceof tb?t.forEach(function(t,e){this.append(e,t)},this):Array.isArray(t)?t.forEach(function(t){this.append(t[0],t[1])},this):t&&Object.getOwnPropertyNames(t).forEach(function(e){this.append(e,t[e])},this)}function eb(t){if(t.bodyUsed)return Promise.reject(new TypeError("Already read"));t.bodyUsed=!0}function rb(t){return new Promise(function(e,r){t.onload=function(){e(t.result)},t.onerror=function(){r(t.error)}})}function nb(t){var e=new FileReader,r=rb(e);return e.readAsArrayBuffer(t),r}function ob(t){if(t.slice)return t.slice(0);var e=new Uint8Array(t.byteLength);return e.set(new Uint8Array(t)),e.buffer}function ib(){return this.bodyUsed=!1,this._initBody=function(t){var e;this._bodyInit=t,t?"string"==typeof t?this._bodyText=t:Km&&Blob.prototype.isPrototypeOf(t)?this._bodyBlob=t:Gm&&FormData.prototype.isPrototypeOf(t)?this._bodyFormData=t:Hm&&URLSearchParams.prototype.isPrototypeOf(t)?this._bodyText=t.toString():Vm&&Km&&(e=t)&&DataView.prototype.isPrototypeOf(e)?(this._bodyArrayBuffer=ob(t.buffer),this._bodyInit=new Blob([this._bodyArrayBuffer])):Vm&&(ArrayBuffer.prototype.isPrototypeOf(t)||Xm(t))?this._bodyArrayBuffer=ob(t):this._bodyText=t=Object.prototype.toString.call(t):this._bodyText="",this.headers.get("content-type")||("string"==typeof t?this.headers.set("content-type","text/plain;charset=UTF-8"):this._bodyBlob&&this._bodyBlob.type?this.headers.set("content-type",this._bodyBlob.type):Hm&&URLSearchParams.prototype.isPrototypeOf(t)&&this.headers.set("content-type","application/x-www-form-urlencoded;charset=UTF-8"))},Km&&(this.blob=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return Promise.resolve(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(new Blob([this._bodyArrayBuffer]));if(this._bodyFormData)throw new Error("could not read FormData body as blob");return Promise.resolve(new Blob([this._bodyText]))},this.arrayBuffer=function(){return this._bodyArrayBuffer?eb(this)||Promise.resolve(this._bodyArrayBuffer):this.blob().then(nb)}),this.text=function(){var t=eb(this);if(t)return t;if(this._bodyBlob)return function(t){var e=new FileReader,r=rb(e);return e.readAsText(t),r}(this._bodyBlob);if(this._bodyArrayBuffer)return Promise.resolve(function(t){for(var e=new Uint8Array(t),r=new Array(e.length),n=0;n-1?e:t}(e.method||this.method||"GET"),this.mode=e.mode||this.mode||null,this.signal=e.signal||this.signal,this.referrer=null,("GET"===this.method||"HEAD"===this.method)&&r)throw new TypeError("Body not allowed for GET or HEAD requests");this._initBody(r)}function sb(t){var e=new FormData;return t.trim().split("&").forEach(function(t){if(t){var r=t.split("="),n=r.shift().replace(/\+/g," "),o=r.join("=").replace(/\+/g," ");e.append(decodeURIComponent(n),decodeURIComponent(o))}}),e}function cb(t,e){e||(e={}),this.type="default",this.status=void 0===e.status?200:e.status,this.ok=this.status>=200&&this.status<300,this.statusText="statusText"in e?e.statusText:"OK",this.headers=new tb(e.headers),this.url=e.url||"",this._initBody(t)}ub.prototype.clone=function(){return new ub(this,{body:this._bodyInit})},ib.call(ub.prototype),ib.call(cb.prototype),cb.prototype.clone=function(){return new cb(this._bodyInit,{status:this.status,statusText:this.statusText,headers:new tb(this.headers),url:this.url})},cb.error=function(){var t=new cb(null,{status:0,statusText:""});return t.type="error",t};var fb=[301,302,303,307,308];cb.redirect=function(t,e){if(-1===fb.indexOf(e))throw new RangeError("Invalid status code");return new cb(null,{status:e,headers:{location:t}})};var lb=self.DOMException;try{new lb}catch(t){(lb=function(t,e){this.message=t,this.name=e;var r=Error(t);this.stack=r.stack}).prototype=Object.create(Error.prototype),lb.prototype.constructor=lb}function hb(t,e){return new Promise(function(r,n){var o=new ub(t,e);if(o.signal&&o.signal.aborted)return n(new lb("Aborted","AbortError"));var i=new XMLHttpRequest;function a(){i.abort()}i.onload=function(){var t,e,n={status:i.status,statusText:i.statusText,headers:(t=i.getAllResponseHeaders()||"",e=new tb,t.replace(/\r?\n[\t ]+/g," ").split(/\r?\n/).forEach(function(t){var r=t.split(":"),n=r.shift().trim();if(n){var o=r.join(":").trim();e.append(n,o)}}),e)};n.url="responseURL"in i?i.responseURL:n.headers.get("X-Request-URL"),r(new cb("response"in i?i.response:i.responseText,n))},i.onerror=function(){n(new TypeError("Network request failed"))},i.ontimeout=function(){n(new TypeError("Network request failed"))},i.onabort=function(){n(new lb("Aborted","AbortError"))},i.open(o.method,o.url,!0),"include"===o.credentials?i.withCredentials=!0:"omit"===o.credentials&&(i.withCredentials=!1),"responseType"in i&&Km&&(i.responseType="blob"),o.headers.forEach(function(t,e){i.setRequestHeader(e,t)}),o.signal&&(o.signal.addEventListener("abort",a),i.onreadystatechange=function(){4===i.readyState&&o.signal.removeEventListener("abort",a)}),i.send(void 0===o._bodyInit?null:o._bodyInit)})}hb.polyfill=!0,self.fetch||(self.fetch=hb,self.Headers=tb,self.Request=ub,self.Response=cb);var pb=Object.getOwnPropertySymbols,vb=Object.prototype.hasOwnProperty,db=Object.prototype.propertyIsEnumerable,gb=function(){try{if(!Object.assign)return!1;var t=new String("abc");if(t[5]="de","5"===Object.getOwnPropertyNames(t)[0])return!1;for(var e={},r=0;r<10;r++)e["_"+String.fromCharCode(r)]=r;if("0123456789"!==Object.getOwnPropertyNames(e).map(function(t){return e[t]}).join(""))return!1;var n={};return"abcdefghijklmnopqrst".split("").forEach(function(t){n[t]=t}),"abcdefghijklmnopqrst"===Object.keys(Object.assign({},n)).join("")}catch(t){return!1}}()?Object.assign:function(t,e){for(var r,n,o=function(t){if(null==t)throw new TypeError("Object.assign cannot be called with null or undefined");return Object(t)}(t),i=1;i{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o](a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var u=1/0,i=0;i=a)&&Object.keys(r.O).every(e=>r.O[e](o[s]))?o.splice(s--,1):(c=!1,a{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>534===e?"static/chunks/534-bbb1ba4032b129a8.js":920===e?"static/chunks/920-aed94374b29ba4e2.js":"static/chunks/"+e+"."+({323:"3d40b3f10e4f6645",477:"c67b77b0908a8d3c",728:"0a8f45173f3a857c",886:"9b81414a450ef20f",996:"84f6c850bac17e1e"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var u,c,s=document.getElementsByTagName("script"),d=0;d{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(f.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=f.bind(null,u.onerror),u.onload=f.bind(null,u.onload),c&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/docs-site/_next/",(()=>{var e={68:0,605:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^6(05|8)$/.test(t))e[t]=0;else{var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),u=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",u.name="ChunkLoadError",u.type=a,u.request=i,n[1](u)}},"chunk-"+t,t)}},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,u,c]=o,s=0;if(i.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(c)var d=c(r)}for(t&&t(o);sli):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:.375em}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *)){padding-inline-start:0}.prose :where(.prose>ul>li p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(.prose>ul>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ul>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(.prose>ol>li>p:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em}.prose :where(.prose>ol>li>p:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:1.25em}.prose :where(ul ul,ul ol,ol ul,ol ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.75em;margin-bottom:.75em}.prose :where(dl):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(dt):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.25em;font-weight:600}.prose :where(dd):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:.5em;padding-inline-start:1.625em}.prose :where(hr):not(:where([class~=not-prose],[class~=not-prose] *)){border-color:var(--tw-prose-hr);border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose :where(p):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em}.prose :where(strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-bold);font-weight:500}.prose :where(a strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(blockquote strong):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(ol):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:1.25em;margin-bottom:1.25em;padding-inline-start:1.625em;list-style-type:decimal}.prose :where(ol[type=A]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=A s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-alpha}.prose :where(ol[type=a s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-alpha}.prose :where(ol[type=I]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type=I s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:upper-roman}.prose :where(ol[type=i s]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:lower-roman}.prose :where(ol[type="1"]):not(:where([class~=not-prose],[class~=not-prose] *)){list-style-type:decimal}.prose :where(ol>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-counters);font-weight:400}.prose :where(ul>li):not(:where([class~=not-prose],[class~=not-prose] *))::marker{color:var(--tw-prose-bullets)}.prose :where(blockquote):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-quotes);border-inline-start-width:.25rem;border-inline-start-color:var(--tw-prose-quote-borders);quotes:"“""”""‘""’";margin-top:1.6em;margin-bottom:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500}.prose :where(blockquote p:first-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):before{content:open-quote}.prose :where(blockquote p:last-of-type):not(:where([class~=not-prose],[class~=not-prose] *)):after{content:close-quote}.prose :where(h1):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:800;font-size:var(--text-3xl);margin-top:0;margin-bottom:.888889em;line-height:1.11111}.prose :where(h1 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:900}.prose :where(h2):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:2em;margin-bottom:1em;font-size:1.5em;font-weight:600;line-height:1.33333}.prose :where(h2 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:800}.prose :where(h3):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.6em;margin-bottom:.6em;font-size:1.25em;font-weight:600;line-height:1.6}.prose :where(h3 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h4):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);margin-top:1.5em;margin-bottom:.5em;font-weight:600;line-height:1.5}.prose :where(h4 strong):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-weight:700}.prose :where(h2+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h3+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4+*):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(hr+*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(picture):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em;display:block}.prose :where(picture>img):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(video):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(kbd):not(:where([class~=not-prose],[class~=not-prose] *)){padding-top:.1875em;padding-inline-end:.375em;color:var(--tw-prose-kbd);box-shadow:0 0 0 1px var(--tw-prose-kbd-shadows),0 3px 0 var(--tw-prose-kbd-shadows);padding-bottom:.1875em;border-radius:.3125rem;padding-inline-start:.375em;font-family:inherit;font-size:.875em;font-weight:500}.prose :where(code):not(:where([class~=not-prose],[class~=not-prose] *)){border:1px solid;border-color:var(--color-fd-border);background:var(--color-fd-muted);color:var(--tw-prose-code);border-radius:5px;padding:3px;font-size:13px;font-weight:400}.prose :where(a code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(h1 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:var(--text-2xl)}.prose :where(h2 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.875em}.prose :where(h3 code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit;font-size:.9em}.prose :where(blockquote code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(h4 code):not(:where([class~=not-prose],[class~=not-prose] *)),.prose :where(thead th code):not(:where([class~=not-prose],[class~=not-prose] *)){color:inherit}.prose :where(table):not(:where([class~=not-prose],[class~=not-prose] *)){table-layout:auto;border-collapse:separate;border-spacing:0;background:var(--color-fd-card);border-radius:var(--radius-lg);border:1px solid var(--color-fd-border);width:100%;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.71429;overflow:hidden}.prose :where(thead th):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-headings);font-weight:600}.prose :where(figure):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:2em;margin-bottom:2em}.prose :where(figure>*):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0;margin-bottom:0}.prose :where(figcaption):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-captions);margin-top:.857143em;font-size:.875em;line-height:1.42857}.prose :where(a:not([data-card])):not(:where([class~=not-prose],[class~=not-prose] *)){color:var(--tw-prose-links);text-underline-offset:3.5px;text-decoration:underline;-webkit-text-decoration-color:var(--color-fd-primary);text-decoration-color:var(--color-fd-primary);font-weight:500;text-decoration-thickness:1.5px;transition:opacity .2s}.prose :where(a:not([data-card]):hover):not(:where([class~=not-prose],[class~=not-prose] *)){opacity:.8}@supports (color:color-mix(in lab,red,red)){.prose{--tw-prose-body:color-mix(in oklab,var(--color-fd-foreground)90%,transparent);--tw-prose-kbd-shadows:color-mix(in oklab,var(--color-fd-primary)50%,transparent)}}.prose :where(.prose>:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-top:0}.prose :where(.prose>:last-child):not(:where([class~=not-prose],[class~=not-prose] *)){margin-bottom:0}.prose :where(th):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start;padding:calc(var(--spacing)*2.5);border-inline-start:1px solid var(--color-fd-border);background:var(--color-fd-muted)}.prose :where(th:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start:none}.prose :where(th:not(tr:last-child *),td:not(tr:last-child *)):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom:1px solid var(--color-fd-border)}.prose :where(td):not(:where([class~=not-prose],[class~=not-prose] *)){text-align:start;border-inline-start:1px solid var(--color-fd-border);padding:calc(var(--spacing)*2.5)}.prose :where(td:first-child):not(:where([class~=not-prose],[class~=not-prose] *)){border-inline-start:none}.prose :where(tfoot th,tfoot td):not(:where([class~=not-prose],[class~=not-prose] *)){border-top-width:1px;border-top-color:var(--tw-prose-th-borders)}.prose :where(thead th,thead td):not(:where([class~=not-prose],[class~=not-prose] *)){border-bottom-width:1px;border-bottom-color:var(--tw-prose-th-borders)}.prose-no-margin>:first-child{margin-top:0}.prose-no-margin>:last-child{margin-bottom:0}.mt-\(--fd-nav-height\){margin-top:var(--fd-nav-height)}.mt-\(--fd-top\){margin-top:var(--fd-top)}.mt-2{margin-top:calc(var(--spacing)*2)}.mt-8{margin-top:calc(var(--spacing)*8)}.mt-auto{margin-top:auto}.-mb-1{margin-bottom:calc(var(--spacing)*-1)}.mb-1{margin-bottom:calc(var(--spacing)*1)}.mb-2{margin-bottom:calc(var(--spacing)*2)}.mb-4{margin-bottom:calc(var(--spacing)*4)}.mb-8{margin-bottom:calc(var(--spacing)*8)}.mb-auto{margin-bottom:auto}.box-content{box-sizing:content-box}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-flex{display:inline-flex}.table{display:table}.size-3{width:calc(var(--spacing)*3);height:calc(var(--spacing)*3)}.size-3\.5{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.size-4{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.size-4\.5{width:calc(var(--spacing)*4.5);height:calc(var(--spacing)*4.5)}.size-5{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.size-6\.5{width:calc(var(--spacing)*6.5);height:calc(var(--spacing)*6.5)}.size-full{width:100%;height:100%}.h-\(--fd-height\){height:var(--fd-height)}.h-\(--fd-toc-height\){height:var(--fd-toc-height)}.h-\(--radix-navigation-menu-viewport-height\){height:var(--radix-navigation-menu-viewport-height)}.h-1\.5{height:calc(var(--spacing)*1.5)}.h-10{height:calc(var(--spacing)*10)}.h-14{height:calc(var(--spacing)*14)}.h-full{height:100%}.max-h-\[50vh\]{max-height:50vh}.max-h-\[400px\]{max-height:400px}.max-h-\[460px\]{max-height:460px}.max-h-\[600px\]{max-height:600px}.min-h-0{min-height:calc(var(--spacing)*0)}.min-h-10{min-height:calc(var(--spacing)*10)}.min-h-screen{min-height:100vh}.w-\(--fd-toc-width\){width:var(--fd-toc-width)}.w-\(--radix-popover-trigger-width\){width:var(--radix-popover-trigger-width)}.w-0{width:calc(var(--spacing)*0)}.w-1\.5{width:calc(var(--spacing)*1.5)}.w-1\/4{width:25%}.w-\[30\%\]{width:30%}.w-\[45\%\]{width:45%}.w-\[98vw\]{width:98vw}.w-fit{width:fit-content}.w-full{width:100%}.w-px{width:1px}.max-w-\[98vw\]{max-width:98vw}.max-w-\[240px\]{max-width:240px}.max-w-\[400px\]{max-width:400px}.max-w-\[860px\]{max-width:860px}.max-w-\[1120px\]{max-width:1120px}.max-w-fd-container{max-width:var(--spacing-fd-container)}.max-w-full{max-width:100%}.max-w-screen-sm{max-width:var(--breakpoint-sm)}.max-w-sm{max-width:var(--container-sm)}.min-w-0{min-width:calc(var(--spacing)*0)}.min-w-\[220px\]{min-width:220px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.origin-\[top_center\]{transform-origin:top}.-translate-x-1\/2{--tw-translate-x:calc(calc(1/2*100%)*-1)}.-translate-x-1\/2,.-translate-y-1\/2{translate:var(--tw-translate-x)var(--tw-translate-y)}.-translate-y-1\/2{--tw-translate-y:calc(calc(1/2*100%)*-1)}.-translate-y-full{--tw-translate-y:-100%}.-translate-y-full,.translate-y-0\.5{translate:var(--tw-translate-x)var(--tw-translate-y)}.translate-y-0\.5{--tw-translate-y:calc(var(--spacing)*.5)}.translate-y-full{--tw-translate-y:100%;translate:var(--tw-translate-x)var(--tw-translate-y)}.scale-0{--tw-scale-x:0%;--tw-scale-y:0%;--tw-scale-z:0%;scale:var(--tw-scale-x)var(--tw-scale-y)}.-rotate-90{rotate:-90deg}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.animate-fd-fade-in{animation:var(--animate-fd-fade-in)}.animate-spin{animation:var(--animate-spin)}.scroll-m-20{scroll-margin:calc(var(--spacing)*20)}.scroll-m-28{scroll-margin:calc(var(--spacing)*28)}.list-none{list-style-type:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-row{flex-direction:row}.flex-row-reverse{flex-direction:row-reverse}.flex-wrap{flex-wrap:wrap}.items-center{align-items:center}.items-end{align-items:flex-end}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:flex-end}.gap-0\.5{gap:calc(var(--spacing)*.5)}.gap-1{gap:calc(var(--spacing)*1)}.gap-1\.5{gap:calc(var(--spacing)*1.5)}.gap-2{gap:calc(var(--spacing)*2)}.gap-2\.5{gap:calc(var(--spacing)*2.5)}.gap-3{gap:calc(var(--spacing)*3)}.gap-4{gap:calc(var(--spacing)*4)}.gap-6{gap:calc(var(--spacing)*6)}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px*var(--tw-divide-y-reverse));border-bottom-width:calc(1px*calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-fd-border>:not(:last-child)){border-color:var(--color-fd-border)}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-visible{overflow:visible}.overflow-x-auto{overflow-x:auto}.overflow-y-auto{overflow-y:auto}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.rounded-xl{border-radius:calc(var(--radius) + 4px)}.border{border-style:var(--tw-border-style);border-width:1px}.border-s{border-inline-start-style:var(--tw-border-style);border-inline-start-width:1px}.border-s-2{border-inline-start-style:var(--tw-border-style);border-inline-start-width:2px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-l{border-left-style:var(--tw-border-style);border-left-width:1px}.border-fd-foreground\/10{border-color:#0a0a0a1a}@supports (color:color-mix(in lab,red,red)){.border-fd-foreground\/10{border-color:color-mix(in oklab,var(--color-fd-foreground)10%,transparent)}}.border-fd-primary{border-color:var(--color-fd-primary)}.border-transparent{border-color:#0000}.border-s-blue-500\/50{border-inline-start-color:#3080ff80}@supports (color:color-mix(in lab,red,red)){.border-s-blue-500\/50{border-inline-start-color:color-mix(in oklab,var(--color-blue-500)50%,transparent)}}.border-s-orange-500\/50{border-inline-start-color:#fe6e0080}@supports (color:color-mix(in lab,red,red)){.border-s-orange-500\/50{border-inline-start-color:color-mix(in oklab,var(--color-orange-500)50%,transparent)}}.border-s-red-500\/50{border-inline-start-color:#fb2c3680}@supports (color:color-mix(in lab,red,red)){.border-s-red-500\/50{border-inline-start-color:color-mix(in oklab,var(--color-red-500)50%,transparent)}}.bg-\(--shiki-light-bg\){background-color:var(--shiki-light-bg)}.bg-black\/30{background-color:#0000004d}@supports (color:color-mix(in lab,red,red)){.bg-black\/30{background-color:color-mix(in oklab,var(--color-black)30%,transparent)}}.bg-fd-accent{background-color:var(--color-fd-accent)}.bg-fd-background{background-color:var(--color-fd-background)}.bg-fd-background\/80{background-color:#f5f5f5cc}@supports (color:color-mix(in lab,red,red)){.bg-fd-background\/80{background-color:color-mix(in oklab,var(--color-fd-background)80%,transparent)}}.bg-fd-border{background-color:var(--color-fd-border)}.bg-fd-card{background-color:var(--color-fd-card)}.bg-fd-foreground\/10{background-color:#0a0a0a1a}@supports (color:color-mix(in lab,red,red)){.bg-fd-foreground\/10{background-color:color-mix(in oklab,var(--color-fd-foreground)10%,transparent)}}.bg-fd-muted{background-color:var(--color-fd-muted)}.bg-fd-popover{background-color:var(--color-fd-popover)}.bg-fd-primary{background-color:var(--color-fd-primary)}.bg-fd-primary\/10{background-color:#1717171a}@supports (color:color-mix(in lab,red,red)){.bg-fd-primary\/10{background-color:color-mix(in oklab,var(--color-fd-primary)10%,transparent)}}.bg-fd-secondary{background-color:var(--color-fd-secondary)}.bg-fd-secondary\/50{background-color:#ededed80}@supports (color:color-mix(in lab,red,red)){.bg-fd-secondary\/50{background-color:color-mix(in oklab,var(--color-fd-secondary)50%,transparent)}}.bg-transparent{background-color:#0000}.\[mask-image\:linear-gradient\(to_bottom\,transparent\,white_16px\,white_calc\(100\%-16px\)\,transparent\)\]{-webkit-mask-image:linear-gradient(#0000,#fff 16px calc(100% - 16px),#0000);mask-image:linear-gradient(#0000,#fff 16px calc(100% - 16px),#0000)}.fill-blue-500{fill:var(--color-blue-500)}.fill-orange-500{fill:var(--color-orange-500)}.fill-red-500{fill:var(--color-red-500)}.stroke-current\/25{stroke:currentColor}@supports (color:color-mix(in lab,red,red)){.stroke-current\/25{stroke:color-mix(in oklab,currentcolor 25%,transparent)}}.stroke-fd-foreground\/10{stroke:#0a0a0a1a}@supports (color:color-mix(in lab,red,red)){.stroke-fd-foreground\/10{stroke:color-mix(in oklab,var(--color-fd-foreground)10%,transparent)}}.p-0{padding:calc(var(--spacing)*0)}.p-0\.5{padding:calc(var(--spacing)*.5)}.p-1{padding:calc(var(--spacing)*1)}.p-1\.5{padding:calc(var(--spacing)*1.5)}.p-2{padding:calc(var(--spacing)*2)}.p-3{padding:calc(var(--spacing)*3)}.p-4{padding:calc(var(--spacing)*4)}.p-px{padding:1px}.px-\(--fd-layout-offset\){padding-inline:var(--fd-layout-offset)}.px-1\.5{padding-inline:calc(var(--spacing)*1.5)}.px-2{padding-inline:calc(var(--spacing)*2)}.px-3{padding-inline:calc(var(--spacing)*3)}.px-4{padding-inline:calc(var(--spacing)*4)}.px-6{padding-inline:calc(var(--spacing)*6)}.py-0\.5{padding-block:calc(var(--spacing)*.5)}.py-1\.5{padding-block:calc(var(--spacing)*1.5)}.py-2{padding-block:calc(var(--spacing)*2)}.py-2\.5{padding-block:calc(var(--spacing)*2.5)}.py-3{padding-block:calc(var(--spacing)*3)}.py-4{padding-block:calc(var(--spacing)*4)}.py-12{padding-block:calc(var(--spacing)*12)}.ps-2{padding-inline-start:calc(var(--spacing)*2)}.ps-3{padding-inline-start:calc(var(--spacing)*3)}.ps-6{padding-inline-start:calc(var(--spacing)*6)}.ps-8{padding-inline-start:calc(var(--spacing)*8)}.ps-\[calc\(var\(--fd-layout-offset\)\+var\(--fd-sidebar-width\)\)\]{padding-inline-start:calc(var(--fd-layout-offset) + var(--fd-sidebar-width))}.ps-px{padding-inline-start:1px}.pe-\(--fd-layout-offset\){padding-inline-end:var(--fd-layout-offset)}.pe-2{padding-inline-end:calc(var(--spacing)*2)}.pe-4{padding-inline-end:calc(var(--spacing)*4)}.pt-0{padding-top:calc(var(--spacing)*0)}.pt-2{padding-top:calc(var(--spacing)*2)}.pt-8{padding-top:calc(var(--spacing)*8)}.pt-12{padding-top:calc(var(--spacing)*12)}.pt-14{padding-top:calc(var(--spacing)*14)}.pb-2{padding-bottom:calc(var(--spacing)*2)}.pb-4{padding-bottom:calc(var(--spacing)*4)}.pb-6{padding-bottom:calc(var(--spacing)*6)}.text-center{text-align:center}.text-end{text-align:end}.text-left{text-align:left}.text-start{text-align:start}.text-2xl{font-size:var(--text-2xl);line-height:var(--tw-leading,var(--text-2xl--line-height))}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-lg{font-size:var(--text-lg);line-height:var(--tw-leading,var(--text-lg--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.text-\[13px\]{font-size:13px}.text-\[15px\]{font-size:15px}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.text-nowrap{text-wrap:nowrap}.\[overflow-wrap\:anywhere\]{overflow-wrap:anywhere}.whitespace-nowrap{white-space:nowrap}.text-fd-accent-foreground{color:var(--color-fd-accent-foreground)}.text-fd-card{color:var(--color-fd-card)}.text-fd-card-foreground{color:var(--color-fd-card-foreground)}.text-fd-foreground{color:var(--color-fd-foreground)}.text-fd-foreground\/30{color:#0a0a0a4d}@supports (color:color-mix(in lab,red,red)){.text-fd-foreground\/30{color:color-mix(in oklab,var(--color-fd-foreground)30%,transparent)}}.text-fd-foreground\/80{color:#0a0a0acc}@supports (color:color-mix(in lab,red,red)){.text-fd-foreground\/80{color:color-mix(in oklab,var(--color-fd-foreground)80%,transparent)}}.text-fd-muted-foreground{color:var(--color-fd-muted-foreground)}.text-fd-popover-foreground{color:var(--color-fd-popover-foreground)}.text-fd-primary{color:var(--color-fd-primary)}.text-fd-primary-foreground{color:var(--color-fd-primary-foreground)}.text-fd-secondary-foreground{color:var(--color-fd-secondary-foreground)}.text-muted-foreground{color:var(--muted-foreground)}.uppercase{text-transform:uppercase}.italic{font-style:italic}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.shadow-lg{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a)}.shadow-lg,.shadow-md{box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a)}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg))}.backdrop-blur-lg,.backdrop-blur-md{-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.backdrop-blur-md{--tw-backdrop-blur:blur(var(--blur-md))}.backdrop-blur-sm{--tw-backdrop-blur:blur(var(--blur-sm));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-\[width\,height\]{transition-property:width,height;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.transition-transform{transition-property:transform,translate,scale,rotate;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.duration-100{--tw-duration:.1s;transition-duration:.1s}.duration-200{--tw-duration:.2s;transition-duration:.2s}.duration-300{--tw-duration:.3s;transition-duration:.3s}.outline-none{--tw-outline-style:none;outline-style:none}.select-none{-webkit-user-select:none;user-select:none}.\[--fd-nav-height\:calc\(var\(--spacing\)\*14\)\]{--fd-nav-height:calc(var(--spacing)*14)}.\[--fd-tocnav-height\:36px\]{--fd-tocnav-height:36px}.running{animation-play-state:running}:is(.\*\:col-start-1>*){grid-column-start:1}:is(.\*\:row-start-1>*){grid-row-start:1}@media (hover:hover){.group-hover\:opacity-100:is(:where(.group):hover *){opacity:1}}.group-data-\[state\=open\]\:rotate-180:is(:where(.group)[data-state=open] *){rotate:180deg}.group-data-\[state\=open\]\/accordion\:rotate-90:is(:where(.group\/accordion)[data-state=open] *){rotate:90deg}@media (hover:hover){.peer-hover\:opacity-100:is(:where(.peer):hover~*){opacity:1}}.placeholder\:text-fd-muted-foreground::placeholder{color:var(--color-fd-muted-foreground)}.first\:pt-0:first-child{padding-top:calc(var(--spacing)*0)}.last\:border-b-0:last-child{border-bottom-style:var(--tw-border-style);border-bottom-width:0}.last\:pb-0:last-child{padding-bottom:calc(var(--spacing)*0)}.empty\:hidden:empty{display:none}@media (hover:hover){.hover\:bg-fd-accent:hover{background-color:var(--color-fd-accent)}.hover\:bg-fd-accent\/50:hover{background-color:#e6e6e680}@supports (color:color-mix(in lab,red,red)){.hover\:bg-fd-accent\/50:hover{background-color:color-mix(in oklab,var(--color-fd-accent)50%,transparent)}}.hover\:bg-fd-accent\/80:hover{background-color:#e6e6e6cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-fd-accent\/80:hover{background-color:color-mix(in oklab,var(--color-fd-accent)80%,transparent)}}.hover\:bg-fd-primary\/80:hover{background-color:#171717cc}@supports (color:color-mix(in lab,red,red)){.hover\:bg-fd-primary\/80:hover{background-color:color-mix(in oklab,var(--color-fd-primary)80%,transparent)}}.hover\:text-fd-accent-foreground:hover{color:var(--color-fd-accent-foreground)}.hover\:text-fd-accent-foreground\/80:hover{color:#171717cc}@supports (color:color-mix(in lab,red,red)){.hover\:text-fd-accent-foreground\/80:hover{color:color-mix(in oklab,var(--color-fd-accent-foreground)80%,transparent)}}.hover\:text-fd-popover-foreground\/50:hover{color:#27272780}@supports (color:color-mix(in lab,red,red)){.hover\:text-fd-popover-foreground\/50:hover{color:color-mix(in oklab,var(--color-fd-popover-foreground)50%,transparent)}}.hover\:underline:hover{text-decoration-line:underline}.hover\:opacity-80:hover{opacity:.8}.hover\:transition-none:hover{transition-property:none}}.focus-visible\:border-ring:focus-visible{border-color:var(--ring)}.focus-visible\:ring-\[3px\]:focus-visible{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(3px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:var(--ring)}@supports (color:color-mix(in lab,red,red)){.focus-visible\:ring-ring\/50:focus-visible{--tw-ring-color:color-mix(in oklab,var(--ring)50%,transparent)}}.focus-visible\:outline-none:focus-visible{--tw-outline-style:none;outline-style:none}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:opacity-50:disabled{opacity:.5}.has-focus-visible\:bg-fd-accent:has(:focus-visible){background-color:var(--color-fd-accent)}.data-\[active\=true\]\:font-medium[data-active=true]{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.data-\[active\=true\]\:text-fd-primary[data-active=true]{color:var(--color-fd-primary)}.data-\[collapsed\=false\]\:hidden[data-collapsed=false]{display:none}.data-\[motion\=from-end\]\:animate-fd-enterFromRight[data-motion=from-end]{animation:var(--animate-fd-enterFromRight)}.data-\[motion\=from-start\]\:animate-fd-enterFromLeft[data-motion=from-start]{animation:var(--animate-fd-enterFromLeft)}.data-\[motion\=to-end\]\:animate-fd-exitToRight[data-motion=to-end]{animation:var(--animate-fd-exitToRight)}.data-\[motion\=to-start\]\:animate-fd-exitToLeft[data-motion=to-start]{animation:var(--animate-fd-exitToLeft)}.data-\[state\=active\]\:border-fd-primary[data-state=active]{border-color:var(--color-fd-primary)}.data-\[state\=active\]\:text-fd-primary[data-state=active]{color:var(--color-fd-primary)}.data-\[state\=closed\]\:animate-accordion-up[data-state=closed]{animation:accordion-up var(--tw-duration,.2s)ease-out}.data-\[state\=closed\]\:animate-fd-accordion-up[data-state=closed]{animation:var(--animate-fd-accordion-up)}.data-\[state\=closed\]\:animate-fd-collapsible-up[data-state=closed]{animation:var(--animate-fd-collapsible-up)}.data-\[state\=closed\]\:animate-fd-dialog-out[data-state=closed]{animation:var(--animate-fd-dialog-out)}.data-\[state\=closed\]\:animate-fd-fade-out[data-state=closed]{animation:var(--animate-fd-fade-out)}.data-\[state\=closed\]\:animate-fd-nav-menu-out[data-state=closed]{animation:var(--animate-fd-nav-menu-out)}.data-\[state\=closed\]\:animate-fd-popover-out[data-state=closed]{animation:var(--animate-fd-popover-out)}.data-\[state\=hidden\]\:animate-fd-fade-out[data-state=hidden]{animation:var(--animate-fd-fade-out)}.data-\[state\=open\]\:animate-accordion-down[data-state=open]{animation:accordion-down var(--tw-duration,.2s)ease-out}.data-\[state\=open\]\:animate-fd-accordion-down[data-state=open]{animation:var(--animate-fd-accordion-down)}.data-\[state\=open\]\:animate-fd-collapsible-down[data-state=open]{animation:var(--animate-fd-collapsible-down)}.data-\[state\=open\]\:animate-fd-dialog-in[data-state=open]{animation:var(--animate-fd-dialog-in)}.data-\[state\=open\]\:animate-fd-fade-in[data-state=open]{animation:var(--animate-fd-fade-in)}.data-\[state\=open\]\:animate-fd-nav-menu-in[data-state=open]{animation:var(--animate-fd-nav-menu-in)}.data-\[state\=open\]\:animate-fd-popover-in[data-state=open]{animation:var(--animate-fd-popover-in)}.data-\[state\=open\]\:bg-fd-accent\/50[data-state=open]{background-color:#e6e6e680}@supports (color:color-mix(in lab,red,red)){.data-\[state\=open\]\:bg-fd-accent\/50[data-state=open]{background-color:color-mix(in oklab,var(--color-fd-accent)50%,transparent)}}@media not all and (min-width:80rem){.max-xl\:end-4{inset-inline-end:calc(var(--spacing)*4)}.max-xl\:hidden{display:none}}@media not all and (min-width:64rem){.max-lg\:hidden{display:none}}@media not all and (min-width:48rem){.max-md\:inset-x-0{inset-inline:calc(var(--spacing)*0)}.max-md\:bottom-0{bottom:calc(var(--spacing)*0)}.max-md\:hidden{display:none}.max-md\:bg-fd-background\/80{background-color:#f5f5f5cc}@supports (color:color-mix(in lab,red,red)){.max-md\:bg-fd-background\/80{background-color:color-mix(in oklab,var(--color-fd-background)80%,transparent)}}.max-md\:text-\[15px\]{font-size:15px}.max-md\:backdrop-blur-lg{--tw-backdrop-blur:blur(var(--blur-lg));-webkit-backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,);backdrop-filter:var(--tw-backdrop-blur,)var(--tw-backdrop-brightness,)var(--tw-backdrop-contrast,)var(--tw-backdrop-grayscale,)var(--tw-backdrop-hue-rotate,)var(--tw-backdrop-invert,)var(--tw-backdrop-opacity,)var(--tw-backdrop-saturate,)var(--tw-backdrop-sepia,)}.max-md\:data-\[open\=false\]\:invisible[data-open=false]{visibility:hidden}}@media not all and (min-width:40rem){.max-sm\:mt-2{margin-top:calc(var(--spacing)*2)}.max-sm\:hidden{display:none}}@media (min-width:40rem){.sm\:hidden{display:none}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}.sm\:justify-end{justify-content:flex-end}}@media (min-width:48rem){.md\:sticky{position:sticky}.md\:ms-auto{margin-inline-start:auto}.md\:-me-\(--fd-sidebar-width\){margin-inline-end:calc(var(--fd-sidebar-width)*-1)}.md\:hidden{display:none}.md\:h-\(--fd-sidebar-height\){height:var(--fd-sidebar-height)}.md\:w-\(--fd-sidebar-width\){width:var(--fd-sidebar-width)}.md\:-translate-x-\(--fd-sidebar-offset\){--tw-translate-x:calc(var(--fd-sidebar-offset)*-1);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:translate-x-0{--tw-translate-x:calc(var(--spacing)*0);translate:var(--tw-translate-x)var(--tw-translate-y)}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:border-e{border-inline-end-style:var(--tw-border-style);border-inline-end-width:1px}.md\:px-6{padding-inline:calc(var(--spacing)*6)}.md\:py-1\.5{padding-block:calc(var(--spacing)*1.5)}.md\:ps-\(--fd-layout-offset\){padding-inline-start:var(--fd-layout-offset)}.md\:pt-0{padding-top:calc(var(--spacing)*0)}.md\:pt-2\.5{padding-top:calc(var(--spacing)*2.5)}.md\:pt-3\.5{padding-top:calc(var(--spacing)*3.5)}.md\:pt-4{padding-top:calc(var(--spacing)*4)}.md\:pt-12{padding-top:calc(var(--spacing)*12)}.md\:opacity-0{opacity:0}.md\:transition-all{transition-property:all;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.md\:\[--fd-nav-height\:0px\]{--fd-nav-height:0px}.md\:\[--fd-sidebar-width\:268px\]{--fd-sidebar-width:268px}.md\:\[--fd-sidebar-width\:286px\]{--fd-sidebar-width:286px}}@media (min-width:64rem){.lg\:mt-2{margin-top:calc(var(--spacing)*2)}.lg\:hidden{display:none}.lg\:h-12{height:calc(var(--spacing)*12)}.lg\:w-\[calc\(100\%-1rem\)\]{width:calc(100% - 1rem)}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:rounded-2xl{border-radius:var(--radius-2xl)}.lg\:border{border-style:var(--tw-border-style);border-width:1px}.lg\:\[--fd-nav-height\:calc\(var\(--spacing\)\*24\)\]{--fd-nav-height:calc(var(--spacing)*24)}.lg\:\[--fd-sidebar-width\:286px\]{--fd-sidebar-width:286px}}@media (min-width:80rem){.xl\:start-4{inset-inline-start:calc(var(--spacing)*4)}.xl\:mx-auto{margin-inline:auto}.xl\:hidden{display:none}.xl\:px-12{padding-inline:calc(var(--spacing)*12)}.xl\:\[--fd-toc-width\:286px\]{--fd-toc-width:286px}.xl\:\[--fd-tocnav-height\:0px\]{--fd-tocnav-height:0px}}@container not (min-width:32rem){.\@max-lg\:col-span-full{grid-column:1/-1}}.rtl\:-scale-x-100:where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-scale-x:calc(100%*-1);scale:var(--tw-scale-x)var(--tw-scale-y)}.rtl\:rotate-180:where(:dir(rtl),[dir=rtl],[dir=rtl] *){rotate:180deg}@media (min-width:48rem){.rtl\:md\:translate-x-\(--fd-sidebar-offset\):where(:dir(rtl),[dir=rtl],[dir=rtl] *){--tw-translate-x:var(--fd-sidebar-offset);translate:var(--tw-translate-x)var(--tw-translate-y)}}.dark\:bg-\(--shiki-dark-bg\):is(.dark *){background-color:var(--shiki-dark-bg)}.\[\&_svg\]\:\!size-4\.5 svg{width:calc(var(--spacing)*4.5)!important;height:calc(var(--spacing)*4.5)!important}.\[\&_svg\]\:size-3\.5 svg{width:calc(var(--spacing)*3.5);height:calc(var(--spacing)*3.5)}.\[\&_svg\]\:size-4 svg{width:calc(var(--spacing)*4);height:calc(var(--spacing)*4)}.\[\&_svg\]\:size-4\.5 svg{width:calc(var(--spacing)*4.5);height:calc(var(--spacing)*4.5)}.\[\&_svg\]\:size-5 svg{width:calc(var(--spacing)*5);height:calc(var(--spacing)*5)}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}@media (min-width:48rem){.md\:\[\&_svg\]\:size-4\.5 svg{width:calc(var(--spacing)*4.5);height:calc(var(--spacing)*4.5)}}.\[\&\>figure\:only-child\]\:-m-4>figure:only-child{margin:calc(var(--spacing)*-4)}.\[\&\>figure\:only-child\]\:rounded-none>figure:only-child{border-radius:0}.\[\&\>figure\:only-child\]\:border-none>figure:only-child{--tw-border-style:none;border-style:none}.\[\&\[data-state\=open\]\>svg\]\:rotate-180[data-state=open]>svg{rotate:180deg}@media (hover:hover){.\[\@media\(hover\:hover\)\]\:opacity-0{opacity:0}}}.dark{--color-fd-background:#121212;--color-fd-foreground:#ebebeb;--color-fd-muted:#212121;--color-fd-muted-foreground:#9b9b9b;--color-fd-popover:#191919;--color-fd-popover-foreground:#e0e0e0;--color-fd-card:#191919;--color-fd-card-foreground:#fafafa;--color-fd-border:#242424;--color-fd-primary:#fafafa;--color-fd-primary-foreground:#171717;--color-fd-secondary:#212121;--color-fd-secondary-foreground:#fafafa;--color-fd-accent:#2b2b2b;--color-fd-accent-foreground:#e6e6e6;--color-fd-ring:#8c8c8c}.dark #nd-sidebar{--color-fd-muted:#292929;--color-fd-secondary:#2e2e2e;--color-fd-muted-foreground:#b8b8b8}.shiki code span{color:var(--shiki-light)}.dark .shiki code span{color:var(--shiki-dark)}.fd-codeblock pre>*{font-size:13px;display:grid}.shiki code .diff.remove{background-color:var(--fd-diff-remove-color);opacity:.7}.shiki code .diff:before{position:absolute;left:6px}.shiki code .diff.remove:before{content:"-";color:var(--fd-diff-remove-symbol-color)}.shiki code .diff.add{background-color:var(--fd-diff-add-color)}.shiki code .diff.add:before{content:"+";color:var(--fd-diff-add-symbol-color)}.shiki code .diff{margin:0 -16px;padding:0 16px;position:relative}.shiki .highlighted{background-color:oklab(20.4627% -3.72529e-8 1.49012e-8/.1);margin:0 -16px;padding:0 16px}@supports (color:color-mix(in lab,red,red)){.shiki .highlighted{background-color:color-mix(in oklab,var(--color-fd-primary)10%,transparent)}}.shiki .highlighted-word{background-color:oklab(20.4627% -3.72529e-8 1.49012e-8/.1);border:1px solid #17171780;border-radius:2px;margin:-1px -3px;padding:1px 2px}@supports (color:color-mix(in lab,red,red)){.shiki .highlighted-word{border:1px solid color-mix(in oklab,var(--color-fd-primary)50%,transparent);background-color:color-mix(in oklab,var(--color-fd-primary)10%,transparent)}}@property --radix-collapsible-content-height{syntax:"";inherits:false;initial-value:0}:root{--radius:.625rem;--background:oklch(1 0 0);--foreground:oklch(.145 0 0);--card:oklch(1 0 0);--card-foreground:oklch(.145 0 0);--popover:oklch(1 0 0);--popover-foreground:oklch(.145 0 0);--primary:oklch(.205 0 0);--primary-foreground:oklch(.985 0 0);--secondary:oklch(.97 0 0);--secondary-foreground:oklch(.205 0 0);--muted:oklch(.97 0 0);--muted-foreground:oklch(.556 0 0);--accent:oklch(.97 0 0);--accent-foreground:oklch(.205 0 0);--destructive:oklch(.577 .245 27.325);--border:oklch(.922 0 0);--input:oklch(.922 0 0);--ring:oklch(.708 0 0);--chart-1:oklch(.646 .222 41.116);--chart-2:oklch(.6 .118 184.704);--chart-3:oklch(.398 .07 227.392);--chart-4:oklch(.828 .189 84.429);--chart-5:oklch(.769 .188 70.08);--sidebar:oklch(.985 0 0);--sidebar-foreground:oklch(.145 0 0);--sidebar-primary:oklch(.205 0 0);--sidebar-primary-foreground:oklch(.985 0 0);--sidebar-accent:oklch(.97 0 0);--sidebar-accent-foreground:oklch(.205 0 0);--sidebar-border:oklch(.922 0 0);--sidebar-ring:oklch(.708 0 0)}.dark{--background:oklch(.145 0 0);--foreground:oklch(.985 0 0);--card:oklch(.205 0 0);--card-foreground:oklch(.985 0 0);--popover:oklch(.205 0 0);--popover-foreground:oklch(.985 0 0);--primary:oklch(.922 0 0);--primary-foreground:oklch(.205 0 0);--secondary:oklch(.269 0 0);--secondary-foreground:oklch(.985 0 0);--muted:oklch(.269 0 0);--muted-foreground:oklch(.708 0 0);--accent:oklch(.269 0 0);--accent-foreground:oklch(.985 0 0);--destructive:oklch(.704 .191 22.216);--border:oklch(1 0 0/10%);--input:oklch(1 0 0/15%);--ring:oklch(.556 0 0);--chart-1:oklch(.488 .243 264.376);--chart-2:oklch(.696 .17 162.48);--chart-3:oklch(.769 .188 70.08);--chart-4:oklch(.627 .265 303.9);--chart-5:oklch(.645 .246 16.439);--sidebar:oklch(.205 0 0);--sidebar-foreground:oklch(.985 0 0);--sidebar-primary:oklch(.488 .243 264.376);--sidebar-primary-foreground:oklch(.985 0 0);--sidebar-accent:oklch(.269 0 0);--sidebar-accent-foreground:oklch(.985 0 0);--sidebar-border:oklch(1 0 0/10%);--sidebar-ring:oklch(.556 0 0)}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-translate-z{syntax:"*";inherits:false;initial-value:0}@property --tw-scale-x{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-y{syntax:"*";inherits:false;initial-value:1}@property --tw-scale-z{syntax:"*";inherits:false;initial-value:1}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-backdrop-blur{syntax:"*";inherits:false}@property --tw-backdrop-brightness{syntax:"*";inherits:false}@property --tw-backdrop-contrast{syntax:"*";inherits:false}@property --tw-backdrop-grayscale{syntax:"*";inherits:false}@property --tw-backdrop-hue-rotate{syntax:"*";inherits:false}@property --tw-backdrop-invert{syntax:"*";inherits:false}@property --tw-backdrop-opacity{syntax:"*";inherits:false}@property --tw-backdrop-saturate{syntax:"*";inherits:false}@property --tw-backdrop-sepia{syntax:"*";inherits:false}@property --tw-duration{syntax:"*";inherits:false}@keyframes spin{to{transform:rotate(1turn)}}@keyframes fd-collapsible-down{0%{opacity:0;height:0}to{height:var(--radix-collapsible-content-height)}}@keyframes fd-collapsible-up{0%{height:var(--radix-collapsible-content-height)}to{opacity:0;height:0}}@keyframes fd-accordion-down{0%{opacity:.5;height:0}to{height:var(--radix-accordion-content-height)}}@keyframes fd-accordion-up{0%{height:var(--radix-accordion-content-height)}to{opacity:.5;height:0}}@keyframes fd-dialog-in{0%{opacity:0;transform:scale(.95)}to{transform:scale(1)}}@keyframes fd-dialog-out{0%{transform:scale(1)}to{opacity:0;transform:scale(.95)}}@keyframes fd-popover-in{0%{opacity:0;transform:scale(.98)translateY(-4px)}to{opacity:1;transform:scale(1)translateY(0)}}@keyframes fd-popover-out{0%{opacity:1;transform:translateY(0)}to{opacity:0;transform:translateY(-4px)}}@keyframes fd-fade-in{0%{opacity:0}to{opacity:1}}@keyframes fd-fade-out{0%{opacity:1}to{opacity:0}}@keyframes fd-enterFromRight{0%{opacity:0;transform:translate(200px)}to{opacity:1;transform:translate(0)}}@keyframes fd-enterFromLeft{0%{opacity:0;transform:translate(-200px)}to{opacity:1;transform:translate(0)}}@keyframes fd-exitToRight{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(200px)}}@keyframes fd-exitToLeft{0%{opacity:1;transform:translate(0)}to{opacity:0;transform:translate(-200px)}}@keyframes fd-nav-menu-in{0%{opacity:0;height:0}to{opacity:1;height:var(--radix-navigation-menu-viewport-height)}}@keyframes fd-nav-menu-out{0%{opacity:1;height:var(--radix-navigation-menu-viewport-height)}to{opacity:0;height:0}}@keyframes accordion-down{0%{height:0}to{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,auto))}}@keyframes accordion-up{0%{height:var(--radix-accordion-content-height,var(--bits-accordion-content-height,auto))}to{height:0}}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/55c55f0601d81cf3-s.woff2) format("woff2");unicode-range:u+0460-052f,u+1c80-1c8a,u+20b4,u+2de0-2dff,u+a640-a69f,u+fe2e-fe2f}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/26a46d62cd723877-s.woff2) format("woff2");unicode-range:u+0301,u+0400-045f,u+0490-0491,u+04b0-04b1,u+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/97e0cb1ae144a2a9-s.woff2) format("woff2");unicode-range:u+1f??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/581909926a08bbc8-s.woff2) format("woff2");unicode-range:u+0370-0377,u+037a-037f,u+0384-038a,u+038c,u+038e-03a1,u+03a3-03ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/df0a9ae256c0569c-s.woff2) format("woff2");unicode-range:u+0102-0103,u+0110-0111,u+0128-0129,u+0168-0169,u+01a0-01a1,u+01af-01b0,u+0300-0301,u+0303-0304,u+0308-0309,u+0323,u+0329,u+1ea0-1ef9,u+20ab}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/6d93bde91c0c2823-s.woff2) format("woff2");unicode-range:u+0100-02ba,u+02bd-02c5,u+02c7-02cc,u+02ce-02d7,u+02dd-02ff,u+0304,u+0308,u+0329,u+1d00-1dbf,u+1e00-1e9f,u+1ef2-1eff,u+2020,u+20a0-20ab,u+20ad-20c0,u+2113,u+2c60-2c7f,u+a720-a7ff}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2) format("woff2");unicode-range:u+00??,u+0131,u+0152-0153,u+02bb-02bc,u+02c6,u+02da,u+02dc,u+0304,u+0308,u+0329,u+2000-206f,u+20ac,u+2122,u+2191,u+2193,u+2212,u+2215,u+feff,u+fffd}@font-face{font-family:Inter Fallback;src:local("Arial");ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.00%;size-adjust:107.12%}.__className_62dcf0{font-family:Inter,Inter Fallback;font-style:normal} \ No newline at end of file diff --git a/docs/_next/static/media/26a46d62cd723877-s.woff2 b/docs/_next/static/media/26a46d62cd723877-s.woff2 deleted file mode 100644 index 3a27e632eb14fffc6fce03483049986ba13f6802..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18820 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
    bye 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

    r#I0D%mIRPP2^9oTU zq-5k2Xi7};%c*5 zNLU1o5fw}S2rE(e&r;GdvT{ZIsnD{bRX|mwjgRvx<50%oba8ca_we*e-0SV*>qkmP zP64K*qNbsx%V>&$ktvfo7S{gZ!_L9U1>w$Yl?TQP=i?U;6ha7#AVvF{2gD^LrKDwK zQD_Vnho@&?WMXDvC9oy1b8vET^YCWtM}EOCASfg(A}aO|yYkbeq-CDzD&%fG-V#o zprXdo(9+Q}FfuW-u(Gk|^$HF-oc%j7$j!qmmybW6H_H)8#;)#4U>df+O4(SaYU(z6rp=C>K zbiLzCFb}P(xU2gqjLH7Z9-C`)<#EgkN3hnnT_!b?wI`F0%Jx#RTSH^28Q4|$7?T$u z)pq9pC2j4${{NdQ&j*C`KMzaVDG8~gu39Smum7`cMoTc%3L&p!EU@ij@~Pudh@^`v zFJcrFkEx=0SM*opXrQ2?*gE4;^phDX1jgZfT4V7a2g~GMLHOPZWftPuemct@87!Oo zZy=`W2jsy!j!we*}}@O@*TumQ^O6XAArUvaaPDzb=WtE`F+UNzhOWTj9&!!{D~ia81nf=Yqce_p;m29mdy#)E zbxDDc8L>Tuz%ay}l1J)kJ6-qUSc$Kh0>P*h3uWkfUGkZwzGX@l_6%znhF~+$w4$i) z`i=_b>5Ayb!QT!;4FYI@MqccIPg+#eJ5VF>lMn?B%D!PTuSex1rn)zBW!z`k(T@Oe9emS`SFv!WeQ?#SH7twiu+9TkEG^GqHg1t={$)0*j;pE%A>0w3YzL(E1h|gERDSN^YLl!`QJ6( zB9f$05=$UCbI8OyL|(V+vFRNZRezJ(Df0n~6D*$3h}-KU(Gy)Vl4K&~Zu>#b$*>Z^ z*Y(>JeO$|j)$1uAfe~MsU_=JEc<%`S)L){KD7|A>Rr47WcBsnVs6KvygLf_j0rig_MI0>Moj-X7%;}=TjhSpt6#l zU`(k=hoYcC*)Q>{LG;{hQy5(UDtJE#M90L0qhrDWm~a3H2b^%h?19Aze;|;BNFliF z0<65ZDE8u<<%=oml4rE^P5&@0Eo0>kSxk!PdeK!@vLccxEm;5%6dg15VC`_zlG+}3 z+6h4J$xc!xx1j(K3L2C`s+~JaxC)Wqiq3JDh~rVtRZ7l@*k`neseG(KsV%t%)TXZb z==VdSqDFz+rf&Q)(VggmQ6Vr46f_VD8WbHn9B{%Vokfo!@*Z>5uYQcuroNnP_oEr* z2foB1vOdJC(Co+=%aG;o_kM;k4TwHRMN=5tV1-S#iy=2Z3UjwjB1aqh01ZXHL@Bk4 zVxLJP0O)^8>`8e80yR2chjyOI%-^k?#NtHja8OH&rcli&U~zW7JNxgYf4Vi@wm;Mu z`}W8IBEb)BCM==1>^Q31n&)na34JWd0NtqEJ0PLW7aCM4Hj;o0tn>yxaqz2eGwV!h zUBS>03yxxU#z8~42wlwV&>p-%Z`*KW)NT9!YeF!TExNtUHDR_vPd`3R6-pHLY)|lY;4ynM!09al0qbLxu8Po=Q02@-d z=s?~<81JgJH}8)Y8hpTyf3Xo#CH+V>;{(gT&F_5gMr2oLIgM;XluhB7QDMknWgUAS zp*VA<_?4mKIp<`4rfE64L~u4nhiM@dRvX7WaOGYIpVS9n7p1T^-QjdSYA8^Vq##K(e!4CJhEt^T5h+cFV1gX2;%!1*x9RI$RCAC74 z!(zX24hEjj0f^QUZAcV?2E;&Z+0&I*APMH^u@NOnp$)296H_{TOp#PC>u zX}t9?HS%tH+_d4xUConi5|UUOpy%%zsJ*!W)!xhJ`!*gq^=(by+C}i(eTE*huk2qh7Bv{pqsxW2u^-0FpNZW2olg8`l8o00Ie{-{r~^~ diff --git a/docs/_next/static/media/97e0cb1ae144a2a9-s.woff2 b/docs/_next/static/media/97e0cb1ae144a2a9-s.woff2 deleted file mode 100644 index 7fdf0b945543e93603888d7d777f684b15dec9d8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11220 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 diff --git a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js b/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js deleted file mode 100644 index bba391a4..00000000 --- a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_buildManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:2,errorRate:1e-4,numBits:39,numHashes:14,bitArray:[0,1,1,0,r,e,e,r,r,e,e,r,e,e,e,r,r,e,e,e,e,r,e,r,r,r,r,e,e,e,r,e,r,e,r,e,e,e,r]},__routerFilterDynamic:{numItems:e,errorRate:1e-4,numBits:20,numHashes:14,bitArray:[r,r,e,e,r,r,e,e,e,e,r,r,e,e,r,e,r,e,e,r]},"/_error":["static/chunks/pages/_error-cc3f077a18ea1793.js"],sortedPages:["/_app","/_error"]}}(1,0,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB(); \ No newline at end of file diff --git a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js b/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js deleted file mode 100644 index a24ce437..00000000 --- a/docs/_next/static/vvyse3XSZUANbPbQ3_ktG/_ssgManifest.js +++ /dev/null @@ -1 +0,0 @@ -self.__SSG_MANIFEST=new Set(["\u002Fdocs\u002F[[...slug]]"]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB() \ No newline at end of file diff --git a/docs/docs.html b/docs/docs.html deleted file mode 100644 index 6f5a4a4b..00000000 --- a/docs/docs.html +++ /dev/null @@ -1,259 +0,0 @@ -

    Yet Another Keyword Extractor (Yake)

    -

    Unsupervised Approach for Automatic Keyword Extraction using Text Features.

    -

    YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app.

    -

    Main Features

    -
      -
    • Unsupervised approach
    • -
    • Corpus-Independent
    • -
    • Domain and Language Independent
    • -
    • Single-Document
    • -
    -

    Benchmark

    -

    For Benchmark results check out our paper published on Information Science Journal (see the references section).

    -

    Rationale

    -

    Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted.

    -

    Where can I find YAKE!?

    -

    YAKE! is available online [http://yake.inesctec.pt], on Google Play, as an open source Python package [https://github.com/LIAAD/yake] and as an API.

    -

    Installing YAKE!

    -

    There are three installation alternatives.

    -
      -
    • To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our simple YAKE! Docker image. This container will allow you to run text extraction as a command, and then exit.
    • -
    • To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our RESTful API server image. This container/server will run in the background.
    • -
    • To install YAKE! straight "on the metal" or you want to integrate it in your Python app, you can install it and its dependencies.
    • -
    - -

    Option 1. YAKE as a CLI utility inside a Docker container

    -

    First, install Docker. Ubuntu users, please see our script below for a complete installation script.

    -

    Then, run:

    -
    docker run liaad/yake:latest -ti "Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system."
    -

    Example text from Wikipedia

    - -

    Option 2. REST API Server in a Docker container

    -

    This install will provide you a mirror of the original REST API of YAKE! available here.

    -
    docker run -p 5000:5000 -d liaad/yake-server:latest
    -

    After it starts up, the container will run in the background, at http://127.0.0.1:5000. To access the YAKE! API documentation, go to http://127.0.0.1:5000/apidocs/.

    -

    You can test the RESTful API using curl:

    -
    curl -X POST "http://localhost:5000/yake/" -H "accept: application/json" -H "Content-Type: application/json" \
    --d @- <<'EOF'
    -{
    -  "language": "en",
    -  "max_ngram_size": 3,
    -  "number_of_keywords": 10,
    -  "text": "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ..."
    -}
    -EOF
    -

    Example text from Wikipedia

    - -

    Option 3. Standalone Installation (for development or integration)

    -

    Requirements

    -

    Python3

    -

    Installation

    -

    To install Yake using pip:

    -
    pip install git+https://github.com/LIAAD/yake
    -

    To upgrade using pip:

    -
    pip install git+https://github.com/LIAAD/yake –-upgrade
    -

    Usage (Command line)

    -

    How to use it on your favorite command line

    -
    Usage: yake [OPTIONS]
    - 
    -Options:
    -	-ti, --text_input TEXT          Input text, SURROUNDED by single quotes(')
    -	-i, --input_file TEXT           Input file
    -	-l, --language TEXT             Language
    -	-n, --ngram-size INTEGER        Max size of the ngram.
    -	-df, --dedup-func [leve|jaro|seqm]
    -									Deduplication function.
    -	-dl, --dedup-lim FLOAT          Deduplication limiar.
    -	-ws, --window-size INTEGER      Window size.
    -	-t, --top INTEGER               Number of keyphrases to extract
    -	-v, --verbose			Gets detailed information (such as the score)
    -	--help                          Show this message and exit.
    -

    Usage (Python)

    -

    How to use it on Python

    -
    import yake
    - 
    -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\
    -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\
    -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\
    -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\
    -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\
    -"was founded by Goldbloom  and Ben Hamner in 2010. "\
    -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\
    -"it has managed to stay well ahead of them by focusing on its specific niche. "\
    -"The service is basically the de facto home for running data science and machine learning competitions. "\
    -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\
    -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\
    -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\
    -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\
    -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\
    -"will keep the service running - likely under its current name. While the acquisition is probably more about "\
    -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\
    -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\
    -"share this code on the platform (the company previously called them 'scripts'). "\
    -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\
    -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\
    -"since its   launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\
    -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner "
    -

    assuming default parameters

    -
    kw_extractor = yake.KeywordExtractor()
    -keywords = kw_extractor.extract_keywords(text)
    - 
    -for kw in keywords:
    -	print(kw)
    -

    specifying parameters

    -
    language = "en"
    -max_ngram_size = 3
    -deduplication_threshold = 0.9
    -deduplication_algo = 'seqm'
    -windowSize = 1
    -numOfKeywords = 20
    - 
    -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_threshold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None)
    -keywords = custom_kw_extractor.extract_keywords(text)
    - 
    -for kw in keywords:
    -    print(kw)
    -

    Output

    -

    The lower the score, the more relevant the keyword is.

    -
    ('google', 0.026580863364597897)
    -('kaggle', 0.0289005976239829)
    -('ceo anthony goldbloom', 0.029946071606210194)
    -('san francisco', 0.048810837074825336)
    -('anthony goldbloom declined', 0.06176910090701819)
    -('google cloud platform', 0.06261974476422487)
    -('co-founder ceo anthony', 0.07357749587020043)
    -('acquiring kaggle', 0.08723571551039863)
    -('ceo anthony', 0.08915156857226395)
    -('anthony goldbloom', 0.09123482372372106)
    -('machine learning', 0.09147989238151344)
    -('kaggle co-founder ceo', 0.093805063905847)
    -('data', 0.097574333771058)
    -('google cloud', 0.10260128641464673)
    -('machine learning competitions', 0.10773000650607861)
    -('francisco this week', 0.11519915079240485)
    -('platform', 0.1183512305596321)
    -('conference in san', 0.12392066376108138)
    -('service', 0.12546743261462942)
    -('goldbloom', 0.14611408778815776)
    -

    Highlighting Feature

    -

    Highlighting feature will tag every keyword in the text with the default tag <kw>.

    -
     
    -from yake.highlight import TextHighlighter
    - 
    -th = TextHighlighter(max_ngram_size = 3)
    -th.highlight(text, keywords)
    
    -

    Output

    -

    By default, keywords will be highlighted using the tag 'kw'.

    -
    Sources tell us that <kw>google</kw> is <kw>acquiring kaggle</kw>, a platform that <kw>hosts data science</kw> and <kw>machine learning</kw> competitions. Details about the transaction remain somewhat vague , but given that <kw>google</kw> is hosting its Cloud Next conference in <kw>san francisco</kw> this week, the official announcement could come as early as tomorrow.  Reached by phone, Kaggle co-founder <kw>ceo anthony goldbloom</kw> declined to deny that the acquisition is happening. <kw>google</kw> itself declined 'to comment on rumors'.
    -.....
    -.....
    -

    Custom Highlighting Feature

    -

    Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag <span class='my_class' > makes use of an hyphotetical function my_class whose purpose would be to highlight in white colour or the relevant keywords.

    -

    Output

    -
     
    -from yake.highlight import TextHighlighter
    -th = TextHighlighter(max_ngram_size = 3, highlight_pre = "<span class='my_class' >", highlight_post= "</span>")
    -th.highlight(text, keywords)
    -
    self.highlight_postSources tell us that <span class='my_class' >google</span> is <span class='my_class' >acquiring kaggle</span>, a platform that <span class='my_class' >hosts data science</span> and <span class='my_class' >machine learning</span> self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that <span class='my_class' >google</span> is hosting self.highlight_postits Cloud Next conference in <span class='my_class' >san francisco</span> this week, the official announcement could come as early self.highlight_postas tomorrow.  Reached by phone, Kaggle co-founder <span class='my_class' >ceo anthony goldbloom</span> declined to deny that the self.highlight_postacquisition is happening. <span class='my_class' >google</span> itself declined 'to comment on rumors'.
    -.....
    -.....
    -

    Languages others than English

    -

    While English (en) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text.

    -
    text = '''
    -"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui.
    -A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.
    -'''
    - 
    -custom_kw_extractor = yake.KeywordExtractor(lan="pt")
    -keywords = custom_kw_extractor.extract_keywords(text)
    - 
    -for kw in keywords:
    -    print(kw)
    -

    Output

    -
    ('conta-me histórias', 0.006225012963810038)
    -('liaad do inesc', 0.01899063587015275)
    -('inesc tec', 0.01995432290332246)
    -('conta-me', 0.04513273690417472)
    -('histórias', 0.04513273690417472)
    -('prémio arquivo.pt', 0.05749361520927859)
    -('liaad', 0.07738867367929901)
    -('inesc', 0.07738867367929901)
    -('tec', 0.08109398065524037)
    -('xutos inspiram projeto', 0.08720742489353424)
    -('inspiram projeto premiado', 0.08720742489353424)
    -('adam jatwot docente', 0.09407053486771558)
    -('arquivo.pt', 0.10261392141666957)
    -('alípio jorge', 0.12190479662535166)
    -('ciências da universidade', 0.12368384021490342)
    -('ricardo campos investigador', 0.12789997272332762)
    -('politécnico de tomar', 0.13323587141127738)
    -('arian pasquali', 0.13323587141127738)
    -('vitor mangaravite', 0.13323587141127738)
    -('preservados da web', 0.13596322680882506)
    - -

    YAKE! Mobile APP

    -

    YAKE! is now available on Google Play

    -

    pke - python keyphrase extraction

    -

    https://github.com/boudinfl/pke - pke is an open source python-based keyphrase extraction toolkit. It -provides an end-to-end keyphrase extraction pipeline in which each component can -be easily modified or extended to develop new models. pke also allows for -easy benchmarking of state-of-the-art keyphrase extraction models, and -ships with supervised models trained on the SemEval-2010 dataset (http://aclweb.org/anthology/S10-1004).

    -

    Credits to https://github.com/boudinfl

    -

    SparkNLP - State of the Art Natural Language Processing framework

    -

    https://github.com/JohnSnowLabs/spark-nlp - SparkNLP from John Snow Labs is an open source framework with full Python, Scala, and Java Support. Check their documentation, demo and google colab. A video on how to use spark nlp with yake can also be found here: https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code

    -

    General Index by Archive.org

    -

    https://archive.org/details/GeneralIndex - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in Nature.

    -

    textacy - NLP, before and after spaCy

    -

    https://github.com/chartbeat-labs/textacy - textacy is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE.

    -

    Credits to https://github.com/chartbeat-labs

    - -

    Annif - Tool for automated subject indexing and classification

    -

    https://github.com/NatLibFi/Annif/ - Annif is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website http://annif.org/.

    -

    Portulan Clarin - Services and data for researchers, innovators, students and language professionals

    -

    https://portulanclarin.net/workbench/liaad-yake/ - Portulan Clarin is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website https://portulanclarin.net/.

    -

    How to install Docker

    -

    Here is the "just copy and paste" installations script for Docker in Ubuntu. Enjoy.

    -
    # Install dependencies
    -sudo apt-get update
    -sudo apt-get install \
    -    apt-transport-https \
    -    ca-certificates \
    -    curl \
    -    software-properties-common
    - 
    -# Add Docker repo
    -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
    -sudo apt-key fingerprint 0EBFCD88
    -sudo add-apt-repository \
    -   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
    -   $(lsb_release -cs) \
    -   stable"
    -sudo apt-get update
    - 
    -# Install Docker
    -sudo apt-get install -y docker-ce
    - 
    -# Start Docker Daemon
    -sudo service docker start
    - 
    -# Add yourself to the Docker user group, otherwise docker will complain that
    -# it does not know if the Docker Daemon is running
    -sudo usermod -aG docker ${USER}
    - 
    -# Install docker-compose
    -sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    -sudo chmod +x /usr/local/bin/docker-compose
    -source ~/.bashrc
    -docker-compose --version
    -echo "Done!"
    -

    Credits to https://github.com/silvae86 for the Docker scripts.

    -

    References

    -

    Please cite the following works when using YAKE

    -In-depth journal paper at Information Sciences Journal -

    Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. pdf

    -ECIR'18 Best Short Paper -

    Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. pdf

    -

    Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. pdf

    -

    Awards

    -

    ECIR'18 Best Short Paper

    \ No newline at end of file diff --git a/docs/docs.txt b/docs/docs.txt deleted file mode 100644 index 745f07d7..00000000 --- a/docs/docs.txt +++ /dev/null @@ -1,85 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","gvMZ_sdftMoK32IrKifNs",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -35:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -36:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -54:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -55:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -56:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2c:T40a,Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted.3a:T5c0,3b:T5c0,3c:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#yet-another-keyword-extractor-yake","title":"Yet Another Keyword Extractor (Yake)"},{"depth":2,"url":"#main-features","title":"Main Features"},{"depth":2,"url":"#benchmark","title":"Benchmark"},{"depth":2,"url":"#rationale","title":"Rationale"},{"depth":2,"url":"#where-can-i-find-yake","title":"Where can I find YAKE!?"},{"depth":2,"url":"#installing-yake","title":"Installing YAKE!"},{"depth":3,"url":"#option-1-yake-as-a-cli-utility-inside-a-docker-container","title":"Option 1. YAKE as a CLI utility inside a Docker container"},{"depth":3,"url":"#option-2-rest-api-server-in-a-docker-container","title":"Option 2. REST API Server in a Docker container"},{"depth":3,"url":"#option-3-standalone-installation-for-development-or-integration","title":"Option 3. Standalone Installation (for development or integration)"},{"depth":4,"url":"#requirements","title":"Requirements"},{"depth":4,"url":"#installation","title":"Installation"},{"depth":4,"url":"#usage-command-line","title":"Usage (Command line)"},{"depth":3,"url":"#usage-python","title":"Usage (Python)"},{"depth":4,"url":"#assuming-default-parameters","title":"assuming default parameters"},{"depth":4,"url":"#specifying-parameters","title":"specifying parameters"},{"depth":4,"url":"#output","title":"Output"},{"depth":3,"url":"#highlighting-feature","title":"Highlighting Feature"},{"depth":4,"url":"#output-1","title":"Output"},{"depth":3,"url":"#custom-highlighting-feature","title":"Custom Highlighting Feature"},{"depth":4,"url":"#output-2","title":"Output"},{"depth":3,"url":"#languages-others-than-english","title":"Languages others than English"},{"depth":4,"url":"#output-3","title":"Output"},{"depth":2,"url":"#related-projects","title":"Related projects"},{"depth":3,"url":"#yake-mobile-app","title":"YAKE! Mobile APP"},{"depth":3,"url":"#pke---python-keyphrase-extraction","title":[["$","code",null,{"children":"pke"}]," - python keyphrase extraction"]},{"depth":3,"url":"#sparknlp---state-of-the-art-natural-language-processing-framework","title":[["$","code",null,{"children":"SparkNLP"}]," - State of the Art Natural Language Processing framework"]},{"depth":3,"url":"#general-index-by-archiveorg","title":[["$","code",null,{"children":"General Index"}]," by Archive.org"]},{"depth":3,"url":"#textacy---nlp-before-and-after-spacy","title":[["$","code",null,{"children":"textacy"}]," - NLP, before and after spaCy"]},{"depth":3,"url":"#annif---tool-for-automated-subject-indexing-and-classification","title":[["$","code",null,{"children":"Annif"}]," - Tool for automated subject indexing and classification"]},{"depth":3,"url":"#portulan-clarin---services-and-data-for-researchers-innovators-students-and-language-professionals","title":[["$","code",null,{"children":"Portulan Clarin"}]," - Services and data for researchers, innovators, students and language professionals"]},{"depth":2,"url":"#how-to-install-docker","title":"How to install Docker"},{"depth":2,"url":"#references","title":"References"},{"depth":2,"url":"#awards","title":"Awards"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"yet-another-keyword-extractor-yake","children":[["$","a",null,{"data-card":"","href":"#yet-another-keyword-extractor-yake","className":"peer","children":"Yet Another Keyword Extractor (Yake)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Unsupervised Approach for Automatic Keyword Extraction using Text Features."}],"\n",["$","p",null,{"children":["YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a ",["$","a",null,{"href":"http://yake.inesctec.pt","target":"_blank","children":"demo"}],", an ",["$","a",null,{"href":"http://yake.inesctec.pt/apidocs/#!/available_methods/post_yake_v2_extract_keywords","target":"_blank","children":"API"}]," and a ",["$","a",null,{"href":"https://play.google.com/store/apps/details?id=com.yake.yake","target":"_blank","children":"mobile app"}],"."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"main-features","children":[["$","a",null,{"data-card":"","href":"#main-features","className":"peer","children":"Main Features"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Unsupervised approach"}],"\n",["$","li",null,{"children":"Corpus-Independent"}],"\n",["$","li",null,{"children":"Domain and Language Independent"}],"\n",["$","li",null,{"children":"Single-Document"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"benchmark","children":[["$","a",null,{"data-card":"","href":"#benchmark","className":"peer","children":"Benchmark"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"For Benchmark results check out our paper published on Information Science Journal (see the references section)."}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"rationale","children":[["$","a",null,{"data-card":"","href":"#rationale","className":"peer","children":"Rationale"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"$2c"}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"where-can-i-find-yake","children":[["$","a",null,{"data-card":"","href":"#where-can-i-find-yake","className":"peer","children":"Where can I find YAKE!?"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["YAKE! is available online [","$L2d","],"," on ","$L2e",", as an open source Python package [","$L2f","]"," and as an ","$L30","."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"installing-yake","children":[["$","a",null,{"data-card":"","href":"#installing-yake","className":"peer","children":"Installing YAKE!"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"There are three installation alternatives."}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":["To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our ","$L31",". This container will allow you to run text extraction as a command, and then exit."]}],"\n",["$","li",null,{"children":["To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our ","$L32",". This container/server ",["$","em",null,{"children":"will run in the background"}],"."]}],"\n",["$","li",null,{"children":["To install YAKE! straight \"on the metal\" or you want to integrate it in your Python app, you can ","$L33","."]}],"\n"]}],"\n",["$","a",null,{"name":"cli-image"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"option-1-yake-as-a-cli-utility-inside-a-docker-container","children":[["$","a",null,{"data-card":"","href":"#option-1-yake-as-a-cli-utility-inside-a-docker-container","className":"peer","children":"Option 1. YAKE as a CLI utility inside a Docker container"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["First, install Docker. Ubuntu users, please see our ","$L34"," for a complete installation script."]}],"\n",["$","p",null,{"children":"Then, run:"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"docker"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" run"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" liaad/yake:latest"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -ti"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system.\""}]]}]}]}]}],"\n",["$","p",null,{"children":["$","em",null,{"children":"Example text from Wikipedia"}]}],"\n",["$","a",null,{"name":"rest-api-image"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"option-2-rest-api-server-in-a-docker-container","children":[["$","a",null,{"data-card":"","href":"#option-2-rest-api-server-in-a-docker-container","className":"peer","children":"Option 2. REST API Server in a Docker container"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["This install will provide you a mirror of the original REST API of YAKE! available ","$L37","."]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"docker"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" run"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -p"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" 5000:5000"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -d"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" liaad/yake-server:latest"}]]}]}]}]}],"\n",["$","p",null,{"children":["After it starts up, the container will run in the background, at ","$L38",". To access the YAKE! API documentation, go to ","$L39","."]}],"\n",["$","p",null,{"children":["You can test the RESTful API using ",["$","code",null,{"children":"curl"}],":"]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -X"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" POST"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"http://localhost:5000/yake/\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -H"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"accept: application/json\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -H"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Content-Type: application/json\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"-d "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"@-"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" <<"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'EOF'"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"{"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"language\": \"en\","}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"max_ngram_size\": 3,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_keywords\": 10,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"text\": \"Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ...\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"}"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"EOF"}]}]]}]}]}],"\n",["$","p",null,{"children":["$","em",null,{"children":"Example text from Wikipedia"}]}],"\n",["$","a",null,{"name":"standalone-installation"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"option-3-standalone-installation-for-development-or-integration","children":[["$","a",null,{"data-card":"","href":"#option-3-standalone-installation-for-development-or-integration","className":"peer","children":"Option 3. Standalone Installation (for development or integration)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"requirements","children":[["$","a",null,{"data-card":"","href":"#requirements","className":"peer","children":"Requirements"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Python3"}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"installation","children":[["$","a",null,{"data-card":"","href":"#installation","className":"peer","children":"Installation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"To install Yake using pip:"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"pip"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" git+https://github.com/LIAAD/yake"}]]}]}]}]}],"\n",["$","p",null,{"children":"To upgrade using pip:"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"pip"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" git+https://github.com/LIAAD/yake"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" –-upgrade"}]]}]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-command-line","children":[["$","a",null,{"data-card":"","href":"#usage-command-line","className":"peer","children":"Usage (Command line)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"How to use it on your favorite command line"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"Usage:"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [OPTIONS]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"Options:"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-ti,"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" --text_input"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TEXT"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Input"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text,"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" SURROUNDED"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" by"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" single"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" quotes"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"')"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-i, --input_file TEXT Input file"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-l, --language TEXT Language"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-n, --ngram-size INTEGER Max size of the ngram."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-df, --dedup-func [leve|jaro|seqm]"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t\t\t\t\t\t\t\t\tDeduplication function."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-dl, --dedup-lim FLOAT Deduplication limiar."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-ws, --window-size INTEGER Window size."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-t, --top INTEGER Number of keyphrases to extract"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t-v, --verbose\t\t\tGets detailed information (such as the score)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"\t--help Show this message and exit."}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-python","children":[["$","a",null,{"data-card":"","href":"#usage-python","className":"peer","children":"Usage (Python)"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"How to use it on Python"}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"was founded by Goldbloom and Ben Hamner in 2010. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"it has managed to stay well ahead of them by focusing on its specific niche. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"The service is basically the de facto home for running data science and machine learning competitions. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"will keep the service running - likely under its current name. While the acquisition is probably more about \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"share this code on the platform (the company previously called them 'scripts'). \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner \""}]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"assuming-default-parameters","children":[["$","a",null,{"data-card":"","href":"#assuming-default-parameters","className":"peer","children":"assuming default parameters"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"kw_extractor"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake.KeywordExtractor"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"keywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" kw_extractor.extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\tprint"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"specifying-parameters","children":[["$","a",null,{"data-card":"","href":"#specifying-parameters","className":"peer","children":"specifying parameters"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"language"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"en\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"deduplication_threshold"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.9"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"deduplication_algo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" 'seqm'"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"windowSize"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"numOfKeywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 20"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"custom_kw_extractor"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake.KeywordExtractor"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"language,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"max_ngram_size,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dedupLim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"deduplication_threshold,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dedupFunc"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"deduplication_algo,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windowsSize"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"windowSize,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"numOfKeywords,"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"keywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" custom_kw_extractor.extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output","children":[["$","a",null,{"data-card":"","href":"#output","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The lower the score, the more relevant the keyword is."}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'google'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.026580863364597897"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'kaggle'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0289005976239829"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ceo anthony goldbloom'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.029946071606210194"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'san francisco'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.048810837074825336"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'anthony goldbloom declined'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.06176910090701819"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'google cloud platform'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.06261974476422487"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'co-founder ceo anthony'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.07357749587020043"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'acquiring kaggle'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08723571551039863"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ceo anthony'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08915156857226395"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'anthony goldbloom'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.09123482372372106"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'machine learning'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.09147989238151344"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'kaggle co-founder ceo'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.093805063905847"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'data'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.097574333771058"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'google cloud'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.10260128641464673"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'machine learning competitions'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.10773000650607861"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'francisco this week'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.11519915079240485"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'platform'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.1183512305596321"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'conference in san'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12392066376108138"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'service'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12546743261462942"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'goldbloom'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.14611408778815776"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"highlighting-feature","children":[["$","a",null,{"data-card":"","href":"#highlighting-feature","className":"peer","children":"Highlighting Feature"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["Highlighting feature will tag every keyword in the text with the default tag ",["$","code",null,{"children":""}],"."]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th.highlight(text, keywords)\r"}]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output-1","children":[["$","a",null,{"data-card":"","href":"#output-1","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"By default, keywords will be highlighted using the tag 'kw'."}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"children":"Sources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that google is hosting its Cloud Next conference in san francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the acquisition is happening. google itself declined 'to comment on rumors'."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"custom-highlighting-feature","children":[["$","a",null,{"data-card":"","href":"#custom-highlighting-feature","className":"peer","children":"Custom Highlighting Feature"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag ",["$","code",null,{"children":""}]," makes use of an hyphotetical function ",["$","code",null,{"children":"my_class"}]," whose purpose would be to highlight in white colour or the relevant keywords."]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output-2","children":[["$","a",null,{"data-card":"","href":"#output-2","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"th.highlight(text, keywords)"}]}]]}]}]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"children":"self.highlight_postSources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that google is hosting self.highlight_postits Cloud Next conference in san francisco this week, the official announcement could come as early self.highlight_postas tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the self.highlight_postacquisition is happening. google itself declined 'to comment on rumors'."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"children":"....."}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"languages-others-than-english","children":[["$","a",null,{"data-card":"","href":"#languages-others-than-english","className":"peer","children":"Languages others than English"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["While English (",["$","code",null,{"children":"en"}],") is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text."]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" '''"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'''"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"custom_kw_extractor"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" yake.KeywordExtractor"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"keywords"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" custom_kw_extractor.extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h4",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"output-3","children":[["$","a",null,{"data-card":"","href":"#output-3","className":"peer","children":"Output"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'conta-me histórias'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.006225012963810038"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'liaad do inesc'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.01899063587015275"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'inesc tec'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.01995432290332246"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'conta-me'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.04513273690417472"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'histórias'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.04513273690417472"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'prémio arquivo.pt'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.05749361520927859"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'liaad'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.07738867367929901"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'inesc'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.07738867367929901"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'tec'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08109398065524037"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'xutos inspiram projeto'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08720742489353424"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'inspiram projeto premiado'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.08720742489353424"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'adam jatwot docente'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.09407053486771558"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'arquivo.pt'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.10261392141666957"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'alípio jorge'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12190479662535166"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ciências da universidade'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12368384021490342"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'ricardo campos investigador'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.12789997272332762"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'politécnico de tomar'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13323587141127738"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'arian pasquali'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13323587141127738"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'vitor mangaravite'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13323587141127738"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"'preservados da web'"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":","}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.13596322680882506"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"related-projects","children":[["$","a",null,{"data-card":"","href":"#related-projects","className":"peer","children":"Related projects"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"yake-mobile-app","children":[["$","a",null,{"data-card":"","href":"#yake-mobile-app","className":"peer","children":"YAKE! Mobile APP"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["YAKE! is now available on ","$L3d"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"pke---python-keyphrase-extraction","children":[["$","a",null,{"data-card":"","href":"#pke---python-keyphrase-extraction","className":"peer","children":[["$","code",null,{"children":"pke"}]," - python keyphrase extraction"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L3e"," - ",["$","code",null,{"children":"pke"}]," is an ",["$","strong",null,{"children":"open source"}]," python-based ",["$","strong",null,{"children":"keyphrase extraction"}]," toolkit. It\r\nprovides an end-to-end keyphrase extraction pipeline in which each component can\r\nbe easily modified or extended to develop new models. ",["$","code",null,{"children":"pke"}]," also allows for\r\neasy benchmarking of state-of-the-art keyphrase extraction models, and\r\nships with supervised models trained on the SemEval-2010 dataset (","$L3f",")."]}],"\n",["$","p",null,{"children":["Credits to ","$L40"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"sparknlp---state-of-the-art-natural-language-processing-framework","children":[["$","a",null,{"data-card":"","href":"#sparknlp---state-of-the-art-natural-language-processing-framework","className":"peer","children":[["$","code",null,{"children":"SparkNLP"}]," - State of the Art Natural Language Processing framework"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L41"," - ",["$","code",null,{"children":"SparkNLP"}]," from ","$L42"," is an open source framework with full Python, Scala, and Java Support. Check ","$L43",", ","$L44"," and ","$L45",". A video on how to use spark nlp with yake can also be found here: ","$L46"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"general-index-by-archiveorg","children":[["$","a",null,{"data-card":"","href":"#general-index-by-archiveorg","className":"peer","children":[["$","code",null,{"children":"General Index"}]," by Archive.org"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L47"," - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in ","$L48","."]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"textacy---nlp-before-and-after-spacy","children":[["$","a",null,{"data-card":"","href":"#textacy---nlp-before-and-after-spacy","className":"peer","children":[["$","code",null,{"children":"textacy"}]," - NLP, before and after spaCy"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L49"," - ",["$","code",null,{"children":"textacy"}]," is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE."]}],"\n",["$","p",null,{"children":["Credits to ","$L4a"]}],"\n",["$","a",null,{"name":"installing-docker"}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"annif---tool-for-automated-subject-indexing-and-classification","children":[["$","a",null,{"data-card":"","href":"#annif---tool-for-automated-subject-indexing-and-classification","className":"peer","children":[["$","code",null,{"children":"Annif"}]," - Tool for automated subject indexing and classification"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L4b"," - ",["$","code",null,{"children":"Annif"}]," is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website ","$L4c","."]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"portulan-clarin---services-and-data-for-researchers-innovators-students-and-language-professionals","children":[["$","a",null,{"data-card":"","href":"#portulan-clarin---services-and-data-for-researchers-innovators-students-and-language-professionals","className":"peer","children":[["$","code",null,{"children":"Portulan Clarin"}]," - Services and data for researchers, innovators, students and language professionals"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L4d"," - ",["$","code",null,{"children":"Portulan Clarin"}]," is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website ","$L4e","."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"how-to-install-docker","children":[["$","a",null,{"data-card":"","href":"#how-to-install-docker","className":"peer","children":"How to install Docker"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Here is the \"just copy and paste\" installations script for Docker in Ubuntu. Enjoy."}],"\n",["$","$L35",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"","children":["$","$L36",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Install dependencies"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" update"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-transport-https"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ca-certificates"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" software-properties-common"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Add Docker repo"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -fsSL"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" https://download.docker.com/linux/ubuntu/gpg"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" |"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-key"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" add"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" -"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-key"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" fingerprint"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" 0EBFCD88"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" add-apt-repository"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" \\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"deb [arch=amd64] https://download.docker.com/linux/ubuntu "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" $("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"lsb_release"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -cs"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" stable\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" update"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Install Docker"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" apt-get"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" install"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -y"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" docker-ce"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Start Docker Daemon"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" service"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" docker"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" start"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Add yourself to the Docker user group, otherwise docker will complain that"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# it does not know if the Docker Daemon is running"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" usermod"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -aG"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" docker"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ${USER}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Install docker-compose"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" curl"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -L"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"uname"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":")-$("}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"uname"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -m"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":")\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" -o"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" /usr/local/bin/docker-compose"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"sudo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" chmod"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" +x"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" /usr/local/bin/docker-compose"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"source"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ~/.bashrc"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"docker-compose"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" --version"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"echo"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Done!\""}]]}]]}]}]}],"\n",["$","p",null,{"children":["Credits to ","$L4f"," for the Docker scripts."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"references","children":[["$","a",null,{"data-card":"","href":"#references","className":"peer","children":"References"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Please cite the following works when using YAKE"}],"\n",["$","b",null,{"children":"In-depth journal paper at Information Sciences Journal"}],"\n",["$","p",null,{"children":["Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. ","$L50"]}],"\n",["$","b",null,{"children":"ECIR'18 Best Short Paper"}],"\n",["$","p",null,{"children":["Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. ","$L51"]}],"\n",["$","p",null,{"children":["Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. ","$L52"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"awards","children":[["$","a",null,{"data-card":"","href":"#awards","className":"peer","children":"Awards"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["$L53"," Best Short Paper"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L54",null,{"items":"$undefined"}]]}]]}],["$","$L55",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L56",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -2d:["$","$L8",null,{"href":"http://yake.inesctec.pt","children":"http://yake.inesctec.pt"}] -2e:["$","$L8",null,{"href":"https://play.google.com/store/apps/details?id=com.yake.yake","children":"Google Play"}] -2f:["$","$L8",null,{"href":"https://github.com/LIAAD/yake","children":"https://github.com/LIAAD/yake"}] -30:["$","$L8",null,{"href":"http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords","children":"API"}] -31:["$","$L8",null,{"href":"#cli-image","children":"simple YAKE! Docker image"}] -32:["$","$L8",null,{"href":"#rest-api-image","children":"RESTful API server image"}] -33:["$","$L8",null,{"href":"#standalone-installation","children":"install it and its dependencies"}] -34:["$","$L8",null,{"href":"#installing-docker","children":"script below"}] -37:["$","$L8",null,{"href":"https://boiling-castle-88317.herokuapp.com","children":"here"}] -38:["$","$L8",null,{"href":"http://127.0.0.1:5000","children":"http://127.0.0.1:5000"}] -39:["$","$L8",null,{"href":"http://127.0.0.1:5000/apidocs/","children":"http://127.0.0.1:5000/apidocs/"}] -3d:["$","$L8",null,{"href":"https://play.google.com/store/apps/details?id=com.yake.yake","children":"Google Play"}] -3e:["$","$L8",null,{"href":"https://github.com/boudinfl/pke","children":"https://github.com/boudinfl/pke"}] -3f:["$","$L8",null,{"href":"http://aclweb.org/anthology/S10-1004","children":"http://aclweb.org/anthology/S10-1004"}] -40:["$","$L8",null,{"href":"https://github.com/boudinfl","children":"https://github.com/boudinfl"}] -41:["$","$L8",null,{"href":"https://github.com/JohnSnowLabs/spark-nlp","children":"https://github.com/JohnSnowLabs/spark-nlp"}] -42:["$","$L8",null,{"href":"https://www.johnsnowlabs.com/","children":"John Snow Labs"}] -43:["$","$L8",null,{"href":"https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction","children":"their documentation"}] -44:["$","$L8",null,{"href":"https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/","children":"demo"}] -45:["$","$L8",null,{"href":"https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb","children":"google colab"}] -46:["$","$L8",null,{"href":"https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code","children":"https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code"}] -47:["$","$L8",null,{"href":"https://archive.org/details/GeneralIndex","children":"https://archive.org/details/GeneralIndex"}] -48:["$","$L8",null,{"href":"https://www.nature.com/articles/d41586-021-02895-8","children":"Nature"}] -49:["$","$L8",null,{"href":"https://github.com/chartbeat-labs/textacy","children":"https://github.com/chartbeat-labs/textacy"}] -4a:["$","$L8",null,{"href":"https://github.com/chartbeat-labs","children":"https://github.com/chartbeat-labs"}] -4b:["$","$L8",null,{"href":"https://github.com/NatLibFi/Annif/","children":"https://github.com/NatLibFi/Annif/"}] -4c:["$","$L8",null,{"href":"http://annif.org/","children":"http://annif.org/"}] -4d:["$","$L8",null,{"href":"https://portulanclarin.net/workbench/liaad-yake/","children":"https://portulanclarin.net/workbench/liaad-yake/"}] -4e:["$","$L8",null,{"href":"https://portulanclarin.net/","children":"https://portulanclarin.net/"}] -4f:["$","$L8",null,{"href":"https://github.com/silvae86","children":"https://github.com/silvae86"}] -50:["$","$L8",null,{"href":"https://doi.org/10.1016/j.ins.2019.09.013","children":"pdf"}] -51:["$","$L8",null,{"href":"https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63","children":"pdf"}] -52:["$","$L8",null,{"href":"https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80","children":"pdf"}] -53:["$","$L8",null,{"href":"http://ecir2018.org","children":"ECIR'18"}] -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/core/Levenshtein.html b/docs/docs/core/Levenshtein.html deleted file mode 100644 index 1af9bb81..00000000 --- a/docs/docs/core/Levenshtein.html +++ /dev/null @@ -1,95 +0,0 @@ -
    YAKE!
    Core


    -

    title: "Levenshtein" -description: "Module providing Levenshtein distance and ratio calculations"

    - -

    Levenshtein

    -

    The Levenshtein class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class Levenshtein:
    -    """Class for computing Levenshtein distance and similarity ratio."""
    -

    The Levenshtein class offers methods to measure the difference between two strings and calculate their similarity.

    -

    Static Methods

    -

    -

    Usage Guide

    -

    Distance Calculation

    -

    The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another.

    -

    Example:

    -
    from levenshtein import Levenshtein
    - 
    -# Calculate the edit distance between two strings
    -distance = Levenshtein.distance("kitten", "sitting")
    -print(f"Levenshtein distance: {distance}")  # Output: 3
    -

    Similarity Ratio

    -

    The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different.

    -

    Example:

    -
    from levenshtein import Levenshtein
    - 
    -# Calculate the similarity ratio between two strings
    -similarity = Levenshtein.ratio("kitten", "sitting")
    -print(f"Similarity ratio: {similarity:.4f}")  # Output: 0.5714
    -

    Algorithm Explanation

    -

    The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:

    -
      -
    1. Initialize a matrix of size (len(seq1)+1) × (len(seq2)+1)
    2. -
    3. Fill the first row and column with increasing integers (0, 1, 2, ...)
    4. -
    5. For each cell in the matrix: -
        -
      • If the corresponding characters match, the cost is 0; otherwise, it's 1
      • -
      • Calculate the minimum cost from three possible operations: -
          -
        • Deletion: Value from the cell above + 1
        • -
        • Insertion: Value from the cell to the left + 1
        • -
        • Substitution: Value from the diagonal cell + cost
        • -
        -
      • -
      -
    6. -
    7. The bottom-right cell contains the final Levenshtein distance
    8. -
    -

    Complete Usage Example

    -
    import numpy as np
    -from levenshtein import Levenshtein
    - 
    -# Test strings
    -string1 = "natural language processing"
    -string2 = "neural language processing"
    - 
    -# Calculate distance and similarity
    -distance = Levenshtein.distance(string1, string2)
    -similarity = Levenshtein.ratio(string1, string2)
    - 
    -print(f"Strings:\n1: '{string1}'\n2: '{string2}'")
    -print(f"Levenshtein distance: {distance}")
    -print(f"Similarity ratio: {similarity:.4f}")
    - 
    -# Example output:
    -# Strings:
    -# 1: 'natural language processing'
    -# 2: 'neural language processing'
    -# Levenshtein distance: 3
    -# Similarity ratio: 0.8889
    -

    Performance Considerations

    -
      -
    • Time Complexity: O(m×n) where m and n are the lengths of the input strings
    • -
    • Space Complexity: O(m×n) due to the matrix storage
    • -
    • For very long strings, consider using optimized variants or approximate algorithms
    • -
    -

    Dependencies

    -

    The Levenshtein class relies on:

    -
      -
    • numpy: For efficient matrix operations
    • -
    -

    Applications

    -

    Levenshtein distance is commonly used in:

    -
      -
    • Spell checking and correction
    • -
    • DNA sequence alignment
    • -
    • Plagiarism detection
    • -
    • Fuzzy string matching
    • -
    • Natural language processing
    • -
    • Record linkage and data deduplication
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/core/Levenshtein.txt b/docs/docs/core/Levenshtein.txt deleted file mode 100644 index b4bcb0c8..00000000 --- a/docs/docs/core/Levenshtein.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","Levenshtein"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/Levenshtein","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/Levenshtein","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","4_sg_dP2wxm0_sFMuuxbU",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -39:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3a:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -3b:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","title":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""},{"depth":1,"url":"#levenshtein","title":"Levenshtein"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#static-methods","title":"Static Methods"},{"depth":2,"url":"#usage-guide","title":"Usage Guide"},{"depth":3,"url":"#distance-calculation","title":"Distance Calculation"},{"depth":3,"url":"#similarity-ratio","title":"Similarity Ratio"},{"depth":2,"url":"#algorithm-explanation","title":"Algorithm Explanation"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#performance-considerations","title":"Performance Considerations"},{"depth":2,"url":"#dependencies","title":"Dependencies"},{"depth":2,"url":"#applications","title":"Applications"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","children":[["$","a",null,{"data-card":"","href":"#title-levenshteindescription-module-providing-levenshtein-distance-and-ratio-calculations","className":"peer","children":"title: \"Levenshtein\"\r\ndescription: \"Module providing Levenshtein distance and ratio calculations\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"levenshtein","children":[["$","a",null,{"data-card":"","href":"#levenshtein","className":"peer","children":"Levenshtein"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class provides utilities for calculating edit distances and similarity ratios between strings using the Levenshtein algorithm."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" Levenshtein"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Class for computing Levenshtein distance and similarity ratio.\"\"\""}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class offers methods to measure the difference between two strings and calculate their similarity."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"static-methods","children":[["$","a",null,{"data-card":"","href":"#static-methods","className":"peer","children":"Static Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"ratio-private","children":[["$","$L31",null,{"children":["$","code",null,{"children":"__ratio(distance, str_length)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" __ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", str_length: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the similarity ratio based on distance and string length."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" distance (float): The Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_length (int): The length of the longer string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(distance) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"ratio","children":[["$","$L31",null,{"children":["$","code",null,{"children":"ratio(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ratio"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"float"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Compute the similarity ratio between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" float: The similarity ratio."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(seq1, seq2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_length "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.__ratio(str_distance, str_length)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"distance","children":[["$","$L31",null,{"children":["$","code",null,{"children":"distance(seq1, seq2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"staticmethod"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" distance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", seq2: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") -> "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate the Levenshtein distance between two strings."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq1 (str): The first string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" seq2 (str): The second string."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: The Levenshtein distance."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq1) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(seq2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.zeros((size_x, size_y))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_x):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq1[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seq2[y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" min"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deletion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x, y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Insertion"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" matrix[x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cost, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Substitution"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(matrix[size_x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", size_y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-guide","children":[["$","a",null,{"data-card":"","href":"#usage-guide","className":"peer","children":"Usage Guide"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"distance-calculation","children":[["$","a",null,{"data-card":"","href":"#distance-calculation","className":"peer","children":"Distance Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance measures the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the edit distance between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 3"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-ratio","children":[["$","a",null,{"data-card":"","href":"#similarity-ratio","className":"peer","children":"Similarity Ratio"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The similarity ratio is a normalized measure between 0 and 1, where 1 means the strings are identical and 0 means they are completely different."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate the similarity ratio between two strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kitten\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sitting\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: 0.5714"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"algorithm-explanation","children":[["$","a",null,{"data-card":"","href":"#algorithm-explanation","className":"peer","children":"Algorithm Explanation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The Levenshtein distance algorithm uses dynamic programming to calculate the minimum edit distance between two strings:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["Initialize a matrix of size ",["$","code",null,{"children":"(len(seq1)+1) × (len(seq2)+1)"}]]}],"\n",["$","li",null,{"children":"Fill the first row and column with increasing integers (0, 1, 2, ...)"}],"\n",["$","li",null,{"children":["For each cell in the matrix:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"If the corresponding characters match, the cost is 0; otherwise, it's 1"}],"\n",["$","li",null,{"children":["Calculate the minimum cost from three possible operations:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Deletion: Value from the cell above + 1"}],"\n",["$","li",null,{"children":"Insertion: Value from the cell to the left + 1"}],"\n",["$","li",null,{"children":"Substitution: Value from the diagonal cell + cost"}],"\n"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","li",null,{"children":"The bottom-right cell contains the final Levenshtein distance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" numpy "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Test strings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"neural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Calculate distance and similarity"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(string1, string2)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Strings:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"1: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string1"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"2: '"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"string2"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Levenshtein distance: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"distance"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Similarity ratio: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"similarity"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Example output:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Strings:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 1: 'natural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# 2: 'neural language processing'"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Levenshtein distance: 3"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Similarity ratio: 0.8889"}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"performance-considerations","children":[["$","a",null,{"data-card":"","href":"#performance-considerations","className":"peer","children":"Performance Considerations"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Time Complexity: O(m×n) where m and n are the lengths of the input strings"}],"\n",["$","li",null,{"children":"Space Complexity: O(m×n) due to the matrix storage"}],"\n",["$","li",null,{"children":"For very long strings, consider using optimized variants or approximate algorithms"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"Levenshtein"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For efficient matrix operations"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"applications","children":[["$","a",null,{"data-card":"","href":"#applications","className":"peer","children":"Applications"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Levenshtein distance is commonly used in:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"Spell checking and correction"}],"\n",["$","li",null,{"children":"DNA sequence alignment"}],"\n",["$","li",null,{"children":"Plagiarism detection"}],"\n",["$","li",null,{"children":"Fuzzy string matching"}],"\n",["$","li",null,{"children":"Natural language processing"}],"\n",["$","li",null,{"children":"Record linkage and data deduplication"}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/core/highlight.html b/docs/docs/core/highlight.html deleted file mode 100644 index f9405d12..00000000 --- a/docs/docs/core/highlight.html +++ /dev/null @@ -1,77 +0,0 @@ -
    YAKE!
    Core


    -

    title: "TextHighlighter" -description: "Module for highlighting text based on keywords in YAKE"

    - -

    TextHighlighter

    -

    The TextHighlighter module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Module Overview

    -
    """
    -Module for highlighting text based on keywords.
    -Provides functionality to highlight specific keywords in text.
    -"""
    - 
    -import re
    -import logging
    -from dataclasses import dataclass
    -from typing import List
    - 
    -DEFAULT_HIGHLIGHT_PRE = "<kw>"
    -DEFAULT_HIGHLIGHT_POST = "</kw>"
    -

    Class Definitions

    -

    NgramData

    -

    -

    A data class to store n-gram processing results containing:

    -
      -
    • word_list: List of extracted words
    • -
    • split_kw_list: List of split keywords for processing
    • -
    -

    TextHighlighter

    -

    -

    Parameters:

    -
      -
    • max_ngram_size (int): Maximum size of n-grams to consider for highlighting
    • -
    • highlight_pre (str, optional): Text to insert before highlighted terms (default: <kw>)
    • -
    • highlight_post (str, optional): Text to insert after highlighted terms (default: </kw>)
    • -
    -

    Core Methods

    -

    -

    Helper Methods

    -

    -

    Usage Example

    -
    from yake.highlight import TextHighlighter
    - 
    -# Sample text to process
    -text = "Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language."
    - 
    -# Keywords to highlight
    -keywords = ["natural language processing", "artificial intelligence", "computers"]
    - 
    -# Initialize the highlighter with maximum n-gram size of 3
    -highlighter = TextHighlighter(max_ngram_size=3)
    - 
    -# Get highlighted text
    -highlighted_text = highlighter.highlight(text, keywords)
    -print(highlighted_text)
    -# Output: "<kw>Natural language processing</kw> is a field of <kw>artificial intelligence</kw> that focuses on interactions between <kw>computers</kw> and human language."
    - 
    -# Custom highlighting markers
    -custom_highlighter = TextHighlighter(
    -    max_ngram_size=3,
    -    highlight_pre="**",
    -    highlight_post="**"
    -)
    -custom_highlighted = custom_highlighter.highlight(text, keywords)
    -print(custom_highlighted)
    -# Output: "**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language."
    -

    Dependencies

    -

    The TextHighlighter module relies on:

    -
      -
    • re: For regular expression operations in text processing
    • -
    • logging: For error handling and reporting
    • -
    • dataclasses: For defining the NgramData dataclass
    • -
    • typing: For type annotations
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/core/highlight.txt b/docs/docs/core/highlight.txt deleted file mode 100644 index 0a46afdb..00000000 --- a/docs/docs/core/highlight.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","highlight"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/highlight","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/highlight","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","NeSGWNmXZOZ8KPM6HtxT3",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -3e:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3f:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -40:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","title":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""},{"depth":1,"url":"#texthighlighter","title":"TextHighlighter"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definitions","title":"Class Definitions"},{"depth":3,"url":"#ngramdata","title":"NgramData"},{"depth":3,"url":"#texthighlighter-1","title":"TextHighlighter"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","children":[["$","a",null,{"data-card":"","href":"#title-texthighlighterdescription-module-for-highlighting-text-based-on-keywords-in-yake","className":"peer","children":"title: \"TextHighlighter\"\r\ndescription: \"Module for highlighting text based on keywords in YAKE\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter","children":[["$","a",null,{"data-card":"","href":"#texthighlighter","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module provides functionality to highlight specific keywords in text, supporting both single-word and multi-word highlighting with customizable markers."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Module for highlighting text based on keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Provides functionality to highlight specific keywords in text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclasses "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dataclass"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" typing "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" List"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definitions","children":[["$","a",null,{"data-card":"","href":"#class-definitions","className":"peer","children":"Class Definitions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"ngramdata","children":[["$","a",null,{"data-card":"","href":"#ngramdata","className":"peer","children":"NgramData"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"ngram_data","children":[["$","$L31",null,{"children":["$","code",null,{"children":"NgramData"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":"@dataclass"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" NgramData"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Data structure to hold n-gram processing results.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_list: List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_kw_list: List[List["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"str"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":"A data class to store n-gram processing results containing:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word_list"}],": List of extracted words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"split_kw_list"}],": List of split keywords for processing"]}],"\n"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"texthighlighter-1","children":[["$","a",null,{"data-card":"","href":"#texthighlighter-1","className":"peer","children":"TextHighlighter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(max_ngram_size, highlight_pre=DEFAULT_HIGHLIGHT_PRE, highlight_post=DEFAULT_HIGHLIGHT_POST)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_PRE"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"DEFAULT_HIGHLIGHT_POST"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" TextHighlighter constructor. Define highlight text snippets."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" max_ngram_size: Specifies the maximum ngram size in the keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_pre: Specifies the text before a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" highlight_post: Specifies the text after a highlighted term. Defaults to ."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_pre"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlight_post"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_ngram_size"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"max_ngram_size"}]," (int): Maximum size of n-grams to consider for highlighting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_pre"}]," (str, optional): Text to insert before highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"highlight_post"}]," (str, optional): Text to insert after highlighted terms (default: ",["$","code",null,{"children":""}],")"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"highlight","children":[["$","$L31",null,{"children":["$","code",null,{"children":"highlight(text, keywords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" highlight"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, keywords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Highlights keywords in the given text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The original text to be processed."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" keywords: A list of keywords to highlight."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Each keyword can be a string or a tuple where the first element is the keyword."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" The text with highlighted keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" isinstance"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(keywords["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"tuple"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.strip()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_one_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".format_n_gram_text(text, kw_list)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_one_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_one_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_one_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for one-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tk, token "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", token)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens[tk] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" token.replace("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.error "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" e:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" logging.error("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Regex error: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"%s"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", e)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"format_n_gram","children":[["$","$L31",null,{"children":["$","code",null,{"children":"format_n_gram_text(text, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" format_n_gram_text"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formats text for n-gram highlighting."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text: The text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Formatted text with highlighted keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [kw.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" while"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".find_relevant_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list, splited_n_gram_kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_data"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".process_ngrams("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, y, n_gram_word_list, context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(new_expression)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text.append(text_tokens[y])"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" y "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(final_splited_text)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"find_relevant_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"find_relevant_ngrams(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" find_relevant_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Finds relevant n-grams in the text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing n-gram word list and split n-gram keyword list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._find_more_relevant_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, text_tokens, relevant_words_array"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ngram_data"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_ngrams","children":[["$","$L31",null,{"children":["$","code",null,{"children":"process_ngrams(text_tokens, position, n_gram_word_list, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" process_ngrams"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Processes n-grams and updates the final text."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context: Dictionary containing split n-gram keywords,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant words array, and final split text"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".replace_token("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, n_gram_word_list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ctx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._create_ngram_context("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_multi_word_ngrams_helper("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text_tokens, position, ctx"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position, new_expression"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"replace_token","children":[["$","$L31",null,{"children":["$","code",null,{"children":"replace_token(text_tokens, position, n_gram_word_list)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" replace_token"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text_tokens, position, n_gram_word_list):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Replaces tokens in text with highlighted versions."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Tuple containing new position and new expression"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", text_tokens[position]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", txt)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" new_expression "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" txt.replace("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_cleaned,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"n_gram_word_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" num_tokens, new_expression"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"find_more_relevant_helper","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_find_more_relevant_helper(position, text_tokens, relevant_words_array)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _find_more_relevant_helper"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, position, text_tokens, relevant_words_array):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Helper method for finding relevant n-gram words."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text_tokens: List of tokens from the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" NgramData containing keyword list and split n-gram word list"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".max_ngram_size):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text_tokens):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list.append(text_tokens[position : position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.sub("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" r"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"[!\",:.;?()]$"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"^[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"|"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\W[!\",:.;?()]"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join(temporary_list[i]),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" k.lower() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two.append(k)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sorted_temp "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" temporary_list_two, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: relevant_words_array.index(x.lower())"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list.append(sorted_temp["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_word_list.append(kw_list["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].split())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_list, splited_n_gram_word_list"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"create_ngram_context","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_create_ngram_context(n_gram_word_list, splited_n_gram_kw_list, relevant_words_array, final_splited_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _create_ngram_context"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" self,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n_gram_word_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" splited_n_gram_kw_list,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" relevant_words_array,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" final_splited_text,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates a context object for n-gram processing."}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" position: Current position in text tokens"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n_gram_word_list: List of n-gram words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" splited_n_gram_kw_list: List of split n-gram keywords"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" relevant_words_array: Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" final_splited_text: List of processed text tokens"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Dictionary with context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n_gram_word_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n_gram_word_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"splited_n_gram_kw_list\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": splited_n_gram_kw_list,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"relevant_words_array\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": relevant_words_array,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"final_splited_text\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": final_splited_text,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.highlight "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sample text to process"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Keywords to highlight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"natural language processing\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"artificial intelligence\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"computers\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize the highlighter with maximum n-gram size of 3"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get highlighted text"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"highlighted_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(highlighted_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"Natural language processing is a field of artificial intelligence that focuses on interactions between computers and human language.\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Custom highlighting markers"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" TextHighlighter("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" max_ngram_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_pre"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" highlight_post"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"**\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_highlighted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" custom_highlighter.highlight(text, keywords)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(custom_highlighted)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"**Natural language processing** is a field of **artificial intelligence** that focuses on interactions between **computers** and human language.\""}]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"TextHighlighter"}]," module relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations in text processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"logging"}],": For error handling and reporting"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dataclasses"}],": For defining the ",["$","code",null,{"children":"NgramData"}]," dataclass"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"typing"}],": For type annotations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3e",null,{"items":"$undefined"}]]}]]}],["$","$L3f",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L40",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/core/yake.html b/docs/docs/core/yake.html deleted file mode 100644 index 3d470d41..00000000 --- a/docs/docs/core/yake.html +++ /dev/null @@ -1,106 +0,0 @@ -
    YAKE!
    Core


    -

    title: "Yake" -description: "Core class for YAKE keyword extraction from text documents"

    - -

    KeywordExtractor Class

    -

    The KeywordExtractor class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Module Overview

    -
    """Module for keyword extraction from text documents."""
    - 
    -import os
    -import jellyfish
    -from yake.data import DataCore
    -from .Levenshtein import Levenshtein
    -

    The KeywordExtractor class provides an interface to extract and process keywords from text documents using statistical features and deduplication.

    -

    Class Definition

    -

    -

    Parameters:

    -
      -
    • lan (str, optional): Language for stopwords (default: "en")
    • -
    • n (int, optional): Maximum n-gram size (default: 3)
    • -
    • dedup_lim (float, optional): Deduplication similarity threshold (default: 0.9)
    • -
    • dedup_func (str, optional): Deduplication function to use (default: "seqm")
    • -
    • window_size (int, optional): Window size for co-occurrence (default: 1)
    • -
    • top (int, optional): Maximum number of keywords to return (default: 20)
    • -
    • features (dict, optional): Custom features for keyword scoring (default: None)
    • -
    • stopwords (set, optional): Custom stopwords set (default: None, loads from language file)
    • -
    -

    Core Methods

    -

    -

    Parameters:

    -
      -
    • text (str): The text to extract keywords from
    • -
    -

    Returns:

    -
      -
    • list: A list of tuples containing (keyword, score) pairs, sorted by relevance
    • -
    -

    Helper Methods

    -

    -

    Similarity Functions

    -

    -

    Usage Examples

    -

    Basic Usage

    -
    from yake import KeywordExtractor
    - 
    -text = """
    -Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence
    -concerned with the interactions between computers and human language, in particular how to program computers
    -to process and analyze large amounts of natural language data.
    -"""
    - 
    -# Simple example with default parameters
    -kw_extractor = KeywordExtractor()
    -keywords = kw_extractor.extract_keywords(text)
    - 
    -# Print the keywords and their scores
    -for kw, score in keywords:
    -    print(f"{kw}: {score:.4f}")
    -

    Customized Usage

    -
    from yake import KeywordExtractor
    - 
    -# Create a custom stopwords set
    -custom_stopwords = {"the", "a", "an", "in", "on", "at", "of", "for", "with"}
    - 
    -# Initialize with custom parameters
    -kw_extractor = KeywordExtractor(
    -    lan="en",               # Language
    -    n=2,                   # Maximum n-gram size
    -    dedup_lim=0.8,         # Deduplication threshold
    -    dedup_func="jaro",     # Deduplication function
    -    window_size=2,         # Window size
    -    top=10,                # Number of keywords to extract
    -    stopwords=custom_stopwords
    -)
    - 
    -text = "Machine learning is the study of computer algorithms that improve automatically through experience."
    -keywords = kw_extractor.extract_keywords(text)
    - 
    -# Print the top 10 keywords
    -for kw, score in keywords:
    -    print(f"{kw}: {score:.4f}")
    -

    Deduplication Functions

    -

    The KeywordExtractor supports multiple string similarity algorithms for deduplication:

    -
      -
    1. -

      Jaro-Winkler ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches

      -
    2. -
    3. -

      Levenshtein Ratio ("levs"): Based on Levenshtein edit distance normalized by string length

      -
    4. -
    5. -

      SequenceMatcher ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm

      -
    6. -
    -

    Dependencies

    -

    The module relies on:

    -
      -
    • os: For file operations and path handling
    • -
    • jellyfish: For Jaro-Winkler string similarity
    • -
    • yake.data.DataCore: For core data representation
    • -
    • .Levenshtein: For Levenshtein distance and ratio calculations
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/core/yake.txt b/docs/docs/core/yake.txt deleted file mode 100644 index 46253154..00000000 --- a/docs/docs/core/yake.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","core","yake"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","core/yake","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","core/yake","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","YEhx10j7CLf2IgqJWdu0n",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -3c:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3d:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -3e:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,15:["$","$L23",null,{"toc":[{"depth":2,"url":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","title":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""},{"depth":1,"url":"#keywordextractor-class","title":"KeywordExtractor Class"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#class-definition","title":"Class Definition"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#helper-methods","title":"Helper Methods"},{"depth":2,"url":"#similarity-functions","title":"Similarity Functions"},{"depth":2,"url":"#usage-examples","title":"Usage Examples"},{"depth":3,"url":"#basic-usage","title":"Basic Usage"},{"depth":3,"url":"#customized-usage","title":"Customized Usage"},{"depth":2,"url":"#deduplication-functions","title":"Deduplication Functions"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","hr",null,{}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","children":[["$","a",null,{"data-card":"","href":"#title-yakedescription-core-class-for-yake-keyword-extraction-from-text-documents","className":"peer","children":"title: \"Yake\"\r\ndescription: \"Core class for YAKE keyword extraction from text documents\""}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n","\n",["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"keywordextractor-class","children":[["$","a",null,{"data-card":"","href":"#keywordextractor-class","className":"peer","children":"KeywordExtractor Class"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Module for keyword extraction from text documents.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" .Levenshtein "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein"}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," class provides an interface to extract and process keywords from text documents using statistical features and deduplication."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-definition","children":[["$","a",null,{"data-card":"","href":"#class-definition","className":"peer","children":"Class Definition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"constructor","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(**kwargs)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"**"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kwargs):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize the KeywordExtractor with configuration parameters.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"lan\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.9"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"20"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"),"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._load_stopwords(kwargs.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._get_dedup_function("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_func\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"lan"}]," (str, optional): Language for stopwords (default: \"en\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int, optional): Maximum n-gram size (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_lim"}]," (float, optional): Deduplication similarity threshold (default: 0.9)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"dedup_func"}]," (str, optional): Deduplication function to use (default: \"seqm\")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"window_size"}]," (int, optional): Window size for co-occurrence (default: 1)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"top"}]," (int, optional): Maximum number of keywords to return (default: 20)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"features"}]," (dict, optional): Custom features for keyword scoring (default: None)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopwords"}]," (set, optional): Custom stopwords set (default: None, loads from language file)"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"extract_keywords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"extract_keywords(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" extract_keywords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Extract keywords from text.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a config dictionary for DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" core_config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"window_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"text"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"stopword_set"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"core_config)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_single_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.build_mult_terms_features("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sorted"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dc.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cc.is_valid()], "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c: c.h"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted]["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" : "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates_sorted:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" h, cand_result "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".dedup_function(cand.unique_kw, cand_result.unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" >"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"dedup_lim\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" should_add:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set.append((cand.h, cand))"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(result_set) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"top\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" break"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.kw, h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (h, cand) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" result_set]"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The text to extract keywords from"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A list of tuples containing (keyword, score) pairs, sorted by relevance"}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"helper-methods","children":[["$","a",null,{"data-card":"","href":"#helper-methods","className":"peer","children":"Helper Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"load_stopwords","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_load_stopwords(stopwords)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _load_stopwords"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stopwords):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Load stopwords from file or use provided set.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stopwords)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dir_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.dirname(os.path.realpath("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"__file__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".config["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'lan'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":".txt\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.exists(os.path.join(dir_path, local_path)):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" local_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"StopwordsList\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"stopwords_noLang.txt\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" resource_path "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" os.path.join(dir_path, local_path)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" try"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"utf-8\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" except"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" UnicodeDecodeError"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Warning: reading stopword list as ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" with"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" open"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(resource_path, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"encoding"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"ISO-8859-1\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stop_file:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(stop_file.read().lower().split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_dedup_function","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_get_dedup_function(func_name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _get_dedup_function"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, func_name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Retrieve the appropriate deduplication function.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro_winkler\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".jaro,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sequencematcher\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"seqm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".seqm,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }.get(func_name.lower(), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".levs)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"similarity-functions","children":[["$","a",null,{"data-card":"","href":"#similarity-functions","className":"peer","children":"Similarity Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"jaro","children":[["$","$L31",null,{"children":["$","code",null,{"children":"jaro(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" jaro"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.jaro(cand1, cand2)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"levs","children":[["$","$L31",null,{"children":["$","code",null,{"children":"levs(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" levs"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.distance(cand1, cand2) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand1), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(cand2))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"seqm","children":[["$","$L31",null,{"children":["$","code",null,{"children":"seqm(cand1, cand2)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" seqm"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand1, cand2):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" Levenshtein.ratio(cand1, cand2)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-examples","children":[["$","a",null,{"data-card":"","href":"#usage-examples","className":"peer","children":"Usage Examples"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-usage","children":[["$","a",null,{"data-card":"","href":"#basic-usage","className":"peer","children":"Basic Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"concerned with the interactions between computers and human language, in particular how to program computers"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"to process and analyze large amounts of natural language data."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Simple example with default parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the keywords and their scores"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"customized-usage","children":[["$","a",null,{"data-card":"","href":"#customized-usage","className":"peer","children":"Customized Usage"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a custom stopwords set"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"the\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"an\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"in\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"on\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"at\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"of\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"for\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"with\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom parameters"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw_extractor "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" KeywordExtractor("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" lan"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Language"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" n"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Maximum n-gram size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_lim"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.8"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication threshold"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" dedup_func"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"jaro\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Deduplication function"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" window_size"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Window size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" top"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Number of keywords to extract"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":" stopwords"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"custom_stopwords"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Machine learning is the study of computer algorithms that improve automatically through experience.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keywords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw_extractor.extract_keywords(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print the top 10 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" kw, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keywords:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"deduplication-functions","children":[["$","a",null,{"data-card":"","href":"#deduplication-functions","className":"peer","children":"Deduplication Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"KeywordExtractor"}]," supports multiple string similarity algorithms for deduplication:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Jaro-Winkler"}]," (\"jaro\", \"jaro_winkler\"): Based on character matches with higher weights for prefix matches"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Levenshtein Ratio"}]," (\"levs\"): Based on Levenshtein edit distance normalized by string length"]}],"\n"]}],"\n",["$","li",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"SequenceMatcher"}]," (\"seqm\", \"sequencematcher\"): Based on Python's difflib sequence matching algorithm"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"os"}],": For file operations and path handling"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For Jaro-Winkler string similarity"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"yake.data.DataCore"}],": For core data representation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":".Levenshtein"}],": For Levenshtein distance and ratio calculations"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L3c",null,{"items":"$undefined"}]]}]]}],["$","$L3d",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3e",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/composedword.html b/docs/docs/data/composedword.html deleted file mode 100644 index b65f817d..00000000 --- a/docs/docs/data/composedword.html +++ /dev/null @@ -1,154 +0,0 @@ -
    YAKE!
    Data

    ComposedWord

    -

    The ComposedWord class represents multi-word terms in YAKE (Yet Another Keyword Extractor), providing the foundation for analyzing and scoring potential keyword phrases.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class ComposedWord:
    -    def __init__(self, terms):
    -        # Initialize a composed word from term tuples [(tag, word, term_obj)]
    -

    The ComposedWord class processes and scores multi-word candidates for keyword extraction based on their constituent terms and statistical properties.

    -

    Constructor

    -

    -

    Parameters:

    -
      -
    • terms (list): A list of term tuples in the format (tag, word, term_obj) where: -
        -
      • tag (str): The part-of-speech tag for the word
      • -
      • word (str): The actual word text
      • -
      • term_obj (SingleWord): The term object representation
      • -
      -
    • -
    -

    Example:

    -
    from yake.datarepresentation import ComposedWord
    - 
    -# Create a composed word from term tuples
    -terms = [('n', 'natural', term_obj1), ('n', 'language', term_obj2)]
    -composed_word = ComposedWord(terms)
    - 
    -# Create an invalid composed word
    -invalid_composed = ComposedWord(None)
    -

    Core Methods

    -

    -

    Property Accessors

    -

    The ComposedWord class uses a dictionary-based property system with property accessors for backward compatibility:

    -

    Basic Properties

    -
      -
    • tags: Set of POS tag combinations for this candidate
    • -
    • kw: The original keyword text
    • -
    • unique_kw: Lowercase version of the keyword for uniqueness checks
    • -
    • size: Number of terms in this candidate
    • -
    • terms: List of term objects in this candidate
    • -
    • start_or_end_stopwords: Boolean indicating if the candidate starts or ends with stopwords
    • -
    -
    # Examples
    -pos_tags = composed_word.tags
    -keyword = composed_word.kw
    -unique_key = composed_word.unique_kw
    -term_count = composed_word.size
    -term_objects = composed_word.terms
    -has_stopword_boundary = composed_word.start_or_end_stopwords
    -

    Scoring Properties

    -
      -
    • tf: Term frequency of this candidate
    • -
    • integrity: Integrity score (default: 1.0)
    • -
    • h: YAKE score for this candidate (lower is better)
    • -
    -
    # Examples
    -term_frequency = composed_word.tf
    -integrity_score = composed_word.integrity
    -yake_score = composed_word.h
    - 
    -# The tf property is settable
    -composed_word.tf = 5.0
    - 
    -# The h property is settable
    -composed_word.h = 0.25
    -

    Key Algorithms

    -

    Candidate Validation

    -

    Candidates are considered valid if:

    -
      -
    1. They contain no undefined ("u") or discarded ("d") POS tags
    2. -
    3. They do not start or end with stopwords
    4. -
    -
    def is_valid(self):
    -    """Check if this candidate is valid."""
    -    is_valid = False
    -    for tag in self.tags:
    -        is_valid = is_valid or ("u" not in tag and "d" not in tag)
    -    return is_valid and not self.start_or_end_stopwords
    -

    Feature Composition

    -

    When analyzing multi-word terms, the ComposedWord class composes features from its constituent terms:

    -
    def get_composed_feature(self, feature_name, discart_stopword=True):
    -    """Get composed features from constituent terms."""
    -    list_of_features = [
    -        getattr(term, feature_name)
    -        for term in self.terms
    -        if (discart_stopword and not term.stopword) or not discart_stopword
    -    ]
    -    sum_f = sum(list_of_features)
    -    prod_f = np.prod(list_of_features)
    -    return (sum_f, prod_f, prod_f / (sum_f + 1))
    -

    Score Calculation

    -

    The YAKE score for a multi-word term is calculated using:

    -
    self.h = prod_h / ((sum_h + 1) * tf_used)
    -

    Where:

    -
      -
    • prod_h: Product of the h-scores of all terms
    • -
    • sum_h: Sum of the h-scores of all terms
    • -
    • tf_used: Term frequency (or average term frequency for virtual terms)
    • -
    -

    Lower scores indicate better keyword candidates.

    -

    Stopword Handling

    -

    The ComposedWord class handles stopwords differently based on the STOPWORD_WEIGHT configuration:

    -
      -
    • "bi": Uses co-occurrence probabilities to weight stopwords
    • -
    • "h": Uses stopword h-scores directly
    • -
    • "none": Ignores stopwords in scoring
    • -
    -

    Complete Usage Example

    -
    from yake.datarepresentation import DataCore, ComposedWord
    -from yake.stopwordremover import StopwordRemover
    - 
    -# Initialize stopwords
    -stopword_remover = StopwordRemover("en")
    -stopword_set = stopword_remover.get_stopword_set()
    - 
    -# Create DataCore instance
    -text = "Natural language processing is a field of artificial intelligence."
    -data = DataCore(text, stopword_set)
    - 
    -# Get a candidate from the DataCore
    -candidate_string = "natural language processing"
    -composed_word = data.build_candidate(candidate_string)
    - 
    -# Update the candidate's score
    -composed_word.update_h()
    - 
    -# Check if the candidate is valid
    -if composed_word.is_valid():
    -    print(f"Candidate: {composed_word.kw}")
    -    print(f"Score: {composed_word.h:.4f}")
    -    print(f"Size: {composed_word.size}")
    -    print(f"Term Frequency: {composed_word.tf}")
    -

    Dependencies

    -

    The ComposedWord class relies on:

    -
      -
    • numpy: For statistical calculations
    • -
    • jellyfish: For string similarity measurement
    • -
    • Internal utility module: -
        -
      • utils: For stopword weighting constants
      • -
      -
    • -
    -

    Integration with YAKE

    -

    ComposedWord works closely with the DataCore class:

    -
      -
    1. DataCore generates candidate ComposedWord instances
    2. -
    3. Features are built for individual terms via build_single_terms_features()
    4. -
    5. Features for multi-word terms are built via build_mult_terms_features()
    6. -
    7. Candidates are scored using the update_h() method
    8. -
    9. Lower scores indicate better keyword candidates
    10. -

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/composedword.txt b/docs/docs/data/composedword.txt deleted file mode 100644 index 532063d7..00000000 --- a/docs/docs/data/composedword.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","composedword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/composedword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/composedword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","kUzGCAYuNhwRBUUtxnCTq",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -41:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -42:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -43:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,3e:T5c0,3f:T5c0,40:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#composedword","title":"ComposedWord"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#constructor","title":"Constructor"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#property-accessors","title":"Property Accessors"},{"depth":3,"url":"#basic-properties","title":"Basic Properties"},{"depth":3,"url":"#scoring-properties","title":"Scoring Properties"},{"depth":2,"url":"#key-algorithms","title":"Key Algorithms"},{"depth":3,"url":"#candidate-validation","title":"Candidate Validation"},{"depth":3,"url":"#feature-composition","title":"Feature Composition"},{"depth":3,"url":"#score-calculation","title":"Score Calculation"},{"depth":2,"url":"#stopword-handling","title":"Stopword Handling"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"},{"depth":2,"url":"#integration-with-yake","title":"Integration with YAKE"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"composedword","children":[["$","a",null,{"data-card":"","href":"#composedword","className":"peer","children":"ComposedWord"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class represents multi-word terms in YAKE (Yet Another Keyword Extractor), providing the foundation for analyzing and scoring potential keyword phrases."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" ComposedWord"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, terms):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize a composed word from term tuples [(tag, word, term_obj)]"}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class processes and scores multi-word candidates for keyword extraction based on their constituent terms and statistical properties."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"constructor","children":[["$","a",null,{"data-card":"","href":"#constructor","className":"peer","children":"Constructor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"init","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(terms)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, terms): "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# [ (tag, word, term_obj) ]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # If terms is None, initialize an invalid candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"start_or_end_stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tags\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"unique_kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": [],"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"integrity\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Basic initialization from terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate derived properties"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tags\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join([w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms])])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".join([w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"unique_kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].lower()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(terms)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"integrity\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the candidate starts or ends with stopwords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"start_or_end_stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]["}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"start_or_end_stopwords\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" True"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"terms"}]," (list): A list of term tuples in the format ",["$","code",null,{"children":"(tag, word, term_obj)"}]," where:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"tag"}]," (str): The part-of-speech tag for the word"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"word"}]," (str): The actual word text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"term_obj"}]," (SingleWord): The term object representation"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a composed word from term tuples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'natural'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", term_obj1), ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'language'"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", term_obj2)]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(terms)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create an invalid composed word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"invalid_composed "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"update_h","children":[["$","$L31",null,{"children":["$","code",null,{"children":"update_h(features=None, is_virtual=False)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" update_h"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", is_virtual"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Update the term's score based on its constituent terms.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t, term_base "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.stopword:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" =="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"bi\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ):"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" elif"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" =="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" elif"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" =="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"none\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" pass"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"KPF\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_virtual:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.mean([term_obj.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ((sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"is_valid","children":[["$","$L31",null,{"children":["$","code",null,{"children":"is_valid()"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" is_valid"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Check if this candidate is valid.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"d\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".start_or_end_stopwords"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"uptade_cand","children":[["$","$L31",null,{"children":["$","code",null,{"children":"uptade_cand(cand)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" uptade_cand"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Update this candidate with data from another candidate.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.tags:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags.add(tag)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_composed_feature","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_composed_feature(feature_name, discart_stopword=True)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_composed_feature"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, feature_name, discart_stopword"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get composed features from constituent terms.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" list_of_features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" getattr"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(term, feature_name)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.prod(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f, prod_f, prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_features","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_features(params)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_features"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, params):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Build features for machine learning or evaluation.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"features\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"_stopword\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", ["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seen "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"doc_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"doc_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(params["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"doc_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"keys\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"keys\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" seen.add("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel_approx\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"rel_approx\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_gold_ "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" gold_key "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" params["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"keys\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" dist "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" jellyfish.levenshtein_distance("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" gold_key,"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(gold_key), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_gold_ "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (gold_key, dist)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(max_gold_["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(max_gold_["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"kw\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".unique_kw)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".size)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"int"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(params.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"is_virtual\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" feature_name "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" _stopword:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (f_sum, f_prod, f_sum_prod) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_composed_feature("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" feature_name, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"discart_stopword"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"discart_stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"else"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ''"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s_sum_K"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"feature_name"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(f_sum)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"else"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ''"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s_prod_K"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"feature_name"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(f_prod)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" columns.append("}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"'n'"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"else"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ''"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s_sum_prod_K"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"feature_name"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features_cand.append(f_sum_prod)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (features_cand, columns, seen)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"update_h_old","children":[["$","$L31",null,{"children":["$","code",null,{"children":"update_h_old(features=None, is_virtual=False)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" update_h_old"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", is_virtual"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Legacy method for updating the term's score.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" t, term_base "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_virtual "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" continue"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.stopword:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g.has_edge("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.g["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t].id]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" /"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[t "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].tf"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t1 "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob_t2"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" -"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prob"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_base.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"KPF\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_virtual:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.mean([term_obj.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ((sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"property-accessors","children":[["$","a",null,{"data-card":"","href":"#property-accessors","className":"peer","children":"Property Accessors"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class uses a dictionary-based property system with property accessors for backward compatibility:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-properties","children":[["$","a",null,{"data-card":"","href":"#basic-properties","className":"peer","children":"Basic Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"tags"}],": Set of POS tag combinations for this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"kw"}],": The original keyword text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"unique_kw"}],": Lowercase version of the keyword for uniqueness checks"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"size"}],": Number of terms in this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"terms"}],": List of term objects in this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"start_or_end_stopwords"}],": Boolean indicating if the candidate starts or ends with stopwords"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"pos_tags "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.tags"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keyword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.kw"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"unique_key "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.unique_kw"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term_count "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.size"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term_objects "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"has_stopword_boundary "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.start_or_end_stopwords"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"scoring-properties","children":[["$","a",null,{"data-card":"","href":"#scoring-properties","className":"peer","children":"Scoring Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"tf"}],": Term frequency of this candidate"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"integrity"}],": Integrity score (default: 1.0)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"h"}],": YAKE score for this candidate (lower is better)"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term_frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"integrity_score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.integrity"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"yake_score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.h"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# The tf property is settable"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 5.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# The h property is settable"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.25"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"key-algorithms","children":[["$","a",null,{"data-card":"","href":"#key-algorithms","className":"peer","children":"Key Algorithms"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"candidate-validation","children":[["$","a",null,{"data-card":"","href":"#candidate-validation","className":"peer","children":"Candidate Validation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Candidates are considered valid if:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":"They contain no undefined (\"u\") or discarded (\"d\") POS tags"}],"\n",["$","li",null,{"children":"They do not start or end with stopwords"}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" is_valid"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Check if this candidate is valid.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" False"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"d\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" is_valid "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".start_or_end_stopwords"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"feature-composition","children":[["$","a",null,{"data-card":"","href":"#feature-composition","className":"peer","children":"Feature Composition"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["When analyzing multi-word terms, the ",["$","code",null,{"children":"ComposedWord"}]," class composes features from its constituent terms:"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3e","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_composed_feature"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, feature_name, discart_stopword"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get composed features from constituent terms.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" list_of_features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" getattr"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(term, feature_name)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (discart_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" discart_stopword"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.prod(list_of_features)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f, prod_f, prod_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (sum_f "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"score-calculation","children":[["$","a",null,{"data-card":"","href":"#score-calculation","className":"peer","children":"Score Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The YAKE score for a multi-word term is calculated using:"}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3f","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prod_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ((sum_h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tf_used)"}]]}]}]}]}],"\n",["$","p",null,{"children":"Where:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"prod_h"}],": Product of the h-scores of all terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"sum_h"}],": Sum of the h-scores of all terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tf_used"}],": Term frequency (or average term frequency for virtual terms)"]}],"\n"]}],"\n",["$","p",null,{"children":"Lower scores indicate better keyword candidates."}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"stopword-handling","children":[["$","a",null,{"data-card":"","href":"#stopword-handling","className":"peer","children":"Stopword Handling"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class handles stopwords differently based on the ",["$","code",null,{"children":"STOPWORD_WEIGHT"}]," configuration:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"\"bi\""}],": Uses co-occurrence probabilities to weight stopwords"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"h\""}],": Uses stopword h-scores directly"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"none\""}],": Ignores stopwords in scoring"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$40","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore, ComposedWord"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.stopwordremover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize stopwords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_remover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopword_remover.get_stopword_set()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create DataCore instance"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore(text, stopword_set)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get a candidate from the DataCore"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"candidate_string "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"natural language processing\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.build_candidate(candidate_string)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Update the candidate's score"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.update_h()"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Check if the candidate is valid"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" composed_word.is_valid():"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Candidate: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.kw"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Score: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.h"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Size: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.size"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Term Frequency: "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"composed_word.tf"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"ComposedWord"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For statistical calculations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"jellyfish"}],": For string similarity measurement"]}],"\n",["$","li",null,{"children":["Internal utility module:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"utils"}],": For stopword weighting constants"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"integration-with-yake","children":[["$","a",null,{"data-card":"","href":"#integration-with-yake","className":"peer","children":"Integration with YAKE"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":[["$","code",null,{"children":"ComposedWord"}]," works closely with the ",["$","code",null,{"children":"DataCore"}]," class:"]}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"DataCore"}]," generates candidate ",["$","code",null,{"children":"ComposedWord"}]," instances"]}],"\n",["$","li",null,{"children":["Features are built for individual terms via ",["$","code",null,{"children":"build_single_terms_features()"}]]}],"\n",["$","li",null,{"children":["Features for multi-word terms are built via ",["$","code",null,{"children":"build_mult_terms_features()"}]]}],"\n",["$","li",null,{"children":["Candidates are scored using the ",["$","code",null,{"children":"update_h()"}]," method"]}],"\n",["$","li",null,{"children":"Lower scores indicate better keyword candidates"}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L41",null,{"items":"$undefined"}]]}]]}],["$","$L42",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L43",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/datacore.html b/docs/docs/data/datacore.html deleted file mode 100644 index 8d4709a7..00000000 --- a/docs/docs/data/datacore.html +++ /dev/null @@ -1,118 +0,0 @@ -
    YAKE!
    Data

    DataCore

    -

    The DataCore class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class DataCore:
    -    def __init__(self, text, stopword_set, config=None):
    -        # Initialize the data core with text and configuration
    -

    The DataCore class processes text documents to identify potential keywords based on statistical features and contextual relationships.

    -

    Constructor

    -

    -

    Parameters:

    -
      -
    • text (str): The input text to analyze for keyword extraction
    • -
    • stopword_set (set): A set of stopwords to filter out non-content words
    • -
    • config (dict, optional): Configuration options including: -
        -
      • windows_size (int): Size of word window for co-occurrence (default: 2)
      • -
      • n (int): Maximum length of keyword phrases (default: 3)
      • -
      • tags_to_discard (set): POS tags to ignore (default: d)
      • -
      • exclude (set): Characters to exclude (default: string.punctuation)
      • -
      -
    • -
    -

    Example:

    -
    from yake.datarepresentation import DataCore
    -import string
    - 
    -# Initialize with default configuration
    -data = DataCore("Sample text for analysis", stopword_set)
    - 
    -# Initialize with custom configuration
    -config = {
    -    "windows_size": 3,
    -    "n": 4,
    -    "tags_to_discard": {"u", "d", "p"},
    -    "exclude": set(string.punctuation)
    -}
    -data = DataCore("Sample text for analysis", stopword_set, config)
    -

    Core Methods

    -

    -

    Public API Methods

    -

    -

    Property Accessors

    -

    The DataCore class includes various property accessors for backward compatibility:

    -

    Configuration Properties

    -
      -
    • exclude: Characters to exclude from processing
    • -
    • tags_to_discard: Part-of-speech tags to ignore during analysis
    • -
    • stopword_set: Set of stopwords to filter out
    • -
    • g: DirectedGraph representing term co-occurrences
    • -
    -
    # Examples
    -excluded_chars = data.exclude
    -ignored_tags = data.tags_to_discard
    -stopwords = data.stopword_set
    -graph = data.g
    -

    Text Statistics Properties

    -
      -
    • number_of_sentences: Count of sentences in the processed text
    • -
    • number_of_words: Total number of words processed
    • -
    -
    # Examples
    -sentence_count = data.number_of_sentences
    -word_count = data.number_of_words
    -

    Collection Properties

    -
      -
    • terms: Dictionary of SingleWord objects representing individual terms
    • -
    • candidates: Dictionary of ComposedWord objects representing keyword candidates
    • -
    • sentences_obj: Processed sentence objects
    • -
    • sentences_str: Raw sentence strings from the original text
    • -
    • freq_ns: Frequency of n-grams by length
    • -
    -
    # Examples
    -all_terms = data.terms
    -all_candidates = data.candidates
    -processed_sentences = data.sentences_obj
    -raw_sentences = data.sentences_str
    -ngram_frequencies = data.freq_ns
    -

    Complete Usage Example

    -
    from yake.datarepresentation import DataCore
    -from yake.stopwordremover import StopwordRemover
    - 
    -# Initialize stopwords
    -stopword_remover = StopwordRemover("en")
    -stopword_set = stopword_remover.get_stopword_set()
    - 
    -# Create DataCore instance
    -text = "Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language."
    -data = DataCore(text, stopword_set)
    - 
    -# Build features for keyword extraction
    -data.build_single_terms_features()
    -data.build_mult_terms_features()
    - 
    -# Extract top candidates
    -candidates = [(cand.unique_kw, cand.h) for cand in data.candidates.values() if cand.is_valid()]
    -candidates.sort(key=lambda x: x[1])  # Sort by score (lower is better in YAKE)
    - 
    -# Print top 5 keywords
    -for keyword, score in candidates[:5]:
    -    print(f"{keyword}: {score:.4f}")
    -

    Dependencies

    -

    The DataCore class relies on:

    -
      -
    • string: For punctuation constants
    • -
    • networkx: For graph representation (co-occurrences)
    • -
    • numpy: For statistical calculations
    • -
    • segtok: For tokenization
    • -
    • Internal utility modules: -
        -
      • utils: For pre-filtering and tokenization
      • -
      • single_word: For representing individual terms
      • -
      • composed_word: For representing multi-word candidates
      • -
      -
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/datacore.txt b/docs/docs/data/datacore.txt deleted file mode 100644 index cd66a23b..00000000 --- a/docs/docs/data/datacore.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","datacore"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/datacore","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/datacore","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","Lw-dwezEjojj4N6ZTlN6P",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -45:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -46:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -47:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,3e:T5c0,3f:T5c0,40:T5c0,41:T5c0,42:T5c0,43:T5c0,44:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#datacore","title":"DataCore"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#constructor","title":"Constructor"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#public-api-methods","title":"Public API Methods"},{"depth":2,"url":"#property-accessors","title":"Property Accessors"},{"depth":3,"url":"#configuration-properties","title":"Configuration Properties"},{"depth":3,"url":"#text-statistics-properties","title":"Text Statistics Properties"},{"depth":3,"url":"#collection-properties","title":"Collection Properties"},{"depth":2,"url":"#complete-usage-example","title":"Complete Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"datacore","children":[["$","a",null,{"data-card":"","href":"#datacore","className":"peer","children":"DataCore"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class is the foundation of YAKE (Yet Another Keyword Extractor), providing the core data representation for document analysis and keyword extraction."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" DataCore"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, stopword_set, config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize the data core with text and configuration"}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class processes text documents to identify potential keywords based on statistical features and contextual relationships."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"constructor","children":[["$","a",null,{"data-card":"","href":"#constructor","className":"peer","children":"Constructor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"init","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(text, stopword_set, config=None)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, stopword_set, config"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Initialize the data core with text and configuration."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text (str): The input text to analyze for keyword extraction"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" stopword_set (set): A set of stopwords to filter out non-content words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" config (dict, optional): Configuration options including:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - windows_size (int): Size of word window for co-occurrence (default: 2)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - n (int): Maximum length of keyword phrases (default: 3)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - tags_to_discard (set): POS tags to ignore (default: {\"u\", \"d\"})"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" - exclude (set): Characters to exclude (default: string.punctuation)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize default configuration if none provided"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Extract configuration values with appropriate defaults"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windows_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tags_to_discard "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tags_to_discard\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"d\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" exclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" config.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"exclude\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(string.punctuation))"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize the state dictionary containing all component data structures"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._state "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Configuration settings"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"config\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"exclude\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": exclude, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Punctuation and other characters to exclude"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tags_to_discard\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": tags_to_discard, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# POS tags to ignore during analysis"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"stopword_set\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Set of stopwords for filtering"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" },"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Text corpus statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"text_stats\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Total count of sentences"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_words\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Total count of processed words"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" },"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Core data collections for analysis"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"collections\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"terms\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {}, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Dictionary mapping terms to SingleWord objects"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"candidates\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {}, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Dictionary mapping unique keywords to ComposedWord objects"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sentences_obj\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": [], "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Nested list of processed sentence objects"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"sentences_str\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": [], "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# List of raw sentence strings"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"freq_ns\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {} "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Frequency distribution of n-grams by length"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" },"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Graph for term co-occurrence analysis"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"g\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": nx.DiGraph() "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Directed graph where nodes are terms and edges represent co-occurrences"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize n-gram frequencies with zero counts for each length 1 to n"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(n):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._state["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"collections\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"freq_ns\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"][i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process the text and build all data structures"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._build(text, windows_size, n)"}]]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The input text to analyze for keyword extraction"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopword_set"}]," (set): A set of stopwords to filter out non-content words"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"config"}]," (dict, optional): Configuration options including:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"windows_size"}]," (int): Size of word window for co-occurrence (default: 2)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"n"}]," (int): Maximum length of keyword phrases (default: 3)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tags_to_discard"}]," (set): POS tags to ignore (default: ","d",")"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"exclude"}]," (set): Characters to exclude (default: string.punctuation)"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" string"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with default configuration"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Sample text for analysis\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", stopword_set)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize with custom configuration"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"config "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"4"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tags_to_discard\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"u\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"d\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"p\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"},"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"exclude\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(string.punctuation)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Sample text for analysis\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", stopword_set, config)"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"build","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_build(text, windows_size, n)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _build"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, text, windows_size, n):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build the core data structures from the input text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" This method handles the initial processing of text, including "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" pre-filtering, sentence segmentation, and word tokenization."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" text (str): The input text to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" windows_size (int): Size of word window for co-occurrence analysis"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n (int): Maximum n-gram length to consider for keyword candidates"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Pre-process text for normalization"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pre_filter(text)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Split text into sentences and tokenize"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_str "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenize_sentences(text)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".number_of_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_str)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize position counter for global word positions"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a processing context dictionary to pass fewer arguments"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": windows_size, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": n}"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process each sentence individually"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_id, sentence "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_str):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_sentence(sentence, sentence_id, pos_text, context)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Store the total number of processed words"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".number_of_words "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_sentence","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_process_sentence(sentence, sentence_id, pos_text, context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _process_sentence"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, sentence, sentence_id, pos_text, context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Process a single sentence from the document."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Handles the tokenization of a sentence, identifies words and punctuation,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" and processes each meaningful word."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" sentence (list): List of word tokens in the sentence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" sentence_id (int): Unique identifier for this sentence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" pos_text (int): Current global position in the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context (dict): Processing context with configuration parameters"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: Updated global position counter"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize lists to store processed sentence components"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_obj_aux "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [] "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Blocks of words within the sentence"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [] "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Current block of continuous words (separated by punctuation)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Extend the context with sentence information for word processing"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" processing_context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context.copy()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" processing_context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sentence_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_id"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process each word in the sentence"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_sent, word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(sentence):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the word is just punctuation (all characters are excluded)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"([c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".exclude]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # If we have a block of words, save it and start a new block"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_obj_aux.append(block_of_word_obj)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process meaningful words"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_context "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pos_sent\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": pos_sent, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Position within the sentence"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"block_of_word_obj\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": block_of_word_obj, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Current word block"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process this word and update position counter"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._process_word("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word, pos_text, processing_context, word_context"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Save any remaining word block"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_obj_aux.append(block_of_word_obj)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add processed sentence to collection if not empty"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(sentence_obj_aux) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".sentences_obj.append(sentence_obj_aux)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"process_word","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_process_word(word, pos_text, context, word_context)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _process_word"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, word, pos_text, context, word_context):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Process a single word within a sentence."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates or retrieves the term object, updates its occurrences,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" analyzes co-occurrences with nearby words, and generates candidate keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" word (str): The word to process"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" pos_text (int): Current global position in the text"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" context (dict): Processing context with configuration parameters"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" word_context (dict): Word-specific context information"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" int: Updated global position counter"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Extract necessary context variables"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sentence_id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"sentence_id\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windows_size "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"windows_size\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" n "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_sent "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pos_sent\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_context["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"block_of_word_obj\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get the part-of-speech tag for this word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_tag(word, pos_sent)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get or create the term object for this word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_term(word)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add this occurrence to the term's record"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj.add_occur(tag, sentence_id, pos_sent, pos_text)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Increment global position counter"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update co-occurrence information for valid tags"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags_to_discard:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._update_cooccurrence(block_of_word_obj, term_obj, windows_size)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Generate keyword candidates involving this term"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"._generate_candidates((tag, word), term_obj, block_of_word_obj, n)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add this word to the current block"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj.append((tag, word, term_obj))"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pos_text"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"update_cooccurrence","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_update_cooccurrence(block_of_word_obj, term_obj, windows_size)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _update_cooccurrence"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, block_of_word_obj, term_obj, windows_size):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Update co-occurrence information between terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Records relationships between the current term and previous terms"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" within the specified window size."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" block_of_word_obj (list): Current block of words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" term_obj (SingleWord): Term object for the current word"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" windows_size (int): Size of co-occurrence window to consider"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate the window of previous words to consider for co-occurrence"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" windows_size), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj))"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # For each word in the window, update co-occurrence if it's a valid term"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" block_of_word_obj[w]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tags_to_discard:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add co-occurrence edge from previous term to current term"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".add_cooccur(block_of_word_obj[w]["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], term_obj)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"generate_candidates","children":[["$","$L31",null,{"children":["$","code",null,{"children":"_generate_candidates(term, term_obj, block_of_word_obj, n)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" _generate_candidates"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, term, term_obj, block_of_word_obj, n):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Generate keyword candidates from terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates single-term candidates and multi-term candidates up to length n,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" combining the current term with previous terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" term (tuple): Current term as (tag, word) tuple"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" term_obj (SingleWord): Term object for the current word"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" block_of_word_obj (list): Current block of words"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" n (int): Maximum candidate length to generate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create single-term candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (term_obj,)]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(candidate)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".add_or_update_composedword(cand)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate window of previous words to consider for multi-term candidates"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" range"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (n "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(block_of_word_obj))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )[::"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Reverse to build phrases from right to left"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Generate multi-term candidates with increasing length"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word_windows:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add previous term to candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate.append(block_of_word_obj[w])"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update frequency count for this n-gram length"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".freq_ns["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(candidate)] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create and register the composed word candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # (reverse to maintain correct word order)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(candidate[::"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".add_or_update_composedword(cand)"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"public-api-methods","children":[["$","a",null,{"data-card":"","href":"#public-api-methods","className":"peer","children":"Public API Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"get_tag","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_tag(word, i)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_tag"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, word, i):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Get the part-of-speech tag for a word."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" word (str): The word to tag"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" i (int): Position of the word in its sentence"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str: Single character tag representing the word type"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" (\"d\" for digit, \"u\" for unusual, \"a\" for acronym,"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\" for proper noun, \"p\" for plain word)"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" get_tag(word, i, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".exclude)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_candidate","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_candidate(candidate_string)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_candidate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, candidate_string):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build a candidate ComposedWord from a string."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" This method allows creating candidate keywords from external input"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" strings rather than from the document's own text."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" candidate_string (str): String to convert to a keyword candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" ComposedWord: A composed word object representing the candidate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Tokenize the candidate string"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenized_words "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_contractions(web_tokenizer(candidate_string.lower()))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (w.startswith("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Process each word in the candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate_terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" index, word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" enumerate"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(tokenized_words):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get the tag and term object"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_tag(word, index)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_term(word, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"save_non_seen"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Skip terms with zero term frequency (not in the original document)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate_terms.append((tag, word, term_obj))"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the candidate has any valid terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" any"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(term["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidate_terms):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Return an invalid composed word if no valid terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create and return the composed word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ComposedWord(candidate_terms)"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_single_terms_features","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_single_terms_features(features=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_single_terms_features"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build statistical features for single terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Calculates term frequency statistics and updates the scoring metrics"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" for each individual term."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" features (list, optional): Specific features to calculate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Filter to valid terms (non-stopwords)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_tfs "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.array([x.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_terms])"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Skip if no valid terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(valid_tfs) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate frequency statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" avg_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_tfs.mean()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" std_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" valid_tfs.std()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(x.tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms.values())"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Prepare statistics dictionary for updating terms"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"max_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": max_tf,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"avg_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": avg_tf,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"std_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": std_tf,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".number_of_sentences,"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update all terms with the calculated statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"map"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: x.update_h(stats, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"features), "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms.values()))"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"build_mult_terms_features","children":[["$","$L31",null,{"children":["$","code",null,{"children":"build_mult_terms_features(features=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" build_mult_terms_features"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Build features for multi-word terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Updates the scoring metrics for valid candidate keywords."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" features (list, optional): Specific features to calculate"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update only valid candidates (filter then apply update_h)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" map"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: x.update_h("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"features),"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.is_valid()],"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_term","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_term(str_word, save_non_seen=True)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3e","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_term"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, str_word, save_non_seen"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Get or create a term object for a word."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Handles word normalization, stopword checking, and term object creation."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" str_word (str): The word to get a term object for"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" save_non_seen (bool, optional): Whether to save new terms to the collection"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Returns:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" SingleWord: Term object representing this word"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Normalize the term (convert to lowercase)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" str_word.lower()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if it's a stopword in original form"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_sto "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Handle plural forms by removing trailing 's'"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term.endswith("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"s\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(unique_term) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term[:"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"-"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Return existing term if already processed"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[unique_term]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Remove punctuation for further analysis"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pontuation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".exclude:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_unique_term.replace(pontuation, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Determine if this is a stopword (original form, normalized form, or too short)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" isstopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" simples_sto"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" unique_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".stopword_set"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(simples_unique_term) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"<"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 3"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create the term object"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord(unique_term, term_id, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj.stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" isstopword"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Save the term to the collection if requested"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" save_non_seen:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.add_node(term_id)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".terms[unique_term] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_obj"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"add_cooccur","children":[["$","$L31",null,{"children":["$","code",null,{"children":"add_cooccur(left_term, right_term)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3f","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" add_cooccur"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, left_term, right_term):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Add a co-occurrence relationship between two terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Creates or updates an edge in the co-occurrence graph between terms."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" left_term (SingleWord): Source term in the relationship"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" right_term (SingleWord): Target term in the relationship"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if the edge already exists"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" right_term.id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g[left_term.id]:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Create a new edge with initial weight"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.add_edge(left_term.id, right_term.id, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"tf"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Increment the co-occurrence frequency"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g[left_term.id][right_term.id]["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"add_or_update_composedword","children":[["$","$L31",null,{"children":["$","code",null,{"children":"add_or_update_composedword(cand)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$40","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" add_or_update_composedword"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, cand):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Add or update a composed word in the candidates collection."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Handles the registration and frequency counting of keyword candidates."}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" "}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" Args:"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" cand (ComposedWord): The candidate keyword to add or update"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if this candidate already exists"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.unique_kw "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates:"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Add new candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates[cand.unique_kw] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update existing candidate with new information"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates[cand.unique_kw].uptade_cand(cand)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Increment the frequency counter for this candidate"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".candidates[cand.unique_kw].tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"property-accessors","children":[["$","a",null,{"data-card":"","href":"#property-accessors","className":"peer","children":"Property Accessors"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class includes various property accessors for backward compatibility:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"configuration-properties","children":[["$","a",null,{"data-card":"","href":"#configuration-properties","className":"peer","children":"Configuration Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"exclude"}],": Characters to exclude from processing"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tags_to_discard"}],": Part-of-speech tags to ignore during analysis"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopword_set"}],": Set of stopwords to filter out"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"g"}],": DirectedGraph representing term co-occurrences"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$41","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"excluded_chars "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.exclude"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"ignored_tags "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.tags_to_discard"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopwords "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.stopword_set"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"graph "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.g"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"text-statistics-properties","children":[["$","a",null,{"data-card":"","href":"#text-statistics-properties","className":"peer","children":"Text Statistics Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"number_of_sentences"}],": Count of sentences in the processed text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"number_of_words"}],": Total number of words processed"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$42","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"sentence_count "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.number_of_sentences"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"word_count "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.number_of_words"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"collection-properties","children":[["$","a",null,{"data-card":"","href":"#collection-properties","className":"peer","children":"Collection Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"terms"}],": Dictionary of ",["$","code",null,{"children":"SingleWord"}]," objects representing individual terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"candidates"}],": Dictionary of ",["$","code",null,{"children":"ComposedWord"}]," objects representing keyword candidates"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"sentences_obj"}],": Processed sentence objects"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"sentences_str"}],": Raw sentence strings from the original text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"freq_ns"}],": Frequency of n-grams by length"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$43","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"all_terms "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.terms"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"all_candidates "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.candidates"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"processed_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.sentences_obj"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"raw_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.sentences_str"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"ngram_frequencies "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.freq_ns"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"complete-usage-example","children":[["$","a",null,{"data-card":"","href":"#complete-usage-example","className":"peer","children":"Complete Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$44","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.stopwordremover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize stopwords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_remover "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" StopwordRemover("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"en\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stopword_set "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stopword_remover.get_stopword_set()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create DataCore instance"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Natural language processing is a field of artificial intelligence that focuses on the interaction between computers and humans using natural language.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" DataCore(text, stopword_set)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Build features for keyword extraction"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data.build_single_terms_features()"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"data.build_mult_terms_features()"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Extract top candidates"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"candidates "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" [(cand.unique_kw, cand.h) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" data.candidates.values() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cand.is_valid()]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"candidates.sort("}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"key"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=lambda"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" x: x["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sort by score (lower is better in YAKE)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Print top 5 keywords"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" keyword, score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" candidates[:"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"keyword"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"DataCore"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"string"}],": For punctuation constants"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"networkx"}],": For graph representation (co-occurrences)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For statistical calculations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"segtok"}],": For tokenization"]}],"\n",["$","li",null,{"children":["Internal utility modules:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"utils"}],": For pre-filtering and tokenization"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"single_word"}],": For representing individual terms"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"composed_word"}],": For representing multi-word candidates"]}],"\n"]}],"\n"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L45",null,{"items":"$undefined"}]]}]]}],["$","$L46",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L47",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/singleword.html b/docs/docs/data/singleword.html deleted file mode 100644 index 65c28b46..00000000 --- a/docs/docs/data/singleword.html +++ /dev/null @@ -1,126 +0,0 @@ -
    YAKE!
    Data

    SingleWord

    -

    The SingleWord class represents individual terms (words) in YAKE (Yet Another Keyword Extractor), providing statistical features used in keyword scoring.

    -
    -

    Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation.

    -
    -

    Class Overview

    -
    class SingleWord:
    -    def __init__(self, unique, idx, graph):
    -        # Initialize a single word term with attributes and metrics
    -

    The SingleWord class tracks term frequency, position, and other statistical features that help determine the term's importance in the document.

    -

    Constructor

    -

    -

    Parameters:

    -
      -
    • unique (str): The unique term (normalized word form)
    • -
    • idx (int): Numeric identifier for the term
    • -
    • graph (networkx.DiGraph): Reference to the co-occurrence graph
    • -
    -

    Example:

    -
    import networkx as nx
    -from yake.datarepresentation import SingleWord
    - 
    -# Create a graph
    -g = nx.DiGraph()
    - 
    -# Initialize a single word
    -term = SingleWord("algorithm", 1, g)
    -

    Dictionary-Style Access

    -

    The SingleWord class supports dictionary-style attribute access for flexibility:

    -

    -

    Example:

    -
    # Dictionary-style access
    -term["wfreq"] = 2.5
    -score = term["h"]
    -position = term.get("wpos", 1.0)
    -

    Core Methods

    -

    -

    Properties

    -

    The SingleWord class provides property accessors for compatibility with direct attribute access:

    -

    Basic Properties

    -
      -
    • unique_term: The normalized form of the word
    • -
    • stopword: Boolean indicating if the term is a stopword
    • -
    • h: The final score of the term (lower is better in YAKE)
    • -
    • tf: Term frequency in the document
    • -
    • occurs: Dictionary of sentence occurrences
    • -
    -
    # Examples
    -word = term.unique_term
    -is_stopword = term.stopword
    -score = term.h
    -frequency = term.tf
    -occurrences = term.occurs
    -

    Feature Properties

    -
      -
    • wfreq: Word frequency metric
    • -
    • wcase: Word case metric (uppercase/proper noun)
    • -
    • wrel: Word relevance metric (based on graph connections)
    • -
    • wpos: Word position metric
    • -
    • wspread: Word spread across document
    • -
    • pl: Probability left (graph-based)
    • -
    • pr: Probability right (graph-based)
    • -
    -
    # Examples
    -frequency_metric = term.wfreq
    -case_metric = term.wcase
    -relevance = term.wrel
    -position_metric = term.wpos
    -spread_metric = term.wspread
    -left_probability = term.pl
    -right_probability = term.pr
    -

    Feature Calculation Logic

    -

    The SingleWord class calculates several features that contribute to keyword scoring:

    -

    Word Frequency (wfreq)

    -

    Measures how frequent the term is compared to the average document term frequency.

    -
    wfreq = term_frequency / (average_term_frequency + standard_deviation)
    -

    Word Case (wcase)

    -

    Represents the significance of capitalization in determining proper nouns and acronyms.

    -
    wcase = max(uppercase_freq, proper_noun_freq) / (1.0 + log(term_frequency))
    -

    Word Relevance (wrel)

    -

    Evaluates the term's importance based on its co-occurrence relationships.

    -
    wrel = (0.5 + (probability_weighted_left * (tf / max_tf))) + 
    -       (0.5 + (probability_weighted_right * (tf / max_tf)))
    -

    Word Position (wpos)

    -

    Considers the typical position of the word in sentences, with the intuition that important terms appear earlier.

    -
    wpos = log(log(3.0 + median_position_in_sentences))
    -

    Word Spread (wspread)

    -

    Measures how widely the term is distributed across the document's sentences.

    -
    wspread = number_of_sentences_with_term / total_number_of_sentences
    -

    Final Score Calculation

    -

    The final score (h) combines all metrics in a formula designed to rank candidate keywords:

    -
    h = (wpos * wrel) / (wcase + (wfreq / wrel) + (wspread / wrel))
    -

    Lower scores indicate better keyword candidates in YAKE's ranking system.

    -

    Usage Example

    -
    import networkx as nx
    -from yake.datarepresentation import SingleWord
    - 
    -# Create a graph for co-occurrence
    -g = nx.DiGraph()
    -g.add_node(1)
    - 
    -# Initialize a word
    -term = SingleWord("algorithm", 1, g)
    - 
    -# Add occurrences
    -term.add_occur("n", 0, 5, 5)  # In sentence 0, position 5
    -term.add_occur("n", 1, 2, 15) # In sentence 1, position 2
    - 
    -# Update the score with statistics
    -stats = {
    -    "max_tf": 10.0,
    -    "avg_tf": 3.0,
    -    "std_tf": 2.0,
    -    "number_of_sentences": 5
    -}
    -term.update_h(stats)
    - 
    -# Get the final score
    -print(f"Keyword score for 'algorithm': {term.h:.4f}")
    -

    Dependencies

    -

    The SingleWord class relies on:

    -
      -
    • math: For logarithmic calculations
    • -
    • numpy: For statistical operations (median)
    • -
    • networkx: Implicitly through the provided graph parameter
    • -
    \ No newline at end of file diff --git a/docs/docs/data/singleword.txt b/docs/docs/data/singleword.txt deleted file mode 100644 index eb4c8371..00000000 --- a/docs/docs/data/singleword.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","singleword"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/singleword","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/singleword","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","tr4vhxH0kS7Q1lGGl0Y4u",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -47:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -48:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -49:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,39:T5c0,3a:T5c0,3b:T5c0,3c:T5c0,3d:T5c0,3e:T5c0,3f:T5c0,40:T5c0,41:T5c0,42:T5c0,43:T5c0,44:T5c0,45:T5c0,46:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#singleword","title":"SingleWord"},{"depth":2,"url":"#class-overview","title":"Class Overview"},{"depth":2,"url":"#constructor","title":"Constructor"},{"depth":2,"url":"#dictionary-style-access","title":"Dictionary-Style Access"},{"depth":2,"url":"#core-methods","title":"Core Methods"},{"depth":2,"url":"#properties","title":"Properties"},{"depth":3,"url":"#basic-properties","title":"Basic Properties"},{"depth":3,"url":"#feature-properties","title":"Feature Properties"},{"depth":2,"url":"#feature-calculation-logic","title":"Feature Calculation Logic"},{"depth":3,"url":"#word-frequency-wfreq","title":["Word Frequency (",["$","code",null,{"children":"wfreq"}],")"]},{"depth":3,"url":"#word-case-wcase","title":["Word Case (",["$","code",null,{"children":"wcase"}],")"]},{"depth":3,"url":"#word-relevance-wrel","title":["Word Relevance (",["$","code",null,{"children":"wrel"}],")"]},{"depth":3,"url":"#word-position-wpos","title":["Word Position (",["$","code",null,{"children":"wpos"}],")"]},{"depth":3,"url":"#word-spread-wspread","title":["Word Spread (",["$","code",null,{"children":"wspread"}],")"]},{"depth":2,"url":"#final-score-calculation","title":"Final Score Calculation"},{"depth":2,"url":"#usage-example","title":"Usage Example"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"singleword","children":[["$","a",null,{"data-card":"","href":"#singleword","className":"peer","children":"SingleWord"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class represents individual terms (words) in YAKE (Yet Another Keyword Extractor), providing statistical features used in keyword scoring."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each method. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"class-overview","children":[["$","a",null,{"data-card":"","href":"#class-overview","className":"peer","children":"Class Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"class"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" SingleWord"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, unique, idx, graph):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Initialize a single word term with attributes and metrics"}]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class tracks term frequency, position, and other statistical features that help determine the term's importance in the document."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"constructor","children":[["$","a",null,{"data-card":"","href":"#constructor","className":"peer","children":"Constructor"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":["$","$L30",null,{"value":"init","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"init"}],"(unique, idx, graph)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __init__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, unique, idx, graph):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Initialize a single word term with attributes and metrics.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" idx "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Fast access needed as it's used in graph operations"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Fast access needed for network calculations"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Basic information"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"unique_term\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": unique,"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"stopword\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"False"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Final Score"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Term frequency statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Term frequency"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf_a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Term Frequency for uppercase words"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"tf_n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Term Frequency for proper nouns"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Word characteristic metrics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word frequency"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word case metric"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word relevance metric"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word position metric"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Word spread across document"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Probability left"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Probability right"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"pagerank\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# PageRank score"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Ocurrence tracking"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"occurs\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": {}, "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Sentence Occurrences"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" }"}]}]]}]}]}]}]]}]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"unique"}]," (str): The unique term (normalized word form)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"idx"}]," (int): Numeric identifier for the term"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"graph"}]," (networkx.DiGraph): Reference to the co-occurrence graph"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" networkx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a graph"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"g "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx.DiGraph()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize a single word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"algorithm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", g)"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dictionary-style-access","children":[["$","a",null,{"data-card":"","href":"#dictionary-style-access","className":"peer","children":"Dictionary-Style Access"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class supports dictionary-style attribute access for flexibility:"]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"getitem","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"getitem"}],"(key)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __getitem__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, key):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Access attributes dictionary-style with obj['key'].\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data[key]"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"setitem","children":[["$","$L31",null,{"children":["$","code",null,{"children":[["$","strong",null,{"children":"setitem"}],"(key, value)"]}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" __setitem__"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, key, value):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Set attributes dictionary-style with obj['key'] = value.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data[key] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" value"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get(key, default=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, key, default"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get with default, mimicking dict.get().\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data.get(key, default)"}]]}]]}]}]}]}]]}]]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Dictionary-style access"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 2.5"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"position "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.get("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"core-methods","children":[["$","a",null,{"data-card":"","href":"#core-methods","className":"peer","children":"Core Methods"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"add_occur","children":[["$","$L31",null,{"children":["$","code",null,{"children":"add_occur(tag, sent_id, pos_sent, pos_text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$39","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" add_occur"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, tag, sent_id, pos_sent, pos_text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Add occurrence information.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sent_id "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"not"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs[sent_id] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" []"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs[sent_id].append((pos_sent, pos_text))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tag "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_metric","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_metric(name)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3a","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_metric"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, name):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Get the value of any word metric.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data.get(name, "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"set_metric","children":[["$","$L31",null,{"children":["$","code",null,{"children":"set_metric(name, value)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3b","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" set_metric"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, name, value):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Set the value of any word metric.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data[name] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" value"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_graph_metrics","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_graph_metrics()"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3c","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_graph_metrics"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Calculate all graph-based metrics at once.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Out-edges metrics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdr "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.out_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wir "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(d["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (_, _, d) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.out_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"data"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pwr "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wir "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdr "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wir"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # In-edges metrics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdl "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.in_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wil "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(d["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (_, _, d) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".g.in_edges("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".id, "}],["$","span",null,{"style":{"--shiki-light":"#E36209","--shiki-dark":"#FFAB70"},"children":"data"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"True"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pwl "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wil "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" else"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wdl "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wil"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wdr, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wir\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wir, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": pwr, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wdl, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wil\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": wil, "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": pwl}"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"update_h","children":[["$","$L31",null,{"children":["$","code",null,{"children":"update_h(stats, features=None)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" update_h"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(self, stats, features"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"None"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Update the word's score based on statistics.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"max_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" avg_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"avg_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" std_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"std_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" number_of_sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" stats["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Get all graph metrics at once"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph_metrics "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".get_graph_metrics()"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Update metrics based on features"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wdr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwl\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf))) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (graph_metrics["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"pwr\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf))"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (avg_tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" std_tf)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" number_of_sentences"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_a\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"], "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"tf_n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" math.log("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".tf)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"is"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" None"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" or"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" features:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" math.log("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" math.log("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" np.median("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".occurs.keys())))"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Calculate final score"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"h\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wpos\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wcase\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"]"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wfreq\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wspread\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"] "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" self"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":".data["}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"wrel\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"])"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" )"}]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"properties","children":[["$","a",null,{"data-card":"","href":"#properties","className":"peer","children":"Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class provides property accessors for compatibility with direct attribute access:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"basic-properties","children":[["$","a",null,{"data-card":"","href":"#basic-properties","className":"peer","children":"Basic Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"unique_term"}],": The normalized form of the word"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"stopword"}],": Boolean indicating if the term is a stopword"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"h"}],": The final score of the term (lower is better in YAKE)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tf"}],": Term frequency in the document"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"occurs"}],": Dictionary of sentence occurrences"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3e","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"word "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.unique_term"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"is_stopword "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.stopword"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"score "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.h"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.tf"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"occurrences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.occurs"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"feature-properties","children":[["$","a",null,{"data-card":"","href":"#feature-properties","className":"peer","children":"Feature Properties"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"wfreq"}],": Word frequency metric"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wcase"}],": Word case metric (uppercase/proper noun)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wrel"}],": Word relevance metric (based on graph connections)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wpos"}],": Word position metric"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"wspread"}],": Word spread across document"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"pl"}],": Probability left (graph-based)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"pr"}],": Probability right (graph-based)"]}],"\n"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$3f","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"frequency_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wfreq"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"case_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wcase"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"relevance "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wrel"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"position_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wpos"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"spread_metric "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.wspread"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"left_probability "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.pl"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"right_probability "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term.pr"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"feature-calculation-logic","children":[["$","a",null,{"data-card":"","href":"#feature-calculation-logic","className":"peer","children":"Feature Calculation Logic"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class calculates several features that contribute to keyword scoring:"]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-frequency-wfreq","children":[["$","a",null,{"data-card":"","href":"#word-frequency-wfreq","className":"peer","children":["Word Frequency (",["$","code",null,{"children":"wfreq"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Measures how frequent the term is compared to the average document term frequency."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$40","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wfreq "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" term_frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (average_term_frequency "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" standard_deviation)"}]]}]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-case-wcase","children":[["$","a",null,{"data-card":"","href":"#word-case-wcase","className":"peer","children":["Word Case (",["$","code",null,{"children":"wcase"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Represents the significance of capitalization in determining proper nouns and acronyms."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$41","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wcase "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" max"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(uppercase_freq, proper_noun_freq) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" log(term_frequency))"}]]}]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-relevance-wrel","children":[["$","a",null,{"data-card":"","href":"#word-relevance-wrel","className":"peer","children":["Word Relevance (",["$","code",null,{"children":"wrel"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Evaluates the term's importance based on its co-occurrence relationships."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$42","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wrel "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (probability_weighted_left "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf))) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" "}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0.5"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (probability_weighted_right "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (tf "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" max_tf)))"}]]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-position-wpos","children":[["$","a",null,{"data-card":"","href":"#word-position-wpos","className":"peer","children":["Word Position (",["$","code",null,{"children":"wpos"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Considers the typical position of the word in sentences, with the intuition that important terms appear earlier."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$43","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wpos "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" log(log("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3.0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" +"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" median_position_in_sentences))"}]]}]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"word-spread-wspread","children":[["$","a",null,{"data-card":"","href":"#word-spread-wspread","className":"peer","children":["Word Spread (",["$","code",null,{"children":"wspread"}],")"]}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Measures how widely the term is distributed across the document's sentences."}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$44","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"wspread "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" number_of_sentences_with_term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" total_number_of_sentences"}]]}]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"final-score-calculation","children":[["$","a",null,{"data-card":"","href":"#final-score-calculation","className":"peer","children":"Final Score Calculation"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The final score (",["$","code",null,{"children":"h"}],") combines all metrics in a formula designed to rank candidate keywords:"]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$45","children":["$","$L2e",null,{"children":["$","code",null,{"children":["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"h "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wpos "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"*"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wrel) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wcase "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wfreq "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wrel) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (wspread "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"/"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" wrel))"}]]}]}]}]}],"\n",["$","p",null,{"children":"Lower scores indicate better keyword candidates in YAKE's ranking system."}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-example","children":[["$","a",null,{"data-card":"","href":"#usage-example","className":"peer","children":"Usage Example"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$46","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" networkx "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"as"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.datarepresentation "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Create a graph for co-occurrence"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"g "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" nx.DiGraph()"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"g.add_node("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Initialize a word"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" SingleWord("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"algorithm\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", g)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Add occurrences"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.add_occur("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# In sentence 0, position 5"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.add_occur("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"n\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"15"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# In sentence 1, position 2"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Update the score with statistics"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"stats "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" {"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"max_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"10.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"avg_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"std_tf\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"2.0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":","}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"number_of_sentences\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":": "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"5"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"}"}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.update_h(stats)"}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Get the final score"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"("}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"f"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Keyword score for 'algorithm': "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"{"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"term.h"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":":.4f"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"}"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"SingleWord"}]," class relies on:"]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"math"}],": For logarithmic calculations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"numpy"}],": For statistical operations (median)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"networkx"}],": Implicitly through the provided graph parameter"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L47",null,{"items":"$undefined"}]]}]]}],["$","$L48",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L49",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/docs/data/utils.html b/docs/docs/data/utils.html deleted file mode 100644 index 0205ef81..00000000 --- a/docs/docs/data/utils.html +++ /dev/null @@ -1,102 +0,0 @@ -
    YAKE!
    Data

    Utils

    -

    The utils module provides essential text processing functions for YAKE (Yet Another Keyword Extractor), handling tokenization, normalization, and classification of textual elements.

    -
    -

    Info: This documentation provides interactive code views for each function. Click on a function name to view its implementation.

    -
    -

    Module Overview

    -
    """Utility functions for text processing."""
    - 
    -import re
    -from segtok.segmenter import split_multi
    -from segtok.tokenizer import web_tokenizer, split_contractions
    - 
    -STOPWORD_WEIGHT = "bi"
    -

    The utils module contains functions for text preprocessing, tokenization, and classification that support the keyword extraction pipeline.

    -

    Functions

    -

    -

    Function Descriptions

    -

    pre_filter

    -

    Normalizes text by handling line breaks and spacing to prepare for tokenization.

    -

    Parameters:

    -
      -
    • text (str): The input text to normalize
    • -
    -

    Returns:

    -
      -
    • str: Normalized text with standardized spacing and line breaks
    • -
    -

    Example:

    -
    from yake.utils import pre_filter
    - 
    -raw_text = "This is line one.\nThis is line two.\tAnd this has a tab."
    -normalized_text = pre_filter(raw_text)
    -print(normalized_text)
    -# Output: " This is line one. This is line two. And this has a tab."
    -

    tokenize_sentences

    -

    Splits text into sentences and then tokenizes each sentence into words, filtering out invalid tokens.

    -

    Parameters:

    -
      -
    • text (str): The input text to tokenize
    • -
    -

    Returns:

    -
      -
    • list: A nested list where each inner list contains the tokens of a sentence
    • -
    -

    Example:

    -
    from yake.utils import tokenize_sentences
    - 
    -text = "Hello world! This is a sample text. It has multiple sentences."
    -sentences = tokenize_sentences(text)
    -print(sentences)
    -# Output: [['Hello', 'world', '!'], ['This', 'is', 'a', 'sample', 'text', '.'], ['It', 'has', 'multiple', 'sentences', '.']]
    -

    get_tag

    -

    Classifies words based on their characteristics, assigning a tag for each word type.

    -

    Parameters:

    -
      -
    • word (str): The word to classify
    • -
    • i (int): The position of the word in its sentence
    • -
    • exclude (set): Set of characters to exclude from regular words
    • -
    -

    Returns:

    -
      -
    • str: A single character tag representing the word type: -
        -
      • "d": Digit/number
      • -
      • "u": Unusual combination (mixed alphanumeric or special characters)
      • -
      • "a": Acronym (all uppercase)
      • -
      • "n": Proper noun (capitalized word not at the beginning of a sentence)
      • -
      • "p": Plain word (default)
      • -
      -
    • -
    -

    Example:

    -
    from yake.utils import get_tag
    -import string
    - 
    -exclude = set(string.punctuation)
    - 
    -# Examples of different word classifications
    -print(get_tag("Hello", 0, exclude))  # Output: "p" (plain word)
    -print(get_tag("Hello", 3, exclude))  # Output: "n" (proper noun, capitalized not at sentence start)
    -print(get_tag("123", 0, exclude))    # Output: "d" (digit)
    -print(get_tag("NASA", 0, exclude))   # Output: "a" (acronym)
    -print(get_tag("test@example", 0, exclude))  # Output: "u" (unusual)
    -

    Module Constants

    -
      -
    • STOPWORD_WEIGHT (str): Default weighting scheme for stopwords, set to "bi"
    • -
    -

    Usage in YAKE Pipeline

    -

    The utility functions serve as foundation components for the YAKE keyword extraction process:

    -
      -
    1. pre_filter normalizes the input text
    2. -
    3. tokenize_sentences breaks the text into processable tokens
    4. -
    5. get_tag classifies each token for further analysis
    6. -
    -

    These functions are primarily used by the DataCore class to build the data representation needed for keyword extraction.

    -

    Dependencies

    -

    The utils module relies on:

    -
      -
    • re: For regular expression operations
    • -
    • segtok.segmenter: For sentence segmentation
    • -
    • segtok.tokenizer: For tokenization and contraction handling
    • -

    On this page

    \ No newline at end of file diff --git a/docs/docs/data/utils.txt b/docs/docs/data/utils.txt deleted file mode 100644 index 9006c5eb..00000000 --- a/docs/docs/data/utils.txt +++ /dev/null @@ -1,55 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[8693,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"TreeContextProvider"] -6:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavProvider"] -7:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"Navbar"] -8:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"default"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SearchToggle"] -a:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"NavbarSidebarTrigger"] -b:I[9379,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleControl"] -c:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"CollapsibleSidebar"] -d:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarHeader"] -e:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarCollapseTrigger"] -f:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"LargeSearchToggle"] -10:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarViewport"] -11:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarPageTree"] -12:I[2397,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"SidebarFooter"] -13:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"ThemeToggle"] -14:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","997","static/chunks/997-04a205149f54dcb1.js","499","static/chunks/app/docs/layout-6d9e86ce9d5501d3.js"],"StylesProvider"] -16:I[9665,[],"MetadataBoundary"] -18:I[9665,[],"OutletBoundary"] -1b:I[4911,[],"AsyncMetadataOutlet"] -1d:I[9665,[],"ViewportBoundary"] -1f:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["","docs","data","utils"],"i":false,"f":[[["",{"children":["docs",{"children":[["slug","data/utils","oc"],{"children":["__PAGE__",{}]}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["docs",["$","$1","c",{"children":[null,["$","$L5",null,{"tree":{"$id":"root","name":"Index","children":[{"$id":"index.mdx","type":"page","name":"Index","description":"$undefined","icon":"$undefined","url":"/docs","$ref":{"file":"index.mdx"}},{"type":"folder","name":"Core","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"core/highlight.mdx","type":"page","name":"Highlight","description":"$undefined","icon":"$undefined","url":"/docs/core/highlight","$ref":{"file":"core/highlight.mdx"}},{"$id":"core/Levenshtein.mdx","type":"page","name":"Levenshtein","description":"$undefined","icon":"$undefined","url":"/docs/core/Levenshtein","$ref":{"file":"core/Levenshtein.mdx"}},{"$id":"core/yake.mdx","type":"page","name":"Yake","description":"$undefined","icon":"$undefined","url":"/docs/core/yake","$ref":{"file":"core/yake.mdx"}}],"$id":"core","$ref":{"metaFile":"$undefined"}},{"type":"folder","name":"Data","icon":"$undefined","root":"$undefined","defaultOpen":"$undefined","description":"$undefined","index":"$undefined","children":[{"$id":"data/composedword.mdx","type":"page","name":"Composedword","description":"$undefined","icon":"$undefined","url":"/docs/data/composedword","$ref":{"file":"data/composedword.mdx"}},{"$id":"data/datacore.mdx","type":"page","name":"Datacore","description":"$undefined","icon":"$undefined","url":"/docs/data/datacore","$ref":{"file":"data/datacore.mdx"}},{"$id":"data/singleword.mdx","type":"page","name":"Singleword","description":"$undefined","icon":"$undefined","url":"/docs/data/singleword","$ref":{"file":"data/singleword.mdx"}},{"$id":"data/utils.mdx","type":"page","name":"Utils","description":"$undefined","icon":"$undefined","url":"/docs/data/utils","$ref":{"file":"data/utils.mdx"}}],"$id":"data","$ref":{"metaFile":"$undefined"}}]},"children":["$","$L6",null,{"transparentMode":"$undefined","children":[["$","$L7",null,{"className":"md:hidden","children":[["$","$L8",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],["$","div",null,{"className":"flex flex-1 flex-row items-center gap-1","children":"$undefined"}],["$","$L9",null,{"hideIfDisabled":true}],["$","$La",null,{"className":"-me-2 md:hidden"}]]}],["$","main",null,{"id":"nd-docs-layout","className":"flex flex-1 flex-row pe-(--fd-layout-offset) [--fd-tocnav-height:36px] md:[--fd-sidebar-width:268px] lg:[--fd-sidebar-width:286px] xl:[--fd-toc-width:286px] xl:[--fd-tocnav-height:0px] [--fd-nav-height:calc(var(--spacing)*14)] md:[--fd-nav-height:0px]","style":{"--fd-layout-offset":"max(calc(50vw - var(--fd-layout-width) / 2), 0px)"},"children":[[["$","$Lb",null,{}],["$","$Lc",null,{"className":"md:ps-(--fd-layout-offset)","children":[["$","$Ld",null,{"children":[["$","div",null,{"className":"flex flex-row py-1.5 max-md:hidden","children":[[["$","$L8",null,{"href":"/","className":"inline-flex text-[15px] items-center gap-2.5 font-medium","children":"$0:f:0:1:2:children:1:props:children:1:props:children:props:children:0:props:children:0:props:children"}],"$undefined"],["$","$Le",null,{"className":"inline-flex items-center justify-center rounded-md text-sm font-medium transition-colors duration-100 disabled:pointer-events-none disabled:opacity-50 hover:bg-fd-accent hover:text-fd-accent-foreground p-1.5 [&_svg]:size-4.5 ms-auto -my-1.5 text-fd-muted-foreground max-md:hidden","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-panel-left","aria-hidden":"true","children":[["$","rect","afitv7",{"width":"18","height":"18","x":"3","y":"3","rx":"2"}],["$","path","fh3hqa",{"d":"M9 3v18"}],"$undefined"]}]}]]}],[null,["$","$Lf",null,{"hideIfDisabled":true,"className":"rounded-lg max-md:hidden"}],"$undefined"]]}],["$","$L10",null,{"children":[["$","div",null,{"className":"mb-4 empty:hidden","children":[]}],["$","$L11",null,{"components":"$undefined"}]]}],["$","$L12",null,{"children":[["$","div",null,{"className":"flex flex-row items-center","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$L13",null,{"className":"p-0","mode":"$undefined"}]]}],"$undefined"]}]]}]],["$","$L14",null,{"tocNav":"xl:hidden","toc":"max-xl:hidden","children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]}]]}]]}]}]]}],{"children":[["slug","data/utils","oc"],["$","$1","c",{"children":[null,["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":"$undefined","forbidden":"$undefined","unauthorized":"$undefined"}]]}],{"children":["__PAGE__",["$","$1","c",{"children":["$L15",["$","$L16",null,{"children":"$L17"}],null,["$","$L18",null,{"children":["$L19","$L1a",["$","$L1b",null,{"promise":"$@1c"}]]}]]}],{},null,false]},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","g6e_OIDW49VJw3tERUFnQ",{"children":[["$","$L1d",null,{"children":"$L1e"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$1f","$undefined"],"s":false,"S":true} -20:"$Sreact.suspense" -21:I[4911,[],"AsyncMetadata"] -23:I[6441,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AnchorProvider"] -24:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageBody"] -25:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopover"] -26:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverTrigger"] -27:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TocPopoverContent"] -28:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCScrollArea"] -29:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"TOCItems"] -2a:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"PageArticle"] -2b:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Breadcrumb"] -2c:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"CodeBlock"] -2e:I[7242,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Pre"] -2f:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Accordion"] -30:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionItem"] -31:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionTrigger"] -32:I[6827,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"AccordionContent"] -39:I[70,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Footer"] -3a:I[8070,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"Toc"] -3b:I[9697,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","318","static/chunks/318-23c47eb018ec8a69.js","997","static/chunks/997-04a205149f54dcb1.js","870","static/chunks/app/docs/%5B%5B...slug%5D%5D/page-2caa2683c2838a7d.js"],"I18nLabel"] -17:["$","$20",null,{"fallback":null,"children":["$","$L21",null,{"promise":"$@22"}]}] -2d:T5c0,33:T5c0,34:T5c0,35:T5c0,36:T5c0,37:T5c0,38:T5c0,15:["$","$L23",null,{"toc":[{"depth":1,"url":"#utils","title":"Utils"},{"depth":2,"url":"#module-overview","title":"Module Overview"},{"depth":2,"url":"#functions","title":"Functions"},{"depth":2,"url":"#function-descriptions","title":"Function Descriptions"},{"depth":3,"url":"#pre_filter","title":"pre_filter"},{"depth":3,"url":"#tokenize_sentences","title":"tokenize_sentences"},{"depth":3,"url":"#get_tag","title":"get_tag"},{"depth":2,"url":"#module-constants","title":"Module Constants"},{"depth":2,"url":"#usage-in-yake-pipeline","title":"Usage in YAKE Pipeline"},{"depth":2,"url":"#dependencies","title":"Dependencies"}],"single":"$undefined","children":[["$","$L24",null,{"className":"","style":{"--fd-tocnav-height":"$undefined"},"children":[["$","$L25",null,{"className":"h-10","children":[["$","$L26",null,{"className":"w-full","items":"$15:props:toc"}],["$","$L27",null,{"children":["$undefined",["$","$L28",null,{"isMenu":true,"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}],["$","$L2a",null,{"className":"max-w-[860px]","children":[["$","$L2b",null,{}],[["$","h1",null,{"ref":"$undefined","children":"$undefined","className":"text-3xl font-semibold"}],null,["$","div",null,{"ref":"$undefined","children":[["$","h1",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"utils","children":[["$","a",null,{"data-card":"","href":"#utils","className":"peer","children":"Utils"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"utils"}]," module provides essential text processing functions for YAKE (Yet Another Keyword Extractor), handling tokenization, normalization, and classification of textual elements."]}],"\n",["$","blockquote",null,{"children":["\n",["$","p",null,{"children":[["$","strong",null,{"children":"Info:"}]," This documentation provides interactive code views for each function. Click on a function name to view its implementation."]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-overview","children":[["$","a",null,{"data-card":"","href":"#module-overview","className":"peer","children":"Module Overview"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$2d","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\"\"Utility functions for text processing.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" segtok.segmenter "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_multi"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" segtok.tokenizer "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" web_tokenizer, split_contractions"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"STOPWORD_WEIGHT"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" ="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"bi\""}]]}]]}]}]}],"\n",["$","p",null,{"children":["The ",["$","code",null,{"children":"utils"}]," module contains functions for text preprocessing, tokenization, and classification that support the keyword extraction pipeline."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"functions","children":[["$","a",null,{"data-card":"","href":"#functions","className":"peer","children":"Functions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","$L2f",null,{"type":"single","collapsible":true,"children":[["$","$L30",null,{"value":"pre_filter","children":[["$","$L31",null,{"children":["$","code",null,{"children":"pre_filter(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$33","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" pre_filter"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Pre-filter the text to normalize line breaks and spacing.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prog "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" re.compile("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"^("}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\\\"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"s*([A-Z]))\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" parts "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" text.split("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" buffer "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" part "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" parts:"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sep "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \" \""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" prog.match(part):"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sep "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" buffer "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" sep "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"+"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" part.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\t"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\" \""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":")"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" buffer"}]]}]]}]}]}]}]]}],["$","$L30",null,{"value":"tokenize_sentences","children":[["$","$L31",null,{"children":["$","code",null,{"children":"tokenize_sentences(text)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$34","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" tokenize_sentences"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(text):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Tokenize text into sentences and words.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ["}]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" w "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" split_contractions(web_tokenizer(s))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" not"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (w.startswith("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"'\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(w) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" s "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" list"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(split_multi(text))"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(s.strip()) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" ]"}]}]]}]}]}]}]]}],["$","$L30",null,{"value":"get_tag","children":[["$","$L31",null,{"children":["$","code",null,{"children":"get_tag(word, i, exclude)"}]}],["$","$L32",null,{"children":["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$35","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"def"}],["$","span",null,{"style":{"--shiki-light":"#6F42C1","--shiki-dark":"#B392F0"},"children":" get_tag"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word, i, exclude):"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"\"\"Determine the tag of a word based on its characteristics.\"\"\""}]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check if word is numeric "}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\",\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").isdigit() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word.replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\",\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").replace("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\".\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":").isdigit():"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"d\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Use counting instead of list comprehensions for better performance"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cdigit "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c.isdigit() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" calpha "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c.isalpha() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cexclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" exclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check for unusual combinations"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (cdigit "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" calpha "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" (cdigit "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" calpha "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":") "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"or"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" cexclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"u\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check for ALL CAPS (acronym)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word.isupper() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"a\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Check for Proper noun (capitalized)"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" len"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(word) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word["}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"].isupper() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"and"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" i "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":">"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":" # Optimized check for single uppercase letter"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" if"}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" sum"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(c.isupper() "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"for"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" c "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"in"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" word) "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"=="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" 1"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":":"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"n\""}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":" return"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"p\""}]]}]]}]}]}]}]]}]]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"function-descriptions","children":[["$","a",null,{"data-card":"","href":"#function-descriptions","className":"peer","children":"Function Descriptions"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"pre_filter","children":[["$","a",null,{"data-card":"","href":"#pre_filter","className":"peer","children":"pre_filter"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Normalizes text by handling line breaks and spacing to prepare for tokenization."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The input text to normalize"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"str: Normalized text with standardized spacing and line breaks"}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$36","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.utils "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pre_filter"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"raw_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"This is line one."}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\n"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"This is line two."}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"\\t"}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"And this has a tab.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"normalized_text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" pre_filter(raw_text)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(normalized_text)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \" This is line one. This is line two. And this has a tab.\""}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"tokenize_sentences","children":[["$","a",null,{"data-card":"","href":"#tokenize_sentences","className":"peer","children":"tokenize_sentences"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Splits text into sentences and then tokenizes each sentence into words, filtering out invalid tokens."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"text"}]," (str): The input text to tokenize"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":"list: A nested list where each inner list contains the tokens of a sentence"}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$37","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.utils "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenize_sentences"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"text "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":" \"Hello world! This is a sample text. It has multiple sentences.\""}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"sentences "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" tokenize_sentences(text)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(sentences)"}]]}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: [['Hello', 'world', '!'], ['This', 'is', 'a', 'sample', 'text', '.'], ['It', 'has', 'multiple', 'sentences', '.']]"}]}]]}]}]}],"\n",["$","h3",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"get_tag","children":[["$","a",null,{"data-card":"","href":"#get_tag","className":"peer","children":"get_tag"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"Classifies words based on their characteristics, assigning a tag for each word type."}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Parameters:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"word"}]," (str): The word to classify"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"i"}]," (int): The position of the word in its sentence"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"exclude"}]," (set): Set of characters to exclude from regular words"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Returns:"}]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":["str: A single character tag representing the word type:","\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"\"d\""}],": Digit/number"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"u\""}],": Unusual combination (mixed alphanumeric or special characters)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"a\""}],": Acronym (all uppercase)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"n\""}],": Proper noun (capitalized word not at the beginning of a sentence)"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"\"p\""}],": Plain word (default)"]}],"\n"]}],"\n"]}],"\n"]}],"\n",["$","p",null,{"children":["$","strong",null,{"children":"Example:"}]}],"\n",["$","$L2c",null,{"className":"shiki shiki-themes github-light github-dark","style":{"--shiki-light":"#24292e","--shiki-dark":"#e1e4e8","--shiki-light-bg":"#fff","--shiki-dark-bg":"#24292e"},"tabIndex":"0","icon":"$38","children":["$","$L2e",null,{"children":["$","code",null,{"children":[["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"from"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" yake.utils "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" get_tag"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"import"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":" string"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"exclude "}],["$","span",null,{"style":{"--shiki-light":"#D73A49","--shiki-dark":"#F97583"},"children":"="}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":" set"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(string.punctuation)"}]]}],"\n",["$","span",null,{"className":"line","children":" "}],"\n",["$","span",null,{"className":"line","children":["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Examples of different word classifications"}]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Hello\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"p\" (plain word)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"Hello\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"3"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"n\" (proper noun, capitalized not at sentence start)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"123\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"d\" (digit)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"NASA\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"a\" (acronym)"}]]}],"\n",["$","span",null,{"className":"line","children":[["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"print"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":"(get_tag("}],["$","span",null,{"style":{"--shiki-light":"#032F62","--shiki-dark":"#9ECBFF"},"children":"\"test@example\""}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", "}],["$","span",null,{"style":{"--shiki-light":"#005CC5","--shiki-dark":"#79B8FF"},"children":"0"}],["$","span",null,{"style":{"--shiki-light":"#24292E","--shiki-dark":"#E1E4E8"},"children":", exclude)) "}],["$","span",null,{"style":{"--shiki-light":"#6A737D","--shiki-dark":"#6A737D"},"children":"# Output: \"u\" (unusual)"}]]}]]}]}]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"module-constants","children":[["$","a",null,{"data-card":"","href":"#module-constants","className":"peer","children":"Module Constants"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"STOPWORD_WEIGHT"}]," (str): Default weighting scheme for stopwords, set to \"bi\""]}],"\n"]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"usage-in-yake-pipeline","children":[["$","a",null,{"data-card":"","href":"#usage-in-yake-pipeline","className":"peer","children":"Usage in YAKE Pipeline"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The utility functions serve as foundation components for the YAKE keyword extraction process:"}],"\n",["$","ol",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"pre_filter"}]," normalizes the input text"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"tokenize_sentences"}]," breaks the text into processable tokens"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"get_tag"}]," classifies each token for further analysis"]}],"\n"]}],"\n",["$","p",null,{"children":["These functions are primarily used by the ",["$","code",null,{"children":"DataCore"}]," class to build the data representation needed for keyword extraction."]}],"\n",["$","h2",null,{"className":"flex scroll-m-28 flex-row items-center gap-2","id":"dependencies","children":[["$","a",null,{"data-card":"","href":"#dependencies","className":"peer","children":"Dependencies"}],["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-link size-3.5 shrink-0 text-fd-muted-foreground opacity-0 transition-opacity peer-hover:opacity-100","aria-label":"Link to section","children":[["$","path","1cjeqo",{"d":"M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71"}],["$","path","19qd67",{"d":"M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71"}],"$undefined"]}]]}],"\n",["$","p",null,{"children":"The utils module relies on:"}],"\n",["$","ul",null,{"children":["\n",["$","li",null,{"children":[["$","code",null,{"children":"re"}],": For regular expression operations"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"segtok.segmenter"}],": For sentence segmentation"]}],"\n",["$","li",null,{"children":[["$","code",null,{"children":"segtok.tokenizer"}],": For tokenization and contraction handling"]}],"\n"]}]],"className":"prose"}]],["$","div",null,{"role":"none","className":"flex-1"}],["$","div",null,{"className":"flex flex-row flex-wrap items-center justify-between gap-4 empty:hidden","children":[null,null]}],["$","$L39",null,{"items":"$undefined"}]]}]]}],["$","$L3a",null,{"children":["$undefined",["$","h3",null,{"className":"inline-flex items-center gap-1.5 text-sm text-fd-muted-foreground","children":[["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-text size-4","aria-hidden":"true","children":[["$","path","olowqp",{"d":"M15 18H3"}],["$","path","16j9eg",{"d":"M17 6H3"}],["$","path","2avoz0",{"d":"M21 12H3"}],"$undefined"]}],["$","$L3b",null,{"label":"toc"}]]}],["$","$L28",null,{"children":["$","$L29",null,{"items":"$15:props:toc"}]}],"$undefined"]}]]}] -1a:null -1e:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -19:null -22:{"metadata":[],"error":null,"digest":"$undefined"} -1c:{"metadata":"$22:metadata","error":null,"digest":"$undefined"} diff --git a/docs/index.html b/docs/index.html deleted file mode 100644 index 1c3d83e4..00000000 --- a/docs/index.html +++ /dev/null @@ -1 +0,0 @@ -

    Hello

    Open /docs and see the documentation.

    \ No newline at end of file diff --git a/docs/index.txt b/docs/index.txt deleted file mode 100644 index e27c5752..00000000 --- a/docs/index.txt +++ /dev/null @@ -1,30 +0,0 @@ -1:"$Sreact.fragment" -2:I[3834,["595","static/chunks/595-993b621b2225d9dc.js","874","static/chunks/874-0cb5402bc7a91b88.js","176","static/chunks/176-a0a1cf5d9e7b7a9e.js","177","static/chunks/app/layout-c6241da76fad0b40.js"],"RootProvider"] -3:I[7555,[],""] -4:I[1295,[],""] -5:I[1339,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"NavProvider"] -6:I[7110,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"Navbar"] -7:I[9949,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"default"] -8:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"SearchToggle"] -9:I[5403,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"LargeSearchToggle"] -a:I[910,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"ThemeToggle"] -b:I[5619,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"Menu"] -c:I[5619,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"MenuTrigger"] -d:I[5619,["534","static/chunks/534-bbb1ba4032b129a8.js","595","static/chunks/595-993b621b2225d9dc.js","920","static/chunks/920-aed94374b29ba4e2.js","318","static/chunks/318-23c47eb018ec8a69.js","882","static/chunks/882-90fa2d4319e1517d.js","790","static/chunks/app/(home)/layout-dd16dd94e0ac6dfb.js"],"MenuContent"] -e:I[6874,["874","static/chunks/874-0cb5402bc7a91b88.js","813","static/chunks/app/(home)/page-ff294463e6438f3b.js"],""] -f:I[9665,[],"MetadataBoundary"] -11:I[9665,[],"OutletBoundary"] -14:I[4911,[],"AsyncMetadataOutlet"] -16:I[9665,[],"ViewportBoundary"] -18:I[6614,[],""] -:HL["/docs-site/_next/static/media/a34f9d1faa5f3315-s.p.woff2","font",{"crossOrigin":"","type":"font/woff2"}] -:HL["/docs-site/_next/static/css/0d177ebb9848c15c.css","style"] -0:{"P":null,"b":"vvyse3XSZUANbPbQ3_ktG","p":"/docs-site","c":["",""],"i":false,"f":[[["",{"children":["(home)",{"children":["__PAGE__",{}]}]},"$undefined","$undefined",true],["",["$","$1","c",{"children":[[["$","link","0",{"rel":"stylesheet","href":"/docs-site/_next/static/css/0d177ebb9848c15c.css","precedence":"next","crossOrigin":"$undefined","nonce":"$undefined"}]],["$","html",null,{"lang":"en","className":"__className_62dcf0","suppressHydrationWarning":true,"children":["$","body",null,{"className":"flex flex-col min-h-screen","children":["$","$L2",null,{"children":["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":{"fontFamily":"system-ui,\"Segoe UI\",Roboto,Helvetica,Arial,sans-serif,\"Apple Color Emoji\",\"Segoe UI Emoji\"","height":"100vh","textAlign":"center","display":"flex","flexDirection":"column","alignItems":"center","justifyContent":"center"},"children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":{"display":"inline-block","margin":"0 20px 0 0","padding":"0 23px 0 0","fontSize":24,"fontWeight":500,"verticalAlign":"top","lineHeight":"49px"},"children":404}],["$","div",null,{"style":{"display":"inline-block"},"children":["$","h2",null,{"style":{"fontSize":14,"fontWeight":400,"lineHeight":"49px","margin":0},"children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]}]}]}]]}],{"children":["(home)",["$","$1","c",{"children":[null,["$","$L5",null,{"transparentMode":"$undefined","children":["$","main",null,{"id":"nd-home-layout","children":[["$","$L6",null,{"children":[["$","$L7",null,{"href":"/","className":"inline-flex items-center gap-2.5 font-semibold","children":[["$","svg",null,{"width":"24","height":"24","xmlns":"http://www.w3.org/2000/svg","aria-label":"Logo","children":["$","circle",null,{"cx":12,"cy":12,"r":12,"fill":"currentColor"}]}],"YAKE!"]}],"$undefined",["$","ul",null,{"className":"flex flex-row items-center gap-2 px-6 max-sm:hidden","children":[]}],["$","div",null,{"className":"flex flex-row items-center justify-end gap-1.5 flex-1","children":[["$","$L8",null,{"className":"lg:hidden","hideIfDisabled":true}],["$","$L9",null,{"className":"w-full max-w-[240px] max-lg:hidden","hideIfDisabled":true}],["$","$La",null,{"className":"max-lg:hidden","mode":"$undefined"}],null]}],["$","ul",null,{"className":"flex flex-row items-center","children":[[],["$","$Lb",null,{"className":"lg:hidden","children":[["$","$Lc",null,{"aria-label":"Toggle Menu","className":"group -me-2","enableHover":"$undefined","children":["$","svg",null,{"ref":"$undefined","xmlns":"http://www.w3.org/2000/svg","width":24,"height":24,"viewBox":"0 0 24 24","fill":"none","stroke":"currentColor","strokeWidth":2,"strokeLinecap":"round","strokeLinejoin":"round","className":"lucide lucide-chevron-down size-3 transition-transform duration-300 group-data-[state=open]:rotate-180","aria-hidden":"true","children":[["$","path","qrunsl",{"d":"m6 9 6 6 6-6"}],"$undefined"]}]}],["$","$Ld",null,{"className":"sm:flex-row sm:items-center sm:justify-end","children":[[],["$","div",null,{"className":"-ms-1.5 flex flex-row items-center gap-1.5 max-sm:mt-2","children":[[],["$","div",null,{"role":"separator","className":"flex-1"}],null,["$","$La",null,{"mode":"$undefined"}]]}]]}]]}]]}]]}],["$","$L3",null,{"parallelRouterKey":"children","error":"$undefined","errorStyles":"$undefined","errorScripts":"$undefined","template":["$","$L4",null,{}],"templateStyles":"$undefined","templateScripts":"$undefined","notFound":[[["$","title",null,{"children":"404: This page could not be found."}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:style","children":["$","div",null,{"children":[["$","style",null,{"dangerouslySetInnerHTML":{"__html":"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}],["$","h1",null,{"className":"next-error-h1","style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:1:props:style","children":404}],["$","div",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:style","children":["$","h2",null,{"style":"$0:f:0:1:1:props:children:1:props:children:props:children:props:children:props:notFound:0:1:props:children:props:children:2:props:children:props:style","children":"This page could not be found."}]}]]}]}]],[]],"forbidden":"$undefined","unauthorized":"$undefined"}]],"className":"flex flex-1 flex-col pt-14"}]}]]}],{"children":["__PAGE__",["$","$1","c",{"children":[["$","main",null,{"className":"flex flex-1 flex-col justify-center text-center","children":[["$","h1",null,{"className":"mb-4 text-2xl font-bold","children":"Hello"}],["$","p",null,{"className":"text-fd-muted-foreground","children":["Open"," ",["$","$Le",null,{"href":"/docs","className":"text-fd-foreground font-semibold underline","children":"/docs"}]," ","and see the documentation."]}]]}],["$","$Lf",null,{"children":"$L10"}],null,["$","$L11",null,{"children":["$L12","$L13",["$","$L14",null,{"promise":"$@15"}]]}]]}],{},null,false]},null,false]},null,false],["$","$1","h",{"children":[null,["$","$1","WzdSACzHwvrajktiygNPS",{"children":[["$","$L16",null,{"children":"$L17"}],["$","meta",null,{"name":"next-size-adjust","content":""}]]}],null]}],false]],"m":"$undefined","G":["$18","$undefined"],"s":false,"S":true} -19:"$Sreact.suspense" -1a:I[4911,[],"AsyncMetadata"] -10:["$","$19",null,{"fallback":null,"children":["$","$L1a",null,{"promise":"$@1b"}]}] -13:null -17:[["$","meta","0",{"charSet":"utf-8"}],["$","meta","1",{"name":"viewport","content":"width=device-width, initial-scale=1"}]] -12:null -1b:{"metadata":[],"error":null,"digest":"$undefined"} -15:{"metadata":"$1b:metadata","error":null,"digest":"$undefined"} diff --git a/strategy.ini b/docs/strategy.ini similarity index 100% rename from strategy.ini rename to docs/strategy.ini diff --git a/microsoft.gpg b/microsoft.gpg deleted file mode 100644 index 0cffae08d061d6ae8959b4442dd2dbce26c340e8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 641 zcmV-{0)G9O0SyFJF<6WN2mrt;hGAw>aTw8-&ZU0T;kCvj9-@p2hRX&3tKIp#mk44K zWSkQ%c4{HQA}s#tsn;1=(LHS^JIEF`F{wkR(&D>9o|7yP=~Y+NKK3;C`4axI=rYyq zrB<*k)BskBDEsDx5Yd^pAvz|*XxLN^Rs1tKcJz?E$yQpt@e`p4a|{c zMCET7wg8i5k#M`dMmXStEMdYRelqXC@i+Karv74@Qsaue67_2{MmJAUtPq zXLDs^b#iHRc|dJxV{&hEZ)S8ZV{dIfi2*eP69EDM9|ZzdF<6WO8v_Ol2?z%R0t6KT z2m=Ea0s#UZ0Rk6*0162Z>pqmNz7i?V8k-0IeXlDmy&evAAJ<zH{duFkO6N3 z&j)GB_6-&>FO*4L(_oK+UEBCNPtqruWb}jtrH<>>>>>> Stashed changes #basic libraries ruff==0.0.290 diff --git a/yake/datarepresentation.py b/yake/datarepresentation.py deleted file mode 100644 index a1a55f04..00000000 --- a/yake/datarepresentation.py +++ /dev/null @@ -1,916 +0,0 @@ -import re -import string -import math -import jellyfish - -from segtok.segmenter import split_multi -from segtok.tokenizer import web_tokenizer, split_contractions - -import networkx as nx -import numpy as np - -STOPWORD_WEIGHT = "bi" - - -class DataCore: - """ - Core data manager for keyword extraction that processes text and builds - data structures for keyword candidates. - - Implementation uses consolidated dictionaries to reduce the number of direct - instance attributes while maintaining the same functionality. - """ - def __init__(self, text, stopword_set, config=None): - """ - Initialize the DataCore object for keyword extraction. - - Args: - text (str): The input text to process. - stopword_set (set): Set of stopwords to use. - config (dict, optional): Configuration parameters including: - - windows_size (int): Size of sliding window for co-occurrence analysis. - - n (int): Maximum n-gram size. - - tags_to_discard (set): Tags to exclude (default: {'u', 'd'}). - - exclude (set): Characters to exclude (default: string.punctuation). - """ - # Initialize default configuration - if config is None: - config = {} - - # Extract configuration values with defaults - windows_size = config.get("windows_size", 2) - n = config.get("n", 3) - tags_to_discard = config.get("tags_to_discard", set(["u", "d"])) - exclude = config.get("exclude", set(string.punctuation)) - - # Consolidate all settings into a single _state dictionary - # This reduces the instance attribute count significantly - self._state = { - # Configuration - "config": { - "exclude": exclude, - "tags_to_discard": tags_to_discard, - "stopword_set": stopword_set # Moved here from direct attribute - }, - - # Text analysis results - "text_stats": { - "number_of_sentences": 0, - "number_of_words": 0 - }, - - # Data collections - "collections": { - "terms": {}, # Dictionary of term objects - "candidates": {}, # Dictionary of candidate objects - "sentences_obj": [], # Processed sentence objects - "sentences_str": [], # Raw sentence strings - "freq_ns": {} # Frequency of n-grams - }, - - # Graph for co-occurrence analysis - "g": nx.DiGraph() # Moved here from direct attribute - } - - # Initialize n-gram frequencies - for i in range(n): - self._state["collections"]["freq_ns"][i + 1] = 0.0 - - # Build the data structures - self._build(text, windows_size, n) - - # --- Property accessors for backward compatibility --- - - # Configuration properties - @property - def exclude(self): - return self._state["config"]["exclude"] - - @property - def tags_to_discard(self): - return self._state["config"]["tags_to_discard"] - - @property - def stopword_set(self): - return self._state["config"]["stopword_set"] - - @property - def g(self): - return self._state["g"] - - # Text statistics properties - @property - def number_of_sentences(self): - return self._state["text_stats"]["number_of_sentences"] - - @number_of_sentences.setter - def number_of_sentences(self, value): - self._state["text_stats"]["number_of_sentences"] = value - - @property - def number_of_words(self): - return self._state["text_stats"]["number_of_words"] - - @number_of_words.setter - def number_of_words(self, value): - self._state["text_stats"]["number_of_words"] = value - - # Collection properties - @property - def terms(self): - return self._state["collections"]["terms"] - - @property - def candidates(self): - return self._state["collections"]["candidates"] - - @property - def sentences_obj(self): - return self._state["collections"]["sentences_obj"] - - @property - def sentences_str(self): - return self._state["collections"]["sentences_str"] - - @sentences_str.setter - def sentences_str(self, value): - self._state["collections"]["sentences_str"] = value - - @property - def freq_ns(self): - return self._state["collections"]["freq_ns"] - - # --- Internal utility methods --- - def _build(self, text, windows_size, n): - """ - Build the datacore features by processing text and extracting data structures. - - Args: - text (str): The text to process - windows_size (int): Size of sliding window for co-occurrence analysis - n (int): Maximum n-gram size - """ - text = self._pre_filter(text) - self.sentences_str = self._tokenize_sentences(text) - self.number_of_sentences = len(self.sentences_str) - pos_text = 0 - - # Create a processing context dictionary to pass fewer arguments - context = {"windows_size": windows_size, "n": n} - - for sentence_id, sentence in enumerate(self.sentences_str): - pos_text = self._process_sentence(sentence, sentence_id, pos_text, context) - self.number_of_words = pos_text - - # --- Changed public methods to protected (prefixed with underscore) --- - # This reduces the public method count - - def _tokenize_sentences(self, text): - """Tokenize text into sentences and words.""" - return [ - [ - w - for w in split_contractions(web_tokenizer(s)) - if not (w.startswith("'") and len(w) > 1) and len(w) > 0 - ] - for s in list(split_multi(text)) - if len(s.strip()) > 0 - ] - - def _process_sentence(self, sentence, sentence_id, pos_text, context): - """Process a single sentence.""" - sentence_obj_aux = [] - block_of_word_obj = [] - - # Extend the context with sentence information - processing_context = context.copy() - processing_context["sentence_id"] = sentence_id - - for pos_sent, word in enumerate(sentence): - if len([c for c in word if c in self.exclude]) == len(word): - if len(block_of_word_obj) > 0: - sentence_obj_aux.append(block_of_word_obj) - block_of_word_obj = [] - else: - word_context = { - "pos_sent": pos_sent, - "block_of_word_obj": block_of_word_obj, - } - pos_text = self._process_word( - word, pos_text, processing_context, word_context - ) - - if len(block_of_word_obj) > 0: - sentence_obj_aux.append(block_of_word_obj) - if len(sentence_obj_aux) > 0: - self.sentences_obj.append(sentence_obj_aux) - return pos_text - - def _process_word(self, word, pos_text, context, word_context): - """Process a single word.""" - sentence_id = context["sentence_id"] - windows_size = context["windows_size"] - n = context["n"] - pos_sent = word_context["pos_sent"] - block_of_word_obj = word_context["block_of_word_obj"] - - tag = self.get_tag(word, pos_sent) - term_obj = self.get_term(word) - term_obj.add_occur(tag, sentence_id, pos_sent, pos_text) - pos_text += 1 - if tag not in self.tags_to_discard: - self._update_cooccurrence(block_of_word_obj, term_obj, windows_size) - self._generate_candidates((tag, word), term_obj, block_of_word_obj, n) - block_of_word_obj.append((tag, word, term_obj)) - return pos_text - - def _update_cooccurrence(self, block_of_word_obj, term_obj, windows_size): - """Update co-occurrence information between terms.""" - word_windows = list( - range(max(0, len(block_of_word_obj) - windows_size), len(block_of_word_obj)) - ) - for w in word_windows: - if block_of_word_obj[w][0] not in self.tags_to_discard: - self.add_cooccur(block_of_word_obj[w][2], term_obj) - - def _generate_candidates(self, term, term_obj, block_of_word_obj, n): - """Generate keyword candidates from terms.""" - candidate = [term + (term_obj,)] - cand = ComposedWord(candidate) - self.add_or_update_composedword(cand) - word_windows = list( - range(max(0, len(block_of_word_obj) - (n - 1)), len(block_of_word_obj)) - )[::-1] - for w in word_windows: - candidate.append(block_of_word_obj[w]) - self.freq_ns[len(candidate)] += 1.0 - cand = ComposedWord(candidate[::-1]) - self.add_or_update_composedword(cand) - - def _pre_filter(self, text): - """Pre-filter the text to normalize line breaks and spacing.""" - prog = re.compile("^(\\s*([A-Z]))") - parts = text.split("\n") - buffer = "" - for part in parts: - sep = " " - if prog.match(part): - sep = "\n\n" - buffer += sep + part.replace("\t", " ") - return buffer - - # --- Public API methods (kept public) --- - - def build_candidate(self, candidate_string): - """ - Build a candidate from a string by tokenizing and processing its words. - - Args: - candidate_string (str): The string to build a candidate from. - - Returns: - ComposedWord: A virtual candidate object constructed from the processed terms. - """ - tokenized_words = [ - w - for w in split_contractions(web_tokenizer(candidate_string.lower())) - if not (w.startswith("'") and len(w) > 1) and len(w) > 0 - ] - - candidate_terms = [] - for index, word in enumerate(tokenized_words): - tag = self.get_tag(word, index) - term_obj = self.get_term(word, save_non_seen=False) - - # Skip terms with zero term frequency - if term_obj.tf == 0: - term_obj = None - - candidate_terms.append((tag, word, term_obj)) - - # Check if the candidate has any valid terms - if not any(term[2] for term in candidate_terms): - return ComposedWord(None) - - return ComposedWord(candidate_terms) - - def build_single_terms_features(self, features=None): - """Build features for single terms.""" - valid_terms = [term for term in self.terms.values() if not term.stopword] - valid_tfs = np.array([x.tf for x in valid_terms]) - - if len(valid_tfs) == 0: - return - - avg_tf = valid_tfs.mean() - std_tf = valid_tfs.std() - max_tf = max(x.tf for x in self.terms.values()) - stats = { - "max_tf": max_tf, - "avg_tf": avg_tf, - "std_tf": std_tf, - "number_of_sentences": self.number_of_sentences, - } - list(map(lambda x: x.update_h(stats, features=features), self.terms.values())) - - def build_mult_terms_features(self, features=None): - """Build features for multi-word terms.""" - list( - map( - lambda x: x.update_h(features=features), - [cand for cand in self.candidates.values() if cand.is_valid()], - ) - ) - - def get_tag(self, word, i): - """ - Determine the tag for a word based on its characteristics. - - Args: - word (str): The word to analyze. - i (int): The position of the word. - - Returns: - str: The tag assigned to the word ('d', 'u', 'a', 'n', or 'p'). - """ - try: - w2 = word.replace(",", "") - float(w2) - return "d" - except ValueError: - cdigit = len([c for c in word if c.isdigit()]) - calpha = len([c for c in word if c.isalpha()]) - if ( - (cdigit > 0 and calpha > 0) - or (cdigit == 0 and calpha == 0) - or len([c for c in word if c in self.exclude]) > 1 - ): - return "u" - if len(word) == len([c for c in word if c.isupper()]): - return "a" - if ( - len([c for c in word if c.isupper()]) == 1 - and len(word) > 1 - and word[0].isupper() - and i > 0 - ): - return "n" - return "p" - - def get_term(self, str_word, save_non_seen=True): - """ - Get or create a term object for a word. - - Args: - str_word (str): The word to get a term for. - save_non_seen (bool, optional): Whether to save new terms. Defaults to True. - - Returns: - SingleWord: The term object for the word. - """ - unique_term = str_word.lower() - simples_sto = unique_term in self.stopword_set - if unique_term.endswith("s") and len(unique_term) > 3: - unique_term = unique_term[:-1] - - if unique_term in self.terms: - return self.terms[unique_term] - - simples_unique_term = unique_term - for pontuation in self.exclude: - simples_unique_term = simples_unique_term.replace(pontuation, "") - isstopword = ( - simples_sto - or unique_term in self.stopword_set - or len(simples_unique_term) < 3 - ) - - term_id = len(self.terms) - term_obj = SingleWord(unique_term, term_id, self.g) - term_obj.stopword = isstopword - - if save_non_seen: - self.g.add_node(term_id) - self.terms[unique_term] = term_obj - - return term_obj - - def add_cooccur(self, left_term, right_term): - """Add a co-occurrence relationship between two terms.""" - if right_term.id not in self.g[left_term.id]: - self.g.add_edge(left_term.id, right_term.id, tf=0.0) - self.g[left_term.id][right_term.id]["tf"] += 1.0 - - def add_or_update_composedword(self, cand): - """Add or update a composed word in the candidates collection.""" - if cand.unique_kw not in self.candidates: - self.candidates[cand.unique_kw] = cand - else: - self.candidates[cand.unique_kw].uptade_cand(cand) - self.candidates[cand.unique_kw].tf += 1.0 - - -class ComposedWord: - """ - Class representing a composed word (multi-word term) in the document. - - Implementation uses a minimalist approach with minimal direct attributes, - using a data dictionary for storing most properties to reduce the total - attribute count while maintaining backward compatibility. - """ - - def __init__(self, terms): # [ (tag, word, term_obj) ] - # If terms is None, initialize an invalid candidate - if terms is None: - self.data = { - "start_or_end_stopwords": True, - "tags": set(), - "h": 0.0, - "tf": 0.0, - "kw": "", - "unique_kw": "", - "size": 0, - "terms": [], - "integrity": 0.0, - } - return - - # Basic initialization from terms - self.data = {} - - # Calculate derived properties - self.data["tags"] = set(["".join([w[0] for w in terms])]) - self.data["kw"] = " ".join([w[1] for w in terms]) - self.data["unique_kw"] = self.data["kw"].lower() - self.data["size"] = len(terms) - self.data["terms"] = [w[2] for w in terms if w[2] is not None] - self.data["tf"] = 0.0 - self.data["integrity"] = 1.0 - self.data["h"] = 1.0 - - # Check if the candidate starts or ends with stopwords - if len(self.data["terms"]) > 0: - self.data["start_or_end_stopwords"] = ( - self.data["terms"][0].stopword or self.data["terms"][-1].stopword - ) - else: - self.data["start_or_end_stopwords"] = True - - # Property accessors for backward compatibility - @property - def tags(self): - return self.data["tags"] - - @property - def kw(self): - return self.data["kw"] - - @property - def unique_kw(self): - return self.data["unique_kw"] - - @property - def size(self): - return self.data["size"] - - @property - def terms(self): - return self.data["terms"] - - @property - def tf(self): - return self.data["tf"] - - @tf.setter - def tf(self, value): - self.data["tf"] = value - - @property - def integrity(self): - return self.data["integrity"] - - @property - def h(self): - return self.data["h"] - - @h.setter - def h(self, value): - self.data["h"] = value - - @property - def start_or_end_stopwords(self): - return self.data["start_or_end_stopwords"] - - def uptade_cand(self, cand): - """Update this candidate with data from another candidate.""" - for tag in cand.tags: - self.tags.add(tag) - - def is_valid(self): - """Check if this candidate is valid.""" - is_valid = False - for tag in self.tags: - is_valid = is_valid or ("u" not in tag and "d" not in tag) - return is_valid and not self.start_or_end_stopwords - - def get_composed_feature(self, feature_name, discart_stopword=True): - """Get composed features from constituent terms.""" - list_of_features = [ - getattr(term, feature_name) - for term in self.terms - if (discart_stopword and not term.stopword) or not discart_stopword - ] - sum_f = sum(list_of_features) - prod_f = np.prod(list_of_features) - return (sum_f, prod_f, prod_f / (sum_f + 1)) - - def build_features(self, params): - """ - Build features for the composed word. - - Args: - params (dict): Dictionary containing the following keys: - - doc_id (optional): Document ID. - - keys (optional): List of keys. - - rel (optional): Boolean indicating relevance. - - rel_approx (optional): Boolean indicating approximate relevance. - """ - # Function implementation remains the same - # Only changes needed are for accessing attributes through self.data - features = params.get( - "features", ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] - ) - _stopword = params.get("_stopword", [True, False]) - if features is None: - features = ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] - if _stopword is None: - _stopword = [True, False] - columns = [] - features_cand = [] - seen = set() - if params.get("doc_id") is not None: - columns.append("doc_id") - features_cand.append(params["doc_id"]) - - if params.get("keys") is not None: - if params.get("rel", True): - columns.append("rel") - if self.unique_kw in params["keys"] or params.get("is_virtual", False): - features_cand.append(1) - seen.add(self.unique_kw) - else: - features_cand.append(0) - - if params.get("rel_approx", True): - columns.append("rel_approx") - max_gold_ = ("", 0.0) - for gold_key in params["keys"]: - dist = 1.0 - jellyfish.levenshtein_distance( - # _tL - gold_key, - self.unique_kw, - ) / max(len(gold_key), len(self.unique_kw)) - max_gold_ = (gold_key, dist) - features_cand.append(max_gold_[1]) - features_cand.append(max_gold_[1]) - - columns.append("kw") - features_cand.append(self.unique_kw) - columns.append("h") - features_cand.append(self.h) - columns.append("tf") - features_cand.append(self.tf) - columns.append("size") - features_cand.append(self.size) - columns.append("is_virtual") - columns.append("is_virtual") - features_cand.append(int(params.get("is_virtual", False))) - for feature_name in features: - for discart_stopword in _stopword: - (f_sum, f_prod, f_sum_prod) = self.get_composed_feature( - feature_name, discart_stopword=discart_stopword - ) - columns.append( - f"{'n' if discart_stopword else ''}s_sum_K{feature_name}" - ) - features_cand.append(f_sum) - - columns.append( - f"{'n' if discart_stopword else ''}s_prod_K{feature_name}" - ) - features_cand.append(f_prod) - - columns.append( - f"{'n' if discart_stopword else ''}s_sum_prod_K{feature_name}" - ) - features_cand.append(f_sum_prod) - - return (features_cand, columns, seen) - - def update_h(self, features=None, is_virtual=False): - """Update the term's score based on its constituent terms.""" - sum_h = 0.0 - prod_h = 1.0 - - for t, term_base in enumerate(self.terms): - if not term_base.stopword: - sum_h += term_base.h - prod_h *= term_base.h - - else: - if STOPWORD_WEIGHT == "bi": - prob_t1 = 0.0 - if t > 0 and term_base.g.has_edge( - self.terms[t - 1].id, self.terms[t].id - ): - prob_t1 = ( - term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] - / self.terms[t - 1].tf - ) - prob_t2 = 0.0 - if t < len(self.terms) - 1 and term_base.g.has_edge( - self.terms[t].id, self.terms[t + 1].id - ): - prob_t2 = ( - term_base.g[self.terms[t].id][self.terms[t + 1].id]["tf"] - / self.terms[t + 1].tf - ) - - prob = prob_t1 * prob_t2 - prod_h *= 1 + (1 - prob) - sum_h -= 1 - prob - elif STOPWORD_WEIGHT == "h": - sum_h += term_base.h - prod_h *= term_base.h - elif STOPWORD_WEIGHT == "none": - pass - - tf_used = 1.0 - if features is None or "KPF" in features: - tf_used = self.tf - - if is_virtual: - tf_used = np.mean([term_obj.tf for term_obj in self.terms]) - - self.h = prod_h / ((sum_h + 1) * tf_used) - - def update_h_old(self, features=None, is_virtual=False): - """Legacy method for updating the term's score.""" - sum_h = 0.0 - prod_h = 1.0 - - for t, term_base in enumerate(self.terms): - if is_virtual and term_base.tf == 0: - continue - - if term_base.stopword: - prob_t1 = 0.0 - if term_base.g.has_edge(self.terms[t - 1].id, self.terms[t].id): - prob_t1 = ( - term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] - / self.terms[t - 1].tf - ) - - prob_t2 = 0.0 - if term_base.g.has_edge(self.terms[t].id, self.terms[t + 1].id): - prob_t2 = ( - term_base.g[self.terms[t].id][self.terms[t + 1].id]["tf"] - / self.terms[t + 1].tf - ) - - prob = prob_t1 * prob_t2 - prod_h *= 1 + (1 - prob) - sum_h -= 1 - prob - else: - sum_h += term_base.h - prod_h *= term_base.h - tf_used = 1.0 - if features is None or "KPF" in features: - tf_used = self.tf - if is_virtual: - tf_used = np.mean([term_obj.tf for term_obj in self.terms]) - self.h = prod_h / ((sum_h + 1) * tf_used) - - -class SingleWord: - """ - Class representing a single word in the document text with its associated metrics. - - Implementation uses a minimalist approach with only three instance attributes: - - id: The word's identifier in the graph - - g: Reference to the graph - - data: A consolidated dictionary containing all other attributes - - All access to word properties is through property accessors or dictionary methods, - maintaining backward compatibility with previous implementations. - """ - - def __init__(self, unique, idx, graph): - # Keep only the absolute minimum as direct attributes - just these 3 - self.id = idx # Fast access needed as it's used in graph operations - self.g = graph # Fast access needed for network calculations - - # Everything else goes in the data dictionary - no exceptions - self.data = { - # Basic information - "unique_term": unique, - "stopword": False, - "h": 0.0, # Final Score - # Term frequency statistics - "tf": 0.0, # Term frequency - "tf_a": 0.0, # Term Frequency for uppercase words - "tf_n": 0.0, # Term Frequency for proper nouns - # Word characteristic metrics - "wfreq": 0.0, # Word frequency - "wcase": 0.0, # Word case metric - "wrel": 1.0, # Word relevance metric - "wpos": 1.0, # Word position metric - "wspread": 0.0, # Word spread across document - "pl": 0.0, # Probability left - "pr": 0.0, # Probability right - "pagerank": 1.0, # PageRank score - # Ocurrence tracking - "occurs": {}, # Sentence Occurrences - } - - # Forward common dictionary operations to self.data - def __getitem__(self, key): - """Access attributes dictionary-style with obj['key'].""" - return self.data[key] - - def __setitem__(self, key, value): - """Set attributes dictionary-style with obj['key'] = value.""" - self.data[key] = value - - def get(self, key, default=None): - """Get with default, mimicking dict.get().""" - return self.data.get(key, default) - - # The most commonly used properties remain as explicit accessors for backward compatibility - @property - def unique_term(self): - return self.data["unique_term"] - - @property - def stopword(self): - return self.data["stopword"] - - @stopword.setter - def stopword(self, value): - self.data["stopword"] = value - - @property - def h(self): - return self.data["h"] - - @h.setter - def h(self, value): - self.data["h"] = value - - @property - def tf(self): - return self.data["tf"] - - @tf.setter - def tf(self, value): - self.data["tf"] = value - - @property - def occurs(self): - return self.data["occurs"] - - # Everything else uses the generic accessor methods - def get_metric(self, name): - """Get the value of any word metric.""" - return self.data.get(name, 0.0) - - def set_metric(self, name, value): - """Set the value of any word metric.""" - self.data[name] = value - - def get_graph_metrics(self): - """Calculate all graph-based metrics at once.""" - # Out-edges metrics - wdr = len(self.g.out_edges(self.id)) - wir = sum(d["tf"] for (_, _, d) in self.g.out_edges(self.id, data=True)) - pwr = 0 if wir == 0 else wdr / wir - - # In-edges metrics - wdl = len(self.g.in_edges(self.id)) - wil = sum(d["tf"] for (_, _, d) in self.g.in_edges(self.id, data=True)) - pwl = 0 if wil == 0 else wdl / wil - - return {"wdr": wdr, "wir": wir, "pwr": pwr, "wdl": wdl, "wil": wil, "pwl": pwl} - - def update_h(self, stats, features=None): - """Update the word's score based on statistics.""" - max_tf = stats["max_tf"] - avg_tf = stats["avg_tf"] - std_tf = stats["std_tf"] - number_of_sentences = stats["number_of_sentences"] - - # Get all graph metrics at once - graph_metrics = self.get_graph_metrics() - - # Update metrics based on features - if features is None or "wrel" in features: - self.data["pl"] = graph_metrics["wdl"] / max_tf - self.data["pr"] = graph_metrics["wdr"] / max_tf - self.data["wrel"] = (0.5 + (graph_metrics["pwl"] * (self.tf / max_tf))) + ( - 0.5 + (graph_metrics["pwr"] * (self.tf / max_tf)) - ) - - if features is None or "wfreq" in features: - self.data["wfreq"] = self.tf / (avg_tf + std_tf) - - if features is None or "wspread" in features: - self.data["wspread"] = len(self.occurs) / number_of_sentences - - if features is None or "wcase" in features: - self.data["wcase"] = max(self.data["tf_a"], self.data["tf_n"]) / ( - 1.0 + math.log(self.tf) - ) - - if features is None or "wpos" in features: - self.data["wpos"] = math.log( - math.log(3.0 + np.median(list(self.occurs.keys()))) - ) - - # Calculate final score - self.data["h"] = (self.data["wpos"] * self.data["wrel"]) / ( - self.data["wcase"] - + (self.data["wfreq"] / self.data["wrel"]) - + (self.data["wspread"] / self.data["wrel"]) - ) - - def add_occur(self, tag, sent_id, pos_sent, pos_text): - """Add occurrence information.""" - if sent_id not in self.occurs: - self.occurs[sent_id] = [] - - self.occurs[sent_id].append((pos_sent, pos_text)) - self.data["tf"] += 1.0 - - if tag == "a": - self.data["tf_a"] += 1.0 - if tag == "n": - self.data["tf_n"] += 1.0 - - # For backward compatibility, define access to common metrics as properties - # Not necessary but good practice to maintain consistency with other classes - - @property - def wfreq(self): - return self.data["wfreq"] - - @wfreq.setter - def wfreq(self, value): - self.data["wfreq"] = value - - @property - def wcase(self): - return self.data["wcase"] - - @wcase.setter - def wcase(self, value): - self.data["wcase"] = value - - @property - def wrel(self): - return self.data["wrel"] - - @wrel.setter - def wrel(self, value): - self.data["wrel"] = value - - @property - def wpos(self): - return self.data["wpos"] - - @wpos.setter - def wpos(self, value): - self.data["wpos"] = value - - @property - def wspread(self): - return self.data["wspread"] - - @wspread.setter - def wspread(self, value): - self.data["wspread"] = value - - @property - def pl(self): - return self.data["pl"] - - @pl.setter - def pl(self, value): - self.data["pl"] = value - - @property - def pr(self): - return self.data["pr"] - - @pr.setter - def pr(self, value): - self.data["pr"] = value From 6c2c99b9bf7e258c92ee3af82607629d97f3e956 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 19:13:26 +0100 Subject: [PATCH 062/122] =?UTF-8?q?workflow=20para=20atualiza=C3=A7=C3=A3o?= =?UTF-8?q?=20do=20site?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/deploy.yml | 30 ++++++++++++++++++++++++++++++ docs-site/next.config.mjs | 12 ++++++++++-- 2 files changed, 40 insertions(+), 2 deletions(-) create mode 100644 .github/workflows/deploy.yml diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml new file mode 100644 index 00000000..a0a11702 --- /dev/null +++ b/.github/workflows/deploy.yml @@ -0,0 +1,30 @@ +name: Deploy to GitHub Pages + +on: + push: + branches: + - core-seperation # ou master, dependendo da sua branch principal + +jobs: + build-and-deploy: + runs-on: ubuntu-latest + steps: + - name: Checkout + uses: actions/checkout@v3 + + - name: Setup Node.js + uses: actions/setup-node@v3 + with: + node-version: '18' # ou a versão que você usa + + - name: Install dependencies + run: npm ci # ou yarn install --frozen-lockfile + + - name: Build + run: npm run build # ou yarn build + + - name: Deploy + uses: JamesIves/github-pages-deploy-action@v4 + with: + folder: out # pasta gerada pela build do Next.js + branch: gh-pages # branch onde será publicado \ No newline at end of file diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index 201541a6..bce42b67 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -5,7 +5,15 @@ const withMDX = createMDX(); /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, - output: 'export', + output: 'export', + // Configuração para GitHub Pages + basePath: process.env.NODE_ENV === 'production' ? '/yakerf' : '', + // Para garantir que as imagens sejam exportadas corretamente para páginas estáticas + images: { + unoptimized: true, + }, + // Desabilitar trailing slash para compatibilidade com GitHub Pages + trailingSlash: false, }; -export default withMDX(config); +export default withMDX(config); \ No newline at end of file From b89da6b6026161a0d8216cad84aedb34752e97c9 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 20:47:09 +0100 Subject: [PATCH 063/122] Update deploy.yml --- .github/workflows/deploy.yml | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index a0a11702..4b953247 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,7 +3,7 @@ name: Deploy to GitHub Pages on: push: branches: - - core-seperation # ou master, dependendo da sua branch principal + - main # ou master, dependendo da sua branch principal jobs: build-and-deploy: @@ -18,13 +18,17 @@ jobs: node-version: '18' # ou a versão que você usa - name: Install dependencies - run: npm ci # ou yarn install --frozen-lockfile + run: | + cd docs-site + npm ci - name: Build - run: npm run build # ou yarn build + run: | + cd docs-site + npm run build - name: Deploy uses: JamesIves/github-pages-deploy-action@v4 with: - folder: out # pasta gerada pela build do Next.js - branch: gh-pages # branch onde será publicado \ No newline at end of file + folder: docs-site/out # pasta gerada pela build do Next.js dentro do diretório docs-site + branch: gh-pages # branch onde será publicado \ No newline at end of file From 345ed66de0dcc93877b6298b163074612471fa67 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 20:49:17 +0100 Subject: [PATCH 064/122] Update deploy.yml --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 4b953247..1df76b75 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -3,7 +3,7 @@ name: Deploy to GitHub Pages on: push: branches: - - main # ou master, dependendo da sua branch principal + - core-seperation # ou master, dependendo da sua branch principal jobs: build-and-deploy: From 825ec7618f48c732182496b8c8d4ed51a71e15c1 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 5 May 2025 21:05:27 +0100 Subject: [PATCH 065/122] ccs do site --- .github/workflows/deploy.yml | 14 +++++++++----- docs-site/.nojekyll | 0 docs-site/app/config.ts | 2 ++ docs-site/app/docs/layout.tsx | 33 ++++++++++++++++++++++++--------- docs-site/next.config.mjs | 6 ++++-- 5 files changed, 39 insertions(+), 16 deletions(-) create mode 100644 docs-site/.nojekyll create mode 100644 docs-site/app/config.ts diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 1df76b75..23744a24 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -19,16 +19,20 @@ jobs: - name: Install dependencies run: | - cd docs-site - npm ci + cd docs-site # Ajuste conforme necessário + npm ci - name: Build run: | - cd docs-site + cd docs-site # Ajuste conforme necessário npm run build + - name: Create .nojekyll file + run: | + touch docs-site/out/.nojekyll # Ajuste conforme necessário + - name: Deploy uses: JamesIves/github-pages-deploy-action@v4 with: - folder: docs-site/out # pasta gerada pela build do Next.js dentro do diretório docs-site - branch: gh-pages # branch onde será publicado \ No newline at end of file + folder: docs-site/out # Ajuste conforme necessário + branch: gh-pages \ No newline at end of file diff --git a/docs-site/.nojekyll b/docs-site/.nojekyll new file mode 100644 index 00000000..e69de29b diff --git a/docs-site/app/config.ts b/docs-site/app/config.ts new file mode 100644 index 00000000..f4f1e199 --- /dev/null +++ b/docs-site/app/config.ts @@ -0,0 +1,2 @@ +// app/config.ts +export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf' : ''; \ No newline at end of file diff --git a/docs-site/app/docs/layout.tsx b/docs-site/app/docs/layout.tsx index a91d5585..aca59ae0 100644 --- a/docs-site/app/docs/layout.tsx +++ b/docs-site/app/docs/layout.tsx @@ -1,12 +1,27 @@ -import { DocsLayout } from 'fumadocs-ui/layouts/docs'; -import type { ReactNode } from 'react'; -import { baseOptions } from '@/app/layout.config'; -import { source } from '@/lib/source'; +import { Metadata } from 'next'; +import { basePath } from '../config'; +import './global.css'; -export default function Layout({ children }: { children: ReactNode }) { +export const metadata: Metadata = { + title: { + template: '%s | YAKE!', + default: 'YAKE! Documentation', + }, + description: 'Documentation for YAKE!', + // Ajuste para caminhos absolutos que respeitam o basePath + icons: { + icon: `${basePath}/favicon.ico`, + }, +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { return ( - - {children} - + + {children} + ); -} +} \ No newline at end of file diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index bce42b67..2ad51a02 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -2,13 +2,15 @@ import { createMDX } from 'fumadocs-mdx/next'; const withMDX = createMDX(); +const REPO_NAME = 'yakerf'; // Substitua pelo nome exato do seu repositório + /** @type {import('next').NextConfig} */ const config = { reactStrictMode: true, output: 'export', // Configuração para GitHub Pages - basePath: process.env.NODE_ENV === 'production' ? '/yakerf' : '', - // Para garantir que as imagens sejam exportadas corretamente para páginas estáticas + basePath: process.env.NODE_ENV === 'production' ? `/${REPO_NAME}` : '', + assetPrefix: process.env.NODE_ENV === 'production' ? `/${REPO_NAME}/` : '', images: { unoptimized: true, }, From d52b8b75d68863e715886837058920cfd9048da9 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 6 May 2025 10:17:11 +0100 Subject: [PATCH 066/122] updated layout --- docs-site/app/docs/layout.tsx | 33 +++++++++------------------------ docs-site/app/layout.tsx | 21 +++++++++++++++++++-- 2 files changed, 28 insertions(+), 26 deletions(-) diff --git a/docs-site/app/docs/layout.tsx b/docs-site/app/docs/layout.tsx index aca59ae0..a91d5585 100644 --- a/docs-site/app/docs/layout.tsx +++ b/docs-site/app/docs/layout.tsx @@ -1,27 +1,12 @@ -import { Metadata } from 'next'; -import { basePath } from '../config'; -import './global.css'; +import { DocsLayout } from 'fumadocs-ui/layouts/docs'; +import type { ReactNode } from 'react'; +import { baseOptions } from '@/app/layout.config'; +import { source } from '@/lib/source'; -export const metadata: Metadata = { - title: { - template: '%s | YAKE!', - default: 'YAKE! Documentation', - }, - description: 'Documentation for YAKE!', - // Ajuste para caminhos absolutos que respeitam o basePath - icons: { - icon: `${basePath}/favicon.ico`, - }, -}; - -export default function RootLayout({ - children, -}: { - children: React.ReactNode; -}) { +export default function Layout({ children }: { children: ReactNode }) { return ( - - {children} - + + {children} + ); -} \ No newline at end of file +} diff --git a/docs-site/app/layout.tsx b/docs-site/app/layout.tsx index 9b67cddf..c254732d 100644 --- a/docs-site/app/layout.tsx +++ b/docs-site/app/layout.tsx @@ -1,13 +1,30 @@ +import { Metadata } from 'next'; +import { basePath } from './config'; import './global.css'; + import { RootProvider } from 'fumadocs-ui/provider'; import { Inter } from 'next/font/google'; -import type { ReactNode } from 'react'; const inter = Inter({ subsets: ['latin'], }); -export default function Layout({ children }: { children: ReactNode }) { +export const metadata: Metadata = { + title: { + template: '%s | YAKE!', + default: 'YAKE! Documentation', + }, + description: 'Documentation for YAKE!', + icons: { + icon: `${basePath}/favicon.ico`, + }, +}; + +export default function RootLayout({ + children, +}: { + children: React.ReactNode; +}) { return ( From 21a8883ded2e7bf816fc8fcf7a8dee7628816dd3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 6 May 2025 10:35:42 +0100 Subject: [PATCH 067/122] Update README.md --- README.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ce4e5597..6da00a3e 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,7 @@ custom_th = TextHighlighter( ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [Documentation](http://github.io/yakerf/docs/) +- 🔌 Documentation site: [Documentation](https://tiagolv.github.io/yakerf/docs) - 📦 Python package: [GitHub](https://github.com/LIAAD/yake_demo) ## Citation @@ -89,12 +89,14 @@ Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and YAKE! Keyword Extraction from Single Documents using Multiple Local Features. Information Sciences Journal. Elsevier, Vol 509, pp 257-289. ``` +[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) ``` Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. ``` +[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) ## Awards From dc569669a418b14c250efd36ee0318edf577b006 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 6 May 2025 11:44:26 +0100 Subject: [PATCH 068/122] added search back to page --- docs-site/app/api/search/route.ts | 4 ++++ 1 file changed, 4 insertions(+) create mode 100644 docs-site/app/api/search/route.ts diff --git a/docs-site/app/api/search/route.ts b/docs-site/app/api/search/route.ts new file mode 100644 index 00000000..5c5b5f54 --- /dev/null +++ b/docs-site/app/api/search/route.ts @@ -0,0 +1,4 @@ +import { source } from '@/lib/source'; +import { createFromSource } from 'fumadocs-core/search/server'; + +export const { GET } = createFromSource(source); \ No newline at end of file From dad527a6c86d8eed35c3ebf0d05034e5c2fbb15c Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:14:13 +0100 Subject: [PATCH 069/122] updated mdx for cleaner look --- .github/workflows/deploy.yml | 10 +- .gitignore | 1 + docs-site/app/api/search/route.ts | 4 - docs-site/app/config.ts | 2 +- docs-site/app/layout.config.tsx | 19 +- docs-site/app/layout.tsx | 3 +- docs-site/content/docs/core/Levenshtein.mdx | 7 - docs-site/content/docs/core/highlight.mdx | 7 - docs-site/content/docs/core/yake.mdx | 6 - docs-site/content/docs/data/composedword.mdx | 2 - docs-site/content/docs/data/datacore.mdx | 2 - docs-site/content/docs/data/singleword.mdx | 2 - docs-site/content/docs/data/utils.mdx | 1 - docs-site/next.config.mjs | 2 +- docs-site/package-lock.json | 7180 ++++++++++-------- docs-site/package.json | 7 +- docs-site/public/yakelogo.png | Bin 0 -> 549 bytes docs-site/tsconfig.json | 7 +- package-lock.json | 4112 +++++++++- 19 files changed, 8127 insertions(+), 3247 deletions(-) create mode 100644 .gitignore delete mode 100644 docs-site/app/api/search/route.ts create mode 100644 docs-site/public/yakelogo.png diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 23744a24..a6b35177 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -15,24 +15,24 @@ jobs: - name: Setup Node.js uses: actions/setup-node@v3 with: - node-version: '18' # ou a versão que você usa + node-version: '18' - name: Install dependencies run: | - cd docs-site # Ajuste conforme necessário + cd docs-site npm ci - name: Build run: | - cd docs-site # Ajuste conforme necessário + cd docs-site npm run build - name: Create .nojekyll file run: | - touch docs-site/out/.nojekyll # Ajuste conforme necessário + touch docs-site/out/.nojekyll - name: Deploy uses: JamesIves/github-pages-deploy-action@v4 with: - folder: docs-site/out # Ajuste conforme necessário + folder: docs-site/out branch: gh-pages \ No newline at end of file diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..40b878db --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ \ No newline at end of file diff --git a/docs-site/app/api/search/route.ts b/docs-site/app/api/search/route.ts deleted file mode 100644 index 5c5b5f54..00000000 --- a/docs-site/app/api/search/route.ts +++ /dev/null @@ -1,4 +0,0 @@ -import { source } from '@/lib/source'; -import { createFromSource } from 'fumadocs-core/search/server'; - -export const { GET } = createFromSource(source); \ No newline at end of file diff --git a/docs-site/app/config.ts b/docs-site/app/config.ts index f4f1e199..689dc135 100644 --- a/docs-site/app/config.ts +++ b/docs-site/app/config.ts @@ -1,2 +1,2 @@ // app/config.ts -export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf' : ''; \ No newline at end of file +export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf/docs-site' : ''; \ No newline at end of file diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index 79556bf9..be3a29f8 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -1,4 +1,6 @@ import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; +import { basePath } from './config'; +import Image from 'next/image'; /** * Shared layout configurations @@ -11,16 +13,15 @@ export const baseOptions: BaseLayoutProps = { nav: { title: ( <> - - - + YAKE Logo YAKE! ), }, -}; +}; \ No newline at end of file diff --git a/docs-site/app/layout.tsx b/docs-site/app/layout.tsx index c254732d..3f262270 100644 --- a/docs-site/app/layout.tsx +++ b/docs-site/app/layout.tsx @@ -16,7 +16,8 @@ export const metadata: Metadata = { }, description: 'Documentation for YAKE!', icons: { - icon: `${basePath}/favicon.ico`, + icon: `yakelogo.png`, + shortcut: `yakelogo.png`, }, }; diff --git a/docs-site/content/docs/core/Levenshtein.mdx b/docs-site/content/docs/core/Levenshtein.mdx index 951e9440..ddc2de76 100644 --- a/docs-site/content/docs/core/Levenshtein.mdx +++ b/docs-site/content/docs/core/Levenshtein.mdx @@ -1,10 +1,3 @@ - ---- -title: "Levenshtein" -description: "Module providing Levenshtein distance and ratio calculations" ---- - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # Levenshtein diff --git a/docs-site/content/docs/core/highlight.mdx b/docs-site/content/docs/core/highlight.mdx index 07b6559e..c853e2e1 100644 --- a/docs-site/content/docs/core/highlight.mdx +++ b/docs-site/content/docs/core/highlight.mdx @@ -1,10 +1,3 @@ - ---- -title: "TextHighlighter" -description: "Module for highlighting text based on keywords in YAKE" ---- - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # TextHighlighter diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/core/yake.mdx index 3c944376..7a467c81 100644 --- a/docs-site/content/docs/core/yake.mdx +++ b/docs-site/content/docs/core/yake.mdx @@ -1,9 +1,3 @@ - ---- -title: "Yake" -description: "Core class for YAKE keyword extraction from text documents" ---- - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # KeywordExtractor Class diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/data/composedword.mdx index e5da072c..949b4e63 100644 --- a/docs-site/content/docs/data/composedword.mdx +++ b/docs-site/content/docs/data/composedword.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # ComposedWord diff --git a/docs-site/content/docs/data/datacore.mdx b/docs-site/content/docs/data/datacore.mdx index 30af9afc..4c9fe476 100644 --- a/docs-site/content/docs/data/datacore.mdx +++ b/docs-site/content/docs/data/datacore.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # DataCore diff --git a/docs-site/content/docs/data/singleword.mdx b/docs-site/content/docs/data/singleword.mdx index 2fa7dfbb..e854cc4b 100644 --- a/docs-site/content/docs/data/singleword.mdx +++ b/docs-site/content/docs/data/singleword.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # SingleWord diff --git a/docs-site/content/docs/data/utils.mdx b/docs-site/content/docs/data/utils.mdx index 8831d2ff..14ecff45 100644 --- a/docs-site/content/docs/data/utils.mdx +++ b/docs-site/content/docs/data/utils.mdx @@ -1,4 +1,3 @@ - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # Utils diff --git a/docs-site/next.config.mjs b/docs-site/next.config.mjs index 2ad51a02..a6e5d82a 100644 --- a/docs-site/next.config.mjs +++ b/docs-site/next.config.mjs @@ -2,7 +2,7 @@ import { createMDX } from 'fumadocs-mdx/next'; const withMDX = createMDX(); -const REPO_NAME = 'yakerf'; // Substitua pelo nome exato do seu repositório +const REPO_NAME = 'yakerf'; /** @type {import('next').NextConfig} */ const config = { diff --git a/docs-site/package-lock.json b/docs-site/package-lock.json index ab39305b..502a5c55 100644 --- a/docs-site/package-lock.json +++ b/docs-site/package-lock.json @@ -14,10 +14,10 @@ "clsx": "^2.1.1", "fumadocs-core": "15.2.9", "fumadocs-mdx": "11.6.1", - "fumadocs-ui": "15.2.9", + "fumadocs-ui": "^15.2.9", "lucide-react": "^0.503.0", "next": "15.3.1", - "nextra": "^4.2.17", + "nextra": "^1.1.0", "react": "^19.1.0", "react-dom": "^19.1.0", "tailwind-merge": "^3.2.0", @@ -31,6 +31,8 @@ "@types/react-dom": "^19.1.2", "eslint": "^8", "eslint-config-next": "15.3.1", + "glob": "^8.1.0", + "gray-matter": "^4.0.3", "postcss": "^8.5.3", "tailwindcss": "^4.1.4", "typescript": "^5.8.3" @@ -48,65 +50,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@antfu/install-pkg": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@antfu/install-pkg/-/install-pkg-1.0.0.tgz", - "integrity": "sha512-xvX6P/lo1B3ej0OsaErAjqgFYzYVcJpamjLAFLYh9vRJngBrMoUG7aVnrGTeqM7yxbyTD5p3F2+0/QUEh8Vzhw==", - "dependencies": { - "package-manager-detector": "^0.2.8", - "tinyexec": "^0.3.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@antfu/utils": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/@antfu/utils/-/utils-8.1.1.tgz", - "integrity": "sha512-Mex9nXf9vR6AhcXmMrlz/HVgYYZpVGJ6YlPgwl7UnaFpnshXs6EK/oa5Gpf3CzENMjkvEx2tQtntGnb7UtSTOQ==", - "funding": { - "url": "https://github.com/sponsors/antfu" - } - }, - "node_modules/@braintree/sanitize-url": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/@braintree/sanitize-url/-/sanitize-url-7.1.1.tgz", - "integrity": "sha512-i1L7noDNxtFyL5DmZafWy1wRVhGehQmzZaz1HiN5e7iylJMSZR7ekOV7NsIqa5qBldlLrsKv4HbgFUVlQrz8Mw==" - }, - "node_modules/@chevrotain/cst-dts-gen": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/cst-dts-gen/-/cst-dts-gen-11.0.3.tgz", - "integrity": "sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==", - "dependencies": { - "@chevrotain/gast": "11.0.3", - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/gast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/gast/-/gast-11.0.3.tgz", - "integrity": "sha512-+qNfcoNk70PyS/uxmj3li5NiECO+2YKZZQMbmjTqRI3Qchu8Hig/Q9vgkHpI3alNjr7M+a2St5pw5w5F6NL5/Q==", - "dependencies": { - "@chevrotain/types": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/@chevrotain/regexp-to-ast": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/regexp-to-ast/-/regexp-to-ast-11.0.3.tgz", - "integrity": "sha512-1fMHaBZxLFvWI067AVbGJav1eRY7N8DDvYCTwGBiE/ytKBgP8azTdgyrKyWZ9Mfh09eHWb5PgTSO8wi7U824RA==" - }, - "node_modules/@chevrotain/types": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/types/-/types-11.0.3.tgz", - "integrity": "sha512-gsiM3G8b58kZC2HaWR50gu6Y1440cHiJ+i3JUvcp/35JchYejb2+5MVeJK0iKThYpAa/P2PYFV4hoi44HD+aHQ==" - }, - "node_modules/@chevrotain/utils": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/@chevrotain/utils/-/utils-11.0.3.tgz", - "integrity": "sha512-YslZMgtJUyuMbZ+aKvfF3x1f5liK4mWNxghFRv7jqRR9C3R3fAOGTTKvxXDa2Y1s9zSbcpuO0cAxDYsc9SrXoQ==" - }, "node_modules/@emnapi/core": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/@emnapi/core/-/core-1.4.3.tgz", @@ -588,20 +531,6 @@ "@floating-ui/utils": "^0.2.9" } }, - "node_modules/@floating-ui/react": { - "version": "0.26.28", - "resolved": "https://registry.npmjs.org/@floating-ui/react/-/react-0.26.28.tgz", - "integrity": "sha512-yORQuuAtVpiRjpMhdc0wJj06b9JFjrYF4qp96j++v2NBpbi6SEGF7donUJ3TMieerQ6qVkAv1tgr7L4r5roTqw==", - "dependencies": { - "@floating-ui/react-dom": "^2.1.2", - "@floating-ui/utils": "^0.2.8", - "tabbable": "^6.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, "node_modules/@floating-ui/react-dom": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", @@ -627,25 +556,6 @@ "tslib": "^2.8.0" } }, - "node_modules/@headlessui/react": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/@headlessui/react/-/react-2.2.2.tgz", - "integrity": "sha512-zbniWOYBQ8GHSUIOPY7BbdIn6PzUOq0z41RFrF30HbjsxG6Rrfk+6QulR8Kgf2Vwj2a/rE6i62q5vo+2gI5dJA==", - "dependencies": { - "@floating-ui/react": "^0.26.16", - "@react-aria/focus": "^3.17.1", - "@react-aria/interactions": "^3.21.3", - "@tanstack/react-virtual": "^3.13.6", - "use-sync-external-store": "^1.5.0" - }, - "engines": { - "node": ">=10" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" - } - }, "node_modules/@humanwhocodes/config-array": { "version": "0.13.0", "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.13.0.tgz", @@ -681,37 +591,6 @@ "deprecated": "Use @eslint/object-schema instead", "dev": true }, - "node_modules/@iconify/types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@iconify/types/-/types-2.0.0.tgz", - "integrity": "sha512-+wluvCrRhXrhyOmRDJ3q8mux9JkKy5SJ/v8ol2tu4FVjyYvtEzkc/3pK15ET6RKg4b4w4BmTk1+gsCUhf21Ykg==" - }, - "node_modules/@iconify/utils": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/@iconify/utils/-/utils-2.3.0.tgz", - "integrity": "sha512-GmQ78prtwYW6EtzXRU1rY+KwOKfz32PD7iJh6Iyqw68GiKuoZ2A6pRtzWONz5VQJbp50mEjXh/7NkumtrAgRKA==", - "dependencies": { - "@antfu/install-pkg": "^1.0.0", - "@antfu/utils": "^8.1.0", - "@iconify/types": "^2.0.0", - "debug": "^4.4.0", - "globals": "^15.14.0", - "kolorist": "^1.8.0", - "local-pkg": "^1.0.0", - "mlly": "^1.7.4" - } - }, - "node_modules/@iconify/utils/node_modules/globals": { - "version": "15.15.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-15.15.0.tgz", - "integrity": "sha512-7ACyT3wmyp3I61S4fG682L0VA2RGD9otkqGJIwNUMF1SWUombIIk+af1unuDYgMm082aHYwD+mzJvv9Iu8dsgg==", - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/@img/sharp-darwin-arm64": { "version": "0.34.1", "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", @@ -1069,281 +948,1177 @@ "url": "https://opencollective.com/libvips" } }, - "node_modules/@mdx-js/mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", - "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.8", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.8.tgz", + "integrity": "sha512-imAbBGkb+ebQyxKgzv5Hu2nmROxoDOXHh80evxdoXNOrvAnVx7zimzc1Oo5h9RlfV4vPXaE2iM5pOFbvOCClWA==", + "peer": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "peer": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/source-map": { + "version": "0.3.6", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", + "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", + "peer": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==", + "peer": true + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "peer": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mdx-js/loader": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/loader/-/loader-2.3.0.tgz", + "integrity": "sha512-IqsscXh7Q3Rzb+f5DXYk0HU71PK+WuFsEhf+mSV3fOhpLcEpgsHvTQ2h0T6TlZ5gHOaBeFjkXwB52by7ypMyNg==", + "dependencies": { + "@mdx-js/mdx": "^2.0.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + }, + "peerDependencies": { + "webpack": ">=4" + } + }, + "node_modules/@mdx-js/loader/node_modules/@mdx-js/mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz", + "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==", "dependencies": { - "@types/estree": "^1.0.0", "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", "@types/mdx": "^2.0.0", - "collapse-white-space": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "estree-util-scope": "^1.0.0", + "estree-util-build-jsx": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-util-to-js": "^1.1.0", "estree-walker": "^3.0.0", - "hast-util-to-jsx-runtime": "^2.0.0", - "markdown-extensions": "^2.0.0", - "recma-build-jsx": "^1.0.0", - "recma-jsx": "^1.0.0", - "recma-stringify": "^1.0.0", - "rehype-recma": "^1.0.0", - "remark-mdx": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-rehype": "^11.0.0", - "source-map": "^0.7.0", - "unified": "^11.0.0", - "unist-util-position-from-estree": "^2.0.0", - "unist-util-stringify-position": "^4.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" + "hast-util-to-estree": "^2.0.0", + "markdown-extensions": "^1.0.0", + "periscopic": "^3.0.0", + "remark-mdx": "^2.0.0", + "remark-parse": "^10.0.0", + "remark-rehype": "^10.0.0", + "unified": "^10.0.0", + "unist-util-position-from-estree": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "unist-util-visit": "^4.0.0", + "vfile": "^5.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/@mermaid-js/parser": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/@mermaid-js/parser/-/parser-0.4.0.tgz", - "integrity": "sha512-wla8XOWvQAwuqy+gxiZqY+c7FokraOTHRWMsbB4AgRx9Sy7zKslNyejy7E+a77qHfey5GXw/ik3IXv/NHMJgaA==", + "node_modules/@mdx-js/loader/node_modules/@types/hast": { + "version": "2.3.10", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.10.tgz", + "integrity": "sha512-McWspRw8xx8J9HurkVBfYj0xKoE25tOFlHGdx4MJ5xORQrMGZNqJhVQWaIbm6Oyla5kYOXtDiopzKRJzEOkwJw==", "dependencies": { - "langium": "3.3.1" + "@types/unist": "^2" } }, - "node_modules/@napi-rs/simple-git": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git/-/simple-git-0.1.19.tgz", - "integrity": "sha512-jMxvwzkKzd3cXo2EB9GM2ic0eYo2rP/BS6gJt6HnWbsDO1O8GSD4k7o2Cpr2YERtMpGF/MGcDfsfj2EbQPtrXw==", - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/@mdx-js/loader/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/@mdx-js/loader/node_modules/estree-util-attach-comments": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz", + "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==", + "dependencies": { + "@types/estree": "^1.0.0" }, - "optionalDependencies": { - "@napi-rs/simple-git-android-arm-eabi": "0.1.19", - "@napi-rs/simple-git-android-arm64": "0.1.19", - "@napi-rs/simple-git-darwin-arm64": "0.1.19", - "@napi-rs/simple-git-darwin-x64": "0.1.19", - "@napi-rs/simple-git-freebsd-x64": "0.1.19", - "@napi-rs/simple-git-linux-arm-gnueabihf": "0.1.19", - "@napi-rs/simple-git-linux-arm64-gnu": "0.1.19", - "@napi-rs/simple-git-linux-arm64-musl": "0.1.19", - "@napi-rs/simple-git-linux-powerpc64le-gnu": "0.1.19", - "@napi-rs/simple-git-linux-s390x-gnu": "0.1.19", - "@napi-rs/simple-git-linux-x64-gnu": "0.1.19", - "@napi-rs/simple-git-linux-x64-musl": "0.1.19", - "@napi-rs/simple-git-win32-arm64-msvc": "0.1.19", - "@napi-rs/simple-git-win32-x64-msvc": "0.1.19" - } - }, - "node_modules/@napi-rs/simple-git-android-arm-eabi": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm-eabi/-/simple-git-android-arm-eabi-0.1.19.tgz", - "integrity": "sha512-XryEH/hadZ4Duk/HS/HC/cA1j0RHmqUGey3MsCf65ZS0VrWMqChXM/xlTPWuY5jfCc/rPubHaqI7DZlbexnX/g==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-android-arm64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-android-arm64/-/simple-git-android-arm64-0.1.19.tgz", - "integrity": "sha512-ZQ0cPvY6nV9p7zrR9ZPo7hQBkDAcY/CHj3BjYNhykeUCiSNCrhvwX+WEeg5on8M1j4d5jcI/cwVG2FslfiByUg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "android" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-build-jsx": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz", + "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-darwin-arm64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-arm64/-/simple-git-darwin-arm64-0.1.19.tgz", - "integrity": "sha512-viZB5TYgjA1vH+QluhxZo0WKro3xBA+1xSzYx8mcxUMO5gnAoUMwXn0ZO/6Zy6pai+aGae+cj6XihGnrBRu3Pg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-is-identifier-name": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", + "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-darwin-x64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-darwin-x64/-/simple-git-darwin-x64-0.1.19.tgz", - "integrity": "sha512-6dNkzSNUV5X9rsVYQbpZLyJu4Gtkl2vNJ3abBXHX/Etk0ILG5ZasO3ncznIANZQpqcbn/QPHr49J2QYAXGoKJA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-to-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz", + "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-freebsd-x64": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-freebsd-x64/-/simple-git-freebsd-x64-0.1.19.tgz", - "integrity": "sha512-sB9krVIchzd20FjI2ZZ8FDsTSsXLBdnwJ6CpeVyrhXHnoszfcqxt49ocZHujAS9lMpXq7i2Nv1EXJmCy4KdhwA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "freebsd" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/estree-util-visit": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz", + "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-arm-gnueabihf": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm-gnueabihf/-/simple-git-linux-arm-gnueabihf-0.1.19.tgz", - "integrity": "sha512-6HPn09lr9N1n5/XKfP8Np53g4fEXVxOFqNkS6rTH3Rm1lZHdazTRH62RggXLTguZwjcE+MvOLvoTIoR5kAS8+g==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/hast-util-to-estree": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.3.tgz", + "integrity": "sha512-ihhPIUPxN0v0w6M5+IiAZZrn0LH2uZomeWwhn7uP7avZC6TE7lIiEh2yBMPr5+zi1aUCXq6VoYRgs2Bw9xmycQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/unist": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "estree-util-attach-comments": "^2.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "hast-util-whitespace": "^2.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-object": "^0.4.1", + "unist-util-position": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-arm64-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-gnu/-/simple-git-linux-arm64-gnu-0.1.19.tgz", - "integrity": "sha512-G0gISckt4cVDp3oh5Z6PV3GHJrJO6Z8bIS+9xA7vTtKdqB1i5y0n3cSFLlzQciLzhr+CajFD27doW4lEyErQ/Q==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/hast-util-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-2.0.1.tgz", + "integrity": "sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-arm64-musl": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-arm64-musl/-/simple-git-linux-arm64-musl-0.1.19.tgz", - "integrity": "sha512-OwTRF+H4IZYxmDFRi1IrLMfqbdIpvHeYbJl2X94NVsLVOY+3NUHvEzL3fYaVx5urBaMnIK0DD3wZLbcueWvxbA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], + "node_modules/@mdx-js/loader/node_modules/inline-style-parser": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.1.1.tgz", + "integrity": "sha512-7NXolsK4CAS5+xvdj5OMMbI962hU/wvwoxk+LWR9Ek9bVtyuuYScDN6eS0rUm6TxApFpw7CX1o4uJzcd4AyD3Q==" + }, + "node_modules/@mdx-js/loader/node_modules/markdown-extensions": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz", + "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==", "engines": { - "node": ">= 10" + "node": ">=0.10.0" } }, - "node_modules/@napi-rs/simple-git-linux-powerpc64le-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-powerpc64le-gnu/-/simple-git-linux-powerpc64le-gnu-0.1.19.tgz", - "integrity": "sha512-p7zuNNVyzpRvkCt2RIGv9FX/WPcPbZ6/FRUgUTZkA2WU33mrbvNqSi4AOqCCl6mBvEd+EOw5NU4lS9ORRJvAEg==", - "cpu": [ - "powerpc64le" + "node_modules/@mdx-js/loader/node_modules/mdast-util-from-markdown": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-1.3.1.tgz", + "integrity": "sha512-4xTO/M8c82qBcnQc1tgpNtubGUW/Y1tBQ1B0i5CtSoelOLKFYlElIr3bvgREYYO5iRqbMY1YuqZng0GVOI8Qww==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "mdast-util-to-string": "^3.1.0", + "micromark": "^3.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-decode-string": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-stringify-position": "^3.0.0", + "uvu": "^0.5.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz", + "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==", + "dependencies": { + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-mdx-expression": "^1.0.0", + "mdast-util-mdx-jsx": "^2.0.0", + "mdast-util-mdxjs-esm": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx-expression": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz", + "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdx-jsx": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.4.tgz", + "integrity": "sha512-DtMn9CmVhVzZx3f+optVDF8yFgQVt7FghCRNdlIaS3X5Bnym3hZwPbg/XW86vdpKjlc1PVj26SpnLGeJBXD3JA==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "ccount": "^2.0.0", + "mdast-util-from-markdown": "^1.1.0", + "mdast-util-to-markdown": "^1.3.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-remove-position": "^4.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-mdxjs-esm": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz", + "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "mdast-util-to-markdown": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-phrasing": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz", + "integrity": "sha512-WmI1gTXUBJo4/ZmSk79Wcb2HcjPJBzM1nlI/OUWA8yk2X9ik3ffNbBGsU+09BFmXaL1IBb9fiuvq6/KMiNycSg==", + "dependencies": { + "@types/mdast": "^3.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-hast": { + "version": "12.3.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-12.3.0.tgz", + "integrity": "sha512-pits93r8PhnIoU4Vy9bjW39M2jJ6/tdHyja9rrot9uujkN7UTU9SDnE6WNJz/IGyQk3XHX6yNNtrBH6cQzm8Hw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-definitions": "^5.0.0", + "micromark-util-sanitize-uri": "^1.1.0", + "trim-lines": "^3.0.0", + "unist-util-generated": "^2.0.0", + "unist-util-position": "^4.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-markdown": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-1.5.0.tgz", + "integrity": "sha512-bbv7TPv/WC49thZPg3jXuqzuvI45IL2EVAr/KxF0BSdHsU0ceFHOmwQn6evxAh1GaoK/6GQ1wp4R4oW2+LFL/A==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^3.0.0", + "mdast-util-to-string": "^3.0.0", + "micromark-util-decode-string": "^1.0.0", + "unist-util-visit": "^4.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/mdast-util-to-string": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-3.2.0.tgz", + "integrity": "sha512-V4Zn/ncyN1QNSqSBxTrMOLpjr+IKdHl2v3KVLoWmDPscP4r9GcCi71gjgvUV1SFSKh92AjAG4peFuBl2/YgCJg==", + "dependencies": { + "@types/mdast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-3.2.0.tgz", + "integrity": "sha512-uD66tJj54JLYq0De10AhWycZWGQNUvDI55xPgk2sQM5kn1JYlhbCMTtEeT27+vAhW2FBQxLlOmS3pmA7/2z4aA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "micromark-core-commonmark": "^1.0.1", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-sanitize-uri": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-core-commonmark": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-1.1.0.tgz", + "integrity": "sha512-BgHO1aRbolh2hcrzL2d1La37V0Aoz73ymF8rAcKnohLy93titmv62E0gP8Hrx9PKcKrqCZ1BbLGbP3bEhoXYlw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-factory-destination": "^1.0.0", + "micromark-factory-label": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-factory-title": "^1.0.0", + "micromark-factory-whitespace": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-chunked": "^1.0.0", + "micromark-util-classify-character": "^1.0.0", + "micromark-util-html-tag-name": "^1.0.0", + "micromark-util-normalize-identifier": "^1.0.0", + "micromark-util-resolve-all": "^1.0.0", + "micromark-util-subtokenize": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.1", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-expression": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.8.tgz", + "integrity": "sha512-zZpeQtc5wfWKdzDsHRBY003H2Smg+PUi2REhqgIhdzAa5xonhP03FcXxqFSerFiNUr5AWmHpaNPQTBVOS4lrXw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.5.tgz", + "integrity": "sha512-gPH+9ZdmDflbu19Xkb8+gheqEDqkSpdCEubQyxuz/Hn8DOXiXvrXeikOoBA71+e8Pfi0/UYmU3wW3H58kr7akA==", + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "estree-util-is-identifier-name": "^2.0.0", + "micromark-factory-mdx-expression": "^1.0.0", + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdx-md": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.1.tgz", + "integrity": "sha512-7MSuj2S7xjOQXAjjkbjBsHkMtb+mDGVW6uI2dBL9snOBCbZmoNgDAeZ0nSn9j3T42UE/g2xVNMn18PJxZvkBEA==", + "dependencies": { + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdxjs": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.1.tgz", + "integrity": "sha512-7YA7hF6i5eKOfFUzZ+0z6avRG52GpWR8DL+kN47y3f2KhxbBZMhmxe7auOeaTBrW2DenbbZTf1ea9tA2hDpC2Q==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^1.0.0", + "micromark-extension-mdx-jsx": "^1.0.0", + "micromark-extension-mdx-md": "^1.0.0", + "micromark-extension-mdxjs-esm": "^1.0.0", + "micromark-util-combine-extensions": "^1.0.0", + "micromark-util-types": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-extension-mdxjs-esm": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.5.tgz", + "integrity": "sha512-xNRBw4aoURcyz/S69B19WnZAkWJMxHMT5hE36GtDAyhoyn/8TuAeqjFJQlwk+MKQsUD7b3l7kFX+vlfVWgcX1w==", + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-core-commonmark": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.1.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-destination": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.1.0.tgz", + "integrity": "sha512-XaNDROBgx9SgSChd69pjiGKbV+nfHGDPVYFs5dOoDd7ZnMAE+Cuu91BCpsY8RT2NP9vo/B8pds2VQNCLiu0zhg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-label": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-1.1.0.tgz", + "integrity": "sha512-OLtyez4vZo/1NjxGhcpDSbHQ+m0IIGnT8BoPamh+7jVlzLJBH98zzuCoUeMxvM6WsNeh8wx8cKvqLiPHEACn0w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-mdx-expression": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.9.tgz", + "integrity": "sha512-jGIWzSmNfdnkJq05c7b0+Wv0Kfz3NJ3N4cBjnbO4zjXIlxJr+f8lk+5ZmwFvqdAbUy2q6B5rCY//g0QAAaXDWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-events-to-acorn": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "unist-util-position-from-estree": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-space": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.1.0.tgz", + "integrity": "sha512-cRzEj7c0OL4Mw2v6nwzttyOZe8XY/Z8G0rzmWQZTBi/jjwyw/U4uqKtUORXQrR5bAZZnbTI/feRV/R7hc4jQYQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-title": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-1.1.0.tgz", + "integrity": "sha512-J7n9R3vMmgjDOCY8NPw55jiyaQnH5kBdV2/UXCtZIpnHH3P6nHUKaH7XXEYuWwx/xUJcawa8plLBEjMPU24HzQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-factory-whitespace": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-1.1.0.tgz", + "integrity": "sha512-v2WlmiymVSp5oMg+1Q0N1Lxmt6pMhIHD457whWM7/GUlEks1hI9xj5w3zbc4uuMKXGisksZk8DzP2UyGbGqNsQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-character": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-1.2.0.tgz", + "integrity": "sha512-lXraTwcX3yH/vMDaFWCQJP1uIszLVebzUa3ZHdrgxr7KEU/9mL4mVgCpGbyhvNLNlauROiNUq7WN5u7ndbY6xg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-chunked": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-1.1.0.tgz", + "integrity": "sha512-Ye01HXpkZPNcV6FiyoW2fGZDUw4Yc7vT0E9Sad83+bEDiCJ1uXu0S3mr8WLpsz3HaG3x2q0HM6CTuPdcZcluFQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-classify-character": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-1.1.0.tgz", + "integrity": "sha512-SL0wLxtKSnklKSUplok1WQFoGhUdWYKggKUiqhX+Swala+BtptGCu5iPRc+xvzJ4PXE/hwM3FNXsfEVgoZsWbw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "optional": true, - "os": [ - "linux" + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-combine-extensions": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-1.1.0.tgz", + "integrity": "sha512-Q20sp4mfNf9yEqDL50WwuWZHUrCO4fEyeDCnMGmG5Pr0Cz15Uo7KBs6jq+dq0EgX4DPwwrh9m0X+zPV1ypFvUA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } ], - "engines": { - "node": ">= 10" + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-decode-numeric-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-1.1.0.tgz", + "integrity": "sha512-m9V0ExGv0jB1OT21mrWcuf4QhP46pH1KkfWy9ZEezqHKAxkj4mPCy3nIH1rkbdMlChLHX531eOrymlwyZIf2iw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-decode-string": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-1.1.0.tgz", + "integrity": "sha512-YphLGCK8gM1tG1bd54azwyrQRjCFcmgj2S2GoJDNnh4vYtnL38JS8M4gpxzOPNyHdNEpheyWXCTnnTDY3N+NVQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^1.0.0", + "micromark-util-decode-numeric-character-reference": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.1.0.tgz", + "integrity": "sha512-EuEzTWSTAj9PA5GOAs992GzNh2dGQO52UvAbtSOMvXTxv3Criqb6IOzJUBCmEqrrXSblJIJBbFFv6zPxpreiJw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-events-to-acorn": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.3.tgz", + "integrity": "sha512-ij4X7Wuc4fED6UoLWkmo0xJQhsktfNh1J0m8g4PbIMPlx+ek/4YdW5mvbye8z/aZvAPUoxgXHrwVlXAPKMRp1w==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/acorn": "^4.0.0", + "@types/estree": "^1.0.0", + "@types/unist": "^2.0.0", + "estree-util-visit": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0", + "vfile-message": "^3.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-html-tag-name": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.2.0.tgz", + "integrity": "sha512-VTQzcuQgFUD7yYztuQFKXT49KghjtETQ+Wv/zUjGSGBioZnkA4P1XXZPT1FHeJA6RwRXSF47yvJ1tsJdoxwO+Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-normalize-identifier": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-1.1.0.tgz", + "integrity": "sha512-N+w5vhqrBihhjdpM8+5Xsxy71QWqGn7HYNUvch71iV2PM7+E3uWGox1Qp90loa1ephtCxG2ftRV/Conitc6P2Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-resolve-all": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-1.1.0.tgz", + "integrity": "sha512-b/G6BTMSg+bX+xVCshPTPyAu2tmA0E4X98NSR7eIbeC6ycCqCeE7wjfDIgzEbkzdEVJXRtOG4FbEm/uGbCRouA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-sanitize-uri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-1.2.0.tgz", + "integrity": "sha512-QO4GXv0XZfWey4pYFndLUKEAktKkG5kZTdUNaTAkzbuJxn2tNBOr+QtxR2XpWaMhbImT2dPzyLrPXLlPhph34A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^1.0.0", + "micromark-util-encode": "^1.0.0", + "micromark-util-symbol": "^1.0.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-subtokenize": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-1.1.0.tgz", + "integrity": "sha512-kUQHyzRoxvZO2PuLzMt2P/dwVsTiivCK8icYTeR+3WgbuPqfHgPPy7nFKbeqRivBvn/3N3GBiNC+JRTMSxEC7A==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^1.0.0", + "micromark-util-symbol": "^1.0.0", + "micromark-util-types": "^1.0.0", + "uvu": "^0.5.0" + } + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-symbol": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-1.1.0.tgz", + "integrity": "sha512-uEjpEYY6KMs1g7QfJ2eX1SQEV+ZT4rUD3UcF6l57acZvLNK7PBZL+ty82Z1qhK1/yXIY4bdx04FKMgR0g4IAag==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/micromark-util-types": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-1.1.0.tgz", + "integrity": "sha512-ukRBgie8TIAcacscVHSiddHjO4k/q3pnedmzMQ4iwDcK0FtFCohKOlFbaOL/mPgfnPsL3C1ZyxJa4sbWrBl3jg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/@mdx-js/loader/node_modules/property-information": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", + "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/@mdx-js/loader/node_modules/remark-mdx": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz", + "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==", + "dependencies": { + "mdast-util-mdx": "^2.0.0", + "micromark-extension-mdxjs": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/remark-parse": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.2.tgz", + "integrity": "sha512-3ydxgHa/ZQzG8LvC7jTXccARYDcRld3VfcgIIFs7bI6vbRSxJJmzgLEIIoYKyrfhaY+ujuWaf/PJiMZXoiCXgw==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-from-markdown": "^1.0.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/remark-rehype": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-10.1.0.tgz", + "integrity": "sha512-EFmR5zppdBp0WQeDVZ/b66CWJipB2q2VLNFMabzDSGR66Z2fQii83G5gTBbgGEnEEA0QRussvrFHxk1HWGJskw==", + "dependencies": { + "@types/hast": "^2.0.0", + "@types/mdast": "^3.0.0", + "mdast-util-to-hast": "^12.1.0", + "unified": "^10.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/style-to-object": { + "version": "0.4.4", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.4.tgz", + "integrity": "sha512-HYNoHZa2GorYNyqiCaBgsxvcJIn7OHq6inEga+E6Ke3m5JkoqpQbnFssk4jwe+K7AhGa2fcha4wSOf1Kn01dMg==", + "dependencies": { + "inline-style-parser": "0.1.1" + } + }, + "node_modules/@mdx-js/loader/node_modules/unified": { + "version": "10.1.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-10.1.2.tgz", + "integrity": "sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==", + "dependencies": { + "@types/unist": "^2.0.0", + "bail": "^2.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-position": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-4.0.4.tgz", + "integrity": "sha512-kUBE91efOWfIVBo8xzh/uZQ7p9ffYRtUbMRZBNFYwf0RK8koUMx6dGUfwylLOKmaT2cs4wSW96QoYUSXAyEtpg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-position-from-estree": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz", + "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@mdx-js/loader/node_modules/unist-util-stringify-position": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz", + "integrity": "sha512-k5GzIBZ/QatR8N5X2y+drfpWG8IDBzdnVj6OInRNWm1oXrzydiaAT2OQiA8DPRRZyAKb9b6I2a6PxYklZD0gKg==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-s390x-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-s390x-gnu/-/simple-git-linux-s390x-gnu-0.1.19.tgz", - "integrity": "sha512-6N2vwJUPLiak8GLrS0a3is0gSb0UwI2CHOOqtvQxPmv+JVI8kn3vKiUscsktdDb0wGEPeZ8PvZs0y8UWix7K4g==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-x64-gnu": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-gnu/-/simple-git-linux-x64-gnu-0.1.19.tgz", - "integrity": "sha512-61YfeO1J13WK7MalLgP3QlV6of2rWnVw1aqxWkAgy/lGxoOFSJ4Wid6ANVCEZk4tJpPX/XNeneqkUz5xpeb2Cw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-linux-x64-musl": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-linux-x64-musl/-/simple-git-linux-x64-musl-0.1.19.tgz", - "integrity": "sha512-cCTWNpMJnN3PrUBItWcs3dQKCydsIasbrS3laMzq8k7OzF93Zrp2LWDTPlLCO9brbBVpBzy2Qk5Xg9uAfe/Ukw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/vfile": { + "version": "5.3.7", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-5.3.7.tgz", + "integrity": "sha512-r7qlzkgErKjobAmyNIkkSpizsFPYiUPuJb5pNW1RB4JcYVZhs4lIbVqk8XPk033CV/1z8ss5pkax8SuhGpcG8g==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^3.0.0", + "vfile-message": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-win32-arm64-msvc": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-arm64-msvc/-/simple-git-win32-arm64-msvc-0.1.19.tgz", - "integrity": "sha512-sWavb1BjeLKKBA+PbTsRSSzVNfb7V/dOpaJvkgR5d2kWFn/AHmCZHSSj/3nyZdYf0BdDC+DIvqk3daAEZ6QMVw==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/loader/node_modules/vfile-message": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-3.1.4.tgz", + "integrity": "sha512-fa0Z6P8HUrQN4BZaX05SIVXic+7kE3b05PWAtPuYP9QLHsLKYR7/AlLW3NtOrpXRLeawpDLMsVkmk5DG0NXgWw==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/@napi-rs/simple-git-win32-x64-msvc": { - "version": "0.1.19", - "resolved": "https://registry.npmjs.org/@napi-rs/simple-git-win32-x64-msvc/-/simple-git-win32-x64-msvc-0.1.19.tgz", - "integrity": "sha512-FmNuPoK4+qwaSCkp8lm3sJlrxk374enW+zCE5ZksXlZzj/9BDJAULJb5QUJ7o9Y8A/G+d8LkdQLPBE2Jaxe5XA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">= 10" + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/@napi-rs/wasm-runtime": { @@ -2246,96 +3021,6 @@ "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" }, - "node_modules/@react-aria/focus": { - "version": "3.20.2", - "resolved": "https://registry.npmjs.org/@react-aria/focus/-/focus-3.20.2.tgz", - "integrity": "sha512-Q3rouk/rzoF/3TuH6FzoAIKrl+kzZi9LHmr8S5EqLAOyP9TXIKG34x2j42dZsAhrw7TbF9gA8tBKwnCNH4ZV+Q==", - "dependencies": { - "@react-aria/interactions": "^3.25.0", - "@react-aria/utils": "^3.28.2", - "@react-types/shared": "^3.29.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/interactions": { - "version": "3.25.0", - "resolved": "https://registry.npmjs.org/@react-aria/interactions/-/interactions-3.25.0.tgz", - "integrity": "sha512-GgIsDLlO8rDU/nFn6DfsbP9rfnzhm8QFjZkB9K9+r+MTSCn7bMntiWQgMM+5O6BiA8d7C7x4zuN4bZtc0RBdXQ==", - "dependencies": { - "@react-aria/ssr": "^3.9.8", - "@react-aria/utils": "^3.28.2", - "@react-stately/flags": "^3.1.1", - "@react-types/shared": "^3.29.0", - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/ssr": { - "version": "3.9.8", - "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.8.tgz", - "integrity": "sha512-lQDE/c9uTfBSDOjaZUJS8xP2jCKVk4zjQeIlCH90xaLhHDgbpCdns3xvFpJJujfj3nI4Ll9K7A+ONUBDCASOuw==", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "engines": { - "node": ">= 12" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-aria/utils": { - "version": "3.28.2", - "resolved": "https://registry.npmjs.org/@react-aria/utils/-/utils-3.28.2.tgz", - "integrity": "sha512-J8CcLbvnQgiBn54eeEvQQbIOfBF3A1QizxMw9P4cl9MkeR03ug7RnjTIdJY/n2p7t59kLeAB3tqiczhcj+Oi5w==", - "dependencies": { - "@react-aria/ssr": "^3.9.8", - "@react-stately/flags": "^3.1.1", - "@react-stately/utils": "^3.10.6", - "@react-types/shared": "^3.29.0", - "@swc/helpers": "^0.5.0", - "clsx": "^2.0.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1", - "react-dom": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-stately/flags": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@react-stately/flags/-/flags-3.1.1.tgz", - "integrity": "sha512-XPR5gi5LfrPdhxZzdIlJDz/B5cBf63l4q6/AzNqVWFKgd0QqY5LvWJftXkklaIUpKSJkIKQb8dphuZXDtkWNqg==", - "dependencies": { - "@swc/helpers": "^0.5.0" - } - }, - "node_modules/@react-stately/utils": { - "version": "3.10.6", - "resolved": "https://registry.npmjs.org/@react-stately/utils/-/utils-3.10.6.tgz", - "integrity": "sha512-O76ip4InfTTzAJrg8OaZxKU4vvjMDOpfA/PGNOytiXwBbkct2ZeZwaimJ8Bt9W1bj5VsZ81/o/tW4BacbdDOMA==", - "dependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, - "node_modules/@react-types/shared": { - "version": "3.29.0", - "resolved": "https://registry.npmjs.org/@react-types/shared/-/shared-3.29.0.tgz", - "integrity": "sha512-IDQYu/AHgZimObzCFdNl1LpZvQW/xcfLt3v20sorl5qRucDVj4S9os98sVTZ4IRIBjmS+MkjqpR5E70xan7ooA==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0-rc.1 || ^18.0.0 || ^19.0.0-rc.1" - } - }, "node_modules/@rtsao/scc": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", @@ -2416,67 +3101,6 @@ "@shikijs/types": "3.3.0" } }, - "node_modules/@shikijs/twoslash": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/twoslash/-/twoslash-2.5.0.tgz", - "integrity": "sha512-OdyoZRbzTB80qHFHdaXT070OG9hiljxbsJMZmrMAPWXG2e4FV8wbC63VBM5BJXa1DH645nw20VX1MzASkO5V9g==", - "dependencies": { - "@shikijs/core": "2.5.0", - "@shikijs/types": "2.5.0", - "twoslash": "^0.2.12" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", - "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", - "dependencies": { - "@shikijs/engine-javascript": "2.5.0", - "@shikijs/engine-oniguruma": "2.5.0", - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/engine-javascript": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", - "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", - "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^3.1.0" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/engine-oniguruma": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", - "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", - "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/@shikijs/twoslash/node_modules/@shikijs/types": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", - "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/twoslash/node_modules/oniguruma-to-es": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", - "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, "node_modules/@shikijs/types": { "version": "3.3.0", "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.3.0.tgz", @@ -2491,6 +3115,14 @@ "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" }, + "node_modules/@sindresorhus/is": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.7.0.tgz", + "integrity": "sha512-ONhaKPIufzzrlNbqtWFFd+jlnemX6lJAgq9ZeiZtS7I1PIf/la7CW4m83rTXRnVnsMbW2k56pGYu7AUFJD9Pow==", + "engines": { + "node": ">=4" + } + }, "node_modules/@standard-schema/spec": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", @@ -2762,40 +3394,6 @@ "tailwindcss": "4.1.4" } }, - "node_modules/@tanstack/react-virtual": { - "version": "3.13.6", - "resolved": "https://registry.npmjs.org/@tanstack/react-virtual/-/react-virtual-3.13.6.tgz", - "integrity": "sha512-WT7nWs8ximoQ0CDx/ngoFP7HbQF9Q2wQe4nh2NB+u2486eX3nZRE40P9g6ccCVq7ZfTSH5gFOuCoVH5DLNS/aA==", - "dependencies": { - "@tanstack/virtual-core": "3.13.6" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - }, - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/@tanstack/virtual-core": { - "version": "3.13.6", - "resolved": "https://registry.npmjs.org/@tanstack/virtual-core/-/virtual-core-3.13.6.tgz", - "integrity": "sha512-cnQUeWnhNP8tJ4WsGcYiX24Gjkc9ALstLbHcBj1t3E7EimN6n6kHH+DPV4PpDnuw00NApQp+ViojMj1GRdwYQg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/tannerlinsley" - } - }, - "node_modules/@theguild/remark-npm2yarn": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@theguild/remark-npm2yarn/-/remark-npm2yarn-0.3.3.tgz", - "integrity": "sha512-ma6DvR03gdbvwqfKx1omqhg9May/VYGdMHvTzB4VuxkyS7KzfZ/lzrj43hmcsggpMje0x7SADA/pcMph0ejRnA==", - "dependencies": { - "npm-to-yarn": "^3.0.0", - "unist-util-visit": "^5.0.0" - } - }, "node_modules/@tybys/wasm-util": { "version": "0.9.0", "resolved": "https://registry.npmjs.org/@tybys/wasm-util/-/wasm-util-0.9.0.tgz", @@ -2806,226 +3404,12 @@ "tslib": "^2.4.0" } }, - "node_modules/@types/d3": { - "version": "7.4.3", - "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", - "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", - "dependencies": { - "@types/d3-array": "*", - "@types/d3-axis": "*", - "@types/d3-brush": "*", - "@types/d3-chord": "*", - "@types/d3-color": "*", - "@types/d3-contour": "*", - "@types/d3-delaunay": "*", - "@types/d3-dispatch": "*", - "@types/d3-drag": "*", - "@types/d3-dsv": "*", - "@types/d3-ease": "*", - "@types/d3-fetch": "*", - "@types/d3-force": "*", - "@types/d3-format": "*", - "@types/d3-geo": "*", - "@types/d3-hierarchy": "*", - "@types/d3-interpolate": "*", - "@types/d3-path": "*", - "@types/d3-polygon": "*", - "@types/d3-quadtree": "*", - "@types/d3-random": "*", - "@types/d3-scale": "*", - "@types/d3-scale-chromatic": "*", - "@types/d3-selection": "*", - "@types/d3-shape": "*", - "@types/d3-time": "*", - "@types/d3-time-format": "*", - "@types/d3-timer": "*", - "@types/d3-transition": "*", - "@types/d3-zoom": "*" - } - }, - "node_modules/@types/d3-array": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", - "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==" - }, - "node_modules/@types/d3-axis": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", - "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-brush": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", - "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-chord": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", - "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==" - }, - "node_modules/@types/d3-color": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", - "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==" - }, - "node_modules/@types/d3-contour": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", - "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", - "dependencies": { - "@types/d3-array": "*", - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==" - }, - "node_modules/@types/d3-dispatch": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", - "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==" - }, - "node_modules/@types/d3-drag": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", - "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-dsv": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", - "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==" - }, - "node_modules/@types/d3-ease": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", - "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==" - }, - "node_modules/@types/d3-fetch": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", - "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", - "dependencies": { - "@types/d3-dsv": "*" - } - }, - "node_modules/@types/d3-force": { - "version": "3.0.10", - "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", - "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==" - }, - "node_modules/@types/d3-format": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", - "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==" - }, - "node_modules/@types/d3-geo": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", - "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", - "dependencies": { - "@types/geojson": "*" - } - }, - "node_modules/@types/d3-hierarchy": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", - "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==" - }, - "node_modules/@types/d3-interpolate": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", - "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", - "dependencies": { - "@types/d3-color": "*" - } - }, - "node_modules/@types/d3-path": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.1.tgz", - "integrity": "sha512-VMZBYyQvbGmWyWVea0EHs/BwLgxc+MKi1zLDCONksozI4YJMcTt8ZEuIR4Sb1MMTE8MMW49v0IwI5+b7RmfWlg==" - }, - "node_modules/@types/d3-polygon": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", - "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==" - }, - "node_modules/@types/d3-quadtree": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", - "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==" - }, - "node_modules/@types/d3-random": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", - "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==" - }, - "node_modules/@types/d3-scale": { - "version": "4.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.9.tgz", - "integrity": "sha512-dLmtwB8zkAeO/juAMfnV+sItKjlsw2lKdZVVy6LRr0cBmegxSABiLEpGVmSJJ8O08i4+sGR6qQtb6WtuwJdvVw==", - "dependencies": { - "@types/d3-time": "*" - } - }, - "node_modules/@types/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-iWMJgwkK7yTRmWqRB5plb1kadXyQ5Sj8V/zYlFGMUBbIPKQScw+Dku9cAAMgJG+z5GYDoMjWGLVOvjghDEFnKQ==" - }, - "node_modules/@types/d3-selection": { - "version": "3.0.11", - "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.11.tgz", - "integrity": "sha512-bhAXu23DJWsrI45xafYpkQ4NtcKMwWnAC/vKrd2l+nxMFuvOT3XMYTIj2opv8vq8AO5Yh7Qac/nSeP/3zjTK0w==" - }, - "node_modules/@types/d3-shape": { - "version": "3.1.7", - "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.7.tgz", - "integrity": "sha512-VLvUQ33C+3J+8p+Daf+nYSOsjB4GXp19/S/aGo60m9h1v6XaxjiT82lKVWJCfzhtuZ3yD7i/TPeC/fuKLLOSmg==", - "dependencies": { - "@types/d3-path": "*" - } - }, - "node_modules/@types/d3-time": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.4.tgz", - "integrity": "sha512-yuzZug1nkAAaBlBBikKZTgzCeA+k1uy4ZFwWANOfKw5z5LRhV0gNA7gNkKm7HoK+HRN0wX3EkxGk0fpbWhmB7g==" - }, - "node_modules/@types/d3-time-format": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", - "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==" - }, - "node_modules/@types/d3-timer": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", - "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==" - }, - "node_modules/@types/d3-transition": { - "version": "3.0.9", - "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.9.tgz", - "integrity": "sha512-uZS5shfxzO3rGlu0cC3bjmMFKsXv+SmZZcgp0KD22ts4uGXp5EVYGzu/0YdwZeKmddhcAccYtREJKkPfXkZuCg==", - "dependencies": { - "@types/d3-selection": "*" - } - }, - "node_modules/@types/d3-zoom": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", - "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "node_modules/@types/acorn": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz", + "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==", "dependencies": { - "@types/d3-interpolate": "*", - "@types/d3-selection": "*" + "@types/estree": "*" } }, "node_modules/@types/debug": { @@ -3036,6 +3420,26 @@ "@types/ms": "*" } }, + "node_modules/@types/eslint": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-9.6.1.tgz", + "integrity": "sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==", + "peer": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.7", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", + "peer": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, "node_modules/@types/estree": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", @@ -3049,11 +3453,6 @@ "@types/estree": "*" } }, - "node_modules/@types/geojson": { - "version": "7946.0.16", - "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.16.tgz", - "integrity": "sha512-6C8nqWur3j98U6+lXDfTUWIfgvZU+EumvpHKcYjujKH7woYyLj2sUmff0tRhrqM7BohUw7Pz3ZB1jj2gW9Fvmg==" - }, "node_modules/@types/hast": { "version": "3.0.4", "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", @@ -3062,17 +3461,18 @@ "@types/unist": "*" } }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "peer": true + }, "node_modules/@types/json5": { "version": "0.0.29", "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", "dev": true }, - "node_modules/@types/katex": { - "version": "0.16.7", - "resolved": "https://registry.npmjs.org/@types/katex/-/katex-0.16.7.tgz", - "integrity": "sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==" - }, "node_modules/@types/mdast": { "version": "4.0.4", "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", @@ -3091,19 +3491,10 @@ "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" }, - "node_modules/@types/nlcst": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/nlcst/-/nlcst-2.0.3.tgz", - "integrity": "sha512-vSYNSDe6Ix3q+6Z7ri9lyWqgGhJTmzRjZRqyq15N0Z/1/UnVsno9G/N40NBijoYx2seFDIl0+B2mgAb9mezUCA==", - "dependencies": { - "@types/unist": "*" - } - }, "node_modules/@types/node": { "version": "22.14.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-22.14.1.tgz", "integrity": "sha512-u0HuPQwe/dHrItgHHpmw3N2fYCR6x4ivMNbPHRkBVP4CvN+kiRrKHWk3i8tXiO/joPwXLMYvF9TTF0eqgHIuOw==", - "dev": true, "dependencies": { "undici-types": "~6.21.0" } @@ -3126,12 +3517,6 @@ "@types/react": "^19.0.0" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.7.tgz", - "integrity": "sha512-ScaPdn1dQczgbl0QFTeTOmVHFULt394XJgOQNoyVhZ6r2vLnMLJfBPd53SB52T/3G36VI1/g2MZaX0cwDuXsfw==", - "optional": true - }, "node_modules/@types/unist": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", @@ -3373,17 +3758,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@typescript/vfs": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@typescript/vfs/-/vfs-1.6.1.tgz", - "integrity": "sha512-JwoxboBh7Oz1v38tPbkrZ62ZXNHAk9bJ7c9x0eI5zBfBnBYGhURdbnh7Z4smN/MV48Y5OCcZb58n972UtbazsA==", - "dependencies": { - "debug": "^4.1.1" - }, - "peerDependencies": { - "typescript": "*" - } - }, "node_modules/@ungap/structured-clone": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", @@ -3600,14 +3974,164 @@ "win32" ] }, - "node_modules/@xmldom/xmldom": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", - "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", - "engines": { - "node": ">=14.6" + "node_modules/@webassemblyjs/ast": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.14.1.tgz", + "integrity": "sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.13.2.tgz", + "integrity": "sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.13.2.tgz", + "integrity": "sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.14.1.tgz", + "integrity": "sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.13.2.tgz", + "integrity": "sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==", + "peer": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.13.2", + "@webassemblyjs/helper-api-error": "1.13.2", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.13.2.tgz", + "integrity": "sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==", + "peer": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.14.1.tgz", + "integrity": "sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/wasm-gen": "1.14.1" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.13.2.tgz", + "integrity": "sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==", + "peer": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.13.2.tgz", + "integrity": "sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==", + "peer": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.13.2.tgz", + "integrity": "sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==", + "peer": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.14.1.tgz", + "integrity": "sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/helper-wasm-section": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-opt": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1", + "@webassemblyjs/wast-printer": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.14.1.tgz", + "integrity": "sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.14.1.tgz", + "integrity": "sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-buffer": "1.14.1", + "@webassemblyjs/wasm-gen": "1.14.1", + "@webassemblyjs/wasm-parser": "1.14.1" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.14.1.tgz", + "integrity": "sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@webassemblyjs/helper-api-error": "1.13.2", + "@webassemblyjs/helper-wasm-bytecode": "1.13.2", + "@webassemblyjs/ieee754": "1.13.2", + "@webassemblyjs/leb128": "1.13.2", + "@webassemblyjs/utf8": "1.13.2" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.14.1", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.14.1.tgz", + "integrity": "sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==", + "peer": true, + "dependencies": { + "@webassemblyjs/ast": "1.14.1", + "@xtuc/long": "4.2.2" } }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "peer": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "peer": true + }, "node_modules/acorn": { "version": "8.14.1", "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", @@ -3643,344 +4167,142 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/arg": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.2.tgz", - "integrity": "sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==" - }, - "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 - }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/aria-query": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", - "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", - "dev": true, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/array-buffer-byte-length": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", - "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", - "dev": true, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "peer": true, "dependencies": { - "call-bound": "^1.0.3", - "is-array-buffer": "^3.0.5" + "ajv": "^8.0.0" }, - "engines": { - "node": ">= 0.4" + "peerDependencies": { + "ajv": "^8.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependenciesMeta": { + "ajv": { + "optional": true + } } }, - "node_modules/array-includes": { - "version": "3.1.8", - "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", - "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", - "dev": true, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-object-atoms": "^1.0.0", - "get-intrinsic": "^1.2.4", - "is-string": "^1.0.7" - }, - "engines": { - "node": ">= 0.4" + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array-iterate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/array-iterate/-/array-iterate-2.0.1.tgz", - "integrity": "sha512-I1jXZMjAgCMmxT4qxXfPXa6SthSoE8h6gkSI9BGGNv8mP8G/v0blc+qFnZu6K42vTOiuME596QaLO0TP3Lk0xg==", "funding": { "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/array.prototype.findlast": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", - "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.2", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.findlastindex": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", - "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.8", - "call-bound": "^1.0.4", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.9", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.1.1", - "es-shim-unscopables": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flat": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", - "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.flatmap": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", - "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/array.prototype.tosorted": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", - "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.7", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.3", - "es-errors": "^1.3.0", - "es-shim-unscopables": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/arraybuffer.prototype.slice": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", - "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", - "dev": true, - "dependencies": { - "array-buffer-byte-length": "^1.0.1", - "call-bind": "^1.0.8", - "define-properties": "^1.2.1", - "es-abstract": "^1.23.5", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.6", - "is-array-buffer": "^3.0.4" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/ast-types-flow": { - "version": "0.0.8", - "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", - "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", - "dev": true - }, - "node_modules/astring": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", - "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", - "bin": { - "astring": "bin/astring" + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/async-function": { + "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", - "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "dev": true, "engines": { - "node": ">= 0.4" + "node": ">=8" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", - "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "possible-typed-array-names": "^1.0.0" + "color-convert": "^2.0.1" }, "engines": { - "node": ">= 0.4" + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/axe-core": { - "version": "4.10.3", - "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", - "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", - "dev": true, + "node_modules/archive-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/archive-type/-/archive-type-4.0.0.tgz", + "integrity": "sha512-zV4Ky0v1F8dBrdYElwTvQhweQ0P7Kwc1aluqJsYtOBP01jXcWCyW2IEfI1YiqsG+Iy7ZR+o5LF1N+PGECBxHWA==", + "dependencies": { + "file-type": "^4.2.0" + }, "engines": { "node": ">=4" } }, - "node_modules/axobject-query": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", - "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", - "dev": true, + "node_modules/archive-type/node_modules/file-type": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-4.4.0.tgz", + "integrity": "sha512-f2UbFQEk7LXgWpi5ntcO86OeA/cC80fuDDDaX/fZ2ZGel+AF7leRQqBBW1eJNiiQkrZlAoM6P+VYP5P6bOlDEQ==", "engines": { - "node": ">= 0.4" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">=4" } }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "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 }, - "node_modules/better-react-mathjax": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/better-react-mathjax/-/better-react-mathjax-2.3.0.tgz", - "integrity": "sha512-K0ceQC+jQmB+NLDogO5HCpqmYf18AU2FxDbLdduYgkHYWZApFggkHE4dIaXCV1NqeoscESYXXo1GSkY6fA295w==", + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", "dependencies": { - "mathjax-full": "^3.2.2" + "tslib": "^2.0.0" }, - "peerDependencies": { - "react": ">=16.8" + "engines": { + "node": ">=10" } }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "node_modules/aria-query": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.2.tgz", + "integrity": "sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==", "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dependencies": { - "fill-range": "^7.1.1" - }, "engines": { - "node": ">=8" + "node": ">= 0.4" } }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "node_modules/array-buffer-byte-length": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.2.tgz", + "integrity": "sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==", + "dev": true, "dependencies": { - "streamsearch": "^1.1.0" + "call-bound": "^1.0.3", + "is-array-buffer": "^3.0.5" }, "engines": { - "node": ">=10.16.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bind": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", - "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.0", - "es-define-property": "^1.0.0", + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", "get-intrinsic": "^1.2.4", - "set-function-length": "^1.2.2" + "is-string": "^1.0.7" }, "engines": { "node": ">= 0.4" @@ -3989,27 +4311,39 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", - "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", "dev": true, "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", "es-errors": "^1.3.0", - "function-bind": "^1.1.2" + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" }, "engines": { "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/call-bound": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", - "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "node_modules/array.prototype.findlastindex": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.6.tgz", + "integrity": "sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==", "dev": true, "dependencies": { - "call-bind-apply-helpers": "^1.0.2", - "get-intrinsic": "^1.3.0" + "call-bind": "^1.0.8", + "call-bound": "^1.0.4", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.9", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "es-shim-unscopables": "^1.1.0" }, "engines": { "node": ">= 0.4" @@ -4018,758 +4352,660 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001715", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001715.tgz", - "integrity": "sha512-7ptkFGMm2OAOgvZpwgA4yjQ5SQbrNVGdRjzH0pBdy1Fasvcr+KAeECmbCAECzTuDuoX0FCY8KzUxjf9+9kfZEw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/array.prototype.flat": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.3.tgz", + "integrity": "sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">=10" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/chevrotain": { - "version": "11.0.3", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-11.0.3.tgz", - "integrity": "sha512-ci2iJH6LeIkvP9eJW6gpueU8cnZhv85ELY8w8WiFtNjMHA5ad6pQLaJo9mEly/9qUyCpvqX8/POVUTf18/HFdw==", - "dependencies": { - "@chevrotain/cst-dts-gen": "11.0.3", - "@chevrotain/gast": "11.0.3", - "@chevrotain/regexp-to-ast": "11.0.3", - "@chevrotain/types": "11.0.3", - "@chevrotain/utils": "11.0.3", - "lodash-es": "4.17.21" - } - }, - "node_modules/chevrotain-allstar": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/chevrotain-allstar/-/chevrotain-allstar-0.3.1.tgz", - "integrity": "sha512-b7g+y9A0v4mxCW1qUhf3BSVPg+/NvGErk/dOkrDaHA0nQIQGAtrOjlX//9OQtRlSCy+x9rfB5N8yC71lH1nvMw==", - "dependencies": { - "lodash-es": "^4.17.21" - }, - "peerDependencies": { - "chevrotain": "^11.0.0" - } - }, - "node_modules/chokidar": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", - "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.3.tgz", + "integrity": "sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==", + "dev": true, "dependencies": { - "readdirp": "^4.0.1" + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-shim-unscopables": "^1.0.2" }, "engines": { - "node": ">= 14.16.0" + "node": ">= 0.4" }, "funding": { - "url": "https://paulmillr.com/funding/" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, "dependencies": { - "clsx": "^2.1.1" + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" }, - "funding": { - "url": "https://polar.sh/cva" + "engines": { + "node": ">= 0.4" } }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" - }, - "node_modules/clipboardy": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/clipboardy/-/clipboardy-4.0.0.tgz", - "integrity": "sha512-5mOlNS0mhX0707P2I0aZ2V/cmHUEO/fL7VFLqszkhUsxt7RwnmrInf/eEQKlf5GzvYeHIjT+Ov1HRfNmymlG0w==", + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.4.tgz", + "integrity": "sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==", + "dev": true, "dependencies": { - "execa": "^8.0.1", - "is-wsl": "^3.1.0", - "is64bit": "^2.0.0" + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.8", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "is-array-buffer": "^3.0.4" }, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true }, - "node_modules/collapse-white-space": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", - "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "bin": { + "astring": "bin/astring" } }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "optional": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, + "node_modules/async-function": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/async-function/-/async-function-1.0.0.tgz", + "integrity": "sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==", + "dev": true, "engines": { - "node": ">=12.5.0" + "node": ">= 0.4" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "devOptional": true, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, "dependencies": { - "color-name": "~1.1.4" + "possible-typed-array-names": "^1.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "devOptional": true + "node_modules/axe-core": { + "version": "4.10.3", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.3.tgz", + "integrity": "sha512-Xm7bpRXnDSX2YE2YFfBk2FnF0ep6tmG7xPh8iHee8MIcrgq762Nkce856dYtJYLkuIoYZvGfTs/PbZhideTcEg==", + "dev": true, + "engines": { + "node": ">=4" + } }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" } }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/commander": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", - "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", - "engines": { - "node": ">= 12" - } + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true }, - "node_modules/compute-scroll-into-view": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", - "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true + "node_modules/big.js": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", + "engines": { + "node": "*" + } }, - "node_modules/confbox": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.2.2.tgz", - "integrity": "sha512-1NB+BKqhtNipMsov4xI/NnhCKp9XG9NamYp5PVm9klAT0fsrNPjaFICsCFhNhwZJKNh7zB/3q8qXz0E9oaMNtQ==" + "node_modules/bl": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bl/-/bl-1.2.3.tgz", + "integrity": "sha512-pvcNpa0UU69UT341rO6AYy4FVAIkUHuZXRIWbq+zHnsVcRzDDjIAhGuuYoi0d//cwIwtt4pkpKycWEfjdV+vww==", + "dependencies": { + "readable-stream": "^2.3.5", + "safe-buffer": "^5.1.1" + } }, - "node_modules/cose-base": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-1.0.3.tgz", - "integrity": "sha512-s9whTXInMSgAp/NVXVNuVxVKzGH2qck3aQlVHxDCdAEPgtMKwc4Wq6/QKhgdEdgbLSi9rBTAcPoRa6JpiG4ksg==", + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, "dependencies": { - "layout-base": "^1.0.0" + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" } }, - "node_modules/cross-spawn": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", - "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "fill-range": "^7.1.1" }, "engines": { - "node": ">= 8" + "node": ">=8" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "node_modules/browserslist": { + "version": "4.24.5", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.24.5.tgz", + "integrity": "sha512-FDToo4Wo82hIdgc1CQ+NQD0hEhmpPjrZ3hiUgwgOG6IuTdlpr8jdjyG24P6cNP1yJpTLzS5OcGgSw0xmDU1/Tw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "caniuse-lite": "^1.0.30001716", + "electron-to-chromium": "^1.5.149", + "node-releases": "^2.0.19", + "update-browserslist-db": "^1.1.3" + }, "bin": { - "cssesc": "bin/cssesc" + "browserslist": "cli.js" }, "engines": { - "node": ">=4" - } - }, - "node_modules/csstype": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", - "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", - "devOptional": true - }, - "node_modules/cytoscape": { - "version": "3.31.2", - "resolved": "https://registry.npmjs.org/cytoscape/-/cytoscape-3.31.2.tgz", - "integrity": "sha512-/eOXg2uGdMdpGlEes5Sf6zE+jUG+05f3htFNQIxLxduOH/SsaUZiPBfAwP1btVIVzsnhiNOdi+hvDRLYfMZjGw==", - "engines": { - "node": ">=0.10" + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" } }, - "node_modules/cytoscape-cose-bilkent": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/cytoscape-cose-bilkent/-/cytoscape-cose-bilkent-4.1.0.tgz", - "integrity": "sha512-wgQlVIUJF13Quxiv5e1gstZ08rnZj2XaLHGoFMYXz7SkNfCDOOteKBE6SYRfA9WxxI/iBc3ajfDoc6hb/MRAHQ==", + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], "dependencies": { - "cose-base": "^1.0.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" } }, - "node_modules/cytoscape-fcose": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cytoscape-fcose/-/cytoscape-fcose-2.2.0.tgz", - "integrity": "sha512-ki1/VuRIHFCzxWNrsshHYPs6L7TvLu3DL+TyIGEsRcvVERmxokbf5Gdk7mFxZnTdiGtnA4cfSmjZJMviqSuZrQ==", + "node_modules/buffer-alloc": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/buffer-alloc/-/buffer-alloc-1.2.0.tgz", + "integrity": "sha512-CFsHQgjtW1UChdXgbyJGtnm+O/uLQeZdtbDo8mfUgYXCHSM1wgrVxXm6bSyrUuErEb+4sYVGCzASBRot7zyrow==", "dependencies": { - "cose-base": "^2.2.0" - }, - "peerDependencies": { - "cytoscape": "^3.2.0" + "buffer-alloc-unsafe": "^1.1.0", + "buffer-fill": "^1.0.0" } }, - "node_modules/cytoscape-fcose/node_modules/cose-base": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/cose-base/-/cose-base-2.2.0.tgz", - "integrity": "sha512-AzlgcsCbUMymkADOJtQm3wO9S3ltPfYOFD5033keQn9NJzIbtnZj+UdBJe7DYml/8TdbtHJW3j58SOnKhWY/5g==", - "dependencies": { - "layout-base": "^2.0.0" - } + "node_modules/buffer-alloc-unsafe": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/buffer-alloc-unsafe/-/buffer-alloc-unsafe-1.1.0.tgz", + "integrity": "sha512-TEM2iMIEQdJ2yjPJoSIsldnleVaAk1oW3DBVUykyOLsEsFmEc9kn+SFFPz+gl54KQNxlDnAwCXosOS9Okx2xAg==" }, - "node_modules/cytoscape-fcose/node_modules/layout-base": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-2.0.1.tgz", - "integrity": "sha512-dp3s92+uNI1hWIpPGH3jK2kxE2lMjdXdr+DH8ynZHpd6PUlH6x6cbuXnoMmiNumznqaNO31xu9e79F0uuZ0JFg==" - }, - "node_modules/d3": { - "version": "7.9.0", - "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", - "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", - "dependencies": { - "d3-array": "3", - "d3-axis": "3", - "d3-brush": "3", - "d3-chord": "3", - "d3-color": "3", - "d3-contour": "4", - "d3-delaunay": "6", - "d3-dispatch": "3", - "d3-drag": "3", - "d3-dsv": "3", - "d3-ease": "3", - "d3-fetch": "3", - "d3-force": "3", - "d3-format": "3", - "d3-geo": "3", - "d3-hierarchy": "3", - "d3-interpolate": "3", - "d3-path": "3", - "d3-polygon": "3", - "d3-quadtree": "3", - "d3-random": "3", - "d3-scale": "4", - "d3-scale-chromatic": "3", - "d3-selection": "3", - "d3-shape": "3", - "d3-time": "3", - "d3-time-format": "4", - "d3-timer": "3", - "d3-transition": "3", - "d3-zoom": "3" - }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", "engines": { - "node": ">=12" + "node": "*" } }, - "node_modules/d3-array": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", - "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "node_modules/buffer-fill": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-fill/-/buffer-fill-1.0.0.tgz", + "integrity": "sha512-T7zexNBwiiaCOGDg9xNX9PBmjrubblRkENuptryuI64URkXDFum9il/JGL8Lm8wYfAXpredVXXZz7eMHilimiQ==" + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "peer": true + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", "dependencies": { - "internmap": "1 - 2" + "streamsearch": "^1.1.0" }, "engines": { - "node": ">=12" + "node": ">=10.16.0" } }, - "node_modules/d3-axis": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", - "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", - "engines": { - "node": ">=12" + "node_modules/cacheable-request": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-2.1.4.tgz", + "integrity": "sha512-vag0O2LKZ/najSoUwDbVlnlCFvhBE/7mGTY2B5FgCBDcRD+oVV1HYTOwM6JZfMg/hIcM6IwnTZ1uQQL5/X3xIQ==", + "dependencies": { + "clone-response": "1.0.2", + "get-stream": "3.0.0", + "http-cache-semantics": "3.8.1", + "keyv": "3.0.0", + "lowercase-keys": "1.0.0", + "normalize-url": "2.0.1", + "responselike": "1.0.2" } }, - "node_modules/d3-brush": { + "node_modules/cacheable-request/node_modules/get-stream": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", - "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "3", - "d3-transition": "3" - }, + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/d3-chord": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", - "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "node_modules/cacheable-request/node_modules/json-buffer": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz", + "integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==" + }, + "node_modules/cacheable-request/node_modules/keyv": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-3.0.0.tgz", + "integrity": "sha512-eguHnq22OE3uVoSYG0LVWNP+4ppamWr9+zWBe1bsNcovIMy6huUJFPgy4mGwCd/rnl3vOLGW1MTlu4c57CT1xA==", "dependencies": { - "d3-path": "1 - 3" - }, - "engines": { - "node": ">=12" + "json-buffer": "3.0.0" } }, - "node_modules/d3-color": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", - "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "node_modules/cacheable-request/node_modules/lowercase-keys": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.0.tgz", + "integrity": "sha512-RPlX0+PHuvxVDZ7xX+EBVAp4RsVxP/TdDSN2mJYdiq1Lc4Hz7EUSjUI7RZrKKlmrIzVhf6Jo2stj7++gVarS0A==", "engines": { - "node": ">=12" + "node": ">=0.10.0" } }, - "node_modules/d3-contour": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", - "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "node_modules/call-bind": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", + "integrity": "sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==", + "dev": true, "dependencies": { - "d3-array": "^3.2.0" + "call-bind-apply-helpers": "^1.0.0", + "es-define-property": "^1.0.0", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.2" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-delaunay": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", - "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", - "dependencies": { - "delaunator": "5" + "node": ">= 0.4" }, - "engines": { - "node": ">=12" - } - }, - "node_modules/d3-dispatch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", - "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", - "engines": { - "node": ">=12" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-drag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", - "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "dev": true, "dependencies": { - "d3-dispatch": "1 - 3", - "d3-selection": "3" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" }, "engines": { - "node": ">=12" + "node": ">= 0.4" } }, - "node_modules/d3-dsv": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", - "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "dev": true, "dependencies": { - "commander": "7", - "iconv-lite": "0.6", - "rw": "1" - }, - "bin": { - "csv2json": "bin/dsv2json.js", - "csv2tsv": "bin/dsv2dsv.js", - "dsv2dsv": "bin/dsv2dsv.js", - "dsv2json": "bin/dsv2json.js", - "json2csv": "bin/json2dsv.js", - "json2dsv": "bin/json2dsv.js", - "json2tsv": "bin/json2dsv.js", - "tsv2csv": "bin/dsv2dsv.js", - "tsv2json": "bin/dsv2json.js" + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" }, "engines": { - "node": ">=12" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/d3-dsv/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, "engines": { - "node": ">= 10" + "node": ">=6" } }, - "node_modules/d3-ease": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", - "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", - "engines": { - "node": ">=12" + "node_modules/caniuse-lite": { + "version": "1.0.30001717", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", + "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-fetch": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", - "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, "dependencies": { - "d3-dsv": "1 - 3" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=12" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/d3-force": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", - "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-quadtree": "1 - 3", - "d3-timer": "1 - 3" - }, - "engines": { - "node": ">=12" + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-format": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", - "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", - "engines": { - "node": ">=12" + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-geo": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", - "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", - "dependencies": { - "d3-array": "2.5.0 - 3" - }, - "engines": { - "node": ">=12" + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-hierarchy": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", - "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", - "engines": { - "node": ">=12" + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-interpolate": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", - "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", "dependencies": { - "d3-color": "1 - 3" + "readdirp": "^4.0.1" }, "engines": { - "node": ">=12" - } - }, - "node_modules/d3-path": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", - "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", - "engines": { - "node": ">=12" + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" } }, - "node_modules/d3-polygon": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", - "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "node_modules/chrome-trace-event": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.4.tgz", + "integrity": "sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==", + "peer": true, "engines": { - "node": ">=12" + "node": ">=6.0" } }, - "node_modules/d3-quadtree": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", - "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", - "engines": { - "node": ">=12" + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" } }, - "node_modules/d3-random": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", - "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", - "engines": { - "node": ">=12" - } + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==" }, - "node_modules/d3-sankey": { - "version": "0.12.3", - "resolved": "https://registry.npmjs.org/d3-sankey/-/d3-sankey-0.12.3.tgz", - "integrity": "sha512-nQhsBRmM19Ax5xEIPLMY9ZmJ/cDvd1BG3UVvt5h3WRxKg5zGRbvnteTyWAbzeSvlh3tW7ZEmq4VwR5mB3tutmQ==", + "node_modules/clone-response": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.2.tgz", + "integrity": "sha512-yjLXh88P599UOyPTFX0POsd7WxnbsVsGohcwzHOLspIhhpalPw1BcqED8NblyZLKcGrL8dTgMlcaZxV2jAD41Q==", "dependencies": { - "d3-array": "1 - 2", - "d3-shape": "^1.2.0" + "mimic-response": "^1.0.0" } }, - "node_modules/d3-sankey/node_modules/d3-array": { - "version": "2.12.1", - "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-2.12.1.tgz", - "integrity": "sha512-B0ErZK/66mHtEsR1TkPEEkwdy+WDesimkM5gpZr5Dsg54BiTA5RXtYW5qTLIAcekaS9xfZrzBLF/OAkB3Qn1YQ==", - "dependencies": { - "internmap": "^1.0.0" + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" } }, - "node_modules/d3-sankey/node_modules/d3-path": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", - "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==" - }, - "node_modules/d3-sankey/node_modules/d3-shape": { - "version": "1.3.7", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", - "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", - "dependencies": { - "d3-path": "1" + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-sankey/node_modules/internmap": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-1.0.1.tgz", - "integrity": "sha512-lDB5YccMydFBtasVtxnZ3MRBHuaoE8GKsppq+EchKL2U4nK/DmEpPHNH8MZe5HkMtpSiTSOZwfN0tzYjO/lJEw==" - }, - "node_modules/d3-scale": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", - "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, "dependencies": { - "d3-array": "2.10.0 - 3", - "d3-format": "1 - 3", - "d3-interpolate": "1.2.0 - 3", - "d3-time": "2.1.1 - 3", - "d3-time-format": "2 - 4" + "color-convert": "^2.0.1", + "color-string": "^1.9.0" }, "engines": { - "node": ">=12" + "node": ">=12.5.0" } }, - "node_modules/d3-scale-chromatic": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", - "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "devOptional": true, "dependencies": { - "d3-color": "1 - 3", - "d3-interpolate": "1 - 3" + "color-name": "~1.1.4" }, "engines": { - "node": ">=12" + "node": ">=7.0.0" } }, - "node_modules/d3-selection": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", - "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", - "engines": { - "node": ">=12" - } + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "devOptional": true }, - "node_modules/d3-shape": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", - "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, "dependencies": { - "d3-path": "^3.1.0" - }, - "engines": { - "node": ">=12" + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" } }, - "node_modules/d3-time": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", - "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", - "dependencies": { - "d3-array": "2 - 3" - }, - "engines": { - "node": ">=12" + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/d3-time-format": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", - "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", "dependencies": { - "d3-time": "1 - 3" + "safe-buffer": "5.2.1" }, "engines": { - "node": ">=12" + "node": ">= 0.6" } }, - "node_modules/d3-timer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", - "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", - "engines": { - "node": ">=12" - } + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" }, - "node_modules/d3-transition": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", - "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", "dependencies": { - "d3-color": "1 - 3", - "d3-dispatch": "1 - 3", - "d3-ease": "1 - 3", - "d3-interpolate": "1 - 3", - "d3-timer": "1 - 3" + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" }, "engines": { - "node": ">=12" - }, - "peerDependencies": { - "d3-selection": "2 - 3" + "node": ">= 8" } }, - "node_modules/d3-zoom": { + "node_modules/cssesc": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", - "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", - "dependencies": { - "d3-dispatch": "1 - 3", - "d3-drag": "2 - 3", - "d3-interpolate": "1 - 3", - "d3-selection": "2 - 3", - "d3-transition": "2 - 3" + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" }, "engines": { - "node": ">=12" + "node": ">=4" } }, - "node_modules/dagre-d3-es": { - "version": "7.0.11", - "resolved": "https://registry.npmjs.org/dagre-d3-es/-/dagre-d3-es-7.0.11.tgz", - "integrity": "sha512-tvlJLyQf834SylNKax8Wkzco/1ias1OPw8DcUMDE7oUIoSEW25riQVuiu/0OWEFqT0cxHT3Pa9/D82Jr47IONw==", - "dependencies": { - "d3": "^7.9.0", - "lodash-es": "^4.17.21" - } + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==", + "devOptional": true }, "node_modules/damerau-levenshtein": { "version": "1.0.8", @@ -4828,11 +5064,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dayjs": { - "version": "1.11.13", - "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.13.tgz", - "integrity": "sha512-oaMBel6gjolK862uaPQOVTA7q3TZhuSvuMQAAglQDOWYO9A91IrAOUJEyKVlqJlHE0vq5p5UXxzdPfMH/x6xNg==" - }, "node_modules/debug": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", @@ -4861,6 +5092,177 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/decode-uri-component": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.2.tgz", + "integrity": "sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/decompress": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/decompress/-/decompress-4.2.1.tgz", + "integrity": "sha512-e48kc2IjU+2Zw8cTb6VZcJQ3lgVbS4uuB1TfCHbiZIP/haNXm+SVyhu+87jts5/3ROpd82GSVCoNs/z8l4ZOaQ==", + "dependencies": { + "decompress-tar": "^4.0.0", + "decompress-tarbz2": "^4.0.0", + "decompress-targz": "^4.0.0", + "decompress-unzip": "^4.0.1", + "graceful-fs": "^4.1.10", + "make-dir": "^1.0.0", + "pify": "^2.3.0", + "strip-dirs": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-response": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz", + "integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==", + "dependencies": { + "mimic-response": "^1.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tar/-/decompress-tar-4.1.1.tgz", + "integrity": "sha512-JdJMaCrGpB5fESVyxwpCx4Jdj2AagLmv3y58Qy4GE6HMVjWz1FeVQk1Ct4Kye7PftcdOo/7U7UKzYBJgqnGeUQ==", + "dependencies": { + "file-type": "^5.2.0", + "is-stream": "^1.1.0", + "tar-stream": "^1.5.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tar/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-tarbz2/-/decompress-tarbz2-4.1.1.tgz", + "integrity": "sha512-s88xLzf1r81ICXLAVQVzaN6ZmX4A6U4z2nMbOwobxkLoIIfjVMBg7TeguTUXkKeXni795B6y5rnvDw7rxhAq9A==", + "dependencies": { + "decompress-tar": "^4.1.0", + "file-type": "^6.1.0", + "is-stream": "^1.1.0", + "seek-bzip": "^1.0.5", + "unbzip2-stream": "^1.0.9" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-tarbz2/node_modules/file-type": { + "version": "6.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-6.2.0.tgz", + "integrity": "sha512-YPcTBDV+2Tm0VqjybVd32MHdlEGAtuxS3VAYsumFokDSMG+ROT5wawGlnHDoz7bfMcMDt9hxuXvXwoKUx2fkOg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/decompress-targz/-/decompress-targz-4.1.1.tgz", + "integrity": "sha512-4z81Znfr6chWnRDNfFNqLwPvm4db3WuZkqV+UgXQzSngG3CEKdBkw5jrv3axjjL96glyiiKjsxJG3X6WBZwX3w==", + "dependencies": { + "decompress-tar": "^4.1.1", + "file-type": "^5.2.0", + "is-stream": "^1.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-targz/node_modules/file-type": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-5.2.0.tgz", + "integrity": "sha512-Iq1nJ6D2+yIO4c8HHg4fyVb8mAJieo1Oloy1mLLaB2PvezNedhBVm+QU7g0qM42aiMbRXTxKKwGD17rjKNJYVQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/decompress-unzip/-/decompress-unzip-4.0.1.tgz", + "integrity": "sha512-1fqeluvxgnn86MOh66u8FjbtJpAFv5wgCT9Iw8rcBqQcCo5tO8eiJw7NNTrvt9n4CRBVq7CstiS922oPgyGLrw==", + "dependencies": { + "file-type": "^3.8.0", + "get-stream": "^2.2.0", + "pify": "^2.3.0", + "yauzl": "^2.4.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress-unzip/node_modules/file-type": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-3.9.0.tgz", + "integrity": "sha512-RLoqTXE8/vPmMuTI88DAzhMYC99I8BWv7zYP4A1puo5HIjEJ5EX48ighy4ZyKMG9EDXxBgW6e++cn7d1xuFghA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/get-stream": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-2.3.1.tgz", + "integrity": "sha512-AUGhbbemXxrZJRD5cDvKtQxLuYaIbNtDTK8YqupCI393Q2KSTreEsLUN3ZxAWFGiKTzL6nKuzfcIvieflUX9qA==", + "dependencies": { + "object-assign": "^4.0.1", + "pinkie-promise": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress-unzip/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/decompress/node_modules/make-dir": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-1.3.0.tgz", + "integrity": "sha512-2w31R7SJtieJJnQtGc7RVL2StM2vGYVfqUOvUDxH6bC6aJTxPxTF0GnIgCyu7tjockiUWAYQRbxa7vKn34s5sQ==", + "dependencies": { + "pify": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress/node_modules/make-dir/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, + "node_modules/decompress/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", @@ -4901,14 +5303,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/delaunator": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", - "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", - "dependencies": { - "robust-predicates": "^3.0.2" - } - }, "node_modules/dequal": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", @@ -4943,6 +5337,14 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "engines": { + "node": ">=0.3.1" + } + }, "node_modules/doctrine": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", @@ -4955,12 +5357,25 @@ "node": ">=6.0.0" } }, - "node_modules/dompurify": { - "version": "3.2.5", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.2.5.tgz", - "integrity": "sha512-mLPd29uoRe9HpvwP2TxClGQBzGXeEC/we/q+bFlmPPmj2p2Ugl3r6ATu/UU1v77DXNcehiBg9zsr1dREyA/dJQ==", - "optionalDependencies": { - "@types/trusted-types": "^2.0.7" + "node_modules/download": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/download/-/download-8.0.0.tgz", + "integrity": "sha512-ASRY5QhDk7FK+XrQtQyvhpDKanLluEEQtWl/J7Lxuf/b+i8RYh997QeXvL85xitrmRKVlx9c7eTrcRdq2GS4eA==", + "dependencies": { + "archive-type": "^4.0.0", + "content-disposition": "^0.5.2", + "decompress": "^4.2.1", + "ext-name": "^5.0.0", + "file-type": "^11.1.0", + "filenamify": "^3.0.0", + "get-stream": "^4.1.0", + "got": "^8.3.1", + "make-dir": "^2.1.0", + "p-event": "^2.1.0", + "pify": "^4.0.1" + }, + "engines": { + "node": ">=10" } }, "node_modules/dunder-proto": { @@ -4977,6 +5392,17 @@ "node": ">= 0.4" } }, + "node_modules/duplexer3": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz", + "integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.150", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.150.tgz", + "integrity": "sha512-rOOkP2ZUMx1yL4fCxXQKDHQ8ZXwisb2OycOQVKHgvB3ZI4CvehOd4y2tfnnLDieJ3Zs1RL1Dlp3cMkyIn7nnXA==", + "peer": true + }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -4988,11 +5414,26 @@ "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" }, + "node_modules/emojis-list": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, "node_modules/enhanced-resolve": { "version": "5.18.1", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.18.1.tgz", "integrity": "sha512-ZSW3ma5GkcQBIpwZTSRAI8N71Uuwgs93IezB7mf7R60tC8ZbJideoDNKjHn2O9KIlx6rkGTTEk1xUCK2E1Y2Yg==", - "dev": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -5001,17 +5442,6 @@ "node": ">=10.13.0" } }, - "node_modules/entities": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-6.0.0.tgz", - "integrity": "sha512-aKstq2TDOndCn4diEyp9Uq/Flu2i1GlLkc6XIDQSDMuaFE3OPW5OphLCyQ5SpSJZTb4reN+kTcYru5yIfXoRPw==", - "engines": { - "node": ">=0.12" - }, - "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" - } - }, "node_modules/es-abstract": { "version": "1.23.9", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.9.tgz", @@ -5122,6 +5552,12 @@ "node": ">= 0.4" } }, + "node_modules/es-module-lexer": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.7.0.tgz", + "integrity": "sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==", + "peer": true + }, "node_modules/es-object-atoms": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", @@ -5247,11 +5683,19 @@ "@esbuild/win32-x64": "0.25.3" } }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "peer": true, + "engines": { + "node": ">=6" + } + }, "node_modules/escape-string-regexp": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", - "dev": true, "engines": { "node": ">=10" }, @@ -5624,14 +6068,6 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/esm": { - "version": "3.2.25", - "resolved": "https://registry.npmjs.org/esm/-/esm-3.2.25.tgz", - "integrity": "sha512-U1suiZ2oDVWv4zPO56S0NcR5QriEahGtdN2OR6FiOG4WJvcjBVFB0qI4+eKoWFH483PKGuLuu6V8Z4T5g63UVA==", - "engines": { - "node": ">=6" - } - }, "node_modules/espree": { "version": "9.6.1", "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", @@ -5677,7 +6113,6 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", - "dev": true, "dependencies": { "estraverse": "^5.2.0" }, @@ -5689,7 +6124,6 @@ "version": "5.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, "engines": { "node": ">=4.0" } @@ -5798,32 +6232,37 @@ "node": ">=0.10.0" } }, - "node_modules/execa": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-8.0.1.tgz", - "integrity": "sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "peer": true, + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^8.0.1", - "human-signals": "^5.0.0", - "is-stream": "^3.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^5.1.0", - "onetime": "^6.0.0", - "signal-exit": "^4.1.0", - "strip-final-newline": "^3.0.0" + "mime-db": "^1.28.0" }, "engines": { - "node": ">=16.17" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=0.10.0" } }, - "node_modules/exsolve": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/exsolve/-/exsolve-1.0.5.tgz", - "integrity": "sha512-pz5dvkYYKQ1AHVrgOzBKWeP4u4FRb3a6DNK2ucr0OoNwYIU4QWsJ+NM36LLzORT+z845MzKHHhpXiUF5nvQoJg==" + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "dependencies": { + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" + }, + "engines": { + "node": ">=4" + } }, "node_modules/extend": { "version": "3.0.2", @@ -5844,8 +6283,7 @@ "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-glob": { "version": "3.3.1", @@ -5887,6 +6325,22 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, + "node_modules/fast-uri": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/fast-uri/-/fast-uri-3.0.6.tgz", + "integrity": "sha512-Atfo14OibSv5wAp4VWNsFYE1AchQRTv9cBGWET4pZWHzYshFSS9NQI6I57rdKn9croWVMbYFbLhJ+yJvmZIIHw==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fastify" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fastify" + } + ], + "peer": true + }, "node_modules/fastq": { "version": "1.19.1", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", @@ -5895,16 +6349,12 @@ "reusify": "^1.0.4" } }, - "node_modules/fault": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz", - "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==", + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", "dependencies": { - "format": "^0.2.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "pend": "~1.2.0" } }, "node_modules/file-entry-cache": { @@ -5919,6 +6369,35 @@ "node": "^10.12.0 || >=12.0.0" } }, + "node_modules/file-type": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-11.1.0.tgz", + "integrity": "sha512-rM0UO7Qm9K7TWTtA6AShI/t7H5BPjDeGVDaNyg9BjHAj3PysKy7+8C8D137R88jnR3rFJZQB/tFgydl5sN5m7g==", + "engines": { + "node": ">=6" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-3.0.0.tgz", + "integrity": "sha512-5EFZ//MsvJgXjBAFJ+Bh2YaCTRF/VP1YOmGrgt+KJ4SFRLjI87EIdwLLuT6wQX0I4F9W41xutobzczjsOKlI/g==", + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.0", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=6" + } + }, "node_modules/fill-range": { "version": "7.1.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", @@ -5981,14 +6460,20 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/format": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz", - "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==", - "engines": { - "node": ">=0.4.x" + "node_modules/from2": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", + "dependencies": { + "inherits": "^2.0.1", + "readable-stream": "^2.0.0" } }, + "node_modules/fs-constants": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs-constants/-/fs-constants-1.0.0.tgz", + "integrity": "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==" + }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -6226,14 +6711,14 @@ } }, "node_modules/get-stream": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-8.0.1.tgz", - "integrity": "sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==", - "engines": { - "node": ">=16" + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", + "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", + "dependencies": { + "pump": "^3.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=6" } }, "node_modules/get-symbol-description": { @@ -6271,21 +6756,20 @@ "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" }, "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "deprecated": "Glob versions prior to v9 are no longer supported", "dev": true, "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "minimatch": "^5.0.1", + "once": "^1.3.0" }, "engines": { - "node": "*" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -6303,6 +6787,33 @@ "node": ">=10.13.0" } }, + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "peer": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, "node_modules/globals": { "version": "13.24.0", "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", @@ -6346,11 +6857,53 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/got": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/got/-/got-8.3.2.tgz", + "integrity": "sha512-qjUJ5U/hawxosMryILofZCkm3C84PLJS/0grRIpjAwu+Lkxxj5cxeCU25BG0/3mDSpXKTyZr8oh8wIgLaH0QCw==", + "dependencies": { + "@sindresorhus/is": "^0.7.0", + "cacheable-request": "^2.1.1", + "decompress-response": "^3.3.0", + "duplexer3": "^0.1.4", + "get-stream": "^3.0.0", + "into-stream": "^3.1.0", + "is-retry-allowed": "^1.1.0", + "isurl": "^1.0.0-alpha5", + "lowercase-keys": "^1.0.0", + "mimic-response": "^1.0.0", + "p-cancelable": "^0.4.0", + "p-timeout": "^2.0.1", + "pify": "^3.0.0", + "safe-buffer": "^5.1.1", + "timed-out": "^4.0.1", + "url-parse-lax": "^3.0.0", + "url-to-options": "^1.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/got/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "engines": { + "node": ">=4" + } + }, "node_modules/graceful-fs": { "version": "4.2.11", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", @@ -6392,11 +6945,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/hachure-fill": { - "version": "0.5.2", - "resolved": "https://registry.npmjs.org/hachure-fill/-/hachure-fill-0.5.2.tgz", - "integrity": "sha512-3GKBOn+m2LX9iq+JC1064cSFprJY4jL1jCXTcpnfER5HYE2l/4EfWSGzkPa/ZDBmYI0ZOEj5VHV/eKnPGkHuOg==" - }, "node_modules/has-bigints": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.1.0.tgz", @@ -6413,7 +6961,6 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true, "engines": { "node": ">=8" } @@ -6445,6 +6992,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-symbol-support-x": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/has-symbol-support-x/-/has-symbol-support-x-1.4.2.tgz", + "integrity": "sha512-3ToOva++HaW+eCpgqZrCfN51IPB+7bJNVT6CUATzueB5Heb8o6Nam0V3HG5dlDvZU1Gn5QLcbahiKw/XVk5JJw==", + "engines": { + "node": "*" + } + }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -6457,6 +7012,17 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/has-to-string-tag-x": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/has-to-string-tag-x/-/has-to-string-tag-x-1.4.1.tgz", + "integrity": "sha512-vdbKfmw+3LoOYVr+mtxHaX5a96+0f3DljYd8JOqvOLsf5mw2Otda2qCDT9qRqLAhrjyQ0h7ual5nOiASpsGNFw==", + "dependencies": { + "has-symbol-support-x": "^1.4.1" + }, + "engines": { + "node": "*" + } + }, "node_modules/has-tostringtag": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", @@ -6484,119 +7050,6 @@ "node": ">= 0.4" } }, - "node_modules/hast-util-from-dom": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/hast-util-from-dom/-/hast-util-from-dom-5.0.1.tgz", - "integrity": "sha512-N+LqofjR2zuzTjCPzyDUdSshy4Ma6li7p/c3pA78uTwzFgENbgbUrm2ugwsOdcjI1muO+o6Dgzp9p8WHtn/39Q==", - "dependencies": { - "@types/hast": "^3.0.0", - "hastscript": "^9.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-html": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-html/-/hast-util-from-html-2.0.3.tgz", - "integrity": "sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==", - "dependencies": { - "@types/hast": "^3.0.0", - "devlop": "^1.1.0", - "hast-util-from-parse5": "^8.0.0", - "parse5": "^7.0.0", - "vfile": "^6.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-html-isomorphic": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/hast-util-from-html-isomorphic/-/hast-util-from-html-isomorphic-2.0.0.tgz", - "integrity": "sha512-zJfpXq44yff2hmE0XmwEOzdWin5xwH+QIhMLOScpX91e/NSGPsAzNCvLQDIEPyO2TXi+lBmU6hjLIhV8MwP2kw==", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-dom": "^5.0.0", - "hast-util-from-html": "^2.0.0", - "unist-util-remove-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-from-parse5": { - "version": "8.0.3", - "resolved": "https://registry.npmjs.org/hast-util-from-parse5/-/hast-util-from-parse5-8.0.3.tgz", - "integrity": "sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "hastscript": "^9.0.0", - "property-information": "^7.0.0", - "vfile": "^6.0.0", - "vfile-location": "^5.0.0", - "web-namespaces": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-is-element": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", - "integrity": "sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-parse-selector": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/hast-util-parse-selector/-/hast-util-parse-selector-4.0.0.tgz", - "integrity": "sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-raw": { - "version": "9.1.0", - "resolved": "https://registry.npmjs.org/hast-util-raw/-/hast-util-raw-9.1.0.tgz", - "integrity": "sha512-Y8/SBAHkZGoNkpzqqfCldijcuUKh7/su31kEBp67cFY09Wy0mTRgtsLYsiIxMJxlu0f6AA5SUTbDR8K0rxnbUw==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "@ungap/structured-clone": "^1.0.0", - "hast-util-from-parse5": "^8.0.0", - "hast-util-to-parse5": "^8.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "parse5": "^7.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-to-estree": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", @@ -6672,33 +7125,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-parse5": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/hast-util-to-parse5/-/hast-util-to-parse5-8.0.0.tgz", - "integrity": "sha512-3KKrV5ZVI8if87DVSi1vDeByYrkGzg4mEfeu4alwgmmIeARiBLKCZS2uw5Gb6nU9x9Yufyj3iudm6i7nl52PFw==", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "property-information": "^6.0.0", - "space-separated-tokens": "^2.0.0", - "web-namespaces": "^2.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-parse5/node_modules/property-information": { - "version": "6.5.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-6.5.0.tgz", - "integrity": "sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, "node_modules/hast-util-to-string": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", @@ -6711,21 +7137,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hast-util-to-text": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", - "integrity": "sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "hast-util-is-element": "^3.0.0", - "unist-util-find-after": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/hast-util-whitespace": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", @@ -6738,22 +7149,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/hastscript": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.1.tgz", - "integrity": "sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==", - "dependencies": { - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-parse-selector": "^4.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/html-void-elements": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", @@ -6763,24 +7158,29 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/human-signals": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-5.0.0.tgz", - "integrity": "sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==", - "engines": { - "node": ">=16.17.0" - } + "node_modules/http-cache-semantics": { + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-3.8.1.tgz", + "integrity": "sha512-5ai2iksyV8ZXmnZhHH4rWPoxxistEexSi5936zIQ1bnNTW5VnA85B6P/VpXiRM017IgRvb2kKo1a//y+0wSp3w==" }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] }, "node_modules/ignore": { "version": "5.3.2", @@ -6841,8 +7241,7 @@ "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inline-style-parser": { "version": "0.2.4", @@ -6863,12 +7262,16 @@ "node": ">= 0.4" } }, - "node_modules/internmap": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", - "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "node_modules/into-stream": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/into-stream/-/into-stream-3.1.0.tgz", + "integrity": "sha512-TcdjPibTksa1NQximqep2r17ISRiNE9fwlfbg3F8ANdvP5/yrFTew86VcO//jk4QTaMlbjypPBq76HN2zaKfZQ==", + "dependencies": { + "from2": "^2.1.1", + "p-is-promise": "^1.1.0" + }, "engines": { - "node": ">=12" + "node": ">=4" } }, "node_modules/is-alphabetical": { @@ -6966,6 +7369,28 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-buffer": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-2.0.5.tgz", + "integrity": "sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "engines": { + "node": ">=4" + } + }, "node_modules/is-bun-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-2.0.0.tgz", @@ -7044,20 +7469,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-docker": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz", - "integrity": "sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-extendable": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", @@ -7127,23 +7538,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/is-inside-container": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-inside-container/-/is-inside-container-1.0.0.tgz", - "integrity": "sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==", - "dependencies": { - "is-docker": "^3.0.0" - }, - "bin": { - "is-inside-container": "cli.js" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/is-map": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", @@ -7156,6 +7550,11 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-natural-number": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/is-natural-number/-/is-natural-number-4.0.1.tgz", + "integrity": "sha512-Y4LTamMe0DDQIIAlaer9eKebAlDSV6huy+TWhJVPlzZh2o4tRP5SQWFlLn5N0To4mDD22/qdOq+veo1cSISLgQ==" + }, "node_modules/is-number": { "version": "7.0.0", "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", @@ -7180,6 +7579,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-object": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-object/-/is-object-1.0.2.tgz", + "integrity": "sha512-2rRIahhZr2UWb45fIOuvZGpFtz0TyOZLf32KxBbSoUCeZR495zCKlWUKKUByk3geS2eAs7ZAABt0Y/Rx0GiQGA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, "node_modules/is-path-inside": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", @@ -7200,6 +7607,14 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/is-reference": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.3.tgz", + "integrity": "sha512-ixkJoqQvAP88E6wLydLGGqCJsrFUnqoH6HnaczB8XmDH1oaWU+xxdptvikTgaEhtZ53Ky6YXiBuUI2WXLMCwjw==", + "dependencies": { + "@types/estree": "^1.0.6" + } + }, "node_modules/is-regex": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.2.1.tgz", @@ -7218,6 +7633,14 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/is-retry-allowed": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-retry-allowed/-/is-retry-allowed-1.2.0.tgz", + "integrity": "sha512-RUbUeKwvm3XG2VYamhJL1xFktgjvPzL0Hq8C+6yrWIswDy3BIXGqCxhxkc30N9jqK311gVU137K8Ei55/zVJRg==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/is-set": { "version": "2.0.3", "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", @@ -7246,14 +7669,11 @@ } }, "node_modules/is-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-3.0.0.tgz", - "integrity": "sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==", + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, "node_modules/is-string": { @@ -7347,34 +7767,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-wsl": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-3.1.0.tgz", - "integrity": "sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==", - "dependencies": { - "is-inside-container": "^1.0.0" - }, - "engines": { - "node": ">=16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is64bit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is64bit/-/is64bit-2.0.0.tgz", - "integrity": "sha512-jv+8jaWCl0g2lSBkNSVXdzfBA0npK1HGC2KtWM9FumFRoGS94g3NbCCLVnCYHLjp4GrW2KZeeSTMo5ddtznmGw==", - "dependencies": { - "system-architecture": "^0.1.0" - }, - "engines": { - "node": ">=18" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/isarray": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", @@ -7386,6 +7778,18 @@ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, + "node_modules/isurl": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isurl/-/isurl-1.0.0.tgz", + "integrity": "sha512-1P/yWsxPlDtn7QeRD+ULKQPaIaN6yF368GZ2vDfv0AL0NwpStafjWCDDdn0k8wgFMWpVAqG7oJhxHnlud42i9w==", + "dependencies": { + "has-to-string-tag-x": "^1.2.0", + "is-object": "^1.0.1" + }, + "engines": { + "node": ">= 4" + } + }, "node_modules/iterator.prototype": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.5.tgz", @@ -7403,6 +7807,35 @@ "node": ">= 0.4" } }, + "node_modules/jest-worker": { + "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", + "peer": true, + "dependencies": { + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": ">= 10.13.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "peer": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, "node_modules/jiti": { "version": "2.4.2", "resolved": "https://registry.npmjs.org/jiti/-/jiti-2.4.2.tgz", @@ -7436,6 +7869,12 @@ "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", "dev": true }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "peer": true + }, "node_modules/json-schema-traverse": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", @@ -7475,21 +7914,6 @@ "node": ">=4.0" } }, - "node_modules/katex": { - "version": "0.16.22", - "resolved": "https://registry.npmjs.org/katex/-/katex-0.16.22.tgz", - "integrity": "sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==", - "funding": [ - "https://opencollective.com/katex", - "https://github.com/sponsors/katex" - ], - "dependencies": { - "commander": "^8.3.0" - }, - "bin": { - "katex": "cli.js" - } - }, "node_modules/keyv": { "version": "4.5.4", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", @@ -7499,11 +7923,6 @@ "json-buffer": "3.0.1" } }, - "node_modules/khroma": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/khroma/-/khroma-2.1.0.tgz", - "integrity": "sha512-Ls993zuzfayK269Svk9hzpeGUKob/sIgZzyHYdjQoAdQetRKpOLj+k/QQQ/6Qi0Yz65mlROrfd+Ev+1+7dz9Kw==" - }, "node_modules/kind-of": { "version": "6.0.3", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", @@ -7512,24 +7931,12 @@ "node": ">=0.10.0" } }, - "node_modules/kolorist": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.8.0.tgz", - "integrity": "sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==" - }, - "node_modules/langium": { - "version": "3.3.1", - "resolved": "https://registry.npmjs.org/langium/-/langium-3.3.1.tgz", - "integrity": "sha512-QJv/h939gDpvT+9SiLVlY7tZC3xB2qK57v0J04Sh9wpMb6MP1q8gB21L3WIo8T5P1MSMg3Ep14L7KkDCFG3y4w==", - "dependencies": { - "chevrotain": "~11.0.3", - "chevrotain-allstar": "~0.3.0", - "vscode-languageserver": "~9.0.1", - "vscode-languageserver-textdocument": "~1.0.11", - "vscode-uri": "~3.0.8" - }, + "node_modules/kleur": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", + "integrity": "sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==", "engines": { - "node": ">=16.0.0" + "node": ">=6" } }, "node_modules/language-subtag-registry": { @@ -7550,11 +7957,6 @@ "node": ">=0.10" } }, - "node_modules/layout-base": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/layout-base/-/layout-base-1.0.2.tgz", - "integrity": "sha512-8h2oVEZNktL4BH2JCOI90iD1yXwL6iNW7KcCKT2QZgQJR2vbqDsldCTPRU9NifTCqHZci57XvQQ15YTu+sTYPg==" - }, "node_modules/levn": { "version": "0.4.1", "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", @@ -7796,20 +8198,37 @@ "url": "https://opencollective.com/parcel" } }, - "node_modules/local-pkg": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/local-pkg/-/local-pkg-1.1.1.tgz", - "integrity": "sha512-WunYko2W1NcdfAFpuLUoucsgULmgDBRkdxHxWQ7mK0cQqwPiy8E1enjuRBrhLtZkB5iScJ1XIPdhVEFK8aOLSg==", + "node_modules/loader-runner": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", + "peer": true, + "engines": { + "node": ">=6.11.5" + } + }, + "node_modules/loader-utils": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { - "mlly": "^1.7.4", - "pkg-types": "^2.0.1", - "quansync": "^0.2.8" + "big.js": "^5.2.2", + "emojis-list": "^3.0.0", + "json5": "^2.1.2" }, "engines": { - "node": ">=14" + "node": ">=8.9.0" + } + }, + "node_modules/loader-utils/node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "bin": { + "json5": "lib/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "engines": { + "node": ">=6" } }, "node_modules/locate-path": { @@ -7827,11 +8246,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/lodash-es": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", - "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" - }, "node_modules/lodash.merge": { "version": "4.6.2", "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", @@ -7858,6 +8272,14 @@ "loose-envify": "cli.js" } }, + "node_modules/lowercase-keys": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz", + "integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/lru-cache": { "version": "11.1.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", @@ -7874,6 +8296,26 @@ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" } }, + "node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "dependencies": { + "pify": "^4.0.1", + "semver": "^5.6.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, "node_modules/markdown-extensions": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", @@ -7894,17 +8336,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/marked": { - "version": "15.0.9", - "resolved": "https://registry.npmjs.org/marked/-/marked-15.0.9.tgz", - "integrity": "sha512-9AW/bn9DxQeZVjR52l5jsc0W2pwuhP04QaQewPvylil12Cfr2GBfWmgp6mu8i9Jy8UlBjqDZ9uMTDuJ8QOGZJA==", - "bin": { - "marked": "bin/marked.js" - }, - "engines": { - "node": ">= 18" - } - }, "node_modules/math-intrinsics": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", @@ -7914,15 +8345,70 @@ "node": ">= 0.4" } }, - "node_modules/mathjax-full": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/mathjax-full/-/mathjax-full-3.2.2.tgz", - "integrity": "sha512-+LfG9Fik+OuI8SLwsiR02IVdjcnRCy5MufYLi0C3TdMT56L/pjB0alMVGgoWJF8pN9Rc7FESycZB9BMNWIid5w==", + "node_modules/mdast-util-definitions": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-definitions/-/mdast-util-definitions-5.1.2.tgz", + "integrity": "sha512-8SVPMuHqlPME/z3gqVwWY4zVXn8lqKv/pAhC57FuJ40ImXyBpmO5ukh98zB2v7Blql2FiHjHv9LVztSIqjY+MA==", + "dependencies": { + "@types/mdast": "^3.0.0", + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/mdast-util-definitions/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", + "dependencies": { + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-definitions/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", "dependencies": { - "esm": "^3.2.25", - "mhchemparser": "^4.1.0", - "mj-context-menu": "^0.6.1", - "speech-rule-engine": "^4.0.6" + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, "node_modules/mdast-util-find-and-replace": { @@ -7974,34 +8460,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-frontmatter": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-2.0.1.tgz", - "integrity": "sha512-LRqI9+wdgC25P0URIJY9vwocIzCcksduHQ9OF2joxQoyTNVduwLAFUzjoopuRJbJAReaKrNQKAZKL3uCMugWJA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "escape-string-regexp": "^5.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-frontmatter/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/mdast-util-gfm": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", @@ -8097,24 +8555,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/mdast-util-math": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-math/-/mdast-util-math-3.0.0.tgz", - "integrity": "sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "longest-streak": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.1.0", - "unist-util-remove-position": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/mdast-util-mdx": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", @@ -8256,7 +8696,8 @@ "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "peer": true }, "node_modules/merge2": { "version": "1.4.1", @@ -8266,38 +8707,6 @@ "node": ">= 8" } }, - "node_modules/mermaid": { - "version": "11.6.0", - "resolved": "https://registry.npmjs.org/mermaid/-/mermaid-11.6.0.tgz", - "integrity": "sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==", - "dependencies": { - "@braintree/sanitize-url": "^7.0.4", - "@iconify/utils": "^2.1.33", - "@mermaid-js/parser": "^0.4.0", - "@types/d3": "^7.4.3", - "cytoscape": "^3.29.3", - "cytoscape-cose-bilkent": "^4.1.0", - "cytoscape-fcose": "^2.2.0", - "d3": "^7.9.0", - "d3-sankey": "^0.12.3", - "dagre-d3-es": "7.0.11", - "dayjs": "^1.11.13", - "dompurify": "^3.2.4", - "katex": "^0.16.9", - "khroma": "^2.1.0", - "lodash-es": "^4.17.21", - "marked": "^15.0.7", - "roughjs": "^4.6.6", - "stylis": "^4.3.6", - "ts-dedent": "^2.2.0", - "uuid": "^11.1.0" - } - }, - "node_modules/mhchemparser": { - "version": "4.2.1", - "resolved": "https://registry.npmjs.org/mhchemparser/-/mhchemparser-4.2.1.tgz", - "integrity": "sha512-kYmyrCirqJf3zZ9t/0wGgRZ4/ZJw//VwaRVGA75C4nhE60vtnIzhl9J9ndkX/h6hxSN7pjg/cE0VxbnNM+bnDQ==" - }, "node_modules/micromark": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", @@ -8365,21 +8774,6 @@ "micromark-util-types": "^2.0.0" } }, - "node_modules/micromark-extension-frontmatter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-2.0.0.tgz", - "integrity": "sha512-C4AkuM3dA58cgZha7zVnuVxBhDsbttIMiytjgsM2XbHAB2faRVaHRle40558FBN+DJcrLNCoqG5mlrpdU4cRtg==", - "dependencies": { - "fault": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-extension-gfm": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", @@ -8494,24 +8888,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/micromark-extension-math": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-math/-/micromark-extension-math-3.1.0.tgz", - "integrity": "sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==", - "dependencies": { - "@types/katex": "^0.16.0", - "devlop": "^1.0.0", - "katex": "^0.16.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/micromark-extension-mdx-expression": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", @@ -9022,18 +9398,44 @@ "picomatch": "^2.3.1" }, "engines": { - "node": ">=8.6" + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "peer": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "node_modules/mimic-fn": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-4.0.0.tgz", - "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", + "node_modules/mime-types/node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "peer": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.6" + } + }, + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "engines": { + "node": ">=4" } }, "node_modules/minimatch": { @@ -9057,35 +9459,12 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mj-context-menu": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/mj-context-menu/-/mj-context-menu-0.6.1.tgz", - "integrity": "sha512-7NO5s6n10TIV96d4g2uDpG7ZDpIhMh0QNfGdJw/W47JswFcosz457wqz/b5sAKvl12sxINGFCn80NZHKwxQEXA==" - }, - "node_modules/mlly": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/mlly/-/mlly-1.7.4.tgz", - "integrity": "sha512-qmdSIPC4bDJXgZTCR7XosJiNKySV7O215tsPtDN9iEO/7q/76b/ijtgRu/+epFXSJhijtTCCGp3DWS549P3xKw==", - "dependencies": { - "acorn": "^8.14.0", - "pathe": "^2.0.1", - "pkg-types": "^1.3.0", - "ufo": "^1.5.4" - } - }, - "node_modules/mlly/node_modules/confbox": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/confbox/-/confbox-0.1.8.tgz", - "integrity": "sha512-RMtmw0iFkeR4YV+fUOSucriAQNb9g8zFR52MWCtl+cCZOFRNL6zeB395vPzFhEjjn4fMxXudmELnl/KF/WrK6w==" - }, - "node_modules/mlly/node_modules/pkg-types": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-1.3.1.tgz", - "integrity": "sha512-/Jm5M4RvtBFVkKWRu2BLUTNP8/M2a+UwuAX+ae4770q1qVGtfjG+WTCupoZixokjmHiry8uI+dlY8KXYV5HVVQ==", - "dependencies": { - "confbox": "^0.1.8", - "mlly": "^1.7.4", - "pathe": "^2.0.1" + "node_modules/mri": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/mri/-/mri-1.2.0.tgz", + "integrity": "sha512-tzzskb3bG8LvYGFF/mDTpq3jpI6Q9wc3LEmBaghu+DdCssd1FakN7Bc0hVNmEyGq1bq3RgfkCb3cmQLpNPOroA==", + "engines": { + "node": ">=4" } }, "node_modules/ms": { @@ -9122,338 +9501,668 @@ "node": "^12.20.0 || ^14.18.0 || >=16.0.0" }, "funding": { - "url": "https://opencollective.com/napi-postinstall" + "url": "https://opencollective.com/napi-postinstall" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", + "peer": true + }, + "node_modules/next": { + "version": "15.3.1", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.1.tgz", + "integrity": "sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==", + "dependencies": { + "@next/env": "15.3.1", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.1", + "@next/swc-darwin-x64": "15.3.1", + "@next/swc-linux-arm64-gnu": "15.3.1", + "@next/swc-linux-arm64-musl": "15.3.1", + "@next/swc-linux-x64-gnu": "15.3.1", + "@next/swc-linux-x64-musl": "15.3.1", + "@next/swc-win32-arm64-msvc": "15.3.1", + "@next/swc-win32-x64-msvc": "15.3.1", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/next/node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/nextra": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/nextra/-/nextra-1.1.0.tgz", + "integrity": "sha512-WxD1c05gs4cyPHWvqOei9ofIQkLjtzQaDQo8+56f5ss7yJ6ZyI7Ohx7nyyjm6yTo1fO8gfj3v1l/AZmLnjh4FA==", + "dependencies": { + "@mdx-js/loader": "^2.0.0-next.9", + "download": "^8.0.0", + "graceful-fs": "^4.2.6", + "gray-matter": "^4.0.3", + "loader-utils": "^2.0.0", + "remark": "^13.0.0", + "remark-gfm": "^1.0.0", + "slash": "^3.0.0", + "strip-markdown": "^4.0.0" + }, + "peerDependencies": { + "react": ">=16.13.1" + } + }, + "node_modules/nextra/node_modules/@types/mdast": { + "version": "3.0.15", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-3.0.15.tgz", + "integrity": "sha512-LnwD+mUEfxWMa1QpDraczIn6k0Ee3SMicuYSSzS6ZYl2gKS09EClnJYGd8Du6rfc5r/GZEk5o1mRb8TaTj03sQ==", + "dependencies": { + "@types/unist": "^2" + } + }, + "node_modules/nextra/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/nextra/node_modules/bail": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/bail/-/bail-1.0.5.tgz", + "integrity": "sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/ccount": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-1.1.0.tgz", + "integrity": "sha512-vlNK021QdI7PNeiUh/lKkC/mNHHfV0m/Ad5JoI0TYtlBnJAslM/JIkm/tGC88bkLIwO6OQ5uV6ztS6kVAtCDlg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/character-entities": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-1.2.4.tgz", + "integrity": "sha512-iBMyeEHxfVnIakwOuDXpVkc54HijNgCyQB2w0VfGQThle6NXn50zU6V/u+LDhxHcDUPojn6Kpga3PTAD8W1bQw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/character-entities-legacy": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-1.1.4.tgz", + "integrity": "sha512-3Xnr+7ZFS1uxeiUDvV02wQ+QDbc55o97tIV5zHScSPJpcLm/r0DFPcoY3tYRp+VZukxuMeKgXYmsXQHO05zQeA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/character-reference-invalid": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-1.1.4.tgz", + "integrity": "sha512-mKKUkUbhPpQlCOfIuZkvSEgktjPFIsZKRRbC6KWVEMvlzblj3i3asQv5ODsrwt0N3pHAEvjP8KTQPHkp0+6jOg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-alphabetical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-1.0.4.tgz", + "integrity": "sha512-DwzsA04LQ10FHTZuL0/grVDk4rFoVH1pjAToYwBrHSxcrBIGQuXrQMtD5U1b0U2XVgKZCTLLP8u2Qxqhy3l2Vg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-alphanumerical": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-1.0.4.tgz", + "integrity": "sha512-UzoZUr+XfVz3t3v4KyGEniVL9BDRoQtY7tOyrRybkVNjDFWyo1yhXNGrrBTQxp3ib9BLAWs7k2YKBQsFRkZG9A==", + "dependencies": { + "is-alphabetical": "^1.0.0", + "is-decimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-decimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-1.0.4.tgz", + "integrity": "sha512-RGdriMmQQvZ2aqaQq3awNA6dCGtKpiDFcOzrTWrDAT2MiWrKQVPmxLGHl7Y2nNu6led0kEyoX0enY0qXYsv9zw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-hexadecimal": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-1.0.4.tgz", + "integrity": "sha512-gyPJuv83bHMpocVYoqof5VDiZveEoGoFL8m3BXNb2VW8Xs+rz9kqO8LOQ5DH6EsuvilT1ApazU0pyl+ytbPtlw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/nextra/node_modules/longest-streak": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-2.0.4.tgz", + "integrity": "sha512-vM6rUVCVUJJt33bnmHiZEvr7wPT78ztX7rojL+LW51bHtLh6HTjx84LA5W4+oa6aKEJA7jJu5LR6vQRBpA5DVg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/markdown-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-2.0.0.tgz", + "integrity": "sha512-Ezda85ToJUBhM6WGaG6veasyym+Tbs3cMAw/ZhOPqXiYsr0jgocBV3j3nx+4lk47plLlIqjwuTm/ywVI+zjJ/A==", + "dependencies": { + "repeat-string": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/mdast-util-find-and-replace": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-1.1.1.tgz", + "integrity": "sha512-9cKl33Y21lyckGzpSmEQnIDjEfeeWelN5s1kUW1LwdB0Fkuq2u+4GdqcGEygYxJE8GVqCl0741bYXHgamfWAZA==", + "dependencies": { + "escape-string-regexp": "^4.0.0", + "unist-util-is": "^4.0.0", + "unist-util-visit-parents": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-from-markdown": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-0.8.5.tgz", + "integrity": "sha512-2hkTXtYYnr+NubD/g6KGBS/0mFmBcifAsI0yIWRiRo0PjVs6SSOSOdtzbp6kSGnShDN6G5aWZpKQ2lWRy27mWQ==", + "dependencies": { + "@types/mdast": "^3.0.0", + "mdast-util-to-string": "^2.0.0", + "micromark": "~2.11.0", + "parse-entities": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-gfm": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-0.1.2.tgz", + "integrity": "sha512-NNkhDx/qYcuOWB7xHUGWZYVXvjPFFd6afg6/e2g+SV4r9q5XUcCbV4Wfa3DLYIiD+xAEZc6K4MGaE/m0KDcPwQ==", + "dependencies": { + "mdast-util-gfm-autolink-literal": "^0.1.0", + "mdast-util-gfm-strikethrough": "^0.2.0", + "mdast-util-gfm-table": "^0.1.0", + "mdast-util-gfm-task-list-item": "^0.1.0", + "mdast-util-to-markdown": "^0.6.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-gfm-autolink-literal": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-0.1.3.tgz", + "integrity": "sha512-GjmLjWrXg1wqMIO9+ZsRik/s7PLwTaeCHVB7vRxUwLntZc8mzmTsLVr6HW1yLokcnhfURsn5zmSVdi3/xWWu1A==", + "dependencies": { + "ccount": "^1.0.0", + "mdast-util-find-and-replace": "^1.1.0", + "micromark": "^2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-gfm-strikethrough": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-0.2.3.tgz", + "integrity": "sha512-5OQLXpt6qdbttcDG/UxYY7Yjj3e8P7X16LzvpX8pIQPYJ/C2Z1qFGMmcw+1PZMUM3Z8wt8NRfYTvCni93mgsgA==", + "dependencies": { + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", - "dev": true - }, - "node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "engines": { - "node": ">= 0.6" + "node_modules/nextra/node_modules/mdast-util-gfm-table": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-0.1.6.tgz", + "integrity": "sha512-j4yDxQ66AJSBwGkbpFEp9uG/LS1tZV3P33fN1gkyRB2LoRL+RR3f76m0HPHaby6F4Z5xr9Fv1URmATlRRUIpRQ==", + "dependencies": { + "markdown-table": "^2.0.0", + "mdast-util-to-markdown": "~0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/next": { - "version": "15.3.1", - "resolved": "https://registry.npmjs.org/next/-/next-15.3.1.tgz", - "integrity": "sha512-8+dDV0xNLOgHlyBxP1GwHGVaNXsmp+2NhZEYrXr24GWLHtt27YrBPbPuHvzlhi7kZNYjeJNR93IF5zfFu5UL0g==", + "node_modules/nextra/node_modules/mdast-util-gfm-task-list-item": { + "version": "0.1.6", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-0.1.6.tgz", + "integrity": "sha512-/d51FFIfPsSmCIRNp7E6pozM9z1GYPIkSy1urQ8s/o4TC22BZ7DqfHFWiqBD23bc7J3vV1Fc9O4QIHBlfuit8A==", "dependencies": { - "@next/env": "15.3.1", - "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.15", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" + "mdast-util-to-markdown": "~0.6.0" }, - "bin": { - "next": "dist/bin/next" - }, - "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.3.1", - "@next/swc-darwin-x64": "15.3.1", - "@next/swc-linux-arm64-gnu": "15.3.1", - "@next/swc-linux-arm64-musl": "15.3.1", - "@next/swc-linux-x64-gnu": "15.3.1", - "@next/swc-linux-x64-musl": "15.3.1", - "@next/swc-win32-arm64-msvc": "15.3.1", - "@next/swc-win32-x64-msvc": "15.3.1", - "sharp": "^0.34.1" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/mdast-util-to-markdown": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-0.6.5.tgz", + "integrity": "sha512-XeV9sDE7ZlOQvs45C9UKMtfTcctcaj/pGwH8YLbMHoMOXNNCn2LsqVQOqrF1+/NU8lKDAqozme9SCXWyo9oAcQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "longest-streak": "^2.0.0", + "mdast-util-to-string": "^2.0.0", + "parse-entities": "^2.0.0", + "repeat-string": "^1.0.0", + "zwitch": "^1.0.0" }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/next-themes": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", - "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + "node_modules/nextra/node_modules/mdast-util-to-string": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-2.0.0.tgz", + "integrity": "sha512-AW4DRS3QbBayY/jJmD8437V1Gombjf8RSOUCMFBuo5iHi58AGEgVCKQ+ezHkZZDpAQS75hcBMpLqjpJTjtUL7w==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/next/node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "node_modules/nextra/node_modules/micromark": { + "version": "2.11.4", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-2.11.4.tgz", + "integrity": "sha512-+WoovN/ppKolQOFIAajxi7Lu9kInbPxFuTBVEavFcL8eAfVstoc5MocPmqBeAdBOJV00uaVjegzH4+MA0DN/uA==", "funding": [ { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" }, { - "type": "github", - "url": "https://github.com/sponsors/ai" + "type": "OpenCollective", + "url": "https://opencollective.com/unified" } ], "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" + "debug": "^4.0.0", + "parse-entities": "^2.0.0" } }, - "node_modules/nextra": { - "version": "4.2.17", - "resolved": "https://registry.npmjs.org/nextra/-/nextra-4.2.17.tgz", - "integrity": "sha512-WBZGSUeUJqkYm3F3F7+4N1oMP84r/YK/rAg96wkywu/MIsuUREY8fLXQgQbKkvcLbBl/7Wk2Iy+9xlhDu+weNg==", - "dependencies": { - "@formatjs/intl-localematcher": "^0.6.0", - "@headlessui/react": "^2.1.2", - "@mdx-js/mdx": "^3.0.0", - "@napi-rs/simple-git": "^0.1.9", - "@shikijs/twoslash": "^2.0.0", - "@theguild/remark-mermaid": "^0.2.0", - "@theguild/remark-npm2yarn": "^0.3.2", - "better-react-mathjax": "^2.0.3", - "clsx": "^2.1.0", - "estree-util-to-js": "^2.0.0", - "estree-util-value-to-estree": "^3.0.1", - "fast-glob": "^3.3.2", - "github-slugger": "^2.0.0", - "hast-util-to-estree": "^3.1.0", - "katex": "^0.16.21", - "mdast-util-from-markdown": "^2.0.1", - "mdast-util-gfm": "^3.0.0", - "mdast-util-to-hast": "^13.2.0", - "negotiator": "^1.0.0", - "react-compiler-runtime": "0.0.0-experimental-22c6e49-20241219", - "react-medium-image-zoom": "^5.2.12", - "rehype-katex": "^7.0.0", - "rehype-pretty-code": "0.14.1", - "rehype-raw": "^7.0.0", - "remark-frontmatter": "^5.0.0", - "remark-gfm": "^4.0.0", - "remark-math": "^6.0.0", - "remark-reading-time": "^2.0.1", - "remark-smartypants": "^3.0.0", - "shiki": "^2.0.0", - "slash": "^5.1.0", - "title": "^4.0.1", - "unist-util-remove": "^4.0.0", - "unist-util-visit": "^5.0.0", - "unist-util-visit-children": "^3.0.0", - "yaml": "^2.3.2", - "zod": "^3.22.3", - "zod-validation-error": "^3.0.0" - }, - "engines": { - "node": ">=18" + "node_modules/nextra/node_modules/micromark-extension-gfm": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-0.3.3.tgz", + "integrity": "sha512-oVN4zv5/tAIA+l3GbMi7lWeYpJ14oQyJ3uEim20ktYFAcfX1x3LNlFGGlmrZHt7u9YlKExmyJdDGaTt6cMSR/A==", + "dependencies": { + "micromark": "~2.11.0", + "micromark-extension-gfm-autolink-literal": "~0.5.0", + "micromark-extension-gfm-strikethrough": "~0.6.5", + "micromark-extension-gfm-table": "~0.4.0", + "micromark-extension-gfm-tagfilter": "~0.3.0", + "micromark-extension-gfm-task-list-item": "~0.3.0" }, - "peerDependencies": { - "next": ">=14", - "react": ">=18", - "react-dom": ">=18" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/core": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-2.5.0.tgz", - "integrity": "sha512-uu/8RExTKtavlpH7XqnVYBrfBkUc20ngXiX9NSrBhOVZYv/7XQRKUyhtkeflY5QsxC0GbJThCerruZfsUaSldg==", + "node_modules/nextra/node_modules/micromark-extension-gfm-autolink-literal": { + "version": "0.5.7", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-0.5.7.tgz", + "integrity": "sha512-ePiDGH0/lhcngCe8FtH4ARFoxKTUelMp4L7Gg2pujYD5CSMb9PbblnyL+AAMud/SNMyusbS2XDSiPIRcQoNFAw==", "dependencies": { - "@shikijs/engine-javascript": "2.5.0", - "@shikijs/engine-oniguruma": "2.5.0", - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" + "micromark": "~2.11.3" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/engine-javascript": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-2.5.0.tgz", - "integrity": "sha512-VjnOpnQf8WuCEZtNUdjjwGUbtAVKuZkVQ/5cHy/tojVVRIRtlWMYVjyWhxOmIq05AlSOv72z7hRNRGVBgQOl0w==", + "node_modules/nextra/node_modules/micromark-extension-gfm-strikethrough": { + "version": "0.6.5", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-0.6.5.tgz", + "integrity": "sha512-PpOKlgokpQRwUesRwWEp+fHjGGkZEejj83k9gU5iXCbDG+XBA92BqnRKYJdfqfkrRcZRgGuPuXb7DaK/DmxOhw==", "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^3.1.0" + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/engine-oniguruma": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-2.5.0.tgz", - "integrity": "sha512-pGd1wRATzbo/uatrCIILlAdFVKdxImWJGQ5rFiB5VZi2ve5xj3Ax9jny8QvkaV93btQEwR/rSz5ERFpC5mKNIw==", + "node_modules/nextra/node_modules/micromark-extension-gfm-table": { + "version": "0.4.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-0.4.3.tgz", + "integrity": "sha512-hVGvESPq0fk6ALWtomcwmgLvH8ZSVpcPjzi0AjPclB9FsVRgMtGZkUcpE0zgjOCFAznKepF4z3hX8z6e3HODdA==", "dependencies": { - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2" + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/langs": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-2.5.0.tgz", - "integrity": "sha512-Qfrrt5OsNH5R+5tJ/3uYBBZv3SuGmnRPejV9IlIbFH3HTGLDlkqgHymAlzklVmKBjAaVmkPkyikAV/sQ1wSL+w==", - "dependencies": { - "@shikijs/types": "2.5.0" + "node_modules/nextra/node_modules/micromark-extension-gfm-tagfilter": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-0.3.0.tgz", + "integrity": "sha512-9GU0xBatryXifL//FJH+tAZ6i240xQuFrSL7mYi8f4oZSbc+NvXjkrHemeYP0+L4ZUT+Ptz3b95zhUZnMtoi/Q==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/themes": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-2.5.0.tgz", - "integrity": "sha512-wGrk+R8tJnO0VMzmUExHR+QdSaPUl/NKs+a4cQQRWyoc3YFbUzuLEi/KWK1hj+8BfHRKm2jNhhJck1dfstJpiw==", + "node_modules/nextra/node_modules/micromark-extension-gfm-task-list-item": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-0.3.3.tgz", + "integrity": "sha512-0zvM5iSLKrc/NQl84pZSjGo66aTGd57C1idmlWmE87lkMcXrTxg1uXa/nXomxJytoje9trP0NDLvw4bZ/Z/XCQ==", "dependencies": { - "@shikijs/types": "2.5.0" + "micromark": "~2.11.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/@shikijs/types": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-2.5.0.tgz", - "integrity": "sha512-ygl5yhxki9ZLNuNpPitBWvcy9fsSKKaRuO4BAlMyagszQidxcpLAr0qiW/q43DtSIDxO6hEbtYLiFZNXO/hdGw==", + "node_modules/nextra/node_modules/parse-entities": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-2.0.0.tgz", + "integrity": "sha512-kkywGpCcRYhqQIchaWqZ875wzpS/bMKhz5HnN3p7wveJTkTtyAB/AlnS0f8DFSqYW1T82t6yEAkEcB+A1I3MbQ==", "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "character-entities": "^1.0.0", + "character-entities-legacy": "^1.0.0", + "character-reference-invalid": "^1.0.0", + "is-alphanumerical": "^1.0.0", + "is-decimal": "^1.0.0", + "is-hexadecimal": "^1.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/nextra/node_modules/@theguild/remark-mermaid": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@theguild/remark-mermaid/-/remark-mermaid-0.2.0.tgz", - "integrity": "sha512-o8n57TJy0OI4PCrNw8z6S+vpHtrwoQZzTA5Y3fL0U1NDRIoMg/78duWgEBFsCZcWM1G6zjE91yg1aKCsDwgE2Q==", + "node_modules/nextra/node_modules/remark": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/remark/-/remark-13.0.0.tgz", + "integrity": "sha512-HDz1+IKGtOyWN+QgBiAT0kn+2s6ovOxHyPAFGKVE81VSzJ+mq7RwHFledEvB5F1p4iJvOah/LOKdFuzvRnNLCA==", "dependencies": { - "mermaid": "^11.0.0", - "unist-util-visit": "^5.0.0" + "remark-parse": "^9.0.0", + "remark-stringify": "^9.0.0", + "unified": "^9.1.0" }, - "peerDependencies": { - "react": "^18.2.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/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==", + "node_modules/nextra/node_modules/remark-gfm": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-1.0.0.tgz", + "integrity": "sha512-KfexHJCiqvrdBZVbQ6RopMZGwaXz6wFJEfByIuEwGf0arvITHjiKKZ1dpXujjH9KZdm1//XJQwgfnJ3lmXaDPA==", "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" + "mdast-util-gfm": "^0.1.0", + "micromark-extension-gfm": "^0.3.0" }, - "engines": { - "node": ">=8.6.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/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==", + "node_modules/nextra/node_modules/remark-parse": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-9.0.0.tgz", + "integrity": "sha512-geKatMwSzEXKHuzBNU1z676sGcDcFoChMK38TgdHJNAYfFtsfHDQG7MoJAjs6sgYMqyLduCYWDIWZIxiPeafEw==", "dependencies": { - "is-glob": "^4.0.1" + "mdast-util-from-markdown": "^0.8.0" }, - "engines": { - "node": ">= 6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/oniguruma-to-es": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-3.1.1.tgz", - "integrity": "sha512-bUH8SDvPkH3ho3dvwJwfonjlQ4R80vjyvrU8YpxuROddv55vAEJrTuCuCVUhhsHbtlD9tGGbaNApGQckXhS8iQ==", + "node_modules/nextra/node_modules/remark-stringify": { + "version": "9.0.1", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-9.0.1.tgz", + "integrity": "sha512-mWmNg3ZtESvZS8fv5PTvaPckdL4iNlCHTt8/e/8oN08nArHRHjNZMKzA/YW3+p7/lYqIw4nx1XsjCBo/AxNChg==", "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" + "mdast-util-to-markdown": "^0.6.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nextra/node_modules/shiki": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-2.5.0.tgz", - "integrity": "sha512-mI//trrsaiCIPsja5CNfsyNOqgAZUb6VpJA+340toL42UpzQlXpwRV9nch69X6gaUxrr9kaOOa6e3y3uAkGFxQ==", + "node_modules/nextra/node_modules/trough": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/trough/-/trough-1.0.5.tgz", + "integrity": "sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/nextra/node_modules/unified": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/unified/-/unified-9.2.2.tgz", + "integrity": "sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==", "dependencies": { - "@shikijs/core": "2.5.0", - "@shikijs/engine-javascript": "2.5.0", - "@shikijs/engine-oniguruma": "2.5.0", - "@shikijs/langs": "2.5.0", - "@shikijs/themes": "2.5.0", - "@shikijs/types": "2.5.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" + "bail": "^1.0.0", + "extend": "^3.0.0", + "is-buffer": "^2.0.0", + "is-plain-obj": "^2.0.0", + "trough": "^1.0.0", + "vfile": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/nlcst-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/nlcst-to-string/-/nlcst-to-string-4.0.0.tgz", - "integrity": "sha512-YKLBCcUYKAg0FNlOBT6aI91qFmSiFKiluk655WzPF+DDMA02qIyy8uiRqI8QXtcFpEvll12LpL5MXqEmAZ+dcA==", + "node_modules/nextra/node_modules/unist-util-is": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-4.1.0.tgz", + "integrity": "sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/unist-util-stringify-position": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-2.0.3.tgz", + "integrity": "sha512-3faScn5I+hy9VleOq/qNbAd6pAx7iH5jYBMS9I1HgQVijz/4mv5Bvw5iw1sC/90CODiKo81G/ps8AJrISn687g==", "dependencies": { - "@types/nlcst": "^2.0.0" + "@types/unist": "^2.0.2" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/npm-run-path": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.3.0.tgz", - "integrity": "sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==", + "node_modules/nextra/node_modules/unist-util-visit-parents": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-3.1.1.tgz", + "integrity": "sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==", "dependencies": { - "path-key": "^4.0.0" + "@types/unist": "^2.0.0", + "unist-util-is": "^4.0.0" }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/nextra/node_modules/vfile": { + "version": "4.2.1", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-4.2.1.tgz", + "integrity": "sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==", + "dependencies": { + "@types/unist": "^2.0.0", + "is-buffer": "^2.0.0", + "unist-util-stringify-position": "^2.0.0", + "vfile-message": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-4.0.0.tgz", - "integrity": "sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==", - "engines": { - "node": ">=12" + "node_modules/nextra/node_modules/vfile-message": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-2.0.4.tgz", + "integrity": "sha512-DjssxRGkMvifUOJre00juHoP9DPWuzjxKuMDrhNbk2TdaYYBNMStsNhEOt3idrtI12VQYM/1+iM0KOzXi4pxwQ==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-stringify-position": "^2.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/npm-to-yarn": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-3.0.1.tgz", - "integrity": "sha512-tt6PvKu4WyzPwWUzy/hvPFqn+uwXO0K1ZHka8az3NnrhWJDmSqI8ncWq0fkL0k/lmmi5tAC11FXwXuh0rFbt1A==", - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node_modules/nextra/node_modules/zwitch": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-1.0.5.tgz", + "integrity": "sha512-V50KMwwzqJV0NpZIZFwfOD5/lyny3WlSzRiXgA0G7VUnRlqttta1L6UQIHzd6EuBY/cHGfwTIck7w1yH6Q5zUw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/node-releases": { + "version": "2.0.19", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.19.tgz", + "integrity": "sha512-xxOWJsBKtzAq7DY0J+DTzuz58K8e7sJbdgwkbMWQe8UYB6ekmsQ45q0M/tJDsGaZmbC+l7n57UV8Hl5tHxO9uw==", + "peer": true + }, + "node_modules/normalize-url": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-2.0.1.tgz", + "integrity": "sha512-D6MUW4K/VzoJ4rJ01JFKxDrtY1v9wrgzCX5f2qj/lzH1m/lW6MhUZFKerVsnyjOhOsYzI9Kqqak+10l4LvLpMw==", + "dependencies": { + "prepend-http": "^2.0.0", + "query-string": "^5.0.1", + "sort-keys": "^2.0.0" }, - "funding": { - "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + "engines": { + "node": ">=4" } }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", - "dev": true, "engines": { "node": ">=0.10.0" } @@ -9568,25 +10277,10 @@ "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, "dependencies": { "wrappy": "1" } }, - "node_modules/onetime": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", - "integrity": "sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==", - "dependencies": { - "mimic-fn": "^4.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/oniguruma-parser": { "version": "0.11.2", "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.11.2.tgz", @@ -9637,6 +10331,41 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/p-cancelable": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-0.4.1.tgz", + "integrity": "sha512-HNa1A8LvB1kie7cERyy21VNeHb2CWJJYqyyC2o3klWFfMGlFmWv2Z7sFgZH8ZiaYL95ydToKTFVXgMV/Os0bBQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-event": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/p-event/-/p-event-2.3.1.tgz", + "integrity": "sha512-NQCqOFhbpVTMX4qMe8PF8lbGtzZ+LCiN7pcNrb/413Na7+TRoe1xkKUzuWa/YEJdGQ0FvKtj35EEbDoVPO2kbA==", + "dependencies": { + "p-timeout": "^2.0.1" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "engines": { + "node": ">=4" + } + }, + "node_modules/p-is-promise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/p-is-promise/-/p-is-promise-1.1.0.tgz", + "integrity": "sha512-zL7VE4JVS2IFSkR2GQKDSPEVxkoH43/p7oEnwpdCndKYJO0HVeRB7fA8TJwuLOTBREtK0ea8eHaxdwcpob5dmg==", + "engines": { + "node": ">=4" + } + }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -9667,12 +10396,15 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/package-manager-detector": { - "version": "0.2.11", - "resolved": "https://registry.npmjs.org/package-manager-detector/-/package-manager-detector-0.2.11.tgz", - "integrity": "sha512-BEnLolu+yuz22S56CU1SUKq3XC3PkwD5wv4ikR4MfGvnRVcmzXR9DwSlW2fEamyTPyXHomBJRzgapeuBvRNzJQ==", + "node_modules/p-timeout": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-2.0.1.tgz", + "integrity": "sha512-88em58dDVB/KzPEx1X0N3LwFfYZPyDc4B6eF38M1rk9VTZMbxXXgjugz8mmwpS9Ox4BDZ+t6t3QP5+/gazweIA==", "dependencies": { - "quansync": "^0.2.7" + "p-finally": "^1.0.0" + }, + "engines": { + "node": ">=4" } }, "node_modules/parent-module": { @@ -9710,44 +10442,6 @@ "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" }, - "node_modules/parse-latin": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/parse-latin/-/parse-latin-7.0.0.tgz", - "integrity": "sha512-mhHgobPPua5kZ98EF4HWiH167JWBfl4pvAIXXdbaVohtK7a6YBOy56kvhCqduqyo/f3yrHFWmqmiMg/BkBkYYQ==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "@types/unist": "^3.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-modify-children": "^4.0.0", - "unist-util-visit-children": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/parse-numeric-range": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/parse-numeric-range/-/parse-numeric-range-1.3.0.tgz", - "integrity": "sha512-twN+njEipszzlMJd4ONUYgSfZPDxgHhT9Ahed5uTigpQn90FggW4SA/AIPq/6a149fTbE9qBEcSwE3FAEp6wQQ==" - }, - "node_modules/parse5": { - "version": "7.3.0", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.3.0.tgz", - "integrity": "sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==", - "dependencies": { - "entities": "^6.0.0" - }, - "funding": { - "url": "https://github.com/inikulin/parse5?sponsor=1" - } - }, - "node_modules/path-data-parser": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/path-data-parser/-/path-data-parser-0.1.0.tgz", - "integrity": "sha512-NOnmBpt5Y2RWbuv0LMzsayp3lVylAHLPUTut412ZA3l+C4uw4ZVkQbjShYCQ8TCpUMdPapr4YjUqLYD6v68j+w==" - }, "node_modules/path-exists": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", @@ -9780,10 +10474,20 @@ "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/pathe": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/pathe/-/pathe-2.0.3.tgz", - "integrity": "sha512-WUjGcAqP1gQacoQe+OBJsFA7Ld4DyXuUIjZ5cc75cLHvJ7dtNsTugphxIADwspS+AraAUePCKrSVtPLFj/F88w==" + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/periscopic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz", + "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-walker": "^3.0.0", + "is-reference": "^3.0.0" + } }, "node_modules/picocolors": { "version": "1.1.1", @@ -9801,28 +10505,31 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/pkg-types": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/pkg-types/-/pkg-types-2.1.0.tgz", - "integrity": "sha512-wmJwA+8ihJixSoHKxZJRBQG1oY8Yr9pGLzRmSsNms0iNWyHHAlZCa7mmKiFR10YPZuz/2k169JiS/inOjBCZ2A==", - "dependencies": { - "confbox": "^0.2.1", - "exsolve": "^1.0.1", - "pathe": "^2.0.3" + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "engines": { + "node": ">=6" } }, - "node_modules/points-on-curve": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/points-on-curve/-/points-on-curve-0.2.0.tgz", - "integrity": "sha512-0mYKnYYe9ZcqMCWhUjItv/oHjvgEsfKvnUTg8sAtnHr3GVy7rGkXCb6d5cSyqrWqL4k81b9CPg3urd+T7aop3A==" + "node_modules/pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==", + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/points-on-path": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/points-on-path/-/points-on-path-0.2.1.tgz", - "integrity": "sha512-25ClnWWuw7JbWZcgqY/gJ4FQWadKxGWk+3kR/7kD0tCaDtPPMj7oHu2ToLaVhfpnHrZzYby2w6tUA0eOIuUg8g==", + "node_modules/pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", "dependencies": { - "path-data-parser": "0.1.0", - "points-on-curve": "0.2.0" + "pinkie": "^2.0.0" + }, + "engines": { + "node": ">=0.10.0" } }, "node_modules/possible-typed-array-names": { @@ -9883,6 +10590,19 @@ "node": ">= 0.8.0" } }, + "node_modules/prepend-http": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz", + "integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==", + "engines": { + "node": ">=4" + } + }, + "node_modules/process-nextick-args": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -9903,6 +10623,15 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/pump": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.2.tgz", + "integrity": "sha512-tUPXtzlGM8FE3P0ZL6DVs/3P58k9nk8/jZeQCurTJylQA8qFYzHFfhBJkuqyE0FifOsQ0uKWekiZ5g8wtr28cw==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, "node_modules/punycode": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", @@ -9912,20 +10641,18 @@ "node": ">=6" } }, - "node_modules/quansync": { - "version": "0.2.10", - "resolved": "https://registry.npmjs.org/quansync/-/quansync-0.2.10.tgz", - "integrity": "sha512-t41VRkMYbkHyCYmOvx/6URnN80H7k4X0lLdBMGsz+maAwrJQYB1djpV6vHrQIBE0WBSGqhtEHrK9U3DWWH8v7A==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/antfu" - }, - { - "type": "individual", - "url": "https://github.com/sponsors/sxzz" - } - ] + "node_modules/query-string": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-5.1.1.tgz", + "integrity": "sha512-gjWOsm2SoGlgLEdAGt7a6slVOk9mGiXmPFMqrEhLQ68rhQuBnpfs3+EmlvqKyxnCo9/PPlF+9MtY02S1aFg+Jw==", + "dependencies": { + "decode-uri-component": "^0.2.0", + "object-assign": "^4.1.0", + "strict-uri-encode": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } }, "node_modules/queue-microtask": { "version": "1.2.3", @@ -9946,6 +10673,15 @@ } ] }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "peer": true, + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, "node_modules/react": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", @@ -9954,14 +10690,6 @@ "node": ">=0.10.0" } }, - "node_modules/react-compiler-runtime": { - "version": "0.0.0-experimental-22c6e49-20241219", - "resolved": "https://registry.npmjs.org/react-compiler-runtime/-/react-compiler-runtime-0.0.0-experimental-22c6e49-20241219.tgz", - "integrity": "sha512-bOAGaRL1ldfIIpbDsl+uV025Ta6RS6/cOjvvh8r2Vo7KtqB+RSvihVYRsWQz7ECKNPWdq5MClS845acwAwieDw==", - "peerDependencies": { - "react": "^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/react-dom": { "version": "19.1.0", "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", @@ -10060,6 +10788,30 @@ } } }, + "node_modules/readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "node_modules/readable-stream/node_modules/isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "node_modules/readable-stream/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/readdirp": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", @@ -10072,11 +10824,6 @@ "url": "https://paulmillr.com/funding/" } }, - "node_modules/reading-time": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/reading-time/-/reading-time-1.5.0.tgz", - "integrity": "sha512-onYyVhBNr4CmAxFsKS7bz+uTLRakypIe4R+5A824vBSkQy/hB3fZepoVEf8OVAxzLvK+H/jm9TzpI3ETSm64Kg==" - }, "node_modules/recma-build-jsx": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", @@ -10200,71 +10947,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rehype-katex": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/rehype-katex/-/rehype-katex-7.0.1.tgz", - "integrity": "sha512-OiM2wrZ/wuhKkigASodFoo8wimG3H12LWQaH8qSPVJn9apWKFSH3YOCtbKpBorTVw/eI7cuT21XBbvwEswbIOA==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/katex": "^0.16.0", - "hast-util-from-html-isomorphic": "^2.0.0", - "hast-util-to-text": "^4.0.0", - "katex": "^0.16.0", - "unist-util-visit-parents": "^6.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-parse": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", - "integrity": "sha512-ksCzCD0Fgfh7trPDxr2rSylbwq9iYDkSn8TCDmEJ49ljEUBxDVCzCHv7QNzZOfODanX4+bWQ4WZqLCRWYLfhag==", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-from-html": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/rehype-pretty-code": { - "version": "0.14.1", - "resolved": "https://registry.npmjs.org/rehype-pretty-code/-/rehype-pretty-code-0.14.1.tgz", - "integrity": "sha512-IpG4OL0iYlbx78muVldsK86hdfNoht0z63AP7sekQNW2QOTmjxB7RbTO+rhIYNGRljgHxgVZoPwUl6bIC9SbjA==", - "dependencies": { - "@types/hast": "^3.0.4", - "hast-util-to-string": "^3.0.0", - "parse-numeric-range": "^1.3.0", - "rehype-parse": "^9.0.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=18" - }, - "peerDependencies": { - "shiki": "^1.0.0 || ^2.0.0 || ^3.0.0" - } - }, - "node_modules/rehype-raw": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/rehype-raw/-/rehype-raw-7.0.0.tgz", - "integrity": "sha512-/aE8hCfKlQeA8LmyeyQvQF3eBiLRGNlfBJEvWH7ivp9sBqs7TNqBL5X3v157rM4IFETqDnIOO+z5M/biZbo9Ww==", - "dependencies": { - "@types/hast": "^3.0.0", - "hast-util-raw": "^9.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/rehype-recma": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", @@ -10294,21 +10976,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-frontmatter": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-5.0.0.tgz", - "integrity": "sha512-XTFYvNASMe5iPN0719nPrdItC9aU0ssC4v14mH1BCi1u0n1gAocqcujWUrByftZTbLhRtiKRyjYTSIOcr69UVQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-frontmatter": "^2.0.0", - "micromark-extension-frontmatter": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/remark-gfm": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", @@ -10318,137 +10985,36 @@ "mdast-util-gfm": "^3.0.0", "micromark-extension-gfm": "^3.0.0", "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-math": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/remark-math/-/remark-math-6.0.0.tgz", - "integrity": "sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-math": "^3.0.0", - "micromark-extension-math": "^3.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", - "dependencies": { - "mdast-util-mdx": "^3.0.0", - "micromark-extension-mdxjs": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/remark-reading-time/-/remark-reading-time-2.0.1.tgz", - "integrity": "sha512-fy4BKy9SRhtYbEHvp6AItbRTnrhiDGbqLQTSYVbQPGuRCncU1ubSsh9p/W5QZSxtYcUXv8KGL0xBgPLyNJA1xw==", - "dependencies": { - "estree-util-is-identifier-name": "^2.0.0", - "estree-util-value-to-estree": "^1.3.0", - "reading-time": "^1.3.0", - "unist-util-visit": "^3.1.0" - } - }, - "node_modules/remark-reading-time/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" - }, - "node_modules/remark-reading-time/node_modules/estree-util-is-identifier-name": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz", - "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-reading-time/node_modules/estree-util-value-to-estree": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-1.3.0.tgz", - "integrity": "sha512-Y+ughcF9jSUJvncXwqRageavjrNPAI+1M/L3BI3PyLp1nmgYTGUXU6t5z1Y7OWuThoDdhPME07bQU+d5LxdJqw==", - "dependencies": { - "is-plain-obj": "^3.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/remark-reading-time/node_modules/is-plain-obj": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", - "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/remark-reading-time/node_modules/unist-util-is": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", - "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", - "dependencies": { - "@types/unist": "^2.0.0" + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-reading-time/node_modules/unist-util-visit": { + "node_modules/remark-mdx": { "version": "3.1.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-3.1.0.tgz", - "integrity": "sha512-Szoh+R/Ll68QWAyQyZZpQzZQm2UPbxibDvaY8Xc9SUtYgPsDzx5AWSk++UUt2hJuow8mvwR+rG+LQLw+KsuAKA==", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0", - "unist-util-visit-parents": "^4.0.0" + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/remark-reading-time/node_modules/unist-util-visit-parents": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-4.1.1.tgz", - "integrity": "sha512-1xAFJXAKpnnJl8G7K5KgU7FY55y3GcLIXqkzUj5QF/QVP7biUm0K0O2oqVkYsdjzJKifYeWn9+o6piAK2hGSHw==", + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", "dependencies": { - "@types/unist": "^2.0.0", - "unist-util-is": "^5.0.0" + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, "funding": { "type": "opencollective", @@ -10471,20 +11037,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/remark-smartypants": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/remark-smartypants/-/remark-smartypants-3.0.2.tgz", - "integrity": "sha512-ILTWeOriIluwEvPjv67v7Blgrcx+LZOkAUVtKI3putuhlZm84FnqDORNXPPm+HY3NdZOMhyDwZ1E+eZB/Df5dA==", - "dependencies": { - "retext": "^9.0.0", - "retext-smartypants": "^6.0.0", - "unified": "^11.0.4", - "unist-util-visit": "^5.0.0" - }, - "engines": { - "node": ">=16.0.0" - } - }, "node_modules/remark-stringify": { "version": "11.0.0", "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", @@ -10499,6 +11051,23 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/repeat-string": { + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", + "integrity": "sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==", + "engines": { + "node": ">=0.10" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/resolve": { "version": "1.22.10", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.10.tgz", @@ -10537,61 +11106,12 @@ "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" } }, - "node_modules/retext": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/retext/-/retext-9.0.0.tgz", - "integrity": "sha512-sbMDcpHCNjvlheSgMfEcVrZko3cDzdbe1x/e7G66dFp0Ff7Mldvi2uv6JkJQzdRcvLYE8CA8Oe8siQx8ZOgTcA==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "retext-latin": "^4.0.0", - "retext-stringify": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-latin": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-latin/-/retext-latin-4.0.0.tgz", - "integrity": "sha512-hv9woG7Fy0M9IlRQloq/N6atV82NxLGveq+3H2WOi79dtIYWN8OaxogDm77f8YnVXJL2VD3bbqowu5E3EMhBYA==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "parse-latin": "^7.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-smartypants": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/retext-smartypants/-/retext-smartypants-6.2.0.tgz", - "integrity": "sha512-kk0jOU7+zGv//kfjXEBjdIryL1Acl4i9XNkHxtM7Tm5lFiCog576fjNC9hjoR7LTKQ0DsPWy09JummSsH1uqfQ==", - "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unist-util-visit": "^5.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/retext-stringify": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/retext-stringify/-/retext-stringify-4.0.0.tgz", - "integrity": "sha512-rtfN/0o8kL1e+78+uxPTqu1Klt0yPzKuQ2BfWwwfgIUSayyzxpM1PJzkKt4V8803uB9qSy32MvI7Xep9khTpiA==", + "node_modules/responselike": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz", + "integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==", "dependencies": { - "@types/nlcst": "^2.0.0", - "nlcst-to-string": "^4.0.0", - "unified": "^11.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "lowercase-keys": "^1.0.0" } }, "node_modules/reusify": { @@ -10619,20 +11139,25 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/robust-predicates": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", - "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" - }, - "node_modules/roughjs": { - "version": "4.6.6", - "resolved": "https://registry.npmjs.org/roughjs/-/roughjs-4.6.6.tgz", - "integrity": "sha512-ZUz/69+SYpFN/g/lUlo2FXcIjRkSu3nDarreVdGGndHEBJ6cXPdKguS8JGxwj5HA5xIbVKSmLgr5b3AWxtRfvQ==", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, "dependencies": { - "hachure-fill": "^0.5.2", - "path-data-parser": "^0.1.0", - "points-on-curve": "^0.2.0", - "points-on-path": "^0.2.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, "node_modules/run-parallel": { @@ -10657,10 +11182,16 @@ "queue-microtask": "^1.2.2" } }, - "node_modules/rw": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", - "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + "node_modules/sade": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/sade/-/sade-1.8.1.tgz", + "integrity": "sha512-xal3CZX1Xlo/k4ApwCFrHVACi9fBqJ7V+mwhBsuf/1IOKbBy098Fex+Wa/5QMubw09pSZ/u8EY8PWgevJsXp1A==", + "dependencies": { + "mri": "^1.1.0" + }, + "engines": { + "node": ">=6" + } }, "node_modules/safe-array-concat": { "version": "1.1.3", @@ -10681,6 +11212,25 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, "node_modules/safe-push-apply": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/safe-push-apply/-/safe-push-apply-1.0.0.tgz", @@ -10714,16 +11264,64 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" - }, "node_modules/scheduler": { "version": "0.26.0", "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==" }, + "node_modules/schema-utils": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.3.2.tgz", + "integrity": "sha512-Gn/JaSk/Mt9gYubxTtSn/QCV4em9mpAPiR1rqy/Ocu19u/G9J5WWdNoUT4SiV6mFC3y6cxyFcFwdzPM3FgxGAQ==", + "peer": true, + "dependencies": { + "@types/json-schema": "^7.0.9", + "ajv": "^8.9.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.1.0" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/schema-utils/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/schema-utils/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "peer": true, + "dependencies": { + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/schema-utils/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "peer": true + }, "node_modules/scroll-into-view-if-needed": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", @@ -10744,6 +11342,18 @@ "node": ">=4" } }, + "node_modules/seek-bzip": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/seek-bzip/-/seek-bzip-1.0.6.tgz", + "integrity": "sha512-e1QtP3YL5tWww8uKaOCQ18UxIT2laNBXHjV/S2WYCiK4udiv8lkG89KRIoCjUagnAmCBurjF4zEVX2ByBbnCjQ==", + "dependencies": { + "commander": "^2.8.1" + }, + "bin": { + "seek-bunzip": "bin/seek-bunzip", + "seek-table": "bin/seek-bzip-table" + } + }, "node_modules/semver": { "version": "7.7.1", "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", @@ -10756,6 +11366,15 @@ "node": ">=10" } }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", @@ -10948,17 +11567,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/signal-exit": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", - "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, "node_modules/simple-swizzle": { "version": "0.2.2", "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", @@ -10969,14 +11577,60 @@ } }, "node_modules/slash": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", - "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/sort-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-2.0.0.tgz", + "integrity": "sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, "engines": { - "node": ">=14.16" + "node": ">=4" + } + }, + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", + "dependencies": { + "sort-keys": "^1.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys-length/node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "dependencies": { + "is-plain-obj": "^1.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-keys/node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "engines": { + "node": ">=0.10.0" } }, "node_modules/source-map": { @@ -10995,6 +11649,25 @@ "node": ">=0.10.0" } }, + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", + "peer": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/source-map-support/node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/space-separated-tokens": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", @@ -11004,27 +11677,6 @@ "url": "https://github.com/sponsors/wooorm" } }, - "node_modules/speech-rule-engine": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/speech-rule-engine/-/speech-rule-engine-4.1.2.tgz", - "integrity": "sha512-S6ji+flMEga+1QU79NDbwZ8Ivf0S/MpupQQiIC0rTpU/ZTKgcajijJJb1OcByBQDjrXCN1/DJtGz4ZJeBMPGJw==", - "dependencies": { - "@xmldom/xmldom": "0.9.8", - "commander": "13.1.0", - "wicked-good-xpath": "1.3.0" - }, - "bin": { - "sre": "bin/sre" - } - }, - "node_modules/speech-rule-engine/node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "engines": { - "node": ">=18" - } - }, "node_modules/sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", @@ -11044,6 +11696,27 @@ "node": ">=10.0.0" } }, + "node_modules/strict-uri-encode": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/strict-uri-encode/-/strict-uri-encode-1.1.0.tgz", + "integrity": "sha512-R3f198pcvnB+5IpnBlRkphuE9n46WyVl8I39W/ZUTZLz4nqSP/oLYUrcnJrw462Ds8he4YKMov2efsTIw1BDGQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/string_decoder": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "dependencies": { + "safe-buffer": "~5.1.0" + } + }, + "node_modules/string_decoder/node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, "node_modules/string.prototype.includes": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.1.tgz", @@ -11193,15 +11866,12 @@ "node": ">=0.10.0" } }, - "node_modules/strip-final-newline": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-3.0.0.tgz", - "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node_modules/strip-dirs": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/strip-dirs/-/strip-dirs-2.1.0.tgz", + "integrity": "sha512-JOCxOeKLm2CAS73y/U4ZeZPTkE+gNVCzKt7Eox84Iej1LT/2pTWYpZKJuxwQpvX1LiZb1xokNR7RLfuBAa7T3g==", + "dependencies": { + "is-natural-number": "^4.0.1" } }, "node_modules/strip-json-comments": { @@ -11216,6 +11886,34 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/strip-markdown": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/strip-markdown/-/strip-markdown-4.2.0.tgz", + "integrity": "sha512-sZYHI1KoKOOBfIq78R3E62NHg7kk6aKtZSqiH7wWxFB6Ak6PTZe4N88aJnzjV00Lbfw91oyLpy3baYfTTqNYBA==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/style-to-js": { "version": "1.1.16", "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", @@ -11254,11 +11952,6 @@ } } }, - "node_modules/stylis": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.3.6.tgz", - "integrity": "sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==" - }, "node_modules/supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -11273,32 +11966,16 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "dev": true, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/system-architecture": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/system-architecture/-/system-architecture-0.1.0.tgz", - "integrity": "sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, "engines": { - "node": ">=18" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tabbable": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", - "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" - }, "node_modules/tailwind-merge": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", @@ -11318,21 +11995,97 @@ "version": "2.2.1", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, "engines": { "node": ">=6" } }, + "node_modules/tar-stream": { + "version": "1.6.2", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-1.6.2.tgz", + "integrity": "sha512-rzS0heiNf8Xn7/mpdSVVSMAWAoy9bfb1WOTYC78Z0UQKeKa/CWS8FOq0lKGNa8DWKAn9gxjCvMLYc5PGXYlK2A==", + "dependencies": { + "bl": "^1.0.0", + "buffer-alloc": "^1.2.0", + "end-of-stream": "^1.0.0", + "fs-constants": "^1.0.0", + "readable-stream": "^2.3.0", + "to-buffer": "^1.1.1", + "xtend": "^4.0.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/terser": { + "version": "5.39.0", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.39.0.tgz", + "integrity": "sha512-LBAhFyLho16harJoWMg/nZsQYgTrg5jXOn2nCYjRUcZZEdE3qa2zb8QEDRUGVZBW4rlazf2fxkg8tztybTaqWw==", + "peer": true, + "dependencies": { + "@jridgewell/source-map": "^0.3.3", + "acorn": "^8.8.2", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" + }, + "bin": { + "terser": "bin/terser" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/terser-webpack-plugin": { + "version": "5.3.14", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.14.tgz", + "integrity": "sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==", + "peer": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.25", + "jest-worker": "^27.4.5", + "schema-utils": "^4.3.0", + "serialize-javascript": "^6.0.2", + "terser": "^5.31.1" + }, + "engines": { + "node": ">= 10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } + } + }, "node_modules/text-table": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", "dev": true }, - "node_modules/tinyexec": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/tinyexec/-/tinyexec-0.3.2.tgz", - "integrity": "sha512-KQQR9yN7R5+OSwaK0XQoj22pwHoTlgYqmUscPYoknOoWCWfj/5/ABTMRi69FrKU5ffPVh5QcFikpWJI/P1ocHA==" + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/timed-out": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/timed-out/-/timed-out-4.0.1.tgz", + "integrity": "sha512-G7r3AhovYtr5YKOWQkta8RKAPb+J9IsO4uVmzjl8AZwfhs8UcUwTiD6gcJYSgOtzyjvQKrKYn41syHbUWMkafA==", + "engines": { + "node": ">=0.10.0" + } }, "node_modules/tinyglobby": { "version": "0.2.13", @@ -11376,29 +12129,10 @@ "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/title": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/title/-/title-4.0.1.tgz", - "integrity": "sha512-xRnPkJx9nvE5MF6LkB5e8QJjE2FW8269wTu/LQdf7zZqBgPly0QJPf/CWAo7srj5so4yXfoLEdCFgurlpi47zg==", - "dependencies": { - "arg": "^5.0.0", - "chalk": "^5.0.0", - "clipboardy": "^4.0.0" - }, - "bin": { - "title": "dist/esm/bin.js" - } - }, - "node_modules/title/node_modules/chalk": { - "version": "5.4.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.4.1.tgz", - "integrity": "sha512-zgVZuo2WcZgfUEmsn6eO3kINexW8RAE4maiQ8QNs8CtpPCSyMiYsULR3HQYkm3w8FIA3SberyMJMSldGsW+U3w==", - "engines": { - "node": "^12.17.0 || ^14.13 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } + "node_modules/to-buffer": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/to-buffer/-/to-buffer-1.1.1.tgz", + "integrity": "sha512-lx9B5iv7msuFYE3dytT+KE5tap+rNYw+K4jVkb9R/asAb+pbBSM17jtunHplhBe6RRJdZx3Pn2Jph24O32mOVg==" }, "node_modules/to-regex-range": { "version": "5.0.1", @@ -11420,6 +12154,25 @@ "url": "https://github.com/sponsors/wooorm" } }, + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dependencies": { + "escape-string-regexp": "^1.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, "node_modules/trough": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", @@ -11441,14 +12194,6 @@ "typescript": ">=4.8.4" } }, - "node_modules/ts-dedent": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/ts-dedent/-/ts-dedent-2.2.0.tgz", - "integrity": "sha512-q5W7tVM71e2xjHZTlgfTDoPF/SmqKG5hddq9SzR49CH2hayqRKJtQ4mtRlSxKaJlR/+9rEM+mnBHf7I2/BQcpQ==", - "engines": { - "node": ">=6.10" - } - }, "node_modules/tsconfig-paths": { "version": "3.15.0", "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", @@ -11474,23 +12219,6 @@ "url": "https://github.com/sponsors/Wombosvideo" } }, - "node_modules/twoslash": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/twoslash/-/twoslash-0.2.12.tgz", - "integrity": "sha512-tEHPASMqi7kqwfJbkk7hc/4EhlrKCSLcur+TcvYki3vhIfaRMXnXjaYFgXpoZRbT6GdprD4tGuVBEmTpUgLBsw==", - "dependencies": { - "@typescript/vfs": "^1.6.0", - "twoslash-protocol": "0.2.12" - }, - "peerDependencies": { - "typescript": "*" - } - }, - "node_modules/twoslash-protocol": { - "version": "0.2.12", - "resolved": "https://registry.npmjs.org/twoslash-protocol/-/twoslash-protocol-0.2.12.tgz", - "integrity": "sha512-5qZLXVYfZ9ABdjqbvPc4RWMr7PrpPaaDSeaYY55vl/w1j6H6kzsWK/urAEIXlzYlyrFmyz1UbwIt+AA0ck+wbg==" - }, "node_modules/type-check": { "version": "0.4.0", "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", @@ -11593,6 +12321,7 @@ "version": "5.8.3", "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.8.3.tgz", "integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==", + "dev": true, "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" @@ -11601,11 +12330,6 @@ "node": ">=14.17" } }, - "node_modules/ufo": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/ufo/-/ufo-1.6.1.tgz", - "integrity": "sha512-9a4/uxlTWJ4+a5i0ooc1rU7C7YOw3wT+UGqdeNNHWnOF9qcMBgLRS+4IYUqbczewFx4mLEig6gawh7X6mFlEkA==" - }, "node_modules/unbox-primitive": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.1.0.tgz", @@ -11624,11 +12348,19 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, "node_modules/undici-types": { "version": "6.21.0", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "dev": true + "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==" }, "node_modules/unified": { "version": "11.0.5", @@ -11648,14 +12380,10 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-find-after": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-find-after/-/unist-util-find-after-5.0.0.tgz", - "integrity": "sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" - }, + "node_modules/unist-util-generated": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unist-util-generated/-/unist-util-generated-2.0.1.tgz", + "integrity": "sha512-qF72kLmPxAw0oN2fwpWIqbXAVyEqUzDHMsbtPvOudIlUzXYFIeQIuxXQCRCFh22B7cixvU0MG7m3MW8FTq/S+A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" @@ -11673,19 +12401,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-modify-children": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-modify-children/-/unist-util-modify-children-4.0.0.tgz", - "integrity": "sha512-+tdN5fGNddvsQdIzUF3Xx82CU9sMM+fA0dLgR9vOmT0oPT2jH+P1nd5lSqfCfXAw+93NhcXNY2qqvTUtE4cQkw==", - "dependencies": { - "@types/unist": "^3.0.0", - "array-iterate": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-position": { "version": "5.0.0", "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", @@ -11710,27 +12425,57 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove/-/unist-util-remove-4.0.0.tgz", - "integrity": "sha512-b4gokeGId57UVRX/eVKej5gXqGlc9+trkORhFJpu9raqZkZhU0zm8Doi05+HaiBsMEIJowL+2WtQ5ItjsngPXg==", + "node_modules/unist-util-remove-position": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz", + "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" + "@types/unist": "^2.0.0", + "unist-util-visit": "^4.0.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-remove-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-5.0.0.tgz", - "integrity": "sha512-Hp5Kh3wLxv0PHj9m2yZhhLt58KzPtEYKQQ4yxfYFEO7EvHwzyDYnduhHnY1mDxoqr7VUwVuHXk9RXKIiYS1N8Q==", + "node_modules/unist-util-remove-position/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-is": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-5.2.1.tgz", + "integrity": "sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==", "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-visit": "^5.0.0" + "@types/unist": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-4.1.2.tgz", + "integrity": "sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0", + "unist-util-visit-parents": "^5.1.1" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-remove-position/node_modules/unist-util-visit-parents": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-5.1.3.tgz", + "integrity": "sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==", + "dependencies": { + "@types/unist": "^2.0.0", + "unist-util-is": "^5.0.0" }, "funding": { "type": "opencollective", @@ -11763,18 +12508,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/unist-util-visit-children": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit-children/-/unist-util-visit-children-3.0.0.tgz", - "integrity": "sha512-RgmdTfSBOg04sdPcpTSD1jzoNBjt9a80/ZCzp5cI9n1qPzLZWF9YdvWGN2zmTumP1HWhXKdUWexjy/Wy/lJ7tA==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/unist-util-visit-parents": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", @@ -11819,6 +12552,36 @@ "@unrs/resolver-binding-win32-x64-msvc": "1.6.4" } }, + "node_modules/update-browserslist-db": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.3.tgz", + "integrity": "sha512-UxhIZQ+QInVdunkDAaiazvvT/+fXL5Osr0JZlJulepYu6Jd7qJtDZjlur0emRlT71EN3ScPoE7gvsuIKKNavKw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "escalade": "^3.2.0", + "picocolors": "^1.1.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, "node_modules/uri-js": { "version": "4.4.1", "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", @@ -11828,6 +12591,25 @@ "punycode": "^2.1.0" } }, + "node_modules/url-parse-lax": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz", + "integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==", + "dependencies": { + "prepend-http": "^2.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/url-to-options": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/url-to-options/-/url-to-options-1.0.1.tgz", + "integrity": "sha512-0kQLIzG4fdk/G5NONku64rSH/x32NOA39LVQqlK8Le6lvTF6GGRJpqaQFGgU+CLwySIqBSMdwYM0sYcW9f6P4A==", + "engines": { + "node": ">= 4" + } + }, "node_modules/use-callback-ref": { "version": "1.3.3", "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", @@ -11869,29 +12651,26 @@ } } }, - "node_modules/use-sync-external-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", - "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, "node_modules/util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, - "node_modules/uuid": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-11.1.0.tgz", - "integrity": "sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==", - "funding": [ - "https://github.com/sponsors/broofa", - "https://github.com/sponsors/ctavan" - ], + "node_modules/uvu": { + "version": "0.5.6", + "resolved": "https://registry.npmjs.org/uvu/-/uvu-0.5.6.tgz", + "integrity": "sha512-+g8ENReyr8YsOc6fv/NVJs2vFdHBnBNdfE49rshrTzDWOlUx4Gq7KOS2GD8eqhy2j+Ejq29+SbKH8yjkAqXqoA==", + "dependencies": { + "dequal": "^2.0.0", + "diff": "^5.0.0", + "kleur": "^4.0.3", + "sade": "^1.7.3" + }, "bin": { - "uuid": "dist/esm/bin/uuid" + "uvu": "bin.js" + }, + "engines": { + "node": ">=8" } }, "node_modules/vfile": { @@ -11907,19 +12686,6 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vfile-location": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/vfile-location/-/vfile-location-5.0.3.tgz", - "integrity": "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==", - "dependencies": { - "@types/unist": "^3.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, "node_modules/vfile-message": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", @@ -11933,56 +12699,95 @@ "url": "https://opencollective.com/unified" } }, - "node_modules/vscode-jsonrpc": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/vscode-jsonrpc/-/vscode-jsonrpc-8.2.0.tgz", - "integrity": "sha512-C+r0eKJUIfiDIfwJhria30+TYWPtuHJXHtI7J0YlOmKAo7ogxP20T0zxB7HZQIFhIyvoBPwWskjxrvAtfjyZfA==", + "node_modules/watchpack": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.2.tgz", + "integrity": "sha512-TnbFSbcOCcDgjZ4piURLCbJ3nJhznVh9kw6F6iokjiFPl8ONxe9A6nMDVXDiNbrSfLILs6vB07F7wLBrwPYzJw==", + "peer": true, + "dependencies": { + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.1.2" + }, "engines": { - "node": ">=14.0.0" + "node": ">=10.13.0" } }, - "node_modules/vscode-languageserver": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/vscode-languageserver/-/vscode-languageserver-9.0.1.tgz", - "integrity": "sha512-woByF3PDpkHFUreUa7Hos7+pUWdeWMXRd26+ZX2A8cFx6v/JPTtd4/uN0/jB6XQHYaOlHbio03NTHCqrgG5n7g==", + "node_modules/webpack": { + "version": "5.99.8", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.99.8.tgz", + "integrity": "sha512-lQ3CPiSTpfOnrEGeXDwoq5hIGzSjmwD72GdfVzF7CQAI7t47rJG9eDWvcEkEn3CUQymAElVvDg3YNTlCYj+qUQ==", + "peer": true, "dependencies": { - "vscode-languageserver-protocol": "3.17.5" + "@types/eslint-scope": "^3.7.7", + "@types/estree": "^1.0.6", + "@types/json-schema": "^7.0.15", + "@webassemblyjs/ast": "^1.14.1", + "@webassemblyjs/wasm-edit": "^1.14.1", + "@webassemblyjs/wasm-parser": "^1.14.1", + "acorn": "^8.14.0", + "browserslist": "^4.24.0", + "chrome-trace-event": "^1.0.2", + "enhanced-resolve": "^5.17.1", + "es-module-lexer": "^1.2.1", + "eslint-scope": "5.1.1", + "events": "^3.2.0", + "glob-to-regexp": "^0.4.1", + "graceful-fs": "^4.2.11", + "json-parse-even-better-errors": "^2.3.1", + "loader-runner": "^4.2.0", + "mime-types": "^2.1.27", + "neo-async": "^2.6.2", + "schema-utils": "^4.3.2", + "tapable": "^2.1.1", + "terser-webpack-plugin": "^5.3.11", + "watchpack": "^2.4.1", + "webpack-sources": "^3.2.3" }, "bin": { - "installServerIntoExtension": "bin/installServerIntoExtension" + "webpack": "bin/webpack.js" + }, + "engines": { + "node": ">=10.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependenciesMeta": { + "webpack-cli": { + "optional": true + } } }, - "node_modules/vscode-languageserver-protocol": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-protocol/-/vscode-languageserver-protocol-3.17.5.tgz", - "integrity": "sha512-mb1bvRJN8SVznADSGWM9u/b07H7Ecg0I3OgXDuLdn307rl/J3A9YD6/eYOssqhecL27hK1IPZAsaqh00i/Jljg==", - "dependencies": { - "vscode-jsonrpc": "8.2.0", - "vscode-languageserver-types": "3.17.5" + "node_modules/webpack-sources": { + "version": "3.2.3", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", + "peer": true, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/vscode-languageserver-textdocument": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/vscode-languageserver-textdocument/-/vscode-languageserver-textdocument-1.0.12.tgz", - "integrity": "sha512-cxWNPesCnQCcMPeenjKKsOCKQZ/L6Tv19DTRIGuLWe32lyzWhihGVJ/rcckZXJxfdKCFvRLS3fpBIsV/ZGX4zA==" - }, - "node_modules/vscode-languageserver-types": { - "version": "3.17.5", - "resolved": "https://registry.npmjs.org/vscode-languageserver-types/-/vscode-languageserver-types-3.17.5.tgz", - "integrity": "sha512-Ld1VelNuX9pdF39h2Hgaeb5hEZM2Z3jUrrMgWQAu82jMtZp7p3vJT3BzToKtZI7NgQssZje5o0zryOrhQvzQAg==" - }, - "node_modules/vscode-uri": { - "version": "3.0.8", - "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", - "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==" + "node_modules/webpack/node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "peer": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } }, - "node_modules/web-namespaces": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/web-namespaces/-/web-namespaces-2.0.1.tgz", - "integrity": "sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/webpack/node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "peer": true, + "engines": { + "node": ">=4.0" } }, "node_modules/which": { @@ -12084,11 +12889,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wicked-good-xpath": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/wicked-good-xpath/-/wicked-good-xpath-1.3.0.tgz", - "integrity": "sha512-Gd9+TUn5nXdwj/hFsPVx5cuHHiF5Bwuc30jZ4+ronF1qHK5O7HD0sgmXWSEgwKquT3ClLoKPVbO6qGwVwLzvAw==" - }, "node_modules/word-wrap": { "version": "1.2.5", "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", @@ -12101,18 +12901,23 @@ "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/yaml": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.7.1.tgz", - "integrity": "sha512-10ULxpnOCQXxJvBgxsn9ptjq6uviG/htZKk9veJGhlqn3w/DxQ631zFF+nlQXLwmImeS5amR2dl2U8sg6U9jsQ==", - "bin": { - "yaml": "bin.mjs" - }, + "node_modules/xtend": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { - "node": ">= 14" + "node": ">=0.4" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" } }, "node_modules/yocto-queue": { @@ -12128,24 +12933,13 @@ } }, "node_modules/zod": { - "version": "3.24.3", - "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.3.tgz", - "integrity": "sha512-HhY1oqzWCQWuUqvBFnsyrtZRhyPeR7SUGv+C4+MsisMuVfSPx8HpwWqH8tRahSlt6M3PiFAcoeFhZAqIXTxoSg==", + "version": "3.24.4", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.24.4.tgz", + "integrity": "sha512-OdqJE9UDRPwWsrHjLN2F8bPxvwJBK22EHLWtanu0LSYr5YqzsaaW3RMgmjwr8Rypg5k+meEJdSPXJZXE/yqOMg==", "funding": { "url": "https://github.com/sponsors/colinhacks" } }, - "node_modules/zod-validation-error": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/zod-validation-error/-/zod-validation-error-3.4.0.tgz", - "integrity": "sha512-ZOPR9SVY6Pb2qqO5XHt+MkkTRxGXb4EVtnjc9JpXUOtUB1T9Ru7mZOT361AN3MsetVe7R0a1KZshJDZdgp9miQ==", - "engines": { - "node": ">=18.0.0" - }, - "peerDependencies": { - "zod": "^3.18.0" - } - }, "node_modules/zwitch": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", diff --git a/docs-site/package.json b/docs-site/package.json index 23abea67..57d2852d 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -3,6 +3,7 @@ "version": "0.0.0", "private": true, "scripts": { + "prebuild": "node scripts/generate-search-index.js", "build": "next build", "dev": "next dev --turbopack", "start": "next start", @@ -14,10 +15,10 @@ "clsx": "^2.1.1", "fumadocs-core": "15.2.9", "fumadocs-mdx": "11.6.1", - "fumadocs-ui": "15.2.9", + "fumadocs-ui": "^15.2.9", "lucide-react": "^0.503.0", "next": "15.3.1", - "nextra": "^4.2.17", + "nextra": "^1.1.0", "react": "^19.1.0", "react-dom": "^19.1.0", "tailwind-merge": "^3.2.0", @@ -31,6 +32,8 @@ "@types/react-dom": "^19.1.2", "eslint": "^8", "eslint-config-next": "15.3.1", + "glob": "^8.1.0", + "gray-matter": "^4.0.3", "postcss": "^8.5.3", "tailwindcss": "^4.1.4", "typescript": "^5.8.3" diff --git a/docs-site/public/yakelogo.png b/docs-site/public/yakelogo.png new file mode 100644 index 0000000000000000000000000000000000000000..9c2f7afdfd52342d63a8b2bd1d4c016a2facfdf2 GIT binary patch literal 549 zcmV+=0^0qFP)iIujExT8HSXGxUOs?exk zguZtVj7NLDgUp#mZnQ)IwrvutHUOCy0HuMZ06cK7k*dv|K5TT6b$*=Ap+uy1HRrnk z@y7tXZ3xST0Mm~H*qH|V%L4x90Le)h>#0NTd;sgaQumhti(5%`QeyC`0PxIc&29?R zfB^B(0Q>QA#BN2Jj(xIpKfzy2no@w;a{#hQJk(equv2r=kRHcp0QtTEnQU^qbQ1X5 z0Lg(?nPxuz^IyhoF7e!f`t6OFP*wd}SDOF;03&o#PE!Dk!Hh3B1Pv5r=J&hrKB6zM znBih#f}yx_OvqpQ-?+Kg^Hf@OR{#J2$4Nv%R49?%kHr?kFcd_CRG_%KB~_$_7I*jm z{~d}h(u6(CYR!q~mo&(NVt3sj$KI7+by}o7PfaYnm7_s^G1bj1jV5Q!W+P3b n(eb=q57THUmP$mZrG7*=wNMe(#A;rN00000NkvXXu0mjfSYG<~ literal 0 HcmV?d00001 diff --git a/docs-site/tsconfig.json b/docs-site/tsconfig.json index 4fd260f7..7e4699b6 100644 --- a/docs-site/tsconfig.json +++ b/docs-site/tsconfig.json @@ -17,7 +17,8 @@ "incremental": true, "paths": { "@/.source": ["./.source/index.ts"], - "@/*": ["./*"] + "@/*": ["./*"], + "fumadocs-ui/*": ["./node_modules/fumadocs-ui/*"] }, "plugins": [ { @@ -25,6 +26,6 @@ } ] }, - "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts"], + "include": ["next-env.d.ts", "**/*.ts", "**/*.tsx", ".next/types/**/*.ts", "types/**/*.d.ts"], "exclude": ["node_modules"] -} +} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index c15d6f5f..b7c742cc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -2,5 +2,4115 @@ "name": "yake-2.0", "lockfileVersion": 3, "requires": true, - "packages": {} + "packages": { + "": { + "dependencies": { + "@maximai/fumadocs-ui": "^12.5.4-beta1", + "fumadocs-ui": "^15.2.15" + } + }, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@floating-ui/core": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", + "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", + "dependencies": { + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/dom": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", + "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", + "dependencies": { + "@floating-ui/core": "^1.7.0", + "@floating-ui/utils": "^0.2.9" + } + }, + "node_modules/@floating-ui/react-dom": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", + "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", + "dependencies": { + "@floating-ui/dom": "^1.0.0" + }, + "peerDependencies": { + "react": ">=16.8.0", + "react-dom": ">=16.8.0" + } + }, + "node_modules/@floating-ui/utils": { + "version": "0.2.9", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", + "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", + "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", + "dependencies": { + "tslib": "2" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", + "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", + "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", + "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", + "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", + "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", + "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", + "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", + "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", + "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/runtime": "^1.4.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", + "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", + "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@maximai/fumadocs-ui": { + "version": "12.5.4-beta1", + "resolved": "https://registry.npmjs.org/@maximai/fumadocs-ui/-/fumadocs-ui-12.5.4-beta1.tgz", + "integrity": "sha512-lC/LfNmU02aWFz7k14LJiGojIfUrps4nPBQPc0xvlx5fhQATseYMWfJatzNhUxfRnE5TnSOa/OIX9+wsoqbJbw==", + "dependencies": { + "@radix-ui/react-accordion": "^1.2.0", + "@radix-ui/react-collapsible": "^1.1.0", + "@radix-ui/react-dialog": "^1.1.1", + "@radix-ui/react-direction": "^1.1.0", + "@radix-ui/react-popover": "^1.1.1", + "@radix-ui/react-scroll-area": "^1.1.0", + "@radix-ui/react-tabs": "^1.1.0", + "@tailwindcss/typography": "^0.5.13", + "class-variance-authority": "^0.7.0", + "cmdk": "^1.0.0", + "fumadocs-core": "12.5.4", + "lucide-react": "^0.408.0", + "next-themes": "^0.3.0", + "react-medium-image-zoom": "^5.2.8", + "swr": "^2.2.5", + "tailwind-merge": "^2.4.0" + }, + "peerDependencies": { + "next": ">= 14.1.0", + "react": ">= 18", + "react-dom": ">= 18" + } + }, + "node_modules/@next/env": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.2.tgz", + "integrity": "sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.2.tgz", + "integrity": "sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz", + "integrity": "sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz", + "integrity": "sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz", + "integrity": "sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz", + "integrity": "sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz", + "integrity": "sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz", + "integrity": "sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz", + "integrity": "sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@orama/orama": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.6.tgz", + "integrity": "sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==", + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/@radix-ui/number": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", + "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==" + }, + "node_modules/@radix-ui/primitive": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", + "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==" + }, + "node_modules/@radix-ui/react-accordion": { + "version": "1.2.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.10.tgz", + "integrity": "sha512-x+URzV1siKmeXPSUIQ22L81qp2eOhjpy3tgteF+zOr4d1u0qJnFuyBF4MoQRhmKP6ivDxlvDAvqaF77gh7DOIw==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collapsible": "1.1.10", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-arrow": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.6.tgz", + "integrity": "sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collapsible": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.10.tgz", + "integrity": "sha512-O2mcG3gZNkJ/Ena34HurA3llPOEA/M4dJtIRMa6y/cknRDC8XY5UZBInKTsUwW5cUue9A4k0wi1XU5fKBzKe1w==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-collection": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.6.tgz", + "integrity": "sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-compose-refs": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", + "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-context": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", + "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dialog": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.13.tgz", + "integrity": "sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.9", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.6", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-portal": "1.1.8", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-direction": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", + "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-dismissable-layer": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.9.tgz", + "integrity": "sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-escape-keydown": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-guards": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", + "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-focus-scope": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.6.tgz", + "integrity": "sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-id": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", + "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-navigation-menu": { + "version": "1.2.12", + "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.12.tgz", + "integrity": "sha512-iExvawdu7n6DidDJRU5pMTdi+Z3DaVPN4UZbAGuTs7nJA8P4RvvkEz+XYI2UJjb/Hh23RrH19DakgZNLdaq9Bw==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-dismissable-layer": "1.1.9", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-previous": "1.1.1", + "@radix-ui/react-visually-hidden": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popover": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.13.tgz", + "integrity": "sha512-84uqQV3omKDR076izYgcha6gdpN8m3z6w/AeJ83MSBJYVG/AbOHdLjAgsPZkeC/kt+k64moXFCnio8BbqXszlw==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-dismissable-layer": "1.1.9", + "@radix-ui/react-focus-guards": "1.1.2", + "@radix-ui/react-focus-scope": "1.1.6", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-popper": "1.2.6", + "@radix-ui/react-portal": "1.1.8", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-slot": "1.2.2", + "@radix-ui/react-use-controllable-state": "1.2.2", + "aria-hidden": "^1.2.4", + "react-remove-scroll": "^2.6.3" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-popper": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.6.tgz", + "integrity": "sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==", + "dependencies": { + "@floating-ui/react-dom": "^2.0.0", + "@radix-ui/react-arrow": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1", + "@radix-ui/react-use-rect": "1.1.1", + "@radix-ui/react-use-size": "1.1.1", + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-portal": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.8.tgz", + "integrity": "sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-presence": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", + "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-primitive": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.2.tgz", + "integrity": "sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==", + "dependencies": { + "@radix-ui/react-slot": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-roving-focus": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.9.tgz", + "integrity": "sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-collection": "1.1.6", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-scroll-area": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.8.tgz", + "integrity": "sha512-K5h1RkYA6M0Sn61BV5LQs686zqBsSC0sGzL4/Gw4mNnjzrQcGSc6YXfC6CRFNaGydSdv5+M8cb0eNsOGo0OXtQ==", + "dependencies": { + "@radix-ui/number": "1.1.1", + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-compose-refs": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-use-callback-ref": "1.1.1", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-slot": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.2.tgz", + "integrity": "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==", + "dependencies": { + "@radix-ui/react-compose-refs": "1.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-tabs": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.11.tgz", + "integrity": "sha512-4FiKSVoXqPP/KfzlB7lwwqoFV6EPwkrrqGp9cUYXjwDYHhvpnqq79P+EPHKcdoTE7Rl8w/+6s9rTlsfXHES9GA==", + "dependencies": { + "@radix-ui/primitive": "1.1.2", + "@radix-ui/react-context": "1.1.2", + "@radix-ui/react-direction": "1.1.1", + "@radix-ui/react-id": "1.1.1", + "@radix-ui/react-presence": "1.1.4", + "@radix-ui/react-primitive": "2.1.2", + "@radix-ui/react-roving-focus": "1.1.9", + "@radix-ui/react-use-controllable-state": "1.2.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-callback-ref": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", + "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-controllable-state": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", + "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", + "dependencies": { + "@radix-ui/react-use-effect-event": "0.0.2", + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-effect-event": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", + "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-escape-keydown": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", + "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", + "dependencies": { + "@radix-ui/react-use-callback-ref": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-layout-effect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", + "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-previous": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", + "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", + "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", + "dependencies": { + "@radix-ui/rect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-use-size": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", + "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", + "dependencies": { + "@radix-ui/react-use-layout-effect": "1.1.1" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@radix-ui/react-visually-hidden": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.2.tgz", + "integrity": "sha512-ORCmRUbNiZIv6uV5mhFrhsIKw4UX/N3syZtyqvry61tbGm4JlgQuSn0hk5TwCARsCjkcnuRkSdCE3xfb+ADHew==", + "dependencies": { + "@radix-ui/react-primitive": "2.1.2" + }, + "peerDependencies": { + "@types/react": "*", + "@types/react-dom": "*", + "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + }, + "@types/react-dom": { + "optional": true + } + } + }, + "node_modules/@radix-ui/rect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", + "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" + }, + "node_modules/@shikijs/core": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", + "dependencies": { + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.4" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/rehype": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-1.29.2.tgz", + "integrity": "sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==", + "dependencies": { + "@shikijs/types": "1.29.2", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "1.29.2", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/transformers": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.29.2.tgz", + "integrity": "sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA==", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/types": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@tailwindcss/typography": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", + "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", + "dependencies": { + "lodash.castarray": "^4.4.0", + "lodash.isplainobject": "^4.0.6", + "lodash.merge": "^4.6.2", + "postcss-selector-parser": "6.0.10" + }, + "peerDependencies": { + "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/aria-hidden": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", + "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001717", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", + "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/class-variance-authority": { + "version": "0.7.1", + "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", + "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", + "dependencies": { + "clsx": "^2.1.1" + }, + "funding": { + "url": "https://polar.sh/cva" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true + }, + "node_modules/clsx": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", + "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/cmdk": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", + "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", + "dependencies": { + "@radix-ui/react-compose-refs": "^1.1.1", + "@radix-ui/react-dialog": "^1.1.6", + "@radix-ui/react-id": "^1.1.0", + "@radix-ui/react-primitive": "^2.0.2" + }, + "peerDependencies": { + "react": "^18 || ^19 || ^19.0.0-rc", + "react-dom": "^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/debug": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", + "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/flexsearch": { + "version": "0.7.21", + "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz", + "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==" + }, + "node_modules/fumadocs-core": { + "version": "12.5.4", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-12.5.4.tgz", + "integrity": "sha512-KE6vWCSijo2xYEq+xvebNcNrPK9gcIbigMoZn20AIoOVg7aKGkkshTjwR6M2lXdq9PyV/BdgAO5u+sWlTMebeQ==", + "dependencies": { + "@formatjs/intl-localematcher": "^0.5.4", + "@shikijs/rehype": "^1.10.3", + "@shikijs/transformers": "^1.10.3", + "flexsearch": "0.7.21", + "github-slugger": "^2.0.0", + "negotiator": "^0.6.3", + "npm-to-yarn": "^2.2.1", + "react-remove-scroll": "^2.5.10", + "remark": "^15.0.0", + "remark-gfm": "^4.0.0", + "remark-mdx": "^3.0.1", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^1.10.3", + "swr": "^2.2.5", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "next": ">= 14.1.0", + "react": ">= 18", + "react-dom": ">= 18" + } + }, + "node_modules/fumadocs-ui": { + "version": "15.2.15", + "resolved": "https://registry.npmjs.org/fumadocs-ui/-/fumadocs-ui-15.2.15.tgz", + "integrity": "sha512-2CkzLkv0bP7B0jShrpmHmWLXMcpbHdaFiWDG/l4AWkGf5nN1QhirM1tSsXuwYLmQX9OZXO7xB3HU6smAuUA+kA==", + "dependencies": { + "@radix-ui/react-accordion": "^1.2.8", + "@radix-ui/react-collapsible": "^1.1.8", + "@radix-ui/react-dialog": "^1.1.11", + "@radix-ui/react-direction": "^1.1.1", + "@radix-ui/react-navigation-menu": "^1.2.10", + "@radix-ui/react-popover": "^1.1.11", + "@radix-ui/react-scroll-area": "^1.2.6", + "@radix-ui/react-slot": "^1.2.0", + "@radix-ui/react-tabs": "^1.1.9", + "class-variance-authority": "^0.7.1", + "fumadocs-core": "15.2.15", + "lodash.merge": "^4.6.2", + "next-themes": "^0.4.6", + "postcss-selector-parser": "^7.1.0", + "react-medium-image-zoom": "^5.2.14", + "tailwind-merge": "^3.2.0" + }, + "peerDependencies": { + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x", + "tailwindcss": "^3.4.14 || ^4.0.0" + }, + "peerDependenciesMeta": { + "tailwindcss": { + "optional": true + } + } + }, + "node_modules/fumadocs-ui/node_modules/@formatjs/intl-localematcher": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/core": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.4.0.tgz", + "integrity": "sha512-0YOzTSRDn/IAfQWtK791gs1u8v87HNGToU6IwcA3K7nPoVOrS2Dh6X6A6YfXgPTSkTwR5y6myk0MnI0htjnwrA==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/engine-javascript": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.4.0.tgz", + "integrity": "sha512-1ywDoe+z/TPQKj9Jw0eU61B003J9DqUFRfH+DVSzdwPUFhR7yOmfyLzUrFz0yw8JxFg/NgzXoQyyykXgO21n5Q==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/engine-oniguruma": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.0.tgz", + "integrity": "sha512-zwcWlZ4OQuJ/+1t32ClTtyTU1AiDkK1lhtviRWoq/hFqPjCNyLj22bIg9rB7BfoZKOEOfrsGz7No33BPCf+WlQ==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/langs": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.0.tgz", + "integrity": "sha512-bQkR+8LllaM2duU9BBRQU0GqFTx7TuF5kKlw/7uiGKoK140n1xlLAwCgXwSxAjJ7Htk9tXTFwnnsJTCU5nDPXQ==", + "dependencies": { + "@shikijs/types": "3.4.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/rehype": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-3.4.0.tgz", + "integrity": "sha512-wm7RTSmrcmjZg+F9JRrsH0Brwi36joUMXkUWIDmBGW+XExNEi8Xjmmp2NOBXa3DujZtnL6Dbcg7V6gtZabGoXw==", + "dependencies": { + "@shikijs/types": "3.4.0", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "3.4.0", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/themes": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.0.tgz", + "integrity": "sha512-YPP4PKNFcFGLxItpbU0ZW1Osyuk8AyZ24YEFaq04CFsuCbcqydMvMUTi40V2dkc0qs1U2uZFrnU6s5zI6IH+uA==", + "dependencies": { + "@shikijs/types": "3.4.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/transformers": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.4.0.tgz", + "integrity": "sha512-GrGaOj1/I6h75IU0VvjdWDpqGCynx0bqHzd1rErBTGxrcmusYIBhrV7aEySWyJ6HHb9figeXfcNxUFS1HKUfBw==", + "dependencies": { + "@shikijs/core": "3.4.0", + "@shikijs/types": "3.4.0" + } + }, + "node_modules/fumadocs-ui/node_modules/@shikijs/types": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.0.tgz", + "integrity": "sha512-EUT/0lGiE//7j5N/yTMNMT3eCWNcHJLrRKxT0NDXWIfdfSmFJKfPX7nMmRBrQnWboAzIsUziCThrYMMhjbMS1A==", + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/fumadocs-ui/node_modules/fumadocs-core": { + "version": "15.2.15", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-15.2.15.tgz", + "integrity": "sha512-Ly1xMGW8HYirs/O2yLX3cGHcOM/1nfKTk7gKiQ5J4wycGE1KdWFnGW2S60nLP8itgeqlYAp35FaNDNRDxCzWgA==", + "dependencies": { + "@formatjs/intl-localematcher": "^0.6.1", + "@orama/orama": "^3.1.6", + "@shikijs/rehype": "^3.3.0", + "@shikijs/transformers": "^3.3.0", + "github-slugger": "^2.0.0", + "hast-util-to-estree": "^3.1.3", + "hast-util-to-jsx-runtime": "^2.3.6", + "image-size": "^2.0.2", + "negotiator": "^1.0.0", + "react-remove-scroll": "^2.6.3", + "remark": "^15.0.0", + "remark-gfm": "^4.0.1", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^3.3.0", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@oramacloud/client": "1.x.x || 2.x.x", + "algoliasearch": "4.24.0", + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x" + }, + "peerDependenciesMeta": { + "@oramacloud/client": { + "optional": true + }, + "algoliasearch": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fumadocs-ui/node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fumadocs-ui/node_modules/next-themes": { + "version": "0.4.6", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", + "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", + "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" + } + }, + "node_modules/fumadocs-ui/node_modules/oniguruma-to-es": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/fumadocs-ui/node_modules/postcss-selector-parser": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", + "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/fumadocs-ui/node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/fumadocs-ui/node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/fumadocs-ui/node_modules/shiki": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.4.0.tgz", + "integrity": "sha512-Ni80XHcqhOEXv5mmDAvf5p6PAJqbUc/RzFeaOqk+zP5DLvTPS3j0ckvA+MI87qoxTQ5RGJDVTbdl/ENLSyyAnQ==", + "dependencies": { + "@shikijs/core": "3.4.0", + "@shikijs/engine-javascript": "3.4.0", + "@shikijs/engine-oniguruma": "3.4.0", + "@shikijs/langs": "3.4.0", + "@shikijs/themes": "3.4.0", + "@shikijs/types": "3.4.0", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/fumadocs-ui/node_modules/tailwind-merge": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", + "integrity": "sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "engines": { + "node": ">=6" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true, + "peer": true + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "peer": true + }, + "node_modules/lodash.castarray": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", + "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "peer": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lucide-react": { + "version": "0.408.0", + "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.408.0.tgz", + "integrity": "sha512-8kETAAeWmOvtGIr7HPHm51DXoxlfkNncQ5FZWXR+abX8saQwMYXANWIkUstaYtcKSo/imOe/q+tVFA8ANzdSVA==", + "peerDependencies": { + "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/negotiator": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", + "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/next": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.2.tgz", + "integrity": "sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==", + "peer": true, + "dependencies": { + "@next/env": "15.3.2", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" + }, + "engines": { + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.2", + "@next/swc-darwin-x64": "15.3.2", + "@next/swc-linux-arm64-gnu": "15.3.2", + "@next/swc-linux-arm64-musl": "15.3.2", + "@next/swc-linux-x64-gnu": "15.3.2", + "@next/swc-linux-x64-musl": "15.3.2", + "@next/swc-win32-arm64-msvc": "15.3.2", + "@next/swc-win32-x64-msvc": "15.3.2", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } + } + }, + "node_modules/next-themes": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", + "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", + "peerDependencies": { + "react": "^16.8 || ^17 || ^18", + "react-dom": "^16.8 || ^17 || ^18" + } + }, + "node_modules/npm-to-yarn": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-2.2.1.tgz", + "integrity": "sha512-O/j/ROyX0KGLG7O6Ieut/seQ0oiTpHF2tXAcFbpdTLQFiaNtkyTXXocM1fwpaa60dg1qpWj0nHlbNhx6qwuENQ==", + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + } + }, + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==" + }, + "node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", + "dependencies": { + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" + } + }, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "dependencies": { + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", + "peer": true + }, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.0.10", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", + "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/property-information": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", + "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/react": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", + "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/react-dom": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", + "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0", + "scheduler": "^0.23.2" + }, + "peerDependencies": { + "react": "^18.3.1" + } + }, + "node_modules/react-medium-image-zoom": { + "version": "5.2.14", + "resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.14.tgz", + "integrity": "sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/rpearce" + } + ], + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", + "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/react-remove-scroll": { + "version": "2.6.3", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", + "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "dependencies": { + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "dependencies": { + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/regex": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==" + }, + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/scheduler": { + "version": "0.23.2", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", + "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", + "peer": true, + "dependencies": { + "loose-envify": "^1.1.0" + } + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", + "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", + "hasInstallScript": true, + "optional": true, + "peer": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.7.1" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.1", + "@img/sharp-darwin-x64": "0.34.1", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.1", + "@img/sharp-linux-arm64": "0.34.1", + "@img/sharp-linux-s390x": "0.34.1", + "@img/sharp-linux-x64": "0.34.1", + "@img/sharp-linuxmusl-arm64": "0.34.1", + "@img/sharp-linuxmusl-x64": "0.34.1", + "@img/sharp-wasm32": "0.34.1", + "@img/sharp-win32-ia32": "0.34.1", + "@img/sharp-win32-x64": "0.34.1" + } + }, + "node_modules/shiki": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "peer": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "dependencies": { + "style-to-object": "1.0.8" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "peer": true, + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/swr": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", + "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", + "dependencies": { + "dequal": "^2.0.3", + "use-sync-external-store": "^1.4.0" + }, + "peerDependencies": { + "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/tailwind-merge": { + "version": "2.6.0", + "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", + "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/dcastil" + } + }, + "node_modules/tailwindcss": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz", + "integrity": "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==", + "peer": true + }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sync-external-store": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", + "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", + "peerDependencies": { + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + } + } } From c153ec0a54623e01f1ae0357f6b5c1b731974689 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:29:16 +0100 Subject: [PATCH 070/122] updated gitignore --- .gitignore | 7 ++++++- docs-site/content/docs/data/composedword.mdx | 2 ++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 40b878db..2e295bc2 100644 --- a/.gitignore +++ b/.gitignore @@ -1 +1,6 @@ -node_modules/ \ No newline at end of file +# Dependency directories +node_modules/ +.npm +# Don't ignore these files +!.next/ +!out/ \ No newline at end of file diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/data/composedword.mdx index 949b4e63..e5da072c 100644 --- a/docs-site/content/docs/data/composedword.mdx +++ b/docs-site/content/docs/data/composedword.mdx @@ -1,3 +1,5 @@ + + import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # ComposedWord From aaa590d540316f9312cc81f0d62bd725d059f5eb Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:33:57 +0100 Subject: [PATCH 071/122] Update package.json --- docs-site/package.json | 1 - 1 file changed, 1 deletion(-) diff --git a/docs-site/package.json b/docs-site/package.json index 57d2852d..0a95f634 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -3,7 +3,6 @@ "version": "0.0.0", "private": true, "scripts": { - "prebuild": "node scripts/generate-search-index.js", "build": "next build", "dev": "next dev --turbopack", "start": "next start", From 5e430f5c18e558215da9f21e39b854e76b86263f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:36:21 +0100 Subject: [PATCH 072/122] Update layout.tsx --- docs-site/app/layout.tsx | 1 - 1 file changed, 1 deletion(-) diff --git a/docs-site/app/layout.tsx b/docs-site/app/layout.tsx index 3f262270..e7c6271c 100644 --- a/docs-site/app/layout.tsx +++ b/docs-site/app/layout.tsx @@ -1,5 +1,4 @@ import { Metadata } from 'next'; -import { basePath } from './config'; import './global.css'; import { RootProvider } from 'fumadocs-ui/provider'; From 19d27dbc533b06d26ec04f30d8a48a23bf7e980e Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:39:05 +0100 Subject: [PATCH 073/122] Update layout.config.tsx --- docs-site/app/layout.config.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index be3a29f8..5a25d622 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -14,7 +14,7 @@ export const baseOptions: BaseLayoutProps = { title: ( <> YAKE Logo Date: Wed, 7 May 2025 12:47:19 +0100 Subject: [PATCH 074/122] cleaned pke and updated logo layout --- docs-site/app/layout.config.tsx | 2 +- docs-site/app/layout.tsx | 5 +- pke/yake.py | 459 -------------------------------- 3 files changed, 4 insertions(+), 462 deletions(-) delete mode 100644 pke/yake.py diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index 5a25d622..be3a29f8 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -14,7 +14,7 @@ export const baseOptions: BaseLayoutProps = { title: ( <> YAKE Logoyakelogo.png`, - shortcut: `yakelogo.png`, + icon: `${basePath}/yakelogo.png`, + shortcut: `${basePath}/yakelogo.png`, }, }; diff --git a/pke/yake.py b/pke/yake.py deleted file mode 100644 index 4c2ea94b..00000000 --- a/pke/yake.py +++ /dev/null @@ -1,459 +0,0 @@ -# -*- coding: utf-8 -*- -# Author: Florian Boudin and Vítor Mangaravite -# Date: 09-10-2018 - -"""YAKE keyphrase extraction model. - -Statistical approach to keyphrase extraction described in: - -* Ricardo Campos, Vítor Mangaravite, Arian Pasquali, Alípio Mário Jorge, - Célia Nunes and Adam Jatowt. - YAKE! Collection-Independent Automatic Keyword Extractor. - *Proceedings of ECIR*, pages 806-810, 2018. - -""" - -from __future__ import absolute_import -from __future__ import division -from __future__ import print_function - -import math -import re -import string -from collections import defaultdict - -import numpy -from nltk.metrics import edit_distance - -from pke.base import LoadFile - - -class YAKE(LoadFile): - """YAKE keyphrase extraction model. - - Parameterized example:: - - import pke - from nltk.corpus import stopwords - - # 1. create a YAKE extractor. - extractor = pke.unsupervised.YAKE() - - # 2. load the content of the document. - extractor.load_document(input='path/to/input', - language='en', - normalization=None) - - - # 3. select {1-3}-grams not containing punctuation marks and not - # beginning/ending with a stopword as candidates. - stoplist = stopwords.words('english') - extractor.candidate_selection(n=3, stoplist=stoplist) - - # 4. weight the candidates using YAKE weighting scheme, a window (in - # words) for computing left/right contexts can be specified. - window = 2 - use_stems = False # use stems instead of words for weighting - extractor.candidate_weighting(window=window, - stoplist=stoplist, - use_stems=use_stems) - - # 5. get the 10-highest scored candidates as keyphrases. - # redundant keyphrases are removed from the output using levenshtein - # distance and a threshold. - threshold = 0.8 - keyphrases = extractor.get_n_best(n=10, threshold=threshold) - """ - - def __init__(self): - """Redefining initializer for YAKE. - """ - - super().__init__() - - self.words = defaultdict(set) - """ Container for the vocabulary. """ - - self.contexts = defaultdict(lambda: ([], [])) - """ Container for word contexts. """ - - self.features = defaultdict(dict) - """ Container for word features. """ - - self.surface_to_lexical = {} - """ Mapping from surface form to lexical form. """ - - def candidate_selection(self, n=3, stoplist=None): - """Select 1-3 grams as keyphrase candidates. Candidates beginning or - ending with a stopword are filtered out. Words that do not contain - at least one alpha-numeric character are not allowed. - - Args: - n (int): the n-gram length, defaults to 3. - stoplist (list): the stoplist for filtering candidates, defaults to - the nltk stoplist. - """ - - # select ngrams from 1 to 3 grams - self.ngram_selection(n=n) - - # filter candidates containing punctuation marks - self.candidate_filtering( - stoplist=list(string.punctuation) + - ['-lrb-', '-rrb-', '-lcb-', '-rcb-', '-lsb-', '-rsb-'] - ) - - # initialize empty list if stoplist is not provided - if stoplist is None: - stoplist = self.stoplist - - # further filter candidates - for k in list(self.candidates): - - # get the candidate - v = self.candidates[k] - - # filter candidates starting/ending with a stopword - if v.surface_forms[0][0].lower() in stoplist or \ - v.surface_forms[0][-1].lower() in stoplist or \ - len(v.surface_forms[0][0]) < 3 or \ - len(v.surface_forms[0][-1]) < 3: - del self.candidates[k] - - def _vocabulary_building(self, use_stems=False): - """Build the vocabulary that will be used to weight candidates. Only - words containing at least one alpha-numeric character are kept. - - Args: - use_stems (bool): whether to use stems instead of lowercase words - for weighting, defaults to False. - """ - - # loop through sentences - for i, sentence in enumerate(self.sentences): - - # compute the offset shift for the sentence - shift = sum(s.length for s in self.sentences[0:i]) - - # loop through words in sentence - for j, word in enumerate(sentence.words): - - # consider words containing at least one alpha-numeric character - if self._is_alphanum(word) and \ - not re.search('(?i)^-[lr][rcs]b-$', word): - - # get the word or stem - index = word.lower() - if use_stems: - index = sentence.stems[j] - - # add the word occurrence - self.words[index].add((shift + j, shift, i, word)) - - def _contexts_building(self, use_stems=False, window=2): - """Build the contexts of the words for computing the relatdeness - feature. Words that occur within a window of n words are considered as - context words. - - Args: - use_stems (bool): whether to use stems instead of lowercase words - for weighting, defaults to False. - window (int): the size in words of the window used for computing - co-occurrence counts, defaults to 2. - """ - # change: split sentence to block of words - # (this is important to avoid consider cooccurrence between terms like - # word1 and word2 on sentence "word1, word2") - - # loop through sentences - for sentence in enumerate(self.sentences): - - # lowercase the words - words = [w.lower() for w in sentence.words] - - # replace with stems if needed - if use_stems: - words = sentence.stems - - buffer = [] - # loop through words in sentence - for word in enumerate(words): - - # skip if word is not in vocabulary - if word not in self.words: - buffer = [] - continue - - # add the right context - for w in [ w for w in list(buffer[max(0, len(buffer) - window):len(buffer)]) ]: - self.contexts[word][0].append(w) - self.contexts[w][1].append(word) - - buffer.append(word) - buffer = [] - - def _feature_extraction(self, stoplist=None): - """Compute the weight of individual words using the following five - features: - - 1. CASING: gives importance to acronyms or words starting with a - capital letter. - - CASING(w) = max(tf(U(w)), tf(A(w))) / (1 + log(tf(w))) - - with tf(U(w) being the # times the word starts with an uppercase - letter, excepts beginning of sentences. tf(A(w)) is the # times - the word is marked as an acronym. - - 2. POSITION: gives importance to words occurring at the beginning of - the document. - - POSITION(w) = log( log( 3 + Median(Sen(w)) ) ) - - with Sen(w) contains the position of the sentences where w - occurs. - - 3. FREQUENCY: gives importance to frequent words. - - FREQUENCY(w) = tf(w) / ( MEAN_tf + STD_tf) - - with MEAN_tf and STD_tf computed on valid_tfs which are words - that are not stopwords. - - 4. RELATEDNESS: gives importance to words that do not have the - characteristics of stopwords. - - RELATEDNESS(w) = 1 + (WR+WL)*(tf(w)/MAX_tf) + PL + PR - - 5. DIFFERENT: gives importance to words that occurs in multiple - sentences. - - DIFFERENT(w) = SF(w) / # sentences - - with SF(w) being the sentence frequency of word w. - - Args: - stoplist (list): the stoplist for filtering candidates, defaults to - the nltk stoplist. - """ - # change: Update the WRel feature generation - - # initialize stoplist list if not provided - if stoplist is None: - stoplist = self.stoplist - - # get the Term Frequency of each word - tf = [len(self.words[w]) for w in self.words] - - # get the Term Frequency of non-stop words - tf_nsw = [len(self.words[w]) for w in self.words if w not in stoplist] - - # compute statistics - mean_tf = numpy.mean(tf_nsw) - std_tf = numpy.std(tf_nsw) - max_tf = max(tf) - - # Loop through the words - for word in self.words: - self.features[word]['isstop'] = word in stoplist or len(word) < 3 - - # Term Frequency - self.features[word]['tf'] = len(self.words[word]) - - # Uppercase/Acronym Term Frequencies - self.features[word]['tf_A'] = 0 - self.features[word]['tf_U'] = 0 - for (offset, shift, surface_form) in self.words[word]: - if surface_form.isupper() and len(word) > 1: - self.features[word]['tf_A'] += 1 - elif surface_form[0].isupper() and offset != shift: - self.features[word]['tf_U'] += 1 - - # 1. CASING feature - self.features[word]['CASING'] = max(self.features[word]['tf_A'], - self.features[word]['tf_U']) - self.features[word]['CASING'] /= 1.0 + math.log( - self.features[word]['tf']) - - # 2. POSITION feature - sentence_ids = list(set([t[2] for t in self.words[word]])) - self.features[word]['POSITION'] = math.log(3.0 + numpy.median(sentence_ids)) - self.features[word]['POSITION'] = math.log(self.features[word]['POSITION']) - - # 3. FREQUENCY feature - self.features[word]['FREQUENCY'] = self.features[word]['tf'] - self.features[word]['FREQUENCY'] /= (mean_tf + std_tf) - - # 4. RELATEDNESS feature - self.features[word]['WL'] = 0.0 - if len(self.contexts[word][0]): - self.features[word]['WL'] = len(set(self.contexts[word][0])) - self.features[word]['WL'] /= len(self.contexts[word][0]) - self.features[word]['PL'] = len(set(self.contexts[word][0])) / max_tf - - self.features[word]['WR'] = 0.0 - if len(self.contexts[word][1]): - self.features[word]['WR'] = len(set(self.contexts[word][1])) - self.features[word]['WR'] /= len(self.contexts[word][1]) - self.features[word]['PR'] = len(set(self.contexts[word][1])) / max_tf - - self.features[word]['RELATEDNESS'] = 1 - #self.features[word]['RELATEDNESS'] += self.features[word]['PL'] - #self.features[word]['RELATEDNESS'] += self.features[word]['PR'] - self.features[word]['RELATEDNESS'] += (self.features[word]['WR'] + - self.features[word]['WL']) * \ - (self.features[word]['tf'] / max_tf) - - # 5. DIFFERENT feature - self.features[word]['DIFFERENT'] = len(set(sentence_ids)) - self.features[word]['DIFFERENT'] /= len(self.sentences) - - # assemble the features to weight words - A = self.features[word]['CASING'] - B = self.features[word]['POSITION'] - C = self.features[word]['FREQUENCY'] - D = self.features[word]['RELATEDNESS'] - E = self.features[word]['DIFFERENT'] - self.features[word]['weight'] = (D * B) / (A + (C / D) + (E / D)) - - def candidate_weighting(self, window=2, stoplist=None, use_stems=False): - """Candidate weight calculation as described in the YAKE paper. - - Args: - stoplist (list): the stoplist for filtering candidates, defaults to - the nltk stoplist. - use_stems (bool): whether to use stems instead of lowercase words - for weighting, defaults to False. - window (int): the size in words of the window used for computing - co-occurrence counts, defaults to 2. - """ - # change: Consider stopwords between non-stopwords on condidate weight generation - - # build the vocabulary - self._vocabulary_building(use_stems=use_stems) - - # extract the contexts - self._contexts_building(use_stems=use_stems, window=window) - - # compute the word features - self._feature_extraction(stoplist=stoplist) - - # compute candidate weights - for k, v in self.candidates.items(): - - # use stems - if use_stems: - weights = [self.features[t]['weight'] for t in v.lexical_form] - self.weights[k] = numpy.prod(weights) - self.weights[k] /= len(v.offsets) * (1 + sum(weights)) - - # use words - else: - lowercase_forms = [' '.join(t).lower() for t in v.surface_forms] - for i, candidate in enumerate(lowercase_forms): - tf = lowercase_forms.count(candidate) - words_cand = [t.lower() for t in v.surface_forms[i]] - prod_ = 1. - sum_ = 0. - for j, word_cand in enumerate(words_cand): - if self.features[word_cand]['isstop']: - term_left = words_cand[j-1] - term_right = words_cand[j+1] - term_stop = word_cand - - prob_t1 = self.contexts[ - term_left][1].count(term_stop) / self.features[term_left]['tf'] - - prob_t2 = self.contexts[ - term_stop][0].count(term_right) / self.features[term_right]['tf'] - - prob = prob_t1 * prob_t2 - prod_ *= (1 + (1 - prob ) ) - sum_ -= (1 - prob) - else: - prod_ *= self.features[word_cand]['weight'] - sum_ += self.features[word_cand]['weight'] - self.weights[candidate] = prod_ - self.weights[candidate] /= tf * (1 + sum_) - self.surface_to_lexical[candidate] = k - - def is_redundant(self, candidate, prev, threshold=0.8): - """Test if one candidate is redundant with respect to a list of already - selected candidates. A candidate is considered redundant if its - levenshtein distance, with another candidate that is ranked higher in - the list, is greater than a threshold. - - Args: - candidate (str): the lexical form of the candidate. - prev (list): the list of already selected candidates. - threshold (float): the threshold used when computing the - levenshtein distance, defaults to 0.8. - """ - - # loop through the already selected candidates - for prev_candidate in prev: - dist = edit_distance(candidate, prev_candidate) - dist /= max(len(candidate), len(prev_candidate)) - if (1.0 - dist) > threshold: - return True - return False - - def get_n_best(self, - n=10, - redundancy_removal=True, - stemming=False,): - """ Returns the n-best candidates given the weights. - - Args: - n (int): the number of candidates, defaults to 10. - redundancy_removal (bool): whether redundant keyphrases are - filtered out from the n-best list using levenshtein - distance, defaults to True. - stemming (bool): whether to extract stems or surface forms - (lowercased, first occurring form of candidate), default to - stems. - threshold (float): the threshold used when computing the - levenshtein distance, defaults to 0.8. - """ - - # sort candidates by ascending weight - best = sorted(self.weights, key=self.weights.get, reverse=False) - - # remove redundant candidates - if redundancy_removal: - - # initialize a new container for non redundant candidates - non_redundant_best = [] - - # loop through the best candidates - for candidate in best: - - # test wether candidate is redundant - if self.is_redundant(candidate, non_redundant_best): - continue - - # add the candidate otherwise - non_redundant_best.append(candidate) - - # break computation if the n-best are found - if len(non_redundant_best) >= n: - break - - # copy non redundant candidates in best container - best = non_redundant_best - - # get the list of best candidates as (lexical form, weight) tuples - n_best = [(u, self.weights[u]) for u in best[:min(n, len(best))]] - - # replace with surface forms if no stemming - if stemming: - for i, (candidate, weight) in enumerate(n_best): - - if candidate not in self.candidates: - candidate = self.surface_to_lexical[candidate] - - candidate = ' '.join(self.candidates[candidate].lexical_form) - n_best[i] = (candidate, weight) - - # return the list of best candidates - return n_best From fc8cf81ac6a0bcc9cf744a5ba95659be57ae43dc Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 12:52:58 +0100 Subject: [PATCH 075/122] Update config.ts --- docs-site/app/config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/app/config.ts b/docs-site/app/config.ts index 689dc135..f4f1e199 100644 --- a/docs-site/app/config.ts +++ b/docs-site/app/config.ts @@ -1,2 +1,2 @@ // app/config.ts -export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf/docs-site' : ''; \ No newline at end of file +export const basePath = process.env.NODE_ENV === 'production' ? '/yakerf' : ''; \ No newline at end of file From 954feca4ac706ff6074b73f43f3c47fa2b974f11 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 13:01:23 +0100 Subject: [PATCH 076/122] Update layout.config.tsx --- docs-site/app/layout.config.tsx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index be3a29f8..9e0a9ad0 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -13,10 +13,10 @@ export const baseOptions: BaseLayoutProps = { nav: { title: ( <> - YAKE Logo From f5366339a4cfb97b947173362050f70b7b37f747 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Wed, 7 May 2025 13:07:30 +0100 Subject: [PATCH 077/122] Update layout.config.tsx --- docs-site/app/layout.config.tsx | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/docs-site/app/layout.config.tsx b/docs-site/app/layout.config.tsx index 9e0a9ad0..25fbf162 100644 --- a/docs-site/app/layout.config.tsx +++ b/docs-site/app/layout.config.tsx @@ -1,5 +1,4 @@ -import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared'; -import { basePath } from './config'; +import type { BaseLayoutProps } from 'fumadocs-ui/layouts/shared';; import Image from 'next/image'; /** @@ -13,8 +12,8 @@ export const baseOptions: BaseLayoutProps = { nav: { title: ( <> - YAKE Logo Date: Wed, 7 May 2025 13:52:46 +0100 Subject: [PATCH 078/122] updated documentation --- docs-site/app/(home)/page.tsx | 2 +- docs-site/content/docs/core/yake.mdx | 141 +++++++++++-- docs-site/content/docs/data/composedword.mdx | 181 +++++++++++++++-- docs-site/content/docs/data/singleword.mdx | 186 +++++++++++++++--- yake/__pycache__/yake.cpython-310.pyc | Bin 4059 -> 8232 bytes .../__pycache__/composed_word.cpython-310.pyc | Bin 7005 -> 11292 bytes .../__pycache__/single_word.cpython-310.pyc | Bin 6086 -> 10979 bytes yake/data/__pycache__/utils.cpython-310.pyc | Bin 2268 -> 4415 bytes yake/data/composed_word.py | 184 ++++++++++++++++- yake/data/single_word.py | 167 ++++++++++++++-- yake/data/utils.py | 94 +++++++-- yake/yake.py | 143 +++++++++++++- 12 files changed, 1003 insertions(+), 95 deletions(-) diff --git a/docs-site/app/(home)/page.tsx b/docs-site/app/(home)/page.tsx index 3500b956..8d3c00bb 100644 --- a/docs-site/app/(home)/page.tsx +++ b/docs-site/app/(home)/page.tsx @@ -3,7 +3,7 @@ import Link from 'next/link'; export default function HomePage() { return (
    -

    Hello

    +

    Welcome to YAKE! Documentation website

    Open{' '} **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. @@ -10,7 +9,14 @@ The `KeywordExtractor` class is the main entry point for YAKE (Yet Another Keywo ## Module Overview ```python -"""Module for keyword extraction from text documents.""" +""" +Keyword extraction module for YAKE. + +This module provides the KeywordExtractor class which serves as the main entry point +for the YAKE keyword extraction algorithm. It handles configuration, stopword loading, +deduplication of similar keywords, and the entire extraction pipeline from raw text +to ranked keywords. +""" import os import jellyfish @@ -18,7 +24,7 @@ from yake.data import DataCore from .Levenshtein import Levenshtein ``` -The `KeywordExtractor` class provides an interface to extract and process keywords from text documents using statistical features and deduplication. +The `KeywordExtractor` class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. ## Class Definition @@ -30,7 +36,21 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def __init__(self, **kwargs): - """Initialize the KeywordExtractor with configuration parameters.""" + """ + Initialize the KeywordExtractor with configuration parameters. + + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values self.config = { "lan": kwargs.get("lan", "en"), "n": kwargs.get("n", 3), @@ -41,6 +61,7 @@ The `KeywordExtractor` class provides an interface to extract and process keywor "features": kwargs.get("features", None), } + # Load appropriate stopwords and deduplication function self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) ``` @@ -51,11 +72,11 @@ The `KeywordExtractor` class provides an interface to extract and process keywor **Parameters:** - `lan` (str, optional): Language for stopwords (default: "en") - `n` (int, optional): Maximum n-gram size (default: 3) -- `dedup_lim` (float, optional): Deduplication similarity threshold (default: 0.9) +- `dedup_lim` (float, optional): Similarity threshold for deduplication (default: 0.9) - `dedup_func` (str, optional): Deduplication function to use (default: "seqm") -- `window_size` (int, optional): Window size for co-occurrence (default: 1) +- `window_size` (int, optional): Size of word window for co-occurrence (default: 1) - `top` (int, optional): Maximum number of keywords to return (default: 20) -- `features` (dict, optional): Custom features for keyword scoring (default: None) +- `features` (list, optional): List of features to use for scoring (default: None = all features) - `stopwords` (set, optional): Custom stopwords set (default: None, loads from language file) ## Core Methods @@ -68,35 +89,58 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def extract_keywords(self, text): - """Extract keywords from text.""" + """ + Extract keywords from text. + + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from + + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input if not text: return [] + # Normalize text by replacing newlines with spaces text = text.replace("\n", " ") - # Create a config dictionary for DataCore + # Create a configuration dictionary for DataCore core_config = { "windows_size": self.config["window_size"], "n": self.config["n"], } + # Initialize the data core with the text dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + # Build features for single terms and multi-word terms dc.build_single_terms_features(features=self.config["features"]) dc.build_mult_terms_features(features=self.config["features"]) + # Collect and sort all valid candidates by score (lower is better) result_set = [] candidates_sorted = sorted( [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h ) + # If deduplication is disabled, return all candidates up to the limit if self.config["dedup_lim"] >= 1.0: return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ : self.config["top"] ] + # Perform deduplication by comparing candidates for cand in candidates_sorted: should_add = True + # Check if this candidate is too similar to any already selected for h, cand_result in result_set: if ( self.dedup_function(cand.unique_kw, cand_result.unique_kw) @@ -105,11 +149,15 @@ The `KeywordExtractor` class provides an interface to extract and process keywor should_add = False break + # Add candidate if it passes deduplication if should_add: result_set.append((cand.h, cand)) + + # Stop once we have enough candidates if len(result_set) == self.config["top"]: break + # Format results as (keyword, score) tuples return [(cand.kw, h) for (h, cand) in result_set] ``` @@ -120,7 +168,7 @@ The `KeywordExtractor` class provides an interface to extract and process keywor - `text` (str): The text to extract keywords from **Returns:** -- list: A list of tuples containing (keyword, score) pairs, sorted by relevance +- list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) ## Helper Methods @@ -132,24 +180,41 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def _load_stopwords(self, stopwords): - """Load stopwords from file or use provided set.""" + """ + Load stopwords from file or use provided set. + + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use + + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available if stopwords is not None: return set(stopwords) + # Determine the path to the appropriate stopword list dir_path = os.path.dirname(os.path.realpath(__file__)) local_path = os.path.join( "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" ) + # Fall back to language-agnostic list if specific language not available if not os.path.exists(os.path.join(dir_path, local_path)): local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") resource_path = os.path.join(dir_path, local_path) + # Attempt to read the stopword file with UTF-8 encoding try: with open(resource_path, encoding="utf-8") as stop_file: return set(stop_file.read().lower().split("\n")) except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails print("Warning: reading stopword list as ISO-8859-1") with open(resource_path, encoding="ISO-8859-1") as stop_file: return set(stop_file.read().lower().split("\n")) @@ -164,7 +229,19 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def _get_dedup_function(self, func_name): - """Retrieve the appropriate deduplication function.""" + """ + Retrieve the appropriate deduplication function. + + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use + + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations return { "jaro_winkler": self.jaro, "jaro": self.jaro, @@ -186,6 +263,19 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def jaro(self, cand1, cand2): + """ + Calculate Jaro similarity between two strings. + + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return jellyfish.jaro(cand1, cand2) ``` @@ -198,6 +288,19 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def levs(self, cand1, cand2): + """ + Calculate normalized Levenshtein similarity between two strings. + + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) ``` @@ -210,6 +313,20 @@ The `KeywordExtractor` class provides an interface to extract and process keywor ```python def seqm(self, cand1, cand2): + """ + Calculate sequence matcher ratio between two strings. + + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return Levenshtein.ratio(cand1, cand2) ``` diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/data/composedword.mdx index e5da072c..400d763b 100644 --- a/docs-site/content/docs/data/composedword.mdx +++ b/docs-site/content/docs/data/composedword.mdx @@ -1,5 +1,3 @@ - - import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' # ComposedWord @@ -16,7 +14,7 @@ class ComposedWord: # Initialize a composed word from term tuples [(tag, word, term_obj)] ``` -The `ComposedWord` class processes and scores multi-word candidates for keyword extraction based on their constituent terms and statistical properties. +The `ComposedWord` class stores and aggregates information about multi-word keyword candidates, calculating combined scores from the properties of their constituent terms. It tracks statistics like term frequency, integrity, and provides methods to validate whether a phrase is likely to be a good keyword. ## Constructor @@ -27,7 +25,15 @@ The `ComposedWord` class processes and scores multi-word candidates for keyword ```python - def __init__(self, terms): # [ (tag, word, term_obj) ] + def __init__(self, terms): + """ + Initialize a ComposedWord object representing a multi-word term. + + Args: + terms (list): List of tuples (tag, word, term_obj) representing + the individual words in this phrase. Can be None to + initialize an invalid candidate. + """ # If terms is None, initialize an invalid candidate if terms is None: self.data = { @@ -96,18 +102,33 @@ invalid_composed = ComposedWord(None) ```python def update_h(self, features=None, is_virtual=False): - """Update the term's score based on its constituent terms.""" + """ + Update the term's score based on its constituent terms. + + Calculates a combined relevance score for the multi-word term by + aggregating scores of its constituent words, with special handling for + stopwords to improve keyword quality. + + Args: + features (list, optional): Specific features to use for scoring + is_virtual (bool): Whether this is a virtual candidate not in text + """ sum_h = 0.0 prod_h = 1.0 + # Process each term in the phrase for t, term_base in enumerate(self.terms): + # Handle non-stopwords directly if not term_base.stopword: sum_h += term_base.h prod_h *= term_base.h + # Handle stopwords according to configured weight method else: if STOPWORD_WEIGHT == "bi": + # BiWeight: use probabilities of adjacent term connections prob_t1 = 0.0 + # Check connection with previous term if t > 0 and term_base.g.has_edge( self.terms[t - 1].id, self.terms[t].id ): @@ -115,7 +136,9 @@ invalid_composed = ComposedWord(None) term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] / self.terms[t - 1].tf ) + prob_t2 = 0.0 + # Check connection with next term if t < len(self.terms) - 1 and term_base.g.has_edge( self.terms[t].id, self.terms[t + 1].id ): @@ -124,22 +147,28 @@ invalid_composed = ComposedWord(None) / self.terms[t + 1].tf ) + # Calculate combined probability and update scores prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob elif STOPWORD_WEIGHT == "h": + # HWeight: treat stopwords like normal words sum_h += term_base.h prod_h *= term_base.h elif STOPWORD_WEIGHT == "none": + # None: ignore stopwords entirely pass + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) ``` @@ -152,10 +181,21 @@ invalid_composed = ComposedWord(None) ```python def is_valid(self): - """Check if this candidate is valid.""" + """ + Check if this candidate is a valid keyword phrase. + + A valid keyword phrase doesn't contain unusual characters or digits, + and doesn't start or end with stopwords. + + Returns: + bool: True if this is a valid keyword candidate, False otherwise + """ is_valid = False + # Check that at least one tag sequence has no unusual characters or digits for tag in self.tags: is_valid = is_valid or ("u" not in tag and "d" not in tag) + + # A valid keyword cannot start or end with a stopword return is_valid and not self.start_or_end_stopwords ``` @@ -168,7 +208,16 @@ invalid_composed = ComposedWord(None) ```python def uptade_cand(self, cand): - """Update this candidate with data from another candidate.""" + """ + Update this candidate with data from another candidate. + + Merges tag information from another candidate representing + the same keyword phrase. + + Args: + cand (ComposedWord): Another instance of the same keyword to merge with + """ + # Add all tags from the other candidate to this one's tags for tag in cand.tags: self.tags.add(tag) ``` @@ -182,14 +231,30 @@ invalid_composed = ComposedWord(None) ```python def get_composed_feature(self, feature_name, discart_stopword=True): - """Get composed features from constituent terms.""" + """ + Get composed features from constituent terms. + + Calculates combined metrics for the phrase based on individual term metrics. + + Args: + feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") + discart_stopword (bool): Whether to ignore stopwords in calculation + + Returns: + tuple: (sum, prod, prod_over_sum) of the feature values + """ + # Get feature values from each term, filtering stopwords if requested list_of_features = [ getattr(term, feature_name) for term in self.terms if (discart_stopword and not term.stopword) or not discart_stopword ] + + # Calculate aggregate statistics sum_f = sum(list_of_features) prod_f = np.prod(list_of_features) + + # Return the three aggregated values return (sum_f, prod_f, prod_f / (sum_f + 1)) ``` @@ -202,23 +267,50 @@ invalid_composed = ComposedWord(None) ```python def build_features(self, params): - """Build features for machine learning or evaluation.""" + """ + Build features for machine learning or evaluation. + + Generates feature vectors that can be used for model training, + evaluation, or visualization of keyword properties. + + Args: + params (dict): Parameters for feature generation including: + - features (list): Features to include + - _stopword (list): Whether to consider stopwords [True, False] + - doc_id (str): Document identifier + - keys (list): Gold standard keywords for evaluation + - rel (bool): Whether to include relevance feature + - rel_approx (bool): Whether to include approximate relevance + - is_virtual (bool): Whether this is a virtual candidate + + Returns: + tuple: (features_list, column_names, matched_gold_standards) + """ + # Get feature configuration from parameters features = params.get( "features", ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] ) _stopword = params.get("_stopword", [True, False]) + + # Use defaults if not provided if features is None: features = ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] if _stopword is None: _stopword = [True, False] + + # Initialize feature collection columns = [] features_cand = [] seen = set() + + # Add document identifier if provided if params.get("doc_id") is not None: columns.append("doc_id") features_cand.append(params["doc_id"]) + # Add gold standard match features if keys are provided if params.get("keys") is not None: + # Exact match feature if params.get("rel", True): columns.append("rel") if self.unique_kw in params["keys"] or params.get("is_virtual", False): @@ -227,10 +319,12 @@ invalid_composed = ComposedWord(None) else: features_cand.append(0) + # Approximate match feature using string similarity if params.get("rel_approx", True): columns.append("rel_approx") max_gold_ = ("", 0.0) for gold_key in params["keys"]: + # Calculate normalized Levenshtein similarity dist = 1.0 - jellyfish.levenshtein_distance( gold_key, self.unique_kw, @@ -239,6 +333,7 @@ invalid_composed = ComposedWord(None) features_cand.append(max_gold_[1]) features_cand.append(max_gold_[1]) + # Add basic candidate properties columns.append("kw") features_cand.append(self.unique_kw) columns.append("h") @@ -250,21 +345,28 @@ invalid_composed = ComposedWord(None) columns.append("is_virtual") columns.append("is_virtual") features_cand.append(int(params.get("is_virtual", False))) + + # Add all requested features with different stopword handling for feature_name in features: for discart_stopword in _stopword: + # Calculate aggregate feature metrics (f_sum, f_prod, f_sum_prod) = self.get_composed_feature( feature_name, discart_stopword=discart_stopword ) + + # Add sum feature columns.append( f"{'n' if discart_stopword else ''}s_sum_K{feature_name}" ) features_cand.append(f_sum) + # Add product feature columns.append( f"{'n' if discart_stopword else ''}s_prod_K{feature_name}" ) features_cand.append(f_prod) + # Add sum-product feature columns.append( f"{'n' if discart_stopword else ''}s_sum_prod_K{feature_name}" ) @@ -282,15 +384,28 @@ invalid_composed = ComposedWord(None) ```python def update_h_old(self, features=None, is_virtual=False): - """Legacy method for updating the term's score.""" + """ + Legacy method for updating the term's score. + + Preserved for backward compatibility but uses a slightly different + approach to calculate scores. + + Args: + features (list, optional): Specific features to use for scoring + is_virtual (bool): Whether this is a virtual candidate not in text + """ sum_h = 0.0 prod_h = 1.0 + # Process each term in the phrase for t, term_base in enumerate(self.terms): + # Skip terms with zero frequency in virtual candidates if is_virtual and term_base.tf == 0: continue + # Handle stopwords with probability-based weighting if term_base.stopword: + # Calculate probability of co-occurrence with previous term prob_t1 = 0.0 if term_base.g.has_edge(self.terms[t - 1].id, self.terms[t].id): prob_t1 = ( @@ -298,6 +413,7 @@ invalid_composed = ComposedWord(None) / self.terms[t - 1].tf ) + # Calculate probability of co-occurrence with next term prob_t2 = 0.0 if term_base.g.has_edge(self.terms[t].id, self.terms[t + 1].id): prob_t2 = ( @@ -305,17 +421,25 @@ invalid_composed = ComposedWord(None) / self.terms[t + 1].tf ) + # Update scores based on combined probability prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob else: + # Handle normal words directly sum_h += term_base.h prod_h *= term_base.h + + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) ``` @@ -374,10 +498,21 @@ Candidates are considered valid if: ```python def is_valid(self): - """Check if this candidate is valid.""" + """ + Check if this candidate is a valid keyword phrase. + + A valid keyword phrase doesn't contain unusual characters or digits, + and doesn't start or end with stopwords. + + Returns: + bool: True if this is a valid keyword candidate, False otherwise + """ is_valid = False + # Check that at least one tag sequence has no unusual characters or digits for tag in self.tags: is_valid = is_valid or ("u" not in tag and "d" not in tag) + + # A valid keyword cannot start or end with a stopword return is_valid and not self.start_or_end_stopwords ``` @@ -387,14 +522,30 @@ When analyzing multi-word terms, the `ComposedWord` class composes features from ```python def get_composed_feature(self, feature_name, discart_stopword=True): - """Get composed features from constituent terms.""" + """ + Get composed features from constituent terms. + + Calculates combined metrics for the phrase based on individual term metrics. + + Args: + feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") + discart_stopword (bool): Whether to ignore stopwords in calculation + + Returns: + tuple: (sum, prod, prod_over_sum) of the feature values + """ + # Get feature values from each term, filtering stopwords if requested list_of_features = [ getattr(term, feature_name) for term in self.terms if (discart_stopword and not term.stopword) or not discart_stopword ] + + # Calculate aggregate statistics sum_f = sum(list_of_features) prod_f = np.prod(list_of_features) + + # Return the three aggregated values return (sum_f, prod_f, prod_f / (sum_f + 1)) ``` @@ -417,9 +568,9 @@ Lower scores indicate better keyword candidates. The `ComposedWord` class handles stopwords differently based on the `STOPWORD_WEIGHT` configuration: -- `"bi"`: Uses co-occurrence probabilities to weight stopwords -- `"h"`: Uses stopword h-scores directly -- `"none"`: Ignores stopwords in scoring +- `"bi"`: Uses bi-directional co-occurrence probabilities to weight stopwords +- `"h"`: Uses stopword h-scores directly (treats stopwords like normal words) +- `"none"`: Ignores stopwords in scoring completely ## Complete Usage Example diff --git a/docs-site/content/docs/data/singleword.mdx b/docs-site/content/docs/data/singleword.mdx index e854cc4b..79d74cf3 100644 --- a/docs-site/content/docs/data/singleword.mdx +++ b/docs-site/content/docs/data/singleword.mdx @@ -2,19 +2,27 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/ # SingleWord -The `SingleWord` class represents individual terms (words) in YAKE (Yet Another Keyword Extractor), providing statistical features used in keyword scoring. +The `SingleWord` class represents individual terms in YAKE (Yet Another Keyword Extractor), providing the statistical features and measurements used in keyword extraction. > **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. -## Class Overview +## Module Overview ```python -class SingleWord: - def __init__(self, unique, idx, graph): - # Initialize a single word term with attributes and metrics +""" +Single word term representation module for YAKE keyword extraction. + +This module contains the SingleWord class which represents individual terms +in a document for keyword extraction. It tracks statistical features like +term frequency, position, and relationships with other terms to calculate +a relevance score for each word. +""" + +import math +import numpy as np ``` -The `SingleWord` class tracks term frequency, position, and other statistical features that help determine the term's importance in the document. +The `SingleWord` class stores and calculates statistical features for individual terms, including frequency, position, spread, and relationship metrics. These features are used to calculate a relevance score that indicates the word's importance in the document. ## Constructor @@ -26,7 +34,14 @@ The `SingleWord` class tracks term frequency, position, and other statistical fe ```python def __init__(self, unique, idx, graph): - """Initialize a single word term with attributes and metrics.""" + """ + Initialize a SingleWord term object. + + Args: + unique (str): The unique normalized term this object represents + idx (int): Unique identifier for the term in the document + graph (networkx.DiGraph): Word co-occurrence graph from the document + """ self.id = idx # Fast access needed as it's used in graph operations self.g = graph # Fast access needed for network calculations @@ -57,14 +72,14 @@ The `SingleWord` class tracks term frequency, position, and other statistical fe **Parameters:** -- `unique` (str): The unique term (normalized word form) -- `idx` (int): Numeric identifier for the term -- `graph` (networkx.DiGraph): Reference to the co-occurrence graph +- `unique` (str): The unique normalized term this object represents +- `idx` (int): Unique identifier for the term in the document +- `graph` (networkx.DiGraph): Word co-occurrence graph from the document **Example:** ```python import networkx as nx -from yake.datarepresentation import SingleWord +from yake.data import SingleWord # Create a graph g = nx.DiGraph() @@ -75,7 +90,7 @@ term = SingleWord("algorithm", 1, g) ## Dictionary-Style Access -The `SingleWord` class supports dictionary-style attribute access for flexibility: +The `SingleWord` class provides dictionary-style attribute access for flexibility: @@ -85,7 +100,15 @@ The `SingleWord` class supports dictionary-style attribute access for flexibilit ```python def __getitem__(self, key): - """Access attributes dictionary-style with obj['key'].""" + """ + Access attributes dictionary-style with obj['key']. + + Args: + key (str): The attribute key to access + + Returns: + Any: The value associated with the key + """ return self.data[key] ``` @@ -98,7 +121,13 @@ The `SingleWord` class supports dictionary-style attribute access for flexibilit ```python def __setitem__(self, key, value): - """Set attributes dictionary-style with obj['key'] = value.""" + """ + Set attributes dictionary-style with obj['key'] = value. + + Args: + key (str): The attribute key to set + value (Any): The value to associate with the key + """ self.data[key] = value ``` @@ -111,7 +140,16 @@ The `SingleWord` class supports dictionary-style attribute access for flexibilit ```python def get(self, key, default=None): - """Get with default, mimicking dict.get().""" + """ + Get with default, mimicking dict.get(). + + Args: + key (str): The attribute key to access + default (Any, optional): The default value if key doesn't exist + + Returns: + Any: The value associated with the key or the default value + """ return self.data.get(key, default) ``` @@ -136,13 +174,28 @@ position = term.get("wpos", 1.0) ```python def add_occur(self, tag, sent_id, pos_sent, pos_text): - """Add occurrence information.""" + """ + Add occurrence information for this term. + + Records where in the document this term appears, tracking sentence ID, + position within sentence, global position in text, and updates term + frequency counters. + + Args: + tag (str): Part-of-speech tag for this occurrence ('a' for acronym, 'n' for proper noun, etc.) + sent_id (int): Sentence ID where the term appears + pos_sent (int): Position within the sentence + pos_text (int): Global position in the entire text + """ + # Create empty list for this sentence if it's the first occurrence if sent_id not in self.occurs: self.occurs[sent_id] = [] + # Record position information for this occurrence self.occurs[sent_id].append((pos_sent, pos_text)) self.data["tf"] += 1.0 + # Update special counters for acronyms and proper nouns if tag == "a": self.data["tf_a"] += 1.0 if tag == "n": @@ -158,7 +211,15 @@ position = term.get("wpos", 1.0) ```python def get_metric(self, name): - """Get the value of any word metric.""" + """ + Get the value of any word metric. + + Args: + name (str): The name of the metric to retrieve + + Returns: + float: The value of the requested metric + """ return self.data.get(name, 0.0) ``` @@ -171,7 +232,13 @@ position = term.get("wpos", 1.0) ```python def set_metric(self, name, value): - """Set the value of any word metric.""" + """ + Set the value of any word metric. + + Args: + name (str): The name of the metric to set + value (float): The new value for the metric + """ self.data[name] = value ``` @@ -184,7 +251,21 @@ position = term.get("wpos", 1.0) ```python def get_graph_metrics(self): - """Calculate all graph-based metrics at once.""" + """ + Calculate all graph-based metrics at once. + + Analyzes the term's connections in the co-occurrence graph to compute + various relationship metrics that measure its contextual importance. + + Returns: + dict: Dictionary containing the calculated graph metrics: + - wdr: Word different right (number of outgoing edges) + - wir: Word importance right (sum of outgoing edge weights) + - pwr: Probability weight right (wdr/wir) + - wdl: Word different left (number of incoming edges) + - wil: Word importance left (sum of incoming edge weights) + - pwl: Probability weight left (wdl/wil) + """ # Out-edges metrics wdr = len(self.g.out_edges(self.id)) wir = sum(d["tf"] for (_, _, d) in self.g.out_edges(self.id, data=True)) @@ -207,7 +288,20 @@ position = term.get("wpos", 1.0) ```python def update_h(self, stats, features=None): - """Update the word's score based on statistics.""" + """ + Update the word's score based on statistics. + + Calculates all the statistical features that determine the word's + relevance score, using document-level statistics for normalization. + + Args: + stats (dict): Document statistics including: + - max_tf (float): Maximum term frequency in the document + - avg_tf (float): Average term frequency + - std_tf (float): Standard deviation of term frequency + - number_of_sentences (int): Total number of sentences + features (list, optional): Specific features to calculate, or None for all + """ max_tf = stats["max_tf"] avg_tf = stats["avg_tf"] std_tf = stats["std_tf"] @@ -218,6 +312,7 @@ position = term.get("wpos", 1.0) # Update metrics based on features if features is None or "wrel" in features: + # Calculate relatedness metrics using graph connections self.data["pl"] = graph_metrics["wdl"] / max_tf self.data["pr"] = graph_metrics["wdr"] / max_tf self.data["wrel"] = (0.5 + (graph_metrics["pwl"] * (self.tf / max_tf))) + ( @@ -225,17 +320,21 @@ position = term.get("wpos", 1.0) ) if features is None or "wfreq" in features: + # Calculate frequency metric normalized by corpus statistics self.data["wfreq"] = self.tf / (avg_tf + std_tf) if features is None or "wspread" in features: + # Calculate spread as proportion of sentences containing the term self.data["wspread"] = len(self.occurs) / number_of_sentences if features is None or "wcase" in features: + # Calculate case feature from uppercase and proper noun occurrences self.data["wcase"] = max(self.data["tf_a"], self.data["tf_n"]) / ( 1.0 + math.log(self.tf) ) if features is None or "wpos" in features: + # Calculate position feature from median position of occurrences self.data["wpos"] = math.log( math.log(3.0 + np.median(list(self.occurs.keys()))) ) @@ -253,7 +352,7 @@ position = term.get("wpos", 1.0) ## Properties -The `SingleWord` class provides property accessors for compatibility with direct attribute access: +The `SingleWord` class provides property accessors for its main attributes: ### Basic Properties @@ -270,6 +369,11 @@ is_stopword = term.stopword score = term.h frequency = term.tf occurrences = term.occurs + +# Setter examples +term.stopword = True +term.h = 0.25 +term.tf = 5.0 ``` ### Feature Properties @@ -291,6 +395,11 @@ position_metric = term.wpos spread_metric = term.wspread left_probability = term.pl right_probability = term.pr + +# Setter examples +term.wfreq = 0.75 +term.wcase = 0.5 +term.wrel = 1.2 ``` ## Feature Calculation Logic @@ -299,60 +408,84 @@ The `SingleWord` class calculates several features that contribute to keyword sc ### Word Frequency (`wfreq`) -Measures how frequent the term is compared to the average document term frequency. +Measures how frequent the term is compared to the average document term frequency. ```python +# Normalized term frequency compared to document statistics wfreq = term_frequency / (average_term_frequency + standard_deviation) ``` +Higher values indicate more frequent terms relative to the document average. + ### Word Case (`wcase`) Represents the significance of capitalization in determining proper nouns and acronyms. ```python +# Case significance: higher values for acronyms and proper nouns wcase = max(uppercase_freq, proper_noun_freq) / (1.0 + log(term_frequency)) ``` +Higher values indicate terms more likely to be acronyms or proper nouns. + ### Word Relevance (`wrel`) Evaluates the term's importance based on its co-occurrence relationships. ```python -wrel = (0.5 + (probability_weighted_left * (tf / max_tf))) + - (0.5 + (probability_weighted_right * (tf / max_tf))) +# Relevance based on graph connection probabilities and term frequency +wrel = (0.5 + (graph_metrics["pwl"] * (tf / max_tf))) + + (0.5 + (graph_metrics["pwr"] * (tf / max_tf))) ``` +Higher values indicate terms with more meaningful contextual relationships. + ### Word Position (`wpos`) Considers the typical position of the word in sentences, with the intuition that important terms appear earlier. ```python -wpos = log(log(3.0 + median_position_in_sentences)) +# Position score based on median sentence position +wpos = math.log(math.log(3.0 + median_position_in_sentences)) ``` +Lower values indicate terms that tend to appear earlier in sentences. + ### Word Spread (`wspread`) Measures how widely the term is distributed across the document's sentences. ```python +# Document coverage: proportion of sentences containing the term wspread = number_of_sentences_with_term / total_number_of_sentences ``` +Higher values indicate terms that appear throughout the document. + ## Final Score Calculation The final score (`h`) combines all metrics in a formula designed to rank candidate keywords: ```python +# Lower scores indicate better keyword candidates h = (wpos * wrel) / (wcase + (wfreq / wrel) + (wspread / wrel)) ``` +The formula balances: +- Term position (earlier is better) +- Term relevance (more connections is better) +- Term case (proper nouns and acronyms preferred) +- Term frequency (higher is better) +- Term spread (wider distribution is better) + Lower scores indicate better keyword candidates in YAKE's ranking system. ## Usage Example ```python import networkx as nx -from yake.datarepresentation import SingleWord +import numpy as np +from yake.data import SingleWord # Create a graph for co-occurrence g = nx.DiGraph() @@ -364,6 +497,7 @@ term = SingleWord("algorithm", 1, g) # Add occurrences term.add_occur("n", 0, 5, 5) # In sentence 0, position 5 term.add_occur("n", 1, 2, 15) # In sentence 1, position 2 +term.add_occur("n", 2, 8, 35) # In sentence 2, position 8 # Update the score with statistics stats = { diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 6c3609a663ed83ef03610236cef74a8dfef09280..72120fef68e56d9d6725100bbed8500b0cae0814 100644 GIT binary patch literal 8232 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 B_x1n) delta 712 zcmZ8fTWb?h5bm5kNjIC#HY|y0-CQ;X#3)T;ZC`AS#XGIH`eg9dHM^n3G#kz)sQci9 zKcG+s`lO(53WAh8>$8GCK;q93l!`RYDQcm+>^HMB-+VhebKWd`D;Rzvp^ebh`J%4A z8{0HiX2R)fzT0bgcGDO3Bk$>BU%0mSq$`|8cg=6xP2sQGT?*K)-{`G-?QT%P_wZ^u zte$T9;VNP+&ROr8G3!l?-hFId}9#~+p#+0(-N*%G}! z&%Qiym8c|rh0K6AXp#p-7b$a(9BLk~{b@_pES}yg}6IbUc#W z&KQhC zbZBrLblQW;i9wrC$>$0O_M1nOKs;bWLkWwxku74aa06CwqmZr0GZ>fz>Ietg=a`yN eW2&Mmx*{SJE{_VAj3`N%!>@(QF_M;_GWj2A0+})Z diff --git a/yake/data/__pycache__/composed_word.cpython-310.pyc b/yake/data/__pycache__/composed_word.cpython-310.pyc index 77d89d44bca4a8ddc930279a8b3871d199481358..7ce1e8bc2bd9be404ee0b5740c0d6ee63e917748 100644 GIT binary patch literal 11292 zcmd5?U5p#ob)G+x!&xr1TCY}GD@jMP6ED%#$}yThRkiEdmSWi1IFH7^?s_-eBETw$5uiZ(R=_E`YJdVVTJ*ID(8s<6eeT1&7HHu-6)?~OK^^rw=gtg& zmTTGQOG$8e=gz(7o_o)^-}$){EiO75KEa*Ko&S1C)BcTaCO;-_{t&|UUTmU2i!JzFOhzenru4G-A)+iEt?U#hW*%0 zI)VF2)Eh)`Al@PJ&8{EE?tUk1cE+Qi-!ucUvp$Ftj34^lVzfa=`f(69+_3NZu85k$ z9$IX=uP1KD?~87rhV$EP8MGDSQOj)welo;loR*Aw=qkd!Pz*tqCK_+JaWj%(zwM%F z6I4RsCxM#{wc(=1-SfLtOAC=it_Y}O*bf{viL9yH^X~_4JBmcXZ$U2JbUuQ3w5^Y@ z)>=bP&)vEE-M8NP?%S_=@4WWO(FZIm6cz~w5+HL=KL2j#jr$K{1!VW%dRio23HFP8bqB3eBq zR=8Xb>S%SLxGRZOagm>#6PLsq_*oK9i_7>wFP;-$6kmFv-&+>HBV5!xCDz3=;#t(J zp!8+&6_hTBD^R^gTAS1i|6fQEU3}i2Rz3*EpVbdi0aC3(3AiI)SPhky#YqIgvkY^k zz-`!v9`}?y{q1O&OcKvEdn~&RrrPwo&0!avpefC$w+;CVRvi#z#UgG7G8zOj2~h{8 zQ4>lu?#D@(456t?<2IQdbe6Wx{n(9ZkD*C3cDo@|i1%Mh2D|9eJlFucNzj&If+8s+ z#(@4}gkF$zA_0|;m|&))0k#$%1QKheG}FbdB*NVT(%$U=4<@x#vBM-@P7)bz50fCi z!S^JKJ3%q61J`dhgE)?43^LtlpYg!o^TV#c4Rr8}?uus9n9yh{6Oz4xUtETyN4n65 znp_b^q8)2MDc}^TbeqcMpI1kkhZc9VP@__!3G2iV6=6R>&sU-L5B0WwtdF!ET~u#s z!okyp$*26Jb`!nPqPC`;m=9HX@urqoqr7h&eb0^iaqA`2nOr)L(lVExDoQKdpQtXa zfe%r-Z^@DBw+4J&({@UOz2g1?-SgclC}2Lqn7nIT^k2-?o|gOden^lP9+H?QcZVBo z?*z?c44I^er?!P!cp_8?@MYPa5GOri+;i8vP`btq_f7n-f#)rH@KmP zaT`;k7LOpRO(L0pNRci4?%?f3o7>lW{p5P{`uF2N#@FwLemlDUYG%yh>$k(?+r#ba2e2mBUf6t|3)f+N{Of=n zHlrR*WOHzkIyXs%RQ=*Nh#O*UMLTRv>dmI-(K>qG=FM&d5Q|?#A@3z^^!SbLo;g9e zga()lQC2fpE=oM13v|1R%QvZTkuD2#snKN-morJnE}rt*)$+9iAYiDebu>Prp|?JL z?B7R|nA*9Ttm97-&}1s{pD)RCR8__0qsREj3QCP~YQ{m5TC}jKwG)N?v;;&8WNLPU zero6X(lDSDLARyo7BZAH@6^uM_A>6+0ka*$uykYUYyY>kP&QrjX?;bnL4YM|(7}drc=L7uTY{a33DHI#K<%$Zt!wch2;gHu z-SLEt37IN*aFe@{HQz5NiyJwM z@U+@tAHEk^;LJuA?otL2N`byioP32Y(~Hhex2XO(Tn^7oF>`lH4F;C?0xq`o8ZyQz|0-Xz^yt(9=%+S{R?$F7CkKbc1)ug;%CXDO2D>$7X$;O|@OlD!y9Ia4Q%l9*`$YC$ z%GsOtmfZDzv20PZIg}DUR2DJN7Af3ChKRG5k2cwM!Qix#C9PAAjftkbIcZ`ea!Rm0 zVeZKin1_E_Sj;=wPMu*IhHV&(%~{d>wCU!S?s}^m`DDBAVoLpBf5v5`cx4zARCuae zJl97C@9?z5EoOHXO}dRAZ}htTL>c^EE`!2QDuG6-K{&#VC;(~vjR3Q&M zChQ9ZH!?vqBwcu62>ZjNgSyNY+hkjO_BxZL{t5BGQ2)%-I?wm+rWT)eC3$MJGvhDd zGSYXnSG9NTBXYsD6MbYn)OBswB)7a__*Yf)hF`wU$fGUXb z^1Q(uDSao9Z5UoM!;^t0$Bd`?&v&%hxcj|e)>0PC7KPJ@L9Ds!lS>EOcsb)637UlW z1@8!KkI6w0EcS?Zo^&z7R>NSAAT@m<8m7V%i$+OJ%yCAI(uLt5@kQWKgP)Nc%D6ZS zb=`V=cxjTW&54Fn>PAweA4~Ch6od|c5%Pm1YmlTqSVBl;?CH@Gf;Rjg>AR(o9$iEm zy+$sQ<-af~*;hJ2^S&EWe2y(&h>rHZuTnjqVV&nTgn0?#{&NZ0L&|=+!~QU)OjEPt zQ<@C!KJ5enA1H}cT7hC6l2G20)jHcQv%95`K~Z=+KxV5y6W(n{Q5U8`4iSrGlbkcP zV%{6>Ekp%@%bL6&#$&^AE7gaoE;4~Dzc~}Q9mXDPNGRkcBr+p(NvX)c#4o1s!g3sA zRj-*dj&4riZj*$Ye@Ht@_)%Sa1DBs_Kh;~D%Y0xfp&#oARNHvgeL=d810V*cRko_ zZ@O3aDR*>r!@Zict~Lt(X)+>=n-ml00PL=lu7L16S;`2+!ZsXZAVH4Nm<0AnmivnO zQ}l|Pxq6sTLg5B@ANDpVYlVaYUA<^8kRB=?;Vo+4Ukz@Tx ze;=V8;ksOSA2A>lLw{dCHdGYOdI|Ntg7#^p9U#$$bu=UqK^_2ET!iOKv#XNUCf8o+ zb`j?OBaKf{e_1mO#Ce}srtyh^pRJc4AAW5L(J-KwYn+$SoEwGHDzsMAS!4wy% zR@9FwiXx2A+L0~JC8d+{h!DzrXe5=y9@)n_uDCyjI$qW;X-8E&ueOY%%I=SN4i&MG z&4Fe#zN48g@z_+K@x)`FpQu$cqqfTvwGNl5_Nj?lHAAW$KUXD;kkrO2a*V7hR@lI- z-aK+fCjM_9Er5r`kuzElD}QGE&^)RgEgsd0pV5N+A910ti`5S_adG5)p#2rEAJ0y$ z9=G~)T`m>vF3q&#^;Fc*?%AT<+DyATakl&G-G3*PAC(#5pY{_NiUKhHXc%_I1hm7{ z_7I&SQ}1>IU-tQs2aYJ=3}^r60P*dhA4nVk0o2v8k-LYiD`mWsjt>K(a+gB_ctU-g ziv>7Hk}&q5J~rv&F*eAU?}g+BgoivT!CrpKfIXWX7|h}2v{686$L}FWE5as)e{az( zokl4WlylrxbD-m@u;1(s1y~y=^xf=pEuSIi5vG9Nt?Z7NLas>WWxQJmYfKL@xfjAmRW>e9gu0-D)4x_2$T@wmeq*+8M-V$XvcgAl zB3s%lJ5k7b4iSWfb1fjRSpZi&j~cUuolnB^2aw`>pGHZw2yx^zL3Iu_@`*y3kjHq+ zGLx^W+_Q2z@9<;)^ldeD^f_~gdg0SzwZQ$4`HGBSh(nV91 zHJ~gCC+AWV2@ClmZX4%Rm{eB#SK=IBlds{DR@Ab`>0-W~94S%G8CmEmC@T@9HcJ9a zg_Jc0o^S|CEt+0hZt>(&hi|z&w=ANY{|4uTc@vOT6$Tp zn-0>|b+cwT`qM~R*LBCJq0Z84dKs<{(%ipYHp`zl7Fy|!Swox2pQEqpMA1S*y!O~C ztzZntw9M6s|C(w1+PQRidCKva=5p)SRDeM8E}V`Jp&tU_fG`jW@ZsJujt1ZT+aDT7 zB{&e}9V5OxGVyPILxcMPv$11-3r@yvH9??o-;f`mcV&c=bR6M*4^PR6BWgrV=@QOz zb}H(QN^lpr#q{$v9(6>AesD-cIls^P+n2SY3dXQUr343>J2-TtC-*h^{^V%mkwobt zkBiZ`#d!QNWz}MOG_Ir3>``T8uaL6=w@Z{p)l1q%jphtzi|@XPmEieTF#iwFTpb%v z|DmewRKwQ*3ZL9!I2{${GYsdP9X@KcQ|Ir64zsp~#;0fHr&M6wWR=1j)f?GW$6; zC_@d8VnFYr_!PO_AqHAub8O5p7Tgo|PG}Bbs$ht0?igY}kBxDWFrr8>L9AJj8^dsF zY=?Z{sbHHSkU%-L`Z(p?O3gRkx^*g?qZpsgOFpI}MGogmbP%|c9icLM;Yf;zJ<4J> zn_@OPk)DAzK7k|#ICZ@|djvY|~lff_^m>r~BQStkq2I;ozdRpy@5JFP$&w!P%5dEo^P z_qNkY((=f;oS9#0=TrD9CKD*D&9|-0#v?JfXYBxDa=eonVAec5#`1|7l;@Eo_~!|2~rLDcZq#cRWEB1 zCsW{QO@L=blmVWOzk@|D_THO#!L50ay#vIXoux()MA>4}v>Z_9K+Ie8ZlB!Cf|zZ* zhO|$vGbJk!qHKqROfFsoA|#=#Xxt6kodhosiLlk8gPbu4uy0FefWVzRPn4are6B=S z=Fa~=1h*Mr+mduJcqW?3CZ4M8E2tC{w|u}-B$ECf(v)pHJiIpL{p6d^gXcXLuN>JS zl62Cjkmw4PLb~kGGJU|4)+R^V2REE=wH63g>hSN%re$2!pEWW- zDUZtvOvvM#0+F>d=h4vbHjJ%Xja7PMf)bjZmpY!OUMfYo=6PfevnLhLqtL*U&w%UH z22xUpe88s;%HOBVl{)_}Rv|6p?FVT6_+<}uwsf7EQa+j;ap_TskM8!VG+vUia4b9^ zvN3t?wr1&e&DeBw!#e%5sIIE&^RjK(b!XYW>~!n5B++VAB%PzBB^a5(0h_S^v;5^ zu0n#(DxRo`A+de%p?y(9;)C%Y(D-6v(gfnigFf`h2ji2mc+TBIQFn5G_jiByoO91_ z_Rj9LAD?hb(Ws^2ul$|4^h5WKdo@!%KV2%6OF_n2*ORWnvVLw>#K=83RcrW1QTVV$uyNSj-%9qyQKuukZWY}xeIgAoLi!xxboY!+U% z`s`s8{@@4}hxe^>`mD6!m)N5r8>LZ5+80o9l;WT=2A|tgs6>?#MP&jeopDrLrMRd} z!GUuzbeqpgOKEiOWvE4;GO=5E23PQ`+h;$6L>=sM7`8oZ=XX`_F zTP(pG2H!SGULAzzng`*p#0P8{c9QGH1xg=-XsVxOU@X;^T%tUBw+_XL7)eNah&=6xNiJy35;U6 zhcPDyxutqk%{df$6P{t|f+rr#77<71zgwsFe)aC*C!2wT&J65!zsrBqV6f*#Y8;!} z7lmB5c-vNv>Q0`AFMF=P_!YH(MYS(joEz$RQy17w3M+SGTl|n83X%HP+6=`o!mLN5 z4ZbCK3=L6Z3BH%>{S-SHfYg}**hrrq^6`LqhH&(wZ$ig0hePHF)JGDgu?XrVlgH+>Ija1lXp@`g^Bfvl5t6DL=p zhrI5H{s6(06MXRr26y^DY<-+c(k+xz1X+UD2{z#R*+;Trq`@TwQxnYOyw_q}|Njst rv?Ffncq7B6ZOyokNr5HOVfiLb`=R1mp}bLdGzWLjUJB#wa?r#-P}3n! diff --git a/yake/data/__pycache__/single_word.cpython-310.pyc b/yake/data/__pycache__/single_word.cpython-310.pyc index 8995ea2a5946d84a061560a97dd0a42f110a79a7..1b5318cdba17f963ff1d8a5985c4650e2de49143 100644 GIT binary patch literal 10979 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 GV*dfNG$XM9 diff --git a/yake/data/__pycache__/utils.cpython-310.pyc b/yake/data/__pycache__/utils.cpython-310.pyc index f5f2b9dc6fddef8cb7c7f11f219a3eda4eb1cfac..ddb2312bd5f7195c510c718bea4b7952ef3ffe26 100644 GIT binary patch literal 4415 zcma)A&2Jn@74NSZk2`TO2``DmLTES{SEMQV0^o9#1nh;YobNiRBt2(lU)CI-?2tvuTs<%XGepr-G5NVZ@Cj z!qw?M+a60TXIG3NDsDGnB*ZW)QekOXxuQh!lo6RIOLeTl(u7tVp7P`nGdQKPVl>VQ zV+mYT56k0RCUGkJ;n%R6^GVMwFXV{}x zSxwV|z;S zeQgz`a~@&7Zx7qXI!A49xLEB5(7WOX6vl-mv%b;=-`+YooxO0J=Hx6C6S(%?DP<|<=WORQ z30czyHPETZ)UrTWOXmO~)36JsPi3>pX;{gUK3e*1_c!{(?yooQ?0nhlm2Ox%uU&TJ zh2d*=vDYd+CCh~H8|+&pA06c8AOB6VHZ8vj`=7XY-UkG;j0G^WAmuk8yxa|dFP}4UE3KT z6#0OVNcZ!@GK5WchjC)0dWYP81x44IE9sJxT$=+4pnB?2x0Ww{aq?T7XZaUb|;a~ zB;c?CQtNCOD{YvF0h;7mghJM)MBB=8%Db@048#M4+j=fkje%0F(eboqK;$Hk;2ATp zwB)SJacUVB0Ov}43K^d0tO`0rO%r{r3ss8OjF3)Fa&u^@AuYt|GXxGik*?KL#D5Qk z3t>=e^?yY{0vujv8!VN;V~SR&Zywojd*GBvzO6@w`hQ}$vHPmYbwc=BZRu3gO z&Pc(C^;%)Ln>~Tl0W_FpGJEihgHd88K;FWuKSDEdrUbgKaR9mQ3EWFK`+@Rij^`PF z3b(5q@6X;-O2fV)H@!f%^(L|)iu?~8zX}fq8R6~++MD$~Vl;JYvaj9SUlV0Z9=Rq2 zd?QW?F-kv?DW<&s-O@dA#~v z=C#;z;*rtywZ_;HzVMJ|eOgi1MQh73UR9S(9m1a%?y--V4pnONnZS5|bcU{2#B66i zi_9%TSoz*Gps#*p$DZ1>V-Mq&2(bQhacPTW^1<xL0G^r>BkxZ&dsA zwA!N~%TiMoQ1p}*SGF8+74Evs|AK4VP}oEgRTC-$D7YwL7f^N_F~e=@<`!bu9@mK0 zEM>6)x{Q&^Bb>84o1k&FT9_AZKqL!P737MTatu(7nZq1QbJ~y~R#mZ(DKpM&wE$6u zl2hK-tUFKivx-q5vJL79oy&-7)wyK4S7G|Ltrc+>U_X$hpj#j#pu|OSJ3OSCIS0(7 zs2o9tM=DDXC+MZcWDkk1Do(7TinP##xYpHBmKfZh&LCFnR$J!BY+M7oQls1 zdNFEbnX}+Zx?znv!;T?klyH>u!wRbj=wjAI0zftLIMXqe(o|fL-RucM1wbBIsE%mX zy~}<)OH#C_H^)u+oC2 zzv>*lH3tsy`s@Y& zTiSPf{o9a+QRYqeB%qBGL>>7dQ>3o}F5(&ar&e|SA`SNs)s z)$O9Neg`k}SG~XueDxzN_b!zSySpNbc6Sy1TTw1o2@fV+dwz>PogO49R+O`$DO|OW_%~RLkgPG=bAuyzDN!LA&F1 JzH|A5{{TDd(tQ8` delta 368 zcmYjM!AiqG5bbWZ+jL2j7__Z=SrxQaEeIYgy$T-npcgL^(`~yp&6aFLjbBms1N1C- z5Dy;p13dTvg5cdBC|KO+#ew%`VCKDPKxVhko#@57EnfQLmPsCISgSz|_ccSwrpSTO?gM5PcSDA2rI);&TzVWkcN; zzADvBX=}nc2u%RLs|K84s2)sSsr>6<7vM30Xo9iYEFL>ESr2DANH88h-V`0+q|F_s zKNw`E>MztASyzF51y 0 and term_base.g.has_edge( self.terms[t - 1].id, self.terms[t].id ): @@ -203,7 +337,9 @@ def update_h(self, features=None, is_virtual=False): term_base.g[self.terms[t - 1].id][self.terms[t].id]["tf"] / self.terms[t - 1].tf ) + prob_t2 = 0.0 + # Check connection with next term if t < len(self.terms) - 1 and term_base.g.has_edge( self.terms[t].id, self.terms[t + 1].id ): @@ -212,34 +348,53 @@ def update_h(self, features=None, is_virtual=False): / self.terms[t + 1].tf ) + # Calculate combined probability and update scores prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob elif STOPWORD_WEIGHT == "h": + # HWeight: treat stopwords like normal words sum_h += term_base.h prod_h *= term_base.h elif STOPWORD_WEIGHT == "none": + # None: ignore stopwords entirely pass + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) def update_h_old(self, features=None, is_virtual=False): - """Legacy method for updating the term's score.""" + """ + Legacy method for updating the term's score. + + Preserved for backward compatibility but uses a slightly different + approach to calculate scores. + + Args: + features (list, optional): Specific features to use for scoring + is_virtual (bool): Whether this is a virtual candidate not in text + """ sum_h = 0.0 prod_h = 1.0 + # Process each term in the phrase for t, term_base in enumerate(self.terms): + # Skip terms with zero frequency in virtual candidates if is_virtual and term_base.tf == 0: continue + # Handle stopwords with probability-based weighting if term_base.stopword: + # Calculate probability of co-occurrence with previous term prob_t1 = 0.0 if term_base.g.has_edge(self.terms[t - 1].id, self.terms[t].id): prob_t1 = ( @@ -247,6 +402,7 @@ def update_h_old(self, features=None, is_virtual=False): / self.terms[t - 1].tf ) + # Calculate probability of co-occurrence with next term prob_t2 = 0.0 if term_base.g.has_edge(self.terms[t].id, self.terms[t + 1].id): prob_t2 = ( @@ -254,15 +410,23 @@ def update_h_old(self, features=None, is_virtual=False): / self.terms[t + 1].tf ) + # Update scores based on combined probability prob = prob_t1 * prob_t2 prod_h *= 1 + (1 - prob) sum_h -= 1 - prob else: + # Handle normal words directly sum_h += term_base.h prod_h *= term_base.h + + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf + + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) + + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) diff --git a/yake/data/single_word.py b/yake/data/single_word.py index 5afcdf4e..c64e6cce 100644 --- a/yake/data/single_word.py +++ b/yake/data/single_word.py @@ -1,13 +1,37 @@ -"""SingleWord class for representing individual terms.""" +""" +Single word term representation module for YAKE keyword extraction. + +This module contains the SingleWord class which represents individual terms +in a document for keyword extraction. It tracks statistical features like +term frequency, position, and relationships with other terms to calculate +a relevance score for each word. +""" import math import numpy as np class SingleWord: - """Representation of a single word term in the document.""" + """ + Representation of a single word term in the document. + + This class stores and calculates statistical features for individual terms, + including frequency, position, spread, and relationship metrics. These features + are used to calculate a relevance score that indicates the word's importance + in the document. + + Attributes: + See property accessors below for available attributes. + """ def __init__(self, unique, idx, graph): - + """ + Initialize a SingleWord term object. + + Args: + unique (str): The unique normalized term this object represents + idx (int): Unique identifier for the term in the document + graph (networkx.DiGraph): Word co-occurrence graph from the document + """ self.id = idx # Fast access needed as it's used in graph operations self.g = graph # Fast access needed for network calculations @@ -35,61 +59,135 @@ def __init__(self, unique, idx, graph): # Forward common dictionary operations to self.data def __getitem__(self, key): - """Access attributes dictionary-style with obj['key'].""" + """ + Access attributes dictionary-style with obj['key']. + + Args: + key (str): The attribute key to access + + Returns: + Any: The value associated with the key + """ return self.data[key] def __setitem__(self, key, value): - """Set attributes dictionary-style with obj['key'] = value.""" + """ + Set attributes dictionary-style with obj['key'] = value. + + Args: + key (str): The attribute key to set + value (Any): The value to associate with the key + """ self.data[key] = value def get(self, key, default=None): - """Get with default, mimicking dict.get().""" + """ + Get with default, mimicking dict.get(). + + Args: + key (str): The attribute key to access + default (Any, optional): The default value if key doesn't exist + + Returns: + Any: The value associated with the key or the default value + """ return self.data.get(key, default) # The most commonly used properties remain as explicit accessors for backward compatibility @property def unique_term(self): + """Get the unique normalized term this object represents.""" return self.data["unique_term"] @property def stopword(self): + """Get whether this term is a stopword.""" return self.data["stopword"] @stopword.setter def stopword(self, value): + """ + Set whether this term is a stopword. + + Args: + value (bool): True if the term is a stopword, False otherwise + """ self.data["stopword"] = value @property def h(self): + """Get the final relevance score of this term (lower is better).""" return self.data["h"] @h.setter def h(self, value): + """ + Set the final relevance score of this term. + + Args: + value (float): The new score value + """ self.data["h"] = value @property def tf(self): + """Get the term frequency (number of occurrences) in the document.""" return self.data["tf"] @tf.setter def tf(self, value): + """ + Set the term frequency value. + + Args: + value (float): The new term frequency value + """ self.data["tf"] = value @property def occurs(self): + """Get the dictionary of sentence occurrences for this term.""" return self.data["occurs"] # Everything else uses the generic accessor methods def get_metric(self, name): - """Get the value of any word metric.""" + """ + Get the value of any word metric. + + Args: + name (str): The name of the metric to retrieve + + Returns: + float: The value of the requested metric + """ return self.data.get(name, 0.0) def set_metric(self, name, value): - """Set the value of any word metric.""" + """ + Set the value of any word metric. + + Args: + name (str): The name of the metric to set + value (float): The new value for the metric + """ self.data[name] = value def get_graph_metrics(self): - """Calculate all graph-based metrics at once.""" + """ + Calculate all graph-based metrics at once. + + Analyzes the term's connections in the co-occurrence graph to compute + various relationship metrics that measure its contextual importance. + + Returns: + dict: Dictionary containing the calculated graph metrics: + - wdr: Word different right (number of outgoing edges) + - wir: Word importance right (sum of outgoing edge weights) + - pwr: Probability weight right (wdr/wir) + - wdl: Word different left (number of incoming edges) + - wil: Word importance left (sum of incoming edge weights) + - pwl: Probability weight left (wdl/wil) + """ # Out-edges metrics wdr = len(self.g.out_edges(self.id)) wir = sum(d["tf"] for (_, _, d) in self.g.out_edges(self.id, data=True)) @@ -103,7 +201,20 @@ def get_graph_metrics(self): return {"wdr": wdr, "wir": wir, "pwr": pwr, "wdl": wdl, "wil": wil, "pwl": pwl} def update_h(self, stats, features=None): - """Update the word's score based on statistics.""" + """ + Update the word's score based on statistics. + + Calculates all the statistical features that determine the word's + relevance score, using document-level statistics for normalization. + + Args: + stats (dict): Document statistics including: + - max_tf (float): Maximum term frequency in the document + - avg_tf (float): Average term frequency + - std_tf (float): Standard deviation of term frequency + - number_of_sentences (int): Total number of sentences + features (list, optional): Specific features to calculate, or None for all + """ max_tf = stats["max_tf"] avg_tf = stats["avg_tf"] std_tf = stats["std_tf"] @@ -114,6 +225,7 @@ def update_h(self, stats, features=None): # Update metrics based on features if features is None or "wrel" in features: + # Calculate relatedness metrics using graph connections self.data["pl"] = graph_metrics["wdl"] / max_tf self.data["pr"] = graph_metrics["wdr"] / max_tf self.data["wrel"] = (0.5 + (graph_metrics["pwl"] * (self.tf / max_tf))) + ( @@ -121,17 +233,21 @@ def update_h(self, stats, features=None): ) if features is None or "wfreq" in features: + # Calculate frequency metric normalized by corpus statistics self.data["wfreq"] = self.tf / (avg_tf + std_tf) if features is None or "wspread" in features: + # Calculate spread as proportion of sentences containing the term self.data["wspread"] = len(self.occurs) / number_of_sentences if features is None or "wcase" in features: + # Calculate case feature from uppercase and proper noun occurrences self.data["wcase"] = max(self.data["tf_a"], self.data["tf_n"]) / ( 1.0 + math.log(self.tf) ) if features is None or "wpos" in features: + # Calculate position feature from median position of occurrences self.data["wpos"] = math.log( math.log(3.0 + np.median(list(self.occurs.keys()))) ) @@ -144,13 +260,28 @@ def update_h(self, stats, features=None): ) def add_occur(self, tag, sent_id, pos_sent, pos_text): - """Add occurrence information.""" + """ + Add occurrence information for this term. + + Records where in the document this term appears, tracking sentence ID, + position within sentence, global position in text, and updates term + frequency counters. + + Args: + tag (str): Part-of-speech tag for this occurrence ('a' for acronym, 'n' for proper noun, etc.) + sent_id (int): Sentence ID where the term appears + pos_sent (int): Position within the sentence + pos_text (int): Global position in the entire text + """ + # Create empty list for this sentence if it's the first occurrence if sent_id not in self.occurs: self.occurs[sent_id] = [] + # Record position information for this occurrence self.occurs[sent_id].append((pos_sent, pos_text)) self.data["tf"] += 1.0 + # Update special counters for acronyms and proper nouns if tag == "a": self.data["tf_a"] += 1.0 if tag == "n": @@ -159,56 +290,70 @@ def add_occur(self, tag, sent_id, pos_sent, pos_text): # For backward compatibility, define access to common metrics as properties @property def wfreq(self): + """Get the word frequency metric.""" return self.data["wfreq"] @wfreq.setter def wfreq(self, value): + """Set the word frequency metric.""" self.data["wfreq"] = value @property def wcase(self): + """Get the word case metric.""" return self.data["wcase"] @wcase.setter def wcase(self, value): + """Set the word case metric.""" self.data["wcase"] = value @property def wrel(self): + """Get the word relevance metric.""" return self.data["wrel"] @wrel.setter def wrel(self, value): + """Set the word relevance metric.""" self.data["wrel"] = value @property def wpos(self): + """Get the word position metric.""" return self.data["wpos"] @wpos.setter def wpos(self, value): + """Set the word position metric.""" self.data["wpos"] = value @property def wspread(self): + """Get the word spread metric.""" return self.data["wspread"] @wspread.setter def wspread(self, value): + """Set the word spread metric.""" self.data["wspread"] = value @property def pl(self): + """Get the probability left metric.""" return self.data["pl"] @pl.setter def pl(self, value): + """Set the probability left metric.""" self.data["pl"] = value @property def pr(self): + """Get the probability right metric.""" return self.data["pr"] @pr.setter def pr(self, value): + """Set the probability right metric.""" self.data["pr"] = value diff --git a/yake/data/utils.py b/yake/data/utils.py index 666af817..761b1b22 100644 --- a/yake/data/utils.py +++ b/yake/data/utils.py @@ -1,59 +1,129 @@ -"""Utility functions for text processing.""" +""" +Text processing utility module for YAKE keyword extraction. + +This module provides essential text preprocessing functions for the YAKE algorithm, +including text normalization, sentence segmentation, tokenization, and word +categorization. These utilities form the foundation for clean and consistent +text analysis throughout the keyword extraction pipeline. +""" import re from segtok.segmenter import split_multi from segtok.tokenizer import web_tokenizer, split_contractions +# Stopword weighting method for multi-word term scoring: +# - "bi": Use bi-directional weighting (default, considers term connections) +# - "h": Use direct term scores (treat stopwords like normal words) +# - "none": Ignore stopwords completely STOPWORD_WEIGHT = "bi" def pre_filter(text): - """Pre-filter the text to normalize line breaks and spacing.""" + """ + Normalize text by standardizing line breaks and spacing. + + This function preprocesses raw text to ensure consistent handling of + paragraphs, line breaks, and whitespace. It preserves paragraph structure + by detecting capitalized line beginnings while normalizing other whitespace. + + Args: + text (str): The raw input text to be normalized + + Returns: + str: The normalized text with standardized whitespace and line breaks + """ + # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") + + # Split the text into lines parts = text.split("\n") buffer = "" + + # Process each line for part in parts: + # Determine separator: preserve paragraph breaks for lines starting with capital letters sep = " " if prog.match(part): sep = "\n\n" + + # Append the processed line to the buffer, replacing tabs with spaces buffer += sep + part.replace("\t", " ") + return buffer def tokenize_sentences(text): - """Tokenize text into sentences and words.""" + """ + Split text into sentences and tokenize into words. + + This function performs two-level tokenization: first dividing the text into + sentences using segtok's sentence segmenter, then tokenizing each sentence + into individual words. It also handles contractions and filters out empty + or invalid tokens. + + Args: + text (str): The input text to be tokenized + + Returns: + list: A nested list structure where each inner list contains the tokens + for a single sentence in the original text + """ return [ + # Inner list: tokenize each sentence into words [ - w + w # Keep only valid word tokens for w in split_contractions(web_tokenizer(s)) + # Filter out standalone apostrophes and empty tokens if not (w.startswith("'") and len(w) > 1) and len(w) > 0 ] + # Outer list: iterate through sentences for s in list(split_multi(text)) + # Skip empty sentences if len(s.strip()) > 0 ] def get_tag(word, i, exclude): - """Determine the tag of a word based on its characteristics.""" - - # Check if word is numeric + """ + Determine the linguistic tag of a word based on its characteristics. + + This function categorizes words into different types based on their + orthographic features (capitalization, digits, special characters). + These tags are used to identify proper nouns, acronyms, numbers, and + unusual token patterns, which affect keyword scoring and filtering. + + Args: + word (str): The word to classify + i (int): Position of the word within its sentence (0 = first word) + exclude (set): Set of characters to consider as punctuation/special chars + + Returns: + str: A single character tag representing the word type: + - "d": Digit or numeric value + - "u": Unusual word (mixed alphanumeric or special characters) + - "a": Acronym (all uppercase) + - "n": Proper noun (capitalized, not at start of sentence) + - "p": Plain word (default) + """ + # Check if word is numeric (with possible commas and a decimal point) if word.replace(",", "").isdigit() or word.replace(",", "").replace(".", "", 1).isdigit(): return "d" - # Use counting instead of list comprehensions for better performance + # Count character types for classification cdigit = sum(c.isdigit() for c in word) calpha = sum(c.isalpha() for c in word) cexclude = sum(c in exclude for c in word) - # Check for unusual combinations + # Classify unusual tokens: mixed alphanumeric, special chars, or multiple punctuation if (cdigit > 0 and calpha > 0) or (cdigit == 0 and calpha == 0) or cexclude > 1: return "u" - # Check for ALL CAPS (acronym) + # Identify acronyms (all uppercase words) if word.isupper() and len(word) > 0: return "a" - # Check for Proper noun (capitalized) + # Identify proper nouns (capitalized words not at sentence beginning) if len(word) > 1 and word[0].isupper() and i > 0: - # Optimized check for single uppercase letter + # Check that only the first letter is uppercase (not an all-caps word) if sum(c.isupper() for c in word) == 1: return "n" + # Default case: plain word return "p" diff --git a/yake/yake.py b/yake/yake.py index 949bc9d8..e926d2a4 100644 --- a/yake/yake.py +++ b/yake/yake.py @@ -1,4 +1,11 @@ -"""Module for keyword extraction from text documents.""" +""" +Keyword extraction module for YAKE. + +This module provides the KeywordExtractor class which serves as the main entry point +for the YAKE keyword extraction algorithm. It handles configuration, stopword loading, +deduplication of similar keywords, and the entire extraction pipeline from raw text +to ranked keywords. +""" import os import jellyfish @@ -6,12 +13,35 @@ from .Levenshtein import Levenshtein - class KeywordExtractor: - """Class to extract and process keywords from text.""" + """ + Main entry point for YAKE keyword extraction. + + This class handles the configuration, preprocessing, and extraction of keywords + from text documents using statistical features without relying on dictionaries + or external corpora. It integrates components for text processing, candidate + generation, feature extraction, and keyword ranking. + + Attributes: + See initialization parameters for configurable attributes. + """ def __init__(self, **kwargs): - """Initialize the KeywordExtractor with configuration parameters.""" + """ + Initialize the KeywordExtractor with configuration parameters. + + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values self.config = { "lan": kwargs.get("lan", "en"), "n": kwargs.get("n", 3), @@ -22,34 +52,64 @@ def __init__(self, **kwargs): "features": kwargs.get("features", None), } + # Load appropriate stopwords and deduplication function self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) def _load_stopwords(self, stopwords): - """Load stopwords from file or use provided set.""" + """ + Load stopwords from file or use provided set. + + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use + + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available if stopwords is not None: return set(stopwords) + # Determine the path to the appropriate stopword list dir_path = os.path.dirname(os.path.realpath(__file__)) local_path = os.path.join( "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" ) + # Fall back to language-agnostic list if specific language not available if not os.path.exists(os.path.join(dir_path, local_path)): local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") resource_path = os.path.join(dir_path, local_path) + # Attempt to read the stopword file with UTF-8 encoding try: with open(resource_path, encoding="utf-8") as stop_file: return set(stop_file.read().lower().split("\n")) except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails print("Warning: reading stopword list as ISO-8859-1") with open(resource_path, encoding="ISO-8859-1") as stop_file: return set(stop_file.read().lower().split("\n")) def _get_dedup_function(self, func_name): - """Retrieve the appropriate deduplication function.""" + """ + Retrieve the appropriate deduplication function. + + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use + + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations return { "jaro_winkler": self.jaro, "jaro": self.jaro, @@ -58,44 +118,107 @@ def _get_dedup_function(self, func_name): }.get(func_name.lower(), self.levs) def jaro(self, cand1, cand2): + """ + Calculate Jaro similarity between two strings. + + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return jellyfish.jaro(cand1, cand2) def levs(self, cand1, cand2): + """ + Calculate normalized Levenshtein similarity between two strings. + + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) def seqm(self, cand1, cand2): + """ + Calculate sequence matcher ratio between two strings. + + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ return Levenshtein.ratio(cand1, cand2) def extract_keywords(self, text): - """Extract keywords from text.""" + """ + Extract keywords from text. + + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from + + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input if not text: return [] + # Normalize text by replacing newlines with spaces text = text.replace("\n", " ") - # Create a config dictionary for DataCore + # Create a configuration dictionary for DataCore core_config = { "windows_size": self.config["window_size"], "n": self.config["n"], } + # Initialize the data core with the text dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + # Build features for single terms and multi-word terms dc.build_single_terms_features(features=self.config["features"]) dc.build_mult_terms_features(features=self.config["features"]) + # Collect and sort all valid candidates by score (lower is better) result_set = [] candidates_sorted = sorted( [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h ) + # If deduplication is disabled, return all candidates up to the limit if self.config["dedup_lim"] >= 1.0: return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ : self.config["top"] ] + # Perform deduplication by comparing candidates for cand in candidates_sorted: should_add = True + # Check if this candidate is too similar to any already selected for h, cand_result in result_set: if ( self.dedup_function(cand.unique_kw, cand_result.unique_kw) @@ -104,9 +227,13 @@ def extract_keywords(self, text): should_add = False break + # Add candidate if it passes deduplication if should_add: result_set.append((cand.h, cand)) + + # Stop once we have enough candidates if len(result_set) == self.config["top"]: break + # Format results as (keyword, score) tuples return [(cand.kw, h) for (h, cand) in result_set] From 57dda5d2245975ece4c6b72f37d2f34fa6946bc7 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 15:00:48 +0100 Subject: [PATCH 079/122] moved core files to core folder --- .../test_yake.cpython-310-pytest-8.3.4.pyc | Bin 20159 -> 20164 bytes tests/test_yake.py | 2 +- yake/__init__.py | 2 +- yake/__pycache__/__init__.cpython-310.pyc | Bin 343 -> 348 bytes yake/__pycache__/yake.cpython-310.pyc | Bin 8232 -> 8232 bytes yake/{ => core}/Levenshtein.py | 0 .../{ => core}/StopwordsList/stopwords_ar.txt | 322 ++-- .../{ => core}/StopwordsList/stopwords_bg.txt | 516 ++--- .../{ => core}/StopwordsList/stopwords_br.txt | 782 ++++---- .../{ => core}/StopwordsList/stopwords_cz.txt | 510 ++--- .../{ => core}/StopwordsList/stopwords_da.txt | 126 +- .../{ => core}/StopwordsList/stopwords_de.txt | 1206 ++++++------ .../{ => core}/StopwordsList/stopwords_el.txt | 1686 ++++++++--------- .../{ => core}/StopwordsList/stopwords_en.txt | 1148 +++++------ .../{ => core}/StopwordsList/stopwords_es.txt | 700 +++---- .../{ => core}/StopwordsList/stopwords_et.txt | 68 +- .../{ => core}/StopwordsList/stopwords_fa.txt | 664 +++---- .../{ => core}/StopwordsList/stopwords_fi.txt | 1492 +++++++-------- .../{ => core}/StopwordsList/stopwords_fr.txt | 924 ++++----- .../{ => core}/StopwordsList/stopwords_hi.txt | 324 ++-- .../{ => core}/StopwordsList/stopwords_hr.txt | 356 ++-- .../{ => core}/StopwordsList/stopwords_hu.txt | 1472 +++++++------- .../{ => core}/StopwordsList/stopwords_hy.txt | 88 +- .../{ => core}/StopwordsList/stopwords_id.txt | 716 +++---- .../{ => core}/StopwordsList/stopwords_it.txt | 794 ++++---- .../{ => core}/StopwordsList/stopwords_ja.txt | 86 +- .../{ => core}/StopwordsList/stopwords_lt.txt | 128 +- .../{ => core}/StopwordsList/stopwords_lv.txt | 332 ++-- .../{ => core}/StopwordsList/stopwords_nl.txt | 1000 +++++----- .../{ => core}/StopwordsList/stopwords_no.txt | 236 +-- .../StopwordsList/stopwords_noLang.txt | 0 .../{ => core}/StopwordsList/stopwords_pl.txt | 276 +-- .../{ => core}/StopwordsList/stopwords_pt.txt | 790 ++++---- .../{ => core}/StopwordsList/stopwords_ro.txt | 560 +++--- .../{ => core}/StopwordsList/stopwords_ru.txt | 844 ++++----- .../{ => core}/StopwordsList/stopwords_sk.txt | 218 +-- .../{ => core}/StopwordsList/stopwords_sl.txt | 890 ++++----- .../{ => core}/StopwordsList/stopwords_sv.txt | 770 ++++---- .../{ => core}/StopwordsList/stopwords_tr.txt | 422 ++--- .../{ => core}/StopwordsList/stopwords_uk.txt | 768 ++++---- .../{ => core}/StopwordsList/stopwords_zh.txt | 248 +-- .../__pycache__/Levenshtein.cpython-310.pyc | Bin 0 -> 2215 bytes .../__pycache__/highlight.cpython-310.pyc | Bin 0 -> 12667 bytes yake/core/__pycache__/yake.cpython-310.pyc | Bin 0 -> 8237 bytes yake/{ => core}/highlight.py | 0 yake/{ => core}/yake.py | 0 46 files changed, 10733 insertions(+), 10733 deletions(-) rename yake/{ => core}/Levenshtein.py (100%) rename yake/{ => core}/StopwordsList/stopwords_ar.txt (88%) rename yake/{ => core}/StopwordsList/stopwords_bg.txt (90%) rename yake/{ => core}/StopwordsList/stopwords_br.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_cz.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_da.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_de.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_el.txt (91%) rename yake/{ => core}/StopwordsList/stopwords_en.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_es.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_et.txt (81%) rename yake/{ => core}/StopwordsList/stopwords_fa.txt (89%) rename yake/{ => core}/StopwordsList/stopwords_fi.txt (88%) rename yake/{ => core}/StopwordsList/stopwords_fr.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_hi.txt (92%) rename yake/{ => core}/StopwordsList/stopwords_hr.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_hu.txt (90%) rename yake/{ => core}/StopwordsList/stopwords_hy.txt (87%) rename yake/{ => core}/StopwordsList/stopwords_id.txt (88%) rename yake/{ => core}/StopwordsList/stopwords_it.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_ja.txt (87%) rename yake/{ => core}/StopwordsList/stopwords_lt.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_lv.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_nl.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_no.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_noLang.txt (100%) rename yake/{ => core}/StopwordsList/stopwords_pl.txt (83%) rename yake/{ => core}/StopwordsList/stopwords_pt.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_ro.txt (85%) rename yake/{ => core}/StopwordsList/stopwords_ru.txt (91%) rename yake/{ => core}/StopwordsList/stopwords_sk.txt (79%) rename yake/{ => core}/StopwordsList/stopwords_sl.txt (84%) rename yake/{ => core}/StopwordsList/stopwords_sv.txt (86%) rename yake/{ => core}/StopwordsList/stopwords_tr.txt (87%) rename yake/{ => core}/StopwordsList/stopwords_uk.txt (91%) rename yake/{ => core}/StopwordsList/stopwords_zh.txt (80%) create mode 100644 yake/core/__pycache__/Levenshtein.cpython-310.pyc create mode 100644 yake/core/__pycache__/highlight.cpython-310.pyc create mode 100644 yake/core/__pycache__/yake.cpython-310.pyc rename yake/{ => core}/highlight.py (100%) rename yake/{ => core}/yake.py (100%) diff --git a/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc b/tests/__pycache__/test_yake.cpython-310-pytest-8.3.4.pyc index b1c9affbe42e4b1858258a5dde4806182e3c891e..79fdc372c379f46c487cee41980fd9bc1059cfc4 100644 GIT binary patch delta 38 scmdl#m+{D4M&5j0UM>b8c$qJq@nj>fr5~qoWny-!UUGiXWG}x`0OhOymvR4GM&5j0UM>b8C^*BBaepJPr5_7lWn%VZf4@=ysY?nh diff --git a/tests/test_yake.py b/tests/test_yake.py index 6f3e4158..d724b992 100644 --- a/tests/test_yake.py +++ b/tests/test_yake.py @@ -7,7 +7,7 @@ from click.testing import CliRunner import yake -from yake.highlight import TextHighlighter +from yake.core.highlight import TextHighlighter def test_phraseless_example(): text_content = "- not yet" diff --git a/yake/__init__.py b/yake/__init__.py index 06b468fc..237be329 100644 --- a/yake/__init__.py +++ b/yake/__init__.py @@ -6,5 +6,5 @@ __email__ = "vitordouzi@gmail.com" __version__ = "0.4.8" -from yake.yake import KeywordExtractor as KeywordExtractor +from yake.core.yake import KeywordExtractor as KeywordExtractor diff --git a/yake/__pycache__/__init__.cpython-310.pyc b/yake/__pycache__/__init__.cpython-310.pyc index 5e61b8b0c3ce74612ca070730680fa192ece1609..80f412fa5e5e33199a2d646840264afb82120609 100644 GIT binary patch delta 34 ocmcc4bccyIpO=@50SM#^q%-bM0H4|l)c^nh delta 29 jcmcb^be)MepO=@50SF4taAe$?$a|TEvobMz;>%(HdbA0S diff --git a/yake/__pycache__/yake.cpython-310.pyc b/yake/__pycache__/yake.cpython-310.pyc index 72120fef68e56d9d6725100bbed8500b0cae0814..60ce8dd516a49a734f93d1e1dba2cb76c48a9f32 100644 GIT binary patch delta 22 ccmZ4Cu)={ipO=@50SMR%q%+ty@=7ZJ06I_vX#fBK delta 22 ccmZ4Cu)={ipO=@50SL+iq%#CI@=7ZJ06lvI!~g&Q diff --git a/yake/Levenshtein.py b/yake/core/Levenshtein.py similarity index 100% rename from yake/Levenshtein.py rename to yake/core/Levenshtein.py diff --git a/yake/StopwordsList/stopwords_ar.txt b/yake/core/StopwordsList/stopwords_ar.txt similarity index 88% rename from yake/StopwordsList/stopwords_ar.txt rename to yake/core/StopwordsList/stopwords_ar.txt index 926226ba..da635d77 100644 --- a/yake/StopwordsList/stopwords_ar.txt +++ b/yake/core/StopwordsList/stopwords_ar.txt @@ -1,162 +1,162 @@ -ب -ا -أ -، -عشر -عدد -عدة -عشرة -عدم -عام -عاما -عن -عند -عندما -على -عليه -عليها -زيارة -سنة -سنوات -تم -ضد -بعد -بعض -اعادة -اعلنت -بسبب -حتى -اذا -احد -اثر -برس -باسم -غدا -شخصا -صباح -اطار -اربعة -اخرى -بان -اجل -غير -بشكل -حاليا -بن -به -ثم -اف -ان -او -اي -بها -صفر -حيث -اكد -الا -اما -امس -السابق -التى -التي -اكثر -ايار -ايضا -ثلاثة -الذاتي -الاخيرة -الثاني -الثانية -الذى -الذي -الان -امام -ايام -خلال -حوالى -الذين -الاول -الاولى -بين -ذلك -دون -حول -حين -الف -الى -انه -اول -ضمن -انها -جميع -الماضي -الوقت -المقبل -اليوم -ـ -ف -و -و6 -قد -لا -ما -مع -مساء -هذا -واحد -واضاف -واضافت -فان -قبل -قال -كان -لدى -نحو -هذه -وان -واكد -كانت -واوضح -مايو -فى -في -كل -لم -لن -له -من -هو -هي -قوة -كما -لها -منذ -وقد -ولا -نفسه -لقاء -مقابل -هناك -وقال -وكان -نهاية -وقالت -وكانت -للامم -فيه -كلم -لكن -وفي -وقف -ولم -ومن -وهو -وهي -يوم -فيها -منها -مليار -لوكالة -يكون -يمكن +ب +ا +أ +، +عشر +عدد +عدة +عشرة +عدم +عام +عاما +عن +عند +عندما +على +عليه +عليها +زيارة +سنة +سنوات +تم +ضد +بعد +بعض +اعادة +اعلنت +بسبب +حتى +اذا +احد +اثر +برس +باسم +غدا +شخصا +صباح +اطار +اربعة +اخرى +بان +اجل +غير +بشكل +حاليا +بن +به +ثم +اف +ان +او +اي +بها +صفر +حيث +اكد +الا +اما +امس +السابق +التى +التي +اكثر +ايار +ايضا +ثلاثة +الذاتي +الاخيرة +الثاني +الثانية +الذى +الذي +الان +امام +ايام +خلال +حوالى +الذين +الاول +الاولى +بين +ذلك +دون +حول +حين +الف +الى +انه +اول +ضمن +انها +جميع +الماضي +الوقت +المقبل +اليوم +ـ +ف +و +و6 +قد +لا +ما +مع +مساء +هذا +واحد +واضاف +واضافت +فان +قبل +قال +كان +لدى +نحو +هذه +وان +واكد +كانت +واوضح +مايو +فى +في +كل +لم +لن +له +من +هو +هي +قوة +كما +لها +منذ +وقد +ولا +نفسه +لقاء +مقابل +هناك +وقال +وكان +نهاية +وقالت +وكانت +للامم +فيه +كلم +لكن +وفي +وقف +ولم +ومن +وهو +وهي +يوم +فيها +منها +مليار +لوكالة +يكون +يمكن مليون \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_bg.txt b/yake/core/StopwordsList/stopwords_bg.txt similarity index 90% rename from yake/StopwordsList/stopwords_bg.txt rename to yake/core/StopwordsList/stopwords_bg.txt index 9700c313..7fe42a78 100644 --- a/yake/StopwordsList/stopwords_bg.txt +++ b/yake/core/StopwordsList/stopwords_bg.txt @@ -1,259 +1,259 @@ -а -автентичен -аз -ако -ала -бе -без -беше -би -бивш -бивша -бившо -бил -била -били -било -благодаря -близо -бъдат -бъде -бяха -в -вас -ваш -ваша -вероятно -вече -взема -ви -вие -винаги -внимава -време -все -всеки -всички -всичко -всяка -във -въпреки -върху -г -ги -главен -главна -главно -глас -го -година -години -годишен -д -да -дали -два -двама -двамата -две -двете -ден -днес -дни -до -добра -добре -добро -добър -докато -докога -дори -досега -доста -друг -друга -други -е -евтин -едва -един -една -еднаква -еднакви -еднакъв -едно -екип -ето -живот -за -забавям -зад -заедно -заради -засега -заспал -затова -защо -защото -и -из -или -им -има -имат -иска -й -каза -как -каква -какво -както -какъв -като -кога -когато -което -които -кой -който -колко -която -къде -където -към -лесен -лесно -ли -лош -м -май -малко -ме -между -мек -мен -месец -ми -много -мнозина -мога -могат -може -мокър -моля -момента -му -н -на -над -назад -най -направи -напред -например -нас -не -него -нещо -нея -ни -ние -никой -нито -нищо -но -нов -нова -нови -новина -някои -някой -няколко -няма -обаче -около -освен -особено -от -отгоре -отново -още -пак -по -повече -повечето -под -поне -поради -после -почти -прави -пред -преди -през -при -пък -първата -първи -първо -пъти -равен -равна -с -са -сам -само -се -сега -си -син -скоро -след -следващ -сме -смях -според -сред -срещу -сте -съм -със -също -т -тази -така -такива -такъв -там -твой -те -тези -ти -т.н. -то -това -тогава -този -той -толкова -точно -три -трябва -тук -тъй -тя -тях -у -утре -харесва -хиляди -ч -часа -че -често -чрез -ще -щом -юмрук -я +а +автентичен +аз +ако +ала +бе +без +беше +би +бивш +бивша +бившо +бил +била +били +било +благодаря +близо +бъдат +бъде +бяха +в +вас +ваш +ваша +вероятно +вече +взема +ви +вие +винаги +внимава +време +все +всеки +всички +всичко +всяка +във +въпреки +върху +г +ги +главен +главна +главно +глас +го +година +години +годишен +д +да +дали +два +двама +двамата +две +двете +ден +днес +дни +до +добра +добре +добро +добър +докато +докога +дори +досега +доста +друг +друга +други +е +евтин +едва +един +една +еднаква +еднакви +еднакъв +едно +екип +ето +живот +за +забавям +зад +заедно +заради +засега +заспал +затова +защо +защото +и +из +или +им +има +имат +иска +й +каза +как +каква +какво +както +какъв +като +кога +когато +което +които +кой +който +колко +която +къде +където +към +лесен +лесно +ли +лош +м +май +малко +ме +между +мек +мен +месец +ми +много +мнозина +мога +могат +може +мокър +моля +момента +му +н +на +над +назад +най +направи +напред +например +нас +не +него +нещо +нея +ни +ние +никой +нито +нищо +но +нов +нова +нови +новина +някои +някой +няколко +няма +обаче +около +освен +особено +от +отгоре +отново +още +пак +по +повече +повечето +под +поне +поради +после +почти +прави +пред +преди +през +при +пък +първата +първи +първо +пъти +равен +равна +с +са +сам +само +се +сега +си +син +скоро +след +следващ +сме +смях +според +сред +срещу +сте +съм +със +също +т +тази +така +такива +такъв +там +твой +те +тези +ти +т.н. +то +това +тогава +този +той +толкова +точно +три +трябва +тук +тъй +тя +тях +у +утре +харесва +хиляди +ч +часа +че +често +чрез +ще +щом +юмрук +я як \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_br.txt b/yake/core/StopwordsList/stopwords_br.txt similarity index 85% rename from yake/StopwordsList/stopwords_br.txt rename to yake/core/StopwordsList/stopwords_br.txt index dccacee7..c2884d28 100644 --- a/yake/StopwordsList/stopwords_br.txt +++ b/yake/core/StopwordsList/stopwords_br.txt @@ -1,392 +1,392 @@ -a -à -adeus -agora -aí -ainda -além -algo -algumas -alguns -ali -ano -anos -antes -ao -aos -apenas -apoio -após -aquela -aquelas -aquele -aqueles -aqui -aquilo -área -as -às -assim -até -atrás -através -baixo -bastante -bem -boa -boas -bom -bons -breve -cá -cada -catorze -cedo -cento -certamente -certeza -cima -cinco -coisa -com -como -conselho -contra -custa -da -dá -dão -daquela -daquelas -daquele -daqueles -dar -das -de -debaixo -demais -dentro -depois -desde -dessa -dessas -desse -desses -desta -destas -deste -destes -deve -deverá -dez -dezanove -dezasseis -dezassete -dezoito -dia -diante -diz -dizem -dizer -do -dois -dos -doze -duas -dúvida -e -é -ela -elas -ele -eles -em -embora -entre -era -és -essa -essas -esse -esses -esta -está -estão -estar -estas -estás -estava -este -estes -esteve -estive -estivemos -estiveram -estiveste -estivestes -estou -eu -exemplo -faço -falta -favor -faz -fazeis -fazem -fazemos -fazer -fazes -fez -fim -final -foi -fomos -for -foram -forma -foste -fostes -fui -geral -grande -grandes -grupo -há -hoje -hora -horas -isso -isto -já -lá -lado -local -logo -longe -lugar -maior -maioria -mais -mal -mas -máximo -me -meio -menor -menos -mês -meses -meu -meus -mil -minha -minhas -momento -muito -muitos -na -nada -não -naquela -naquelas -naquele -naqueles -nas -nem -nenhuma -nessa -nessas -nesse -nesses -nesta -nestas -neste -nestes -nível -no -noite -nome -nos -nós -nossa -nossas -nosso -nossos -nova -novas -nove -novo -novos -num -numa -número -nunca -o -obra -obrigada -obrigado -oitava -oitavo -oito -onde -ontem -onze -os -ou -outra -outras -outro -outros -para -parece -parte -partir -paucas -pela -pelas -pelo -pelos -perto -pode -pôde -podem -poder -põe -põem -ponto -pontos -por -porque -porquê -posição -possível -possivelmente -posso -pouca -pouco -poucos -primeira -primeiras -primeiro -primeiros -própria -próprias -próprio -próprios -próxima -próximas -próximo -próximos -puderam -quáis -qual -quando -quanto -quarta -quarto -quatro -que -quê -quem -quer -quereis -querem -queremas -queres -quero -questão -quinta -quinto -quinze -relação -sabe -sabem -são -se -segunda -segundo -sei -seis -sem -sempre -ser -seria -sete -sétima -sétimo -seu -seus -sexta -sexto -sim -sistema -sob -sobre -sois -somos -sou -sua -suas -tal -talvez -também -tanta -tantas -tanto -tão -tarde -te -tem -têm -temos -tendes -tenho -tens -ter -terceira -terceiro -teu -teus -teve -tive -tivemos -tiveram -tiveste -tivestes -toda -todas -todo -todos -trabalho -três -treze -tu -tua -tuas -tudo -um -uma -umas -uns -vai -vais -vão -vários -vem -vêm -vens -ver -vez -vezes -viagem -vindo -vinte -você -vocês -vos -vós -vossa -vossas -vosso -vossos +a +à +adeus +agora +aí +ainda +além +algo +algumas +alguns +ali +ano +anos +antes +ao +aos +apenas +apoio +após +aquela +aquelas +aquele +aqueles +aqui +aquilo +área +as +às +assim +até +atrás +através +baixo +bastante +bem +boa +boas +bom +bons +breve +cá +cada +catorze +cedo +cento +certamente +certeza +cima +cinco +coisa +com +como +conselho +contra +custa +da +dá +dão +daquela +daquelas +daquele +daqueles +dar +das +de +debaixo +demais +dentro +depois +desde +dessa +dessas +desse +desses +desta +destas +deste +destes +deve +deverá +dez +dezanove +dezasseis +dezassete +dezoito +dia +diante +diz +dizem +dizer +do +dois +dos +doze +duas +dúvida +e +é +ela +elas +ele +eles +em +embora +entre +era +és +essa +essas +esse +esses +esta +está +estão +estar +estas +estás +estava +este +estes +esteve +estive +estivemos +estiveram +estiveste +estivestes +estou +eu +exemplo +faço +falta +favor +faz +fazeis +fazem +fazemos +fazer +fazes +fez +fim +final +foi +fomos +for +foram +forma +foste +fostes +fui +geral +grande +grandes +grupo +há +hoje +hora +horas +isso +isto +já +lá +lado +local +logo +longe +lugar +maior +maioria +mais +mal +mas +máximo +me +meio +menor +menos +mês +meses +meu +meus +mil +minha +minhas +momento +muito +muitos +na +nada +não +naquela +naquelas +naquele +naqueles +nas +nem +nenhuma +nessa +nessas +nesse +nesses +nesta +nestas +neste +nestes +nível +no +noite +nome +nos +nós +nossa +nossas +nosso +nossos +nova +novas +nove +novo +novos +num +numa +número +nunca +o +obra +obrigada +obrigado +oitava +oitavo +oito +onde +ontem +onze +os +ou +outra +outras +outro +outros +para +parece +parte +partir +paucas +pela +pelas +pelo +pelos +perto +pode +pôde +podem +poder +põe +põem +ponto +pontos +por +porque +porquê +posição +possível +possivelmente +posso +pouca +pouco +poucos +primeira +primeiras +primeiro +primeiros +própria +próprias +próprio +próprios +próxima +próximas +próximo +próximos +puderam +quáis +qual +quando +quanto +quarta +quarto +quatro +que +quê +quem +quer +quereis +querem +queremas +queres +quero +questão +quinta +quinto +quinze +relação +sabe +sabem +são +se +segunda +segundo +sei +seis +sem +sempre +ser +seria +sete +sétima +sétimo +seu +seus +sexta +sexto +sim +sistema +sob +sobre +sois +somos +sou +sua +suas +tal +talvez +também +tanta +tantas +tanto +tão +tarde +te +tem +têm +temos +tendes +tenho +tens +ter +terceira +terceiro +teu +teus +teve +tive +tivemos +tiveram +tiveste +tivestes +toda +todas +todo +todos +trabalho +três +treze +tu +tua +tuas +tudo +um +uma +umas +uns +vai +vais +vão +vários +vem +vêm +vens +ver +vez +vezes +viagem +vindo +vinte +você +vocês +vos +vós +vossa +vossas +vosso +vossos zero \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_cz.txt b/yake/core/StopwordsList/stopwords_cz.txt similarity index 85% rename from yake/StopwordsList/stopwords_cz.txt rename to yake/core/StopwordsList/stopwords_cz.txt index df359f30..92053012 100644 --- a/yake/StopwordsList/stopwords_cz.txt +++ b/yake/core/StopwordsList/stopwords_cz.txt @@ -1,256 +1,256 @@ -ačkoli -ahoj -ale -anebo -ano -asi -aspoň -během -bez -beze -blízko -bohužel -brzo -bude -budeme -budeš -budete -budou -budu -byl -byla -byli -bylo -byly -bys -čau -chce -chceme -chceš -chcete -chci -chtějí -chtít -chut' -chuti -co -čtrnáct -čtyři -dál -dále -daleko -děkovat -děkujeme -děkuji -den -deset -devatenáct -devět -do -dobrý -docela -dva -dvacet -dvanáct -dvě -hodně -já -jak -jde -je -jeden -jedenáct -jedna -jedno -jednou -jedou -jeho -její -jejich -jemu -jen -jenom -ještě -jestli -jestliže -jí -jich -jím -jimi -jinak -jsem -jsi -jsme -jsou -jste -kam -kde -kdo -kdy -když -ke -kolik -kromě -která -které -kteří -který -kvůli -má -mají -málo -mám -máme -máš -máte -mé -mě -mezi -mí -mít -mně -mnou -moc -mohl -mohou -moje -moji -možná -můj -musí -může -my -na -nad -nade -nám -námi -naproti -nás -náš -naše -naši -ne -ně -nebo -nebyl -nebyla -nebyli -nebyly -něco -nedělá -nedělají -nedělám -neděláme -neděláš -neděláte -nějak -nejsi -někde -někdo -nemají -nemáme -nemáte -neměl -němu -není -nestačí -nevadí -než -nic -nich -ním -nimi -nula -od -ode -on -ona -oni -ono -ony -osm -osmnáct -pak -patnáct -pět -po -pořád -potom -pozdě -před -přes -přese -pro -proč -prosím -prostě -proti -protože -rovně -se -sedm -sedmnáct -šest -šestnáct -skoro -smějí -smí -snad -spolu -sta -sté -sto -ta -tady -tak -takhle -taky -tam -tamhle -tamhleto -tamto -tě -tebe -tebou -ted' -tedy -ten -ti -tisíc -tisíce -to -tobě -tohle -toto -třeba -tři -třináct -trošku -tvá -tvé -tvoje -tvůj -ty -určitě -už -vám -vámi -vás -váš -vaše -vaši -ve -večer -vedle -vlastně -všechno -všichni -vůbec -vy -vždy -za -zač -zatímco -ze +ačkoli +ahoj +ale +anebo +ano +asi +aspoň +během +bez +beze +blízko +bohužel +brzo +bude +budeme +budeš +budete +budou +budu +byl +byla +byli +bylo +byly +bys +čau +chce +chceme +chceš +chcete +chci +chtějí +chtít +chut' +chuti +co +čtrnáct +čtyři +dál +dále +daleko +děkovat +děkujeme +děkuji +den +deset +devatenáct +devět +do +dobrý +docela +dva +dvacet +dvanáct +dvě +hodně +já +jak +jde +je +jeden +jedenáct +jedna +jedno +jednou +jedou +jeho +její +jejich +jemu +jen +jenom +ještě +jestli +jestliže +jí +jich +jím +jimi +jinak +jsem +jsi +jsme +jsou +jste +kam +kde +kdo +kdy +když +ke +kolik +kromě +která +které +kteří +který +kvůli +má +mají +málo +mám +máme +máš +máte +mé +mě +mezi +mí +mít +mně +mnou +moc +mohl +mohou +moje +moji +možná +můj +musí +může +my +na +nad +nade +nám +námi +naproti +nás +náš +naše +naši +ne +ně +nebo +nebyl +nebyla +nebyli +nebyly +něco +nedělá +nedělají +nedělám +neděláme +neděláš +neděláte +nějak +nejsi +někde +někdo +nemají +nemáme +nemáte +neměl +němu +není +nestačí +nevadí +než +nic +nich +ním +nimi +nula +od +ode +on +ona +oni +ono +ony +osm +osmnáct +pak +patnáct +pět +po +pořád +potom +pozdě +před +přes +přese +pro +proč +prosím +prostě +proti +protože +rovně +se +sedm +sedmnáct +šest +šestnáct +skoro +smějí +smí +snad +spolu +sta +sté +sto +ta +tady +tak +takhle +taky +tam +tamhle +tamhleto +tamto +tě +tebe +tebou +ted' +tedy +ten +ti +tisíc +tisíce +to +tobě +tohle +toto +třeba +tři +třináct +trošku +tvá +tvé +tvoje +tvůj +ty +určitě +už +vám +vámi +vás +váš +vaše +vaši +ve +večer +vedle +vlastně +všechno +všichni +vůbec +vy +vždy +za +zač +zatímco +ze že \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_da.txt b/yake/core/StopwordsList/stopwords_da.txt similarity index 83% rename from yake/StopwordsList/stopwords_da.txt rename to yake/core/StopwordsList/stopwords_da.txt index 0dc00731..bffc1a41 100644 --- a/yake/StopwordsList/stopwords_da.txt +++ b/yake/core/StopwordsList/stopwords_da.txt @@ -1,64 +1,64 @@ -De -I -af -aldrig -alle -altid -bagved -de -der -du -efter -eller -en -endnu -et -fjernt -for -foran -fra -få -gennem -god -han -her -hos -hovfor -hun -hurtig -hvad -hvem -hvonår -hvor -hvordan -hvorhen -i -imod -ja -jeg -langsom -lidt -mange -med -meget -mellem -mere -mindre -måske -nede -nej -nok -nu -når -og -oppe -på -rask -sammen -temmelig -til -uden -udenfor -under -ved +De +I +af +aldrig +alle +altid +bagved +de +der +du +efter +eller +en +endnu +et +fjernt +for +foran +fra +få +gennem +god +han +her +hos +hovfor +hun +hurtig +hvad +hvem +hvonår +hvor +hvordan +hvorhen +i +imod +ja +jeg +langsom +lidt +mange +med +meget +mellem +mere +mindre +måske +nede +nej +nok +nu +når +og +oppe +på +rask +sammen +temmelig +til +uden +udenfor +under +ved vi \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_de.txt b/yake/core/StopwordsList/stopwords_de.txt similarity index 86% rename from yake/StopwordsList/stopwords_de.txt rename to yake/core/StopwordsList/stopwords_de.txt index 094783a5..668fe5e3 100644 --- a/yake/StopwordsList/stopwords_de.txt +++ b/yake/core/StopwordsList/stopwords_de.txt @@ -1,603 +1,603 @@ -a -ab -aber -aber -ach -acht -achte -achten -achter -achtes -ag -alle -allein -allem -allen -aller -allerdings -alles -allgemeinen -als -als -also -am -an -andere -anderen -andern -anders -au -auch -auch -auf -aus -ausser -außer -ausserdem -außerdem -b -bald -bei -beide -beiden -beim -beispiel -bekannt -bereits -besonders -besser -besten -bin -bis -bisher -bist -c -d -da -dabei -dadurch -dafür -dagegen -daher -dahin -dahinter -damals -damit -danach -daneben -dank -dann -daran -darauf -daraus -darf -darfst -darin -darüber -darum -darunter -das -das -dasein -daselbst -dass -daß -dasselbe -davon -davor -dazu -dazwischen -dein -deine -deinem -deiner -dem -dementsprechend -demgegenüber -demgemäss -demgemäß -demselben -demzufolge -den -denen -denn -denn -denselben -der -deren -derjenige -derjenigen -dermassen -dermaßen -derselbe -derselben -des -deshalb -desselben -dessen -deswegen -d.h -dich -die -diejenige -diejenigen -dies -diese -dieselbe -dieselben -diesem -diesen -dieser -dieses -dir -doch -dort -drei -drin -dritte -dritten -dritter -drittes -du -durch -durchaus -dürfen -dürft -durfte -durften -e -eben -ebenso -ehrlich -ei -ei, -ei, -eigen -eigene -eigenen -eigener -eigenes -ein -einander -eine -einem -einen -einer -eines -einige -einigen -einiger -einiges -einmal -einmal -eins -elf -en -ende -endlich -entweder -entweder -er -Ernst -erst -erste -ersten -erster -erstes -es -etwa -etwas -euch -f -früher -fünf -fünfte -fünften -fünfter -fünftes -für -g -gab -ganz -ganze -ganzen -ganzer -ganzes -gar -gedurft -gegen -gegenüber -gehabt -gehen -geht -gekannt -gekonnt -gemacht -gemocht -gemusst -genug -gerade -gern -gesagt -gesagt -geschweige -gewesen -gewollt -geworden -gibt -ging -gleich -gott -gross -groß -grosse -große -grossen -großen -grosser -großer -grosses -großes -gut -gute -guter -gutes -h -habe -haben -habt -hast -hat -hatte -hätte -hatten -hätten -heisst -her -heute -hier -hin -hinter -hoch -i -ich -ihm -ihn -ihnen -ihr -ihre -ihrem -ihren -ihrer -ihres -im -im -immer -in -in -indem -infolgedessen -ins -irgend -ist -j -ja -ja -jahr -jahre -jahren -je -jede -jedem -jeden -jeder -jedermann -jedermanns -jedoch -jemand -jemandem -jemanden -jene -jenem -jenen -jener -jenes -jetzt -k -kam -kann -kannst -kaum -kein -keine -keinem -keinen -keiner -kleine -kleinen -kleiner -kleines -kommen -kommt -können -könnt -konnte -könnte -konnten -kurz -l -lang -lange -lange -leicht -leide -lieber -los -m -machen -macht -machte -mag -magst -mahn -man -manche -manchem -manchen -mancher -manches -mann -mehr -mein -meine -meinem -meinen -meiner -meines -mensch -menschen -mich -mir -mit -mittel -mochte -möchte -mochten -mögen -möglich -mögt -morgen -muss -muß -müssen -musst -müsst -musste -mussten -n -na -nach -nachdem -nahm -natürlich -neben -nein -neue -neuen -neun -neunte -neunten -neunter -neuntes -nicht -nicht -nichts -nie -niemand -niemandem -niemanden -noch -nun -nun -nur -o -ob -ob -oben -oder -oder -offen -oft -oft -ohne -Ordnung -p -q -r -recht -rechte -rechten -rechter -rechtes -richtig -rund -s -sa -sache -sagt -sagte -sah -satt -schlecht -Schluss -schon -sechs -sechste -sechsten -sechster -sechstes -sehr -sei -sei -seid -seien -sein -seine -seinem -seinen -seiner -seines -seit -seitdem -selbst -selbst -sich -sie -sieben -siebente -siebenten -siebenter -siebentes -sind -so -solang -solche -solchem -solchen -solcher -solches -soll -sollen -sollte -sollten -sondern -sonst -sowie -später -statt -t -tag -tage -tagen -tat -teil -tel -tritt -trotzdem -tun -u -über -überhaupt -übrigens -uhr -um -und -und? -uns -unser -unsere -unserer -unter -v -vergangenen -viel -viele -vielem -vielen -vielleicht -vier -vierte -vierten -vierter -viertes -vom -von -vor -w -wahr? -während -währenddem -währenddessen -wann -war -wäre -waren -wart -warum -was -wegen -weil -weit -weiter -weitere -weiteren -weiteres -welche -welchem -welchen -welcher -welches -wem -wen -wenig -wenig -wenige -weniger -weniges -wenigstens -wenn -wenn -wer -werde -werden -werdet -wessen -wie -wie -wieder -will -willst -wir -wird -wirklich -wirst -wo -wohl -wollen -wollt -wollte -wollten -worden -wurde -würde -wurden -würden -x -y -z -z.b -zehn -zehnte -zehnten -zehnter -zehntes -zeit -zu -zuerst -zugleich -zum -zum -zunächst -zur -zurück -zusammen -zwanzig -zwar -zwar -zwei -zweite -zweiten -zweiter -zweites -zwischen -zwölf +a +ab +aber +aber +ach +acht +achte +achten +achter +achtes +ag +alle +allein +allem +allen +aller +allerdings +alles +allgemeinen +als +als +also +am +an +andere +anderen +andern +anders +au +auch +auch +auf +aus +ausser +außer +ausserdem +außerdem +b +bald +bei +beide +beiden +beim +beispiel +bekannt +bereits +besonders +besser +besten +bin +bis +bisher +bist +c +d +da +dabei +dadurch +dafür +dagegen +daher +dahin +dahinter +damals +damit +danach +daneben +dank +dann +daran +darauf +daraus +darf +darfst +darin +darüber +darum +darunter +das +das +dasein +daselbst +dass +daß +dasselbe +davon +davor +dazu +dazwischen +dein +deine +deinem +deiner +dem +dementsprechend +demgegenüber +demgemäss +demgemäß +demselben +demzufolge +den +denen +denn +denn +denselben +der +deren +derjenige +derjenigen +dermassen +dermaßen +derselbe +derselben +des +deshalb +desselben +dessen +deswegen +d.h +dich +die +diejenige +diejenigen +dies +diese +dieselbe +dieselben +diesem +diesen +dieser +dieses +dir +doch +dort +drei +drin +dritte +dritten +dritter +drittes +du +durch +durchaus +dürfen +dürft +durfte +durften +e +eben +ebenso +ehrlich +ei +ei, +ei, +eigen +eigene +eigenen +eigener +eigenes +ein +einander +eine +einem +einen +einer +eines +einige +einigen +einiger +einiges +einmal +einmal +eins +elf +en +ende +endlich +entweder +entweder +er +Ernst +erst +erste +ersten +erster +erstes +es +etwa +etwas +euch +f +früher +fünf +fünfte +fünften +fünfter +fünftes +für +g +gab +ganz +ganze +ganzen +ganzer +ganzes +gar +gedurft +gegen +gegenüber +gehabt +gehen +geht +gekannt +gekonnt +gemacht +gemocht +gemusst +genug +gerade +gern +gesagt +gesagt +geschweige +gewesen +gewollt +geworden +gibt +ging +gleich +gott +gross +groß +grosse +große +grossen +großen +grosser +großer +grosses +großes +gut +gute +guter +gutes +h +habe +haben +habt +hast +hat +hatte +hätte +hatten +hätten +heisst +her +heute +hier +hin +hinter +hoch +i +ich +ihm +ihn +ihnen +ihr +ihre +ihrem +ihren +ihrer +ihres +im +im +immer +in +in +indem +infolgedessen +ins +irgend +ist +j +ja +ja +jahr +jahre +jahren +je +jede +jedem +jeden +jeder +jedermann +jedermanns +jedoch +jemand +jemandem +jemanden +jene +jenem +jenen +jener +jenes +jetzt +k +kam +kann +kannst +kaum +kein +keine +keinem +keinen +keiner +kleine +kleinen +kleiner +kleines +kommen +kommt +können +könnt +konnte +könnte +konnten +kurz +l +lang +lange +lange +leicht +leide +lieber +los +m +machen +macht +machte +mag +magst +mahn +man +manche +manchem +manchen +mancher +manches +mann +mehr +mein +meine +meinem +meinen +meiner +meines +mensch +menschen +mich +mir +mit +mittel +mochte +möchte +mochten +mögen +möglich +mögt +morgen +muss +muß +müssen +musst +müsst +musste +mussten +n +na +nach +nachdem +nahm +natürlich +neben +nein +neue +neuen +neun +neunte +neunten +neunter +neuntes +nicht +nicht +nichts +nie +niemand +niemandem +niemanden +noch +nun +nun +nur +o +ob +ob +oben +oder +oder +offen +oft +oft +ohne +Ordnung +p +q +r +recht +rechte +rechten +rechter +rechtes +richtig +rund +s +sa +sache +sagt +sagte +sah +satt +schlecht +Schluss +schon +sechs +sechste +sechsten +sechster +sechstes +sehr +sei +sei +seid +seien +sein +seine +seinem +seinen +seiner +seines +seit +seitdem +selbst +selbst +sich +sie +sieben +siebente +siebenten +siebenter +siebentes +sind +so +solang +solche +solchem +solchen +solcher +solches +soll +sollen +sollte +sollten +sondern +sonst +sowie +später +statt +t +tag +tage +tagen +tat +teil +tel +tritt +trotzdem +tun +u +über +überhaupt +übrigens +uhr +um +und +und? +uns +unser +unsere +unserer +unter +v +vergangenen +viel +viele +vielem +vielen +vielleicht +vier +vierte +vierten +vierter +viertes +vom +von +vor +w +wahr? +während +währenddem +währenddessen +wann +war +wäre +waren +wart +warum +was +wegen +weil +weit +weiter +weitere +weiteren +weiteres +welche +welchem +welchen +welcher +welches +wem +wen +wenig +wenig +wenige +weniger +weniges +wenigstens +wenn +wenn +wer +werde +werden +werdet +wessen +wie +wie +wieder +will +willst +wir +wird +wirklich +wirst +wo +wohl +wollen +wollt +wollte +wollten +worden +wurde +würde +wurden +würden +x +y +z +z.b +zehn +zehnte +zehnten +zehnter +zehntes +zeit +zu +zuerst +zugleich +zum +zum +zunächst +zur +zurück +zusammen +zwanzig +zwar +zwar +zwei +zweite +zweiten +zweiter +zweites +zwischen +zwölf diff --git a/yake/StopwordsList/stopwords_el.txt b/yake/core/StopwordsList/stopwords_el.txt similarity index 91% rename from yake/StopwordsList/stopwords_el.txt rename to yake/core/StopwordsList/stopwords_el.txt index 15b21f28..dc17b6c1 100644 --- a/yake/StopwordsList/stopwords_el.txt +++ b/yake/core/StopwordsList/stopwords_el.txt @@ -1,844 +1,844 @@ -ένα -έναν -ένας -αδιακοπα -αι -ακομα -ακομη -ακριβως -αληθεια -αληθινα -αλλα -αλλαχου -αλλες -αλλη -αλλην -αλλης -αλλιως -αλλιωτικα -αλλο -αλλοι -αλλοιως -αλλοιωτικα -αλλον -αλλος -αλλοτε -αλλου -αλλους -αλλων -αμα -αμεσα -αμεσως -αν -ανα -αναμεσα -αναμεταξυ -ανευ -αντι -αντιπερα -αντις -ανω -ανωτερω -αξαφνα -απ -απεναντι -απο -αποψε -από -αρα -αραγε -αργα -αργοτερο -αριστερα -αρκετα -αρχικα -ας -αυριο -αυτα -αυτες -αυτεσ -αυτη -αυτην -αυτης -αυτο -αυτοι -αυτον -αυτος -αυτοσ -αυτου -αυτους -αυτουσ -αυτων -αφοτου -αφου -αἱ -αἳ -αἵ -αὐτόσ -αὐτὸς -αὖ -βεβαια -βεβαιοτατα -γάρ -γα -γα^ -γε -γι -για -γοῦν -γρηγορα -γυρω -γὰρ -δ' -δέ -δή -δα -δαί -δαίσ -δαὶ -δαὶς -δε -δε -δεινα -δεν -δεν -δεξια -δηθεν -δηλαδη -δι -δι -δι' -διά -δια -δια -διαρκως -δικα -δικο -δικοι -δικος -δικου -δικους -διολου -διπλα -διχως -διὰ -δὲ -δὴ -δ’ -εαν -εαυτο -εαυτον -εαυτου -εαυτους -εαυτων -εγκαιρα -εγκαιρως -εγω -εδω -ειδεμη -ειθε -ειμαι -ειμαστε -ειναι -εις -εισαι -εισαστε -ειστε -ειτε -ειχα -ειχαμε -ειχαν -ειχατε -ειχε -ειχες -εκ -εκαστα -εκαστες -εκαστη -εκαστην -εκαστης -εκαστο -εκαστοι -εκαστον -εκαστος -εκαστου -εκαστους -εκαστων -εκει -εκεινα -εκεινες -εκεινεσ -εκεινη -εκεινην -εκεινης -εκεινο -εκεινοι -εκεινον -εκεινος -εκεινοσ -εκεινου -εκεινους -εκεινουσ -εκεινων -εκτος -εμας -εμεις -εμενα -εμπρος -εν -ενα -εναν -ενας -ενος -εντελως -εντος -εντωμεταξυ -ενω -ενός -εξ -εξαφνα -εξης -εξισου -εξω -επ -επί -επανω -επειδη -επειτα -επι -επισης -επομενως -εσας -εσεις -εσενα -εστω -εσυ -ετερα -ετεραι -ετερας -ετερες -ετερη -ετερης -ετερο -ετεροι -ετερον -ετερος -ετερου -ετερους -ετερων -ετουτα -ετουτες -ετουτη -ετουτην -ετουτης -ετουτο -ετουτοι -ετουτον -ετουτος -ετουτου -ετουτους -ετουτων -ετσι -ευγε -ευθυς -ευτυχως -εφεξης -εχει -εχεις -εχετε -εχθες -εχομε -εχουμε -εχουν -εχτες -εχω -εως -εἰ -εἰμί -εἰμὶ -εἰς -εἰσ -εἴ -εἴμι -εἴτε -η -ηδη -ημασταν -ημαστε -ημουν -ησασταν -ησαστε -ησουν -ηταν -ητανε -ητοι -ηττον -θα -ιδια -ιδιαν -ιδιας -ιδιες -ιδιο -ιδιοι -ιδιον -ιδιος -ιδιου -ιδιους -ιδιων -ιδιως -ισαμε -ισια -ισως -ισωσ -κ -καί -καίτοι -καθ -καθε -καθεμια -καθεμιας -καθενα -καθενας -καθενος -καθετι -καθολου -καθως -και -κακα -κακως -καλα -καλως -καμια -καμιαν -καμιας -καμποσα -καμποσες -καμποση -καμποσην -καμποσης -καμποσο -καμποσοι -καμποσον -καμποσος -καμποσου -καμποσους -καμποσων -κανεις -κανεν -κανενα -κανεναν -κανενας -κανενος -καποια -καποιαν -καποιας -καποιες -καποιο -καποιοι -καποιον -καποιος -καποιου -καποιους -καποιων -καποτε -καπου -καπως -κατ -κατά -κατα -κατι -κατιτι -κατοπιν -κατω -κατὰ -καὶ -κι -κιολας -κλπ -κοντα -κτλ -κυριως -κἀν -κἂν -λιγακι -λιγο -λιγωτερο -λογω -λοιπα -λοιπον -μέν -μέσα -μή -μήτε -μία -μα -μαζι -μακαρι -μακρυα -μαλιστα -μαλλον -μας -με -μεθ -μεθαυριο -μειον -μελει -μελλεται -μεμιας -μεν -μερικα -μερικες -μερικοι -μερικους -μερικων -μεσα -μετ -μετά -μετα -μεταξυ -μετὰ -μεχρι -μη -μηδε -μην -μηπως -μητε -μιά -μια -μιαν -μιας -μολις -μολονοτι -μοναχα -μονες -μονη -μονην -μονης -μονο -μονοι -μονομιας -μονος -μονου -μονους -μονων -μου -μπορει -μπορουν -μπραβο -μπρος -μἐν -μὲν -μὴ -μὴν -να -ναι -νωρις -ξανα -ξαφνικα -ο -οι -ολα -ολες -ολη -ολην -ολης -ολο -ολογυρα -ολοι -ολον -ολονεν -ολος -ολοτελα -ολου -ολους -ολων -ολως -ολωςδιολου -ομως -ομωσ -οποια -οποιαδηποτε -οποιαν -οποιανδηποτε -οποιας -οποιαςδηποτε -οποιδηποτε -οποιες -οποιεσδηποτε -οποιο -οποιοδηποτε -οποιοι -οποιον -οποιονδηποτε -οποιος -οποιοσδηποτε -οποιου -οποιουδηποτε -οποιους -οποιουσδηποτε -οποιων -οποιωνδηποτε -οποτε -οποτεδηποτε -οπου -οπουδηποτε -οπως -οπωσ -ορισμενα -ορισμενες -ορισμενων -ορισμενως -οσα -οσαδηποτε -οσες -οσεςδηποτε -οση -οσηδηποτε -οσην -οσηνδηποτε -οσης -οσο -οσοδηποτε -οσοι -οσοιδηποτε -οσον -οσονδηποτε -οσος -οσοσδηποτε -οσου -οσουδηποτε -οσους -οσουσδηποτε -οσων -οσωνδηποτε -οταν -οτι -οτιδηποτε -οτου -ου -ουδε -ουτε -οχι -οἱ -οἳ -οἷς -οὐ -οὐδ -οὐδέ -οὐδείσ -οὐδεὶς -οὐδὲ -οὐδὲν -οὐκ -οὐχ -οὐχὶ -οὓς -οὔτε -οὕτω -οὕτως -οὕτωσ -οὖν -οὗ -οὗτος -οὗτοσ -παλι -παντοτε -παντου -παντως -παρ -παρά -παρα -παρὰ -περί -περα -περι -περιπου -περισσοτερο -περσι -περυσι -περὶ -πια -πιθανον -πιο -πισω -πλαι -πλεον -πλην -ποια -ποιαν -ποιας -ποιες -ποιεσ -ποιο -ποιοι -ποιον -ποιος -ποιοσ -ποιου -ποιους -ποιουσ -ποιων -πολυ -ποσες -ποση -ποσην -ποσης -ποσοι -ποσος -ποσους -ποτε -που -πουθε -πουθενα -ποῦ -πρεπει -πριν -προ -προκειμενου -προκειται -προπερσι -προς -προσ -προτου -προχθες -προχτες -πρωτυτερα -πρόσ -πρὸ -πρὸς -πως -πωσ -σαν -σας -σε -σεις -σημερα -σιγα -σου -στα -στη -στην -στης -στις -στο -στον -στου -στους -στων -συγχρονως -συν -συναμα -συνεπως -συνηθως -συχνα -συχνας -συχνες -συχνη -συχνην -συχνης -συχνο -συχνοι -συχνον -συχνος -συχνου -συχνους -συχνων -συχνως -σχεδον -σωστα -σόσ -σύ -σύν -σὸς -σὺ -σὺν -τά -τήν -τί -τίς -τίσ -τα -ταδε -ταυτα -ταυτες -ταυτη -ταυτην -ταυτης -ταυτο -ταυτον -ταυτος -ταυτου -ταυτων -ταχα -ταχατε -ταῖς -τε -τελικα -τελικως -τες -τετοια -τετοιαν -τετοιας -τετοιες -τετοιο -τετοιοι -τετοιον -τετοιος -τετοιου -τετοιους -τετοιων -τη -την -της -τησ -τι -τινα -τιποτα -τιποτε -τις -τισ -το -τοί -τοι -τοιοῦτος -τοιοῦτοσ -τον -τος -τοσα -τοσες -τοση -τοσην -τοσης -τοσο -τοσοι -τοσον -τοσος -τοσου -τοσους -τοσων -τοτε -του -τουλαχιστο -τουλαχιστον -τους -τουτα -τουτες -τουτη -τουτην -τουτης -τουτο -τουτοι -τουτοις -τουτον -τουτος -τουτου -τουτους -τουτων -τούσ -τοὺς -τοῖς -τοῦ -τυχον -των -τωρα -τό -τόν -τότε -τὰ -τὰς -τὴν -τὸ -τὸν -τῆς -τῆσ -τῇ -τῶν -τῷ -υπ -υπερ -υπο -υποψη -υποψιν -υπό -υστερα -φετος -χαμηλα -χθες -χτες -χωρις -χωριστα -ψηλα -ω -ωραια -ως -ωσ -ωσαν -ωσοτου -ωσπου -ωστε -ωστοσο -ωχ -ἀλλ' -ἀλλά -ἀλλὰ -ἀλλ’ -ἀπ -ἀπό -ἀπὸ -ἀφ -ἂν -ἃ -ἄλλος -ἄλλοσ -ἄν -ἄρα -ἅμα -ἐάν -ἐγώ -ἐγὼ -ἐκ -ἐμόσ -ἐμὸς -ἐν -ἐξ -ἐπί -ἐπεὶ -ἐπὶ -ἐστι -ἐφ -ἐὰν -ἑαυτοῦ -ἔτι -ἡ -ἢ -ἣ -ἤ -ἥ -ἧς -ἵνα -ὁ -ὃ -ὃν -ὃς -ὅ -ὅδε -ὅθεν -ὅπερ -ὅς -ὅσ -ὅστις -ὅστισ -ὅτε -ὅτι -ὑμόσ -ὑπ -ὑπέρ -ὑπό -ὑπὲρ -ὑπὸ -ὡς -ὡσ -ὥς -ὥστε -ὦ +ένα +έναν +ένας +αδιακοπα +αι +ακομα +ακομη +ακριβως +αληθεια +αληθινα +αλλα +αλλαχου +αλλες +αλλη +αλλην +αλλης +αλλιως +αλλιωτικα +αλλο +αλλοι +αλλοιως +αλλοιωτικα +αλλον +αλλος +αλλοτε +αλλου +αλλους +αλλων +αμα +αμεσα +αμεσως +αν +ανα +αναμεσα +αναμεταξυ +ανευ +αντι +αντιπερα +αντις +ανω +ανωτερω +αξαφνα +απ +απεναντι +απο +αποψε +από +αρα +αραγε +αργα +αργοτερο +αριστερα +αρκετα +αρχικα +ας +αυριο +αυτα +αυτες +αυτεσ +αυτη +αυτην +αυτης +αυτο +αυτοι +αυτον +αυτος +αυτοσ +αυτου +αυτους +αυτουσ +αυτων +αφοτου +αφου +αἱ +αἳ +αἵ +αὐτόσ +αὐτὸς +αὖ +βεβαια +βεβαιοτατα +γάρ +γα +γα^ +γε +γι +για +γοῦν +γρηγορα +γυρω +γὰρ +δ' +δέ +δή +δα +δαί +δαίσ +δαὶ +δαὶς +δε +δε +δεινα +δεν +δεν +δεξια +δηθεν +δηλαδη +δι +δι +δι' +διά +δια +δια +διαρκως +δικα +δικο +δικοι +δικος +δικου +δικους +διολου +διπλα +διχως +διὰ +δὲ +δὴ +δ’ +εαν +εαυτο +εαυτον +εαυτου +εαυτους +εαυτων +εγκαιρα +εγκαιρως +εγω +εδω +ειδεμη +ειθε +ειμαι +ειμαστε +ειναι +εις +εισαι +εισαστε +ειστε +ειτε +ειχα +ειχαμε +ειχαν +ειχατε +ειχε +ειχες +εκ +εκαστα +εκαστες +εκαστη +εκαστην +εκαστης +εκαστο +εκαστοι +εκαστον +εκαστος +εκαστου +εκαστους +εκαστων +εκει +εκεινα +εκεινες +εκεινεσ +εκεινη +εκεινην +εκεινης +εκεινο +εκεινοι +εκεινον +εκεινος +εκεινοσ +εκεινου +εκεινους +εκεινουσ +εκεινων +εκτος +εμας +εμεις +εμενα +εμπρος +εν +ενα +εναν +ενας +ενος +εντελως +εντος +εντωμεταξυ +ενω +ενός +εξ +εξαφνα +εξης +εξισου +εξω +επ +επί +επανω +επειδη +επειτα +επι +επισης +επομενως +εσας +εσεις +εσενα +εστω +εσυ +ετερα +ετεραι +ετερας +ετερες +ετερη +ετερης +ετερο +ετεροι +ετερον +ετερος +ετερου +ετερους +ετερων +ετουτα +ετουτες +ετουτη +ετουτην +ετουτης +ετουτο +ετουτοι +ετουτον +ετουτος +ετουτου +ετουτους +ετουτων +ετσι +ευγε +ευθυς +ευτυχως +εφεξης +εχει +εχεις +εχετε +εχθες +εχομε +εχουμε +εχουν +εχτες +εχω +εως +εἰ +εἰμί +εἰμὶ +εἰς +εἰσ +εἴ +εἴμι +εἴτε +η +ηδη +ημασταν +ημαστε +ημουν +ησασταν +ησαστε +ησουν +ηταν +ητανε +ητοι +ηττον +θα +ιδια +ιδιαν +ιδιας +ιδιες +ιδιο +ιδιοι +ιδιον +ιδιος +ιδιου +ιδιους +ιδιων +ιδιως +ισαμε +ισια +ισως +ισωσ +κ +καί +καίτοι +καθ +καθε +καθεμια +καθεμιας +καθενα +καθενας +καθενος +καθετι +καθολου +καθως +και +κακα +κακως +καλα +καλως +καμια +καμιαν +καμιας +καμποσα +καμποσες +καμποση +καμποσην +καμποσης +καμποσο +καμποσοι +καμποσον +καμποσος +καμποσου +καμποσους +καμποσων +κανεις +κανεν +κανενα +κανεναν +κανενας +κανενος +καποια +καποιαν +καποιας +καποιες +καποιο +καποιοι +καποιον +καποιος +καποιου +καποιους +καποιων +καποτε +καπου +καπως +κατ +κατά +κατα +κατι +κατιτι +κατοπιν +κατω +κατὰ +καὶ +κι +κιολας +κλπ +κοντα +κτλ +κυριως +κἀν +κἂν +λιγακι +λιγο +λιγωτερο +λογω +λοιπα +λοιπον +μέν +μέσα +μή +μήτε +μία +μα +μαζι +μακαρι +μακρυα +μαλιστα +μαλλον +μας +με +μεθ +μεθαυριο +μειον +μελει +μελλεται +μεμιας +μεν +μερικα +μερικες +μερικοι +μερικους +μερικων +μεσα +μετ +μετά +μετα +μεταξυ +μετὰ +μεχρι +μη +μηδε +μην +μηπως +μητε +μιά +μια +μιαν +μιας +μολις +μολονοτι +μοναχα +μονες +μονη +μονην +μονης +μονο +μονοι +μονομιας +μονος +μονου +μονους +μονων +μου +μπορει +μπορουν +μπραβο +μπρος +μἐν +μὲν +μὴ +μὴν +να +ναι +νωρις +ξανα +ξαφνικα +ο +οι +ολα +ολες +ολη +ολην +ολης +ολο +ολογυρα +ολοι +ολον +ολονεν +ολος +ολοτελα +ολου +ολους +ολων +ολως +ολωςδιολου +ομως +ομωσ +οποια +οποιαδηποτε +οποιαν +οποιανδηποτε +οποιας +οποιαςδηποτε +οποιδηποτε +οποιες +οποιεσδηποτε +οποιο +οποιοδηποτε +οποιοι +οποιον +οποιονδηποτε +οποιος +οποιοσδηποτε +οποιου +οποιουδηποτε +οποιους +οποιουσδηποτε +οποιων +οποιωνδηποτε +οποτε +οποτεδηποτε +οπου +οπουδηποτε +οπως +οπωσ +ορισμενα +ορισμενες +ορισμενων +ορισμενως +οσα +οσαδηποτε +οσες +οσεςδηποτε +οση +οσηδηποτε +οσην +οσηνδηποτε +οσης +οσο +οσοδηποτε +οσοι +οσοιδηποτε +οσον +οσονδηποτε +οσος +οσοσδηποτε +οσου +οσουδηποτε +οσους +οσουσδηποτε +οσων +οσωνδηποτε +οταν +οτι +οτιδηποτε +οτου +ου +ουδε +ουτε +οχι +οἱ +οἳ +οἷς +οὐ +οὐδ +οὐδέ +οὐδείσ +οὐδεὶς +οὐδὲ +οὐδὲν +οὐκ +οὐχ +οὐχὶ +οὓς +οὔτε +οὕτω +οὕτως +οὕτωσ +οὖν +οὗ +οὗτος +οὗτοσ +παλι +παντοτε +παντου +παντως +παρ +παρά +παρα +παρὰ +περί +περα +περι +περιπου +περισσοτερο +περσι +περυσι +περὶ +πια +πιθανον +πιο +πισω +πλαι +πλεον +πλην +ποια +ποιαν +ποιας +ποιες +ποιεσ +ποιο +ποιοι +ποιον +ποιος +ποιοσ +ποιου +ποιους +ποιουσ +ποιων +πολυ +ποσες +ποση +ποσην +ποσης +ποσοι +ποσος +ποσους +ποτε +που +πουθε +πουθενα +ποῦ +πρεπει +πριν +προ +προκειμενου +προκειται +προπερσι +προς +προσ +προτου +προχθες +προχτες +πρωτυτερα +πρόσ +πρὸ +πρὸς +πως +πωσ +σαν +σας +σε +σεις +σημερα +σιγα +σου +στα +στη +στην +στης +στις +στο +στον +στου +στους +στων +συγχρονως +συν +συναμα +συνεπως +συνηθως +συχνα +συχνας +συχνες +συχνη +συχνην +συχνης +συχνο +συχνοι +συχνον +συχνος +συχνου +συχνους +συχνων +συχνως +σχεδον +σωστα +σόσ +σύ +σύν +σὸς +σὺ +σὺν +τά +τήν +τί +τίς +τίσ +τα +ταδε +ταυτα +ταυτες +ταυτη +ταυτην +ταυτης +ταυτο +ταυτον +ταυτος +ταυτου +ταυτων +ταχα +ταχατε +ταῖς +τε +τελικα +τελικως +τες +τετοια +τετοιαν +τετοιας +τετοιες +τετοιο +τετοιοι +τετοιον +τετοιος +τετοιου +τετοιους +τετοιων +τη +την +της +τησ +τι +τινα +τιποτα +τιποτε +τις +τισ +το +τοί +τοι +τοιοῦτος +τοιοῦτοσ +τον +τος +τοσα +τοσες +τοση +τοσην +τοσης +τοσο +τοσοι +τοσον +τοσος +τοσου +τοσους +τοσων +τοτε +του +τουλαχιστο +τουλαχιστον +τους +τουτα +τουτες +τουτη +τουτην +τουτης +τουτο +τουτοι +τουτοις +τουτον +τουτος +τουτου +τουτους +τουτων +τούσ +τοὺς +τοῖς +τοῦ +τυχον +των +τωρα +τό +τόν +τότε +τὰ +τὰς +τὴν +τὸ +τὸν +τῆς +τῆσ +τῇ +τῶν +τῷ +υπ +υπερ +υπο +υποψη +υποψιν +υπό +υστερα +φετος +χαμηλα +χθες +χτες +χωρις +χωριστα +ψηλα +ω +ωραια +ως +ωσ +ωσαν +ωσοτου +ωσπου +ωστε +ωστοσο +ωχ +ἀλλ' +ἀλλά +ἀλλὰ +ἀλλ’ +ἀπ +ἀπό +ἀπὸ +ἀφ +ἂν +ἃ +ἄλλος +ἄλλοσ +ἄν +ἄρα +ἅμα +ἐάν +ἐγώ +ἐγὼ +ἐκ +ἐμόσ +ἐμὸς +ἐν +ἐξ +ἐπί +ἐπεὶ +ἐπὶ +ἐστι +ἐφ +ἐὰν +ἑαυτοῦ +ἔτι +ἡ +ἢ +ἣ +ἤ +ἥ +ἧς +ἵνα +ὁ +ὃ +ὃν +ὃς +ὅ +ὅδε +ὅθεν +ὅπερ +ὅς +ὅσ +ὅστις +ὅστισ +ὅτε +ὅτι +ὑμόσ +ὑπ +ὑπέρ +ὑπό +ὑπὲρ +ὑπὸ +ὡς +ὡσ +ὥς +ὥστε +ὦ ᾧ \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_en.txt b/yake/core/StopwordsList/stopwords_en.txt similarity index 86% rename from yake/StopwordsList/stopwords_en.txt rename to yake/core/StopwordsList/stopwords_en.txt index fd50d8a5..5d5bbc05 100644 --- a/yake/StopwordsList/stopwords_en.txt +++ b/yake/core/StopwordsList/stopwords_en.txt @@ -1,575 +1,575 @@ -dr -dra -mr -ms -a -a's -able -about -above -according -accordingly -across -actually -after -afterwards -again -against -ain't -all -allow -allows -almost -alone -along -already -also -although -always -am -among -amongst -an -and -another -any -anybody -anyhow -anyone -anything -anyway -anyways -anywhere -apart -appear -appreciate -appropriate -are -aren't -around -as -aside -ask -asking -associated -at -available -away -awfully -b -be -became -because -become -becomes -becoming -been -before -beforehand -behind -being -believe -below -beside -besides -best -better -between -beyond -both -brief -but -by -c -c'mon -c's -came -can -can't -cannot -cant -cause -causes -certain -certainly -changes -clearly -co -com -come -comes -concerning -consequently -consider -considering -contain -containing -contains -corresponding -could -couldn't -course -currently -d -definitely -described -despite -did -didn't -different -do -does -doesn't -doing -don't -done -down -downwards -during -e -each -edu -eg -eight -either -else -elsewhere -enough -entirely -especially -et -etc -even -ever -every -everybody -everyone -everything -everywhere -ex -exactly -example -except -f -far -few -fifth -first -five -followed -following -follows -for -former -formerly -forth -four -from -further -furthermore -g -get -gets -getting -given -gives -go -goes -going -gone -got -gotten -greetings -h -had -hadn't -happens -hardly -has -hasn't -have -haven't -having -he -he's -hello -help -hence -her -here -here's -hereafter -hereby -herein -hereupon -hers -herself -hi -him -himself -his -hither -hopefully -how -howbeit -however -i -i'd -i'll -i'm -i've -ie -if -ignored -immediate -in -inasmuch -inc -indeed -indicate -indicated -indicates -inner -insofar -instead -into -inward -is -isn't -it -it'd -it'll -it's -its -itself -j -just -k -keep -keeps -kept -know -knows -known -l -last -lately -later -latter -latterly -least -less -lest -let -let's -like -liked -likely -little -look -looking -looks -ltd -m -mainly -many -may -maybe -me -mean -meanwhile -merely -might -more -moreover -most -mostly -much -must -my -myself -n -name -namely -nd -near -nearly -necessary -need -needs -neither -never -nevertheless -new -next -nine -no -nobody -non -none -noone -nor -normally -not -nothing -novel -now -nowhere -o -obviously -of -off -often -oh -ok -okay -old -on -once -one -ones -only -onto -or -other -others -otherwise -ought -our -ours -ourselves -out -outside -over -overall -own -p -particular -particularly -per -perhaps -placed -please -plus -possible -presumably -probably -provides -q -que -quite -qv -r -rather -rd -re -really -reasonably -regarding -regardless -regards -relatively -respectively -right -s -said -same -saw -say -saying -says -second -secondly -see -seeing -seem -seemed -seeming -seems -seen -self -selves -sensible -sent -serious -seriously -seven -several -shall -she -should -shouldn't -since -six -so -some -somebody -somehow -someone -something -sometime -sometimes -somewhat -somewhere -soon -sorry -specified -specify -specifying -still -sub -such -sup -sure -t -t's -take -taken -tell -tends -th -than -thank -thanks -thanx -that -that's -thats -the -their -theirs -them -themselves -then -thence -there -there's -thereafter -thereby -therefore -therein -theres -thereupon -these -they -they'd -they'll -they're -they've -think -third -this -thorough -thoroughly -those -though -three -through -throughout -thru -thus -to -together -too -took -toward -towards -tried -tries -truly -try -trying -twice -two -u -un -under -unfortunately -unless -unlikely -until -unto -up -upon -us -use -used -useful -uses -using -usually -uucp -v -value -various -very -via -viz -vs -w -want -wants -was -wasn't -way -we -we'd -we'll -we're -we've -welcome -well -went -were -weren't -what -what's -whatever -when -whence -whenever -where -where's -whereafter -whereas -whereby -wherein -whereupon -wherever -whether -which -while -whither -who -who's -whoever -whole -whom -whose -why -will -willing -wish -with -within -without -won't -wonder -would -would -wouldn't -x -y -yes -yet -you -you'd -you'll -you're -you've -your -yours -yourself -yourselves -z +dr +dra +mr +ms +a +a's +able +about +above +according +accordingly +across +actually +after +afterwards +again +against +ain't +all +allow +allows +almost +alone +along +already +also +although +always +am +among +amongst +an +and +another +any +anybody +anyhow +anyone +anything +anyway +anyways +anywhere +apart +appear +appreciate +appropriate +are +aren't +around +as +aside +ask +asking +associated +at +available +away +awfully +b +be +became +because +become +becomes +becoming +been +before +beforehand +behind +being +believe +below +beside +besides +best +better +between +beyond +both +brief +but +by +c +c'mon +c's +came +can +can't +cannot +cant +cause +causes +certain +certainly +changes +clearly +co +com +come +comes +concerning +consequently +consider +considering +contain +containing +contains +corresponding +could +couldn't +course +currently +d +definitely +described +despite +did +didn't +different +do +does +doesn't +doing +don't +done +down +downwards +during +e +each +edu +eg +eight +either +else +elsewhere +enough +entirely +especially +et +etc +even +ever +every +everybody +everyone +everything +everywhere +ex +exactly +example +except +f +far +few +fifth +first +five +followed +following +follows +for +former +formerly +forth +four +from +further +furthermore +g +get +gets +getting +given +gives +go +goes +going +gone +got +gotten +greetings +h +had +hadn't +happens +hardly +has +hasn't +have +haven't +having +he +he's +hello +help +hence +her +here +here's +hereafter +hereby +herein +hereupon +hers +herself +hi +him +himself +his +hither +hopefully +how +howbeit +however +i +i'd +i'll +i'm +i've +ie +if +ignored +immediate +in +inasmuch +inc +indeed +indicate +indicated +indicates +inner +insofar +instead +into +inward +is +isn't +it +it'd +it'll +it's +its +itself +j +just +k +keep +keeps +kept +know +knows +known +l +last +lately +later +latter +latterly +least +less +lest +let +let's +like +liked +likely +little +look +looking +looks +ltd +m +mainly +many +may +maybe +me +mean +meanwhile +merely +might +more +moreover +most +mostly +much +must +my +myself +n +name +namely +nd +near +nearly +necessary +need +needs +neither +never +nevertheless +new +next +nine +no +nobody +non +none +noone +nor +normally +not +nothing +novel +now +nowhere +o +obviously +of +off +often +oh +ok +okay +old +on +once +one +ones +only +onto +or +other +others +otherwise +ought +our +ours +ourselves +out +outside +over +overall +own +p +particular +particularly +per +perhaps +placed +please +plus +possible +presumably +probably +provides +q +que +quite +qv +r +rather +rd +re +really +reasonably +regarding +regardless +regards +relatively +respectively +right +s +said +same +saw +say +saying +says +second +secondly +see +seeing +seem +seemed +seeming +seems +seen +self +selves +sensible +sent +serious +seriously +seven +several +shall +she +should +shouldn't +since +six +so +some +somebody +somehow +someone +something +sometime +sometimes +somewhat +somewhere +soon +sorry +specified +specify +specifying +still +sub +such +sup +sure +t +t's +take +taken +tell +tends +th +than +thank +thanks +thanx +that +that's +thats +the +their +theirs +them +themselves +then +thence +there +there's +thereafter +thereby +therefore +therein +theres +thereupon +these +they +they'd +they'll +they're +they've +think +third +this +thorough +thoroughly +those +though +three +through +throughout +thru +thus +to +together +too +took +toward +towards +tried +tries +truly +try +trying +twice +two +u +un +under +unfortunately +unless +unlikely +until +unto +up +upon +us +use +used +useful +uses +using +usually +uucp +v +value +various +very +via +viz +vs +w +want +wants +was +wasn't +way +we +we'd +we'll +we're +we've +welcome +well +went +were +weren't +what +what's +whatever +when +whence +whenever +where +where's +whereafter +whereas +whereby +wherein +whereupon +wherever +whether +which +while +whither +who +who's +whoever +whole +whom +whose +why +will +willing +wish +with +within +without +won't +wonder +would +would +wouldn't +x +y +yes +yet +you +you'd +you'll +you're +you've +your +yours +yourself +yourselves +z zero \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_es.txt b/yake/core/StopwordsList/stopwords_es.txt similarity index 86% rename from yake/StopwordsList/stopwords_es.txt rename to yake/core/StopwordsList/stopwords_es.txt index 5f3983fc..78e3c411 100644 --- a/yake/StopwordsList/stopwords_es.txt +++ b/yake/core/StopwordsList/stopwords_es.txt @@ -1,351 +1,351 @@ -él -ésta -éstas -éste -éstos -última -últimas -último -últimos -a -añadió -aún -actualmente -adelante -además -afirmó -agregó -ahí -ahora -al -algún -algo -alguna -algunas -alguno -algunos -alrededor -ambos -ante -anterior -antes -apenas -aproximadamente -aquí -así -aseguró -aunque -ayer -bajo -bien -buen -buena -buenas -bueno -buenos -cómo -cada -casi -cerca -cierto -cinco -comentó -como -con -conocer -consideró -considera -contra -cosas -creo -cual -cuales -cualquier -cuando -cuanto -cuatro -cuenta -da -dado -dan -dar -de -debe -deben -debido -decir -dejó -del -demás -dentro -desde -después -dice -dicen -dicho -dieron -diferente -diferentes -dijeron -dijo -dio -donde -dos -durante -e -ejemplo -el -ella -ellas -ello -ellos -embargo -en -encuentra -entonces -entre -era -eran -es -esa -esas -ese -eso -esos -está -están -esta -estaba -estaban -estamos -estar -estará -estas -este -esto -estos -estoy -estuvo -ex -existe -existen -explicó -expresó -fin -fue -fuera -fueron -gran -grandes -ha -había -habían -haber -habrá -hace -hacen -hacer -hacerlo -hacia -haciendo -han -hasta -hay -haya -he -hecho -hemos -hicieron -hizo -hoy -hubo -igual -incluso -indicó -informó -junto -la -lado -las -le -les -llegó -lleva -llevar -lo -los -luego -lugar -más -manera -manifestó -mayor -me -mediante -mejor -mencionó -menos -mi -mientras -misma -mismas -mismo -mismos -momento -mucha -muchas -mucho -muchos -muy -nada -nadie -ni -ningún -ninguna -ningunas -ninguno -ningunos -no -nos -nosotras -nosotros -nuestra -nuestras -nuestro -nuestros -nueva -nuevas -nuevo -nuevos -nunca -o -ocho -otra -otras -otro -otros -para -parece -parte -partir -pasada -pasado -pero -pesar -poca -pocas -poco -pocos -podemos -podrá -podrán -podría -podrían -poner -por -porque -posible -próximo -próximos -primer -primera -primero -primeros -principalmente -propia -propias -propio -propios -pudo -pueda -puede -pueden -pues -qué -que -quedó -queremos -quién -quien -quienes -quiere -realizó -realizado -realizar -respecto -sí -sólo -se -señaló -sea -sean -según -segunda -segundo -seis -ser -será -serán -sería -si -sido -siempre -siendo -siete -sigue -siguiente -sin -sino -sobre -sola -solamente -solas -solo -solos -son -su -sus -tal -también -tampoco -tan -tanto -tenía -tendrá -tendrán -tenemos -tener -tenga -tengo -tenido -tercera -tiene -tienen -toda -todas -todavía -todo -todos -total -tras -trata -través -tres -tuvo -un -una -unas -uno -unos -usted -va -vamos -van -varias -varios -veces -ver -vez -y -ya +él +ésta +éstas +éste +éstos +última +últimas +último +últimos +a +añadió +aún +actualmente +adelante +además +afirmó +agregó +ahí +ahora +al +algún +algo +alguna +algunas +alguno +algunos +alrededor +ambos +ante +anterior +antes +apenas +aproximadamente +aquí +así +aseguró +aunque +ayer +bajo +bien +buen +buena +buenas +bueno +buenos +cómo +cada +casi +cerca +cierto +cinco +comentó +como +con +conocer +consideró +considera +contra +cosas +creo +cual +cuales +cualquier +cuando +cuanto +cuatro +cuenta +da +dado +dan +dar +de +debe +deben +debido +decir +dejó +del +demás +dentro +desde +después +dice +dicen +dicho +dieron +diferente +diferentes +dijeron +dijo +dio +donde +dos +durante +e +ejemplo +el +ella +ellas +ello +ellos +embargo +en +encuentra +entonces +entre +era +eran +es +esa +esas +ese +eso +esos +está +están +esta +estaba +estaban +estamos +estar +estará +estas +este +esto +estos +estoy +estuvo +ex +existe +existen +explicó +expresó +fin +fue +fuera +fueron +gran +grandes +ha +había +habían +haber +habrá +hace +hacen +hacer +hacerlo +hacia +haciendo +han +hasta +hay +haya +he +hecho +hemos +hicieron +hizo +hoy +hubo +igual +incluso +indicó +informó +junto +la +lado +las +le +les +llegó +lleva +llevar +lo +los +luego +lugar +más +manera +manifestó +mayor +me +mediante +mejor +mencionó +menos +mi +mientras +misma +mismas +mismo +mismos +momento +mucha +muchas +mucho +muchos +muy +nada +nadie +ni +ningún +ninguna +ningunas +ninguno +ningunos +no +nos +nosotras +nosotros +nuestra +nuestras +nuestro +nuestros +nueva +nuevas +nuevo +nuevos +nunca +o +ocho +otra +otras +otro +otros +para +parece +parte +partir +pasada +pasado +pero +pesar +poca +pocas +poco +pocos +podemos +podrá +podrán +podría +podrían +poner +por +porque +posible +próximo +próximos +primer +primera +primero +primeros +principalmente +propia +propias +propio +propios +pudo +pueda +puede +pueden +pues +qué +que +quedó +queremos +quién +quien +quienes +quiere +realizó +realizado +realizar +respecto +sí +sólo +se +señaló +sea +sean +según +segunda +segundo +seis +ser +será +serán +sería +si +sido +siempre +siendo +siete +sigue +siguiente +sin +sino +sobre +sola +solamente +solas +solo +solos +son +su +sus +tal +también +tampoco +tan +tanto +tenía +tendrá +tendrán +tenemos +tener +tenga +tengo +tenido +tercera +tiene +tienen +toda +todas +todavía +todo +todos +total +tras +trata +través +tres +tuvo +un +una +unas +uno +unos +usted +va +vamos +van +varias +varios +veces +ver +vez +y +ya yo \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_et.txt b/yake/core/StopwordsList/stopwords_et.txt similarity index 81% rename from yake/StopwordsList/stopwords_et.txt rename to yake/core/StopwordsList/stopwords_et.txt index 8e774ef3..8b5d74e5 100644 --- a/yake/StopwordsList/stopwords_et.txt +++ b/yake/core/StopwordsList/stopwords_et.txt @@ -1,35 +1,35 @@ -aga -ei -et -ja -jah -kas -kui -kõik -ma -me -mida -midagi -mind -minu -mis -mu -mul -mulle -nad -nii -oled -olen -oli -oma -on -pole -sa -seda -see -selle -siin -siis -ta -te +aga +ei +et +ja +jah +kas +kui +kõik +ma +me +mida +midagi +mind +minu +mis +mu +mul +mulle +nad +nii +oled +olen +oli +oma +on +pole +sa +seda +see +selle +siin +siis +ta +te ära \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_fa.txt b/yake/core/StopwordsList/stopwords_fa.txt similarity index 89% rename from yake/StopwordsList/stopwords_fa.txt rename to yake/core/StopwordsList/stopwords_fa.txt index a9347060..109b54c3 100644 --- a/yake/StopwordsList/stopwords_fa.txt +++ b/yake/core/StopwordsList/stopwords_fa.txt @@ -1,332 +1,332 @@ -و -در -به -از -كه -مي -اين -است -را -با -هاي -براي -آن -يك -شود -شده -خود -ها -كرد -شد -اي -تا -كند -بر -بود -گفت -نيز -وي -هم -كنند -دارد -ما -كرده -يا -اما -بايد -دو -اند -هر -خواهد -او -مورد -آنها -باشد -ديگر -مردم -نمي -بين -پيش -پس -اگر -همه -صورت -يكي -هستند -بي -من -دهد -هزار -نيست -استفاده -داد -داشته -راه -داشت -چه -همچنين -كردند -داده -بوده -دارند -همين -ميليون -سوي -شوند -بيشتر -بسيار -روي -گرفته -هايي -تواند -اول -نام -هيچ -چند -جديد -بيش -شدن -كردن -كنيم -نشان -حتي -اينكه -ولی -توسط -چنين -برخي -نه -ديروز -دوم -درباره -بعد -مختلف -گيرد -شما -گفته -آنان -بار -طور -گرفت -دهند -گذاري -بسياري -طي -بودند -ميليارد -بدون -تمام -كل -تر -براساس -شدند -ترين -امروز -باشند -ندارد -چون -قابل -گويد -ديگري -همان -خواهند -قبل -آمده -اكنون -تحت -طريق -گيري -جاي -هنوز -چرا -البته -كنيد -سازي -سوم -كنم -بلكه -زير -توانند -ضمن -فقط -بودن -حق -آيد -وقتي -اش -يابد -نخستين -مقابل -خدمات -امسال -تاكنون -مانند -تازه -آورد -فكر -آنچه -نخست -نشده -شايد -چهار -جريان -پنج -ساخته -زيرا -نزديك -برداري -كسي -ريزي -رفت -گردد -مثل -آمد -ام -بهترين -دانست -كمتر -دادن -تمامي -جلوگيري -بيشتري -ايم -ناشي -چيزي -آنكه -بالا -بنابراين -ايشان -بعضي -دادند -داشتند -برخوردار -نخواهد -هنگام -نبايد -غير -نبود -ديده -وگو -داريم -چگونه -بندي -خواست -فوق -ده -نوعي -هستيم -ديگران -همچنان -سراسر -ندارند -گروهي -سعي -روزهاي -آنجا -يكديگر -كردم -بيست -بروز -سپس -رفته -آورده -نمايد -باشيم -گويند -زياد -خويش -همواره -گذاشته -شش -نداشته -شناسي -خواهيم -آباد -داشتن -نظير -همچون -باره -نكرده -شان -سابق -هفت -دانند -جايي -بی -جز -زیرِ -رویِ -سریِ -تویِ -جلویِ -پیشِ -عقبِ -بالایِ -خارجِ -وسطِ -بیرونِ -سویِ -کنارِ -پاعینِ -نزدِ -نزدیکِ -دنبالِ -حدودِ -برابرِ -طبقِ -مانندِ -ضدِّ -هنگامِ -برایِ -مثلِ -بارة -اثرِ -تولِ -علّتِ -سمتِ -عنوانِ -قصدِ -روب -جدا -کی -که -چیست -هست -کجا -کجاست -کَی -چطور -کدام -آیا -مگر -چندین -یک -چیزی -دیگر -کسی -بعری -هیچ -چیز -جا -کس -هرگز -یا -تنها -بلکه -خیاه -بله -بلی -آره -آری -مرسی -البتّه -لطفاً -ّه -انکه -وقتیکه -همین -پیش -مدّتی -هنگامی -مان -تان +و +در +به +از +كه +مي +اين +است +را +با +هاي +براي +آن +يك +شود +شده +خود +ها +كرد +شد +اي +تا +كند +بر +بود +گفت +نيز +وي +هم +كنند +دارد +ما +كرده +يا +اما +بايد +دو +اند +هر +خواهد +او +مورد +آنها +باشد +ديگر +مردم +نمي +بين +پيش +پس +اگر +همه +صورت +يكي +هستند +بي +من +دهد +هزار +نيست +استفاده +داد +داشته +راه +داشت +چه +همچنين +كردند +داده +بوده +دارند +همين +ميليون +سوي +شوند +بيشتر +بسيار +روي +گرفته +هايي +تواند +اول +نام +هيچ +چند +جديد +بيش +شدن +كردن +كنيم +نشان +حتي +اينكه +ولی +توسط +چنين +برخي +نه +ديروز +دوم +درباره +بعد +مختلف +گيرد +شما +گفته +آنان +بار +طور +گرفت +دهند +گذاري +بسياري +طي +بودند +ميليارد +بدون +تمام +كل +تر +براساس +شدند +ترين +امروز +باشند +ندارد +چون +قابل +گويد +ديگري +همان +خواهند +قبل +آمده +اكنون +تحت +طريق +گيري +جاي +هنوز +چرا +البته +كنيد +سازي +سوم +كنم +بلكه +زير +توانند +ضمن +فقط +بودن +حق +آيد +وقتي +اش +يابد +نخستين +مقابل +خدمات +امسال +تاكنون +مانند +تازه +آورد +فكر +آنچه +نخست +نشده +شايد +چهار +جريان +پنج +ساخته +زيرا +نزديك +برداري +كسي +ريزي +رفت +گردد +مثل +آمد +ام +بهترين +دانست +كمتر +دادن +تمامي +جلوگيري +بيشتري +ايم +ناشي +چيزي +آنكه +بالا +بنابراين +ايشان +بعضي +دادند +داشتند +برخوردار +نخواهد +هنگام +نبايد +غير +نبود +ديده +وگو +داريم +چگونه +بندي +خواست +فوق +ده +نوعي +هستيم +ديگران +همچنان +سراسر +ندارند +گروهي +سعي +روزهاي +آنجا +يكديگر +كردم +بيست +بروز +سپس +رفته +آورده +نمايد +باشيم +گويند +زياد +خويش +همواره +گذاشته +شش +نداشته +شناسي +خواهيم +آباد +داشتن +نظير +همچون +باره +نكرده +شان +سابق +هفت +دانند +جايي +بی +جز +زیرِ +رویِ +سریِ +تویِ +جلویِ +پیشِ +عقبِ +بالایِ +خارجِ +وسطِ +بیرونِ +سویِ +کنارِ +پاعینِ +نزدِ +نزدیکِ +دنبالِ +حدودِ +برابرِ +طبقِ +مانندِ +ضدِّ +هنگامِ +برایِ +مثلِ +بارة +اثرِ +تولِ +علّتِ +سمتِ +عنوانِ +قصدِ +روب +جدا +کی +که +چیست +هست +کجا +کجاست +کَی +چطور +کدام +آیا +مگر +چندین +یک +چیزی +دیگر +کسی +بعری +هیچ +چیز +جا +کس +هرگز +یا +تنها +بلکه +خیاه +بله +بلی +آره +آری +مرسی +البتّه +لطفاً +ّه +انکه +وقتیکه +همین +پیش +مدّتی +هنگامی +مان +تان diff --git a/yake/StopwordsList/stopwords_fi.txt b/yake/core/StopwordsList/stopwords_fi.txt similarity index 88% rename from yake/StopwordsList/stopwords_fi.txt rename to yake/core/StopwordsList/stopwords_fi.txt index 6b9afbb1..c5a12ba2 100644 --- a/yake/StopwordsList/stopwords_fi.txt +++ b/yake/core/StopwordsList/stopwords_fi.txt @@ -1,747 +1,747 @@ -aiemmin -aika -aikaa -aikaan -aikaisemmin -aikaisin -aikajen -aikana -aikoina -aikoo -aikovat -aina -ainakaan -ainakin -ainoa -ainoat -aiomme -aion -aiotte -aist -aivan -ajan -älä -alas -alemmas -älköön -alkuisin -alkuun -alla -alle -aloitamme -aloitan -aloitat -aloitatte -aloitattivat -aloitettava -aloitettevaksi -aloitettu -aloitimme -aloitin -aloitit -aloititte -aloittaa -aloittamatta -aloitti -aloittivat -alta -aluksi -alussa -alusta -annettavaksi -annetteva -annettu -antaa -antamatta -antoi -aoua -apu -asia -asiaa -asian -asiasta -asiat -asioiden -asioihin -asioita -asti -avuksi -avulla -avun -avutta -edellä -edelle -edelleen -edeltä -edemmäs -edes -edessä -edestä -ehkä -ei -eikä -eilen -eivät -eli -ellei -elleivät -ellemme -ellen -ellet -ellette -emme -en -enää -enemmän -eniten -ennen -ensi -ensimmäinen -ensimmäiseksi -ensimmäisen -ensimmäisenä -ensimmäiset -ensimmäisiä -ensimmäisiksi -ensimmäisinä -ensimmäistä -ensin -entinen -entisen -entisiä -entistä -entisten -eräät -eräiden -eräs -eri -erittäin -erityisesti -esi -esiin -esillä -esimerkiksi -et -eteen -etenkin -että -ette -ettei -halua -haluaa -haluamatta -haluamme -haluan -haluat -haluatte -haluavat -halunnut -halusi -halusimme -halusin -halusit -halusitte -halusivat -halutessa -haluton -hän -häneen -hänellä -hänelle -häneltä -hänen -hänessä -hänestä -hänet -he -hei -heidän -heihin -heille -heiltä -heissä -heistä -heitä -helposti -heti -hetkellä -hieman -huolimatta -huomenna -hyvä -hyvää -hyvät -hyviä -hyvien -hyviin -hyviksi -hyville -hyviltä -hyvin -hyvinä -hyvissä -hyvistä -ihan -ilman -ilmeisesti -itse -itseään -itsensä -ja -jää -jälkeen -jälleen -jo -johon -joiden -joihin -joiksi -joilla -joille -joilta -joissa -joista -joita -joka -jokainen -jokin -joko -joku -jolla -jolle -jolloin -jolta -jompikumpi -jonka -jonkin -jonne -joo -jopa -jos -joskus -jossa -josta -jota -jotain -joten -jotenkin -jotenkuten -jotka -jotta -jouduimme -jouduin -jouduit -jouduitte -joudumme -joudun -joudutte -joukkoon -joukossa -joukosta -joutua -joutui -joutuivat -joutumaan -joutuu -joutuvat -juuri -kahdeksan -kahdeksannen -kahdella -kahdelle -kahdelta -kahden -kahdessa -kahdesta -kahta -kahteen -kai -kaiken -kaikille -kaikilta -kaikkea -kaikki -kaikkia -kaikkiaan -kaikkialla -kaikkialle -kaikkialta -kaikkien -kaikkin -kaksi -kannalta -kannattaa -kanssa -kanssaan -kanssamme -kanssani -kanssanne -kanssasi -kauan -kauemmas -kautta -kehen -keiden -keihin -keiksi -keillä -keille -keiltä -keinä -keissä -keistä -keitä -keittä -keitten -keneen -keneksi -kenellä -kenelle -keneltä -kenen -kenenä -kenessä -kenestä -kenet -kenettä -kennessästä -kerran -kerta -kertaa -kesken -keskimäärin -ketä -ketkä -kiitos -kohti -koko -kokonaan -kolmas -kolme -kolmen -kolmesti -koska -koskaan -kovin -kuin -kuinka -kuitenkaan -kuitenkin -kuka -kukaan -kukin -kumpainen -kumpainenkaan -kumpi -kumpikaan -kumpikin -kun -kuten -kuuden -kuusi -kuutta -kyllä -kymmenen -kyse -lähekkäin -lähellä -lähelle -läheltä -lähemmäs -lähes -lähinnä -lähtien -läpi -liian -liki -lisää -lisäksi -luo -mahdollisimman -mahdollista -me -meidän -meillä -meille -melkein -melko -menee -meneet -menemme -menen -menet -menette -menevät -meni -menimme -menin -menit -menivät -mennessä -mennyt -menossa -mihin -mikä -mikään -mikäli -mikin -miksi -milloin -minä -minne -minun -minut -missä -mistä -mitä -mitään -miten -moi -molemmat -mones -monesti -monet -moni -moniaalla -moniaalle -moniaalta -monta -muassa -muiden -muita -muka -mukaan -mukaansa -mukana -mutta -muu -muualla -muualle -muualta -muuanne -muulloin -muun -muut -muuta -muutama -muutaman -muuten -myöhemmin -myös -myöskään -myöskin -myötä -näiden -näin -näissä -näissähin -näissälle -näissältä -näissästä -näitä -nämä -ne -neljä -neljää -neljän -niiden -niin -niistä -niitä -noin -nopeammin -nopeasti -nopeiten -nro -nuo -nyt -ohi -oikein -ole -olemme -olen -olet -olette -oleva -olevan -olevat -oli -olimme -olin -olisi -olisimme -olisin -olisit -olisitte -olisivat -olit -olitte -olivat -olla -olleet -olli -ollut -oma -omaa -omaan -omaksi -omalle -omalta -oman -omassa -omat -omia -omien -omiin -omiksi -omille -omilta -omissa -omista -on -onkin -onko -ovat -päälle -paikoittain -paitsi -pakosti -paljon -paremmin -parempi -parhaillaan -parhaiten -peräti -perusteella -pian -pieneen -pieneksi -pienellä -pienelle -pieneltä -pienempi -pienestä -pieni -pienin -puolesta -puolestaan -runsaasti -saakka -sadam -sama -samaa -samaan -samalla -samallalta -samallassa -samallasta -saman -samat -samoin -sata -sataa -satojen -se -seitsemän -sekä -sen -seuraavat -siellä -sieltä -siihen -siinä -siis -siitä -sijaan -siksi -sillä -silloin -silti -sinä -sinne -sinua -sinulle -sinulta -sinun -sinussa -sinusta -sinut -sisäkkäin -sisällä -sitä -siten -sitten -suoraan -suuntaan -suuren -suuret -suuri -suuria -suurin -suurten -taa -täällä -täältä -taas -taemmas -tähän -tahansa -tai -takaa -takaisin -takana -takia -tällä -tällöin -tämä -tämän -tänä -tänään -tänne -tapauksessa -tässä -tästä -tätä -täten -tavalla -tavoitteena -täysin -täytyvät -täytyy -te -tietysti -todella -toinen -toisaalla -toisaalle -toisaalta -toiseen -toiseksi -toisella -toiselle -toiselta -toisemme -toisen -toisensa -toisessa -toisesta -toista -toistaiseksi -toki -tosin -tuhannen -tuhat -tule -tulee -tulemme -tulen -tulet -tulette -tulevat -tulimme -tulin -tulisi -tulisimme -tulisin -tulisit -tulisitte -tulisivat -tulit -tulitte -tulivat -tulla -tulleet -tullut -tuntuu -tuo -tuolla -tuolloin -tuolta -tuonne -tuskin -tykö -usea -useasti -useimmiten -usein -useita -uudeksi -uudelleen -uuden -uudet -uusi -uusia -uusien -uusinta -uuteen -uutta -vaan -vähän -vähemmän -vähintään -vähiten -vai -vaiheessa -vaikea -vaikean -vaikeat -vaikeilla -vaikeille -vaikeilta -vaikeissa -vaikeista -vaikka -vain -välillä -varmasti -varsin -varsinkin -varten -vasta -vastaan -vastakkain -verran -vielä -vierekkäin -vieri -viiden -viime -viimeinen -viimeisen -viimeksi -viisi -voi -voidaan -voimme -voin -voisi -voit -voitte -voivat -vuoden -vuoksi -vuosi -vuosien -vuosina -vuotta -yhä -yhdeksän -yhden -yhdessä -yhtä -yhtäällä -yhtäälle -yhtäältä -yhtään -yhteen -yhteensä -yhteydessä -yhteyteen -yksi -yksin -yksittäin -yleensä -ylemmäs -yli -ylös +aiemmin +aika +aikaa +aikaan +aikaisemmin +aikaisin +aikajen +aikana +aikoina +aikoo +aikovat +aina +ainakaan +ainakin +ainoa +ainoat +aiomme +aion +aiotte +aist +aivan +ajan +älä +alas +alemmas +älköön +alkuisin +alkuun +alla +alle +aloitamme +aloitan +aloitat +aloitatte +aloitattivat +aloitettava +aloitettevaksi +aloitettu +aloitimme +aloitin +aloitit +aloititte +aloittaa +aloittamatta +aloitti +aloittivat +alta +aluksi +alussa +alusta +annettavaksi +annetteva +annettu +antaa +antamatta +antoi +aoua +apu +asia +asiaa +asian +asiasta +asiat +asioiden +asioihin +asioita +asti +avuksi +avulla +avun +avutta +edellä +edelle +edelleen +edeltä +edemmäs +edes +edessä +edestä +ehkä +ei +eikä +eilen +eivät +eli +ellei +elleivät +ellemme +ellen +ellet +ellette +emme +en +enää +enemmän +eniten +ennen +ensi +ensimmäinen +ensimmäiseksi +ensimmäisen +ensimmäisenä +ensimmäiset +ensimmäisiä +ensimmäisiksi +ensimmäisinä +ensimmäistä +ensin +entinen +entisen +entisiä +entistä +entisten +eräät +eräiden +eräs +eri +erittäin +erityisesti +esi +esiin +esillä +esimerkiksi +et +eteen +etenkin +että +ette +ettei +halua +haluaa +haluamatta +haluamme +haluan +haluat +haluatte +haluavat +halunnut +halusi +halusimme +halusin +halusit +halusitte +halusivat +halutessa +haluton +hän +häneen +hänellä +hänelle +häneltä +hänen +hänessä +hänestä +hänet +he +hei +heidän +heihin +heille +heiltä +heissä +heistä +heitä +helposti +heti +hetkellä +hieman +huolimatta +huomenna +hyvä +hyvää +hyvät +hyviä +hyvien +hyviin +hyviksi +hyville +hyviltä +hyvin +hyvinä +hyvissä +hyvistä +ihan +ilman +ilmeisesti +itse +itseään +itsensä +ja +jää +jälkeen +jälleen +jo +johon +joiden +joihin +joiksi +joilla +joille +joilta +joissa +joista +joita +joka +jokainen +jokin +joko +joku +jolla +jolle +jolloin +jolta +jompikumpi +jonka +jonkin +jonne +joo +jopa +jos +joskus +jossa +josta +jota +jotain +joten +jotenkin +jotenkuten +jotka +jotta +jouduimme +jouduin +jouduit +jouduitte +joudumme +joudun +joudutte +joukkoon +joukossa +joukosta +joutua +joutui +joutuivat +joutumaan +joutuu +joutuvat +juuri +kahdeksan +kahdeksannen +kahdella +kahdelle +kahdelta +kahden +kahdessa +kahdesta +kahta +kahteen +kai +kaiken +kaikille +kaikilta +kaikkea +kaikki +kaikkia +kaikkiaan +kaikkialla +kaikkialle +kaikkialta +kaikkien +kaikkin +kaksi +kannalta +kannattaa +kanssa +kanssaan +kanssamme +kanssani +kanssanne +kanssasi +kauan +kauemmas +kautta +kehen +keiden +keihin +keiksi +keillä +keille +keiltä +keinä +keissä +keistä +keitä +keittä +keitten +keneen +keneksi +kenellä +kenelle +keneltä +kenen +kenenä +kenessä +kenestä +kenet +kenettä +kennessästä +kerran +kerta +kertaa +kesken +keskimäärin +ketä +ketkä +kiitos +kohti +koko +kokonaan +kolmas +kolme +kolmen +kolmesti +koska +koskaan +kovin +kuin +kuinka +kuitenkaan +kuitenkin +kuka +kukaan +kukin +kumpainen +kumpainenkaan +kumpi +kumpikaan +kumpikin +kun +kuten +kuuden +kuusi +kuutta +kyllä +kymmenen +kyse +lähekkäin +lähellä +lähelle +läheltä +lähemmäs +lähes +lähinnä +lähtien +läpi +liian +liki +lisää +lisäksi +luo +mahdollisimman +mahdollista +me +meidän +meillä +meille +melkein +melko +menee +meneet +menemme +menen +menet +menette +menevät +meni +menimme +menin +menit +menivät +mennessä +mennyt +menossa +mihin +mikä +mikään +mikäli +mikin +miksi +milloin +minä +minne +minun +minut +missä +mistä +mitä +mitään +miten +moi +molemmat +mones +monesti +monet +moni +moniaalla +moniaalle +moniaalta +monta +muassa +muiden +muita +muka +mukaan +mukaansa +mukana +mutta +muu +muualla +muualle +muualta +muuanne +muulloin +muun +muut +muuta +muutama +muutaman +muuten +myöhemmin +myös +myöskään +myöskin +myötä +näiden +näin +näissä +näissähin +näissälle +näissältä +näissästä +näitä +nämä +ne +neljä +neljää +neljän +niiden +niin +niistä +niitä +noin +nopeammin +nopeasti +nopeiten +nro +nuo +nyt +ohi +oikein +ole +olemme +olen +olet +olette +oleva +olevan +olevat +oli +olimme +olin +olisi +olisimme +olisin +olisit +olisitte +olisivat +olit +olitte +olivat +olla +olleet +olli +ollut +oma +omaa +omaan +omaksi +omalle +omalta +oman +omassa +omat +omia +omien +omiin +omiksi +omille +omilta +omissa +omista +on +onkin +onko +ovat +päälle +paikoittain +paitsi +pakosti +paljon +paremmin +parempi +parhaillaan +parhaiten +peräti +perusteella +pian +pieneen +pieneksi +pienellä +pienelle +pieneltä +pienempi +pienestä +pieni +pienin +puolesta +puolestaan +runsaasti +saakka +sadam +sama +samaa +samaan +samalla +samallalta +samallassa +samallasta +saman +samat +samoin +sata +sataa +satojen +se +seitsemän +sekä +sen +seuraavat +siellä +sieltä +siihen +siinä +siis +siitä +sijaan +siksi +sillä +silloin +silti +sinä +sinne +sinua +sinulle +sinulta +sinun +sinussa +sinusta +sinut +sisäkkäin +sisällä +sitä +siten +sitten +suoraan +suuntaan +suuren +suuret +suuri +suuria +suurin +suurten +taa +täällä +täältä +taas +taemmas +tähän +tahansa +tai +takaa +takaisin +takana +takia +tällä +tällöin +tämä +tämän +tänä +tänään +tänne +tapauksessa +tässä +tästä +tätä +täten +tavalla +tavoitteena +täysin +täytyvät +täytyy +te +tietysti +todella +toinen +toisaalla +toisaalle +toisaalta +toiseen +toiseksi +toisella +toiselle +toiselta +toisemme +toisen +toisensa +toisessa +toisesta +toista +toistaiseksi +toki +tosin +tuhannen +tuhat +tule +tulee +tulemme +tulen +tulet +tulette +tulevat +tulimme +tulin +tulisi +tulisimme +tulisin +tulisit +tulisitte +tulisivat +tulit +tulitte +tulivat +tulla +tulleet +tullut +tuntuu +tuo +tuolla +tuolloin +tuolta +tuonne +tuskin +tykö +usea +useasti +useimmiten +usein +useita +uudeksi +uudelleen +uuden +uudet +uusi +uusia +uusien +uusinta +uuteen +uutta +vaan +vähän +vähemmän +vähintään +vähiten +vai +vaiheessa +vaikea +vaikean +vaikeat +vaikeilla +vaikeille +vaikeilta +vaikeissa +vaikeista +vaikka +vain +välillä +varmasti +varsin +varsinkin +varten +vasta +vastaan +vastakkain +verran +vielä +vierekkäin +vieri +viiden +viime +viimeinen +viimeisen +viimeksi +viisi +voi +voidaan +voimme +voin +voisi +voit +voitte +voivat +vuoden +vuoksi +vuosi +vuosien +vuosina +vuotta +yhä +yhdeksän +yhden +yhdessä +yhtä +yhtäällä +yhtäälle +yhtäältä +yhtään +yhteen +yhteensä +yhteydessä +yhteyteen +yksi +yksin +yksittäin +yleensä +ylemmäs +yli +ylös ympäri \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_fr.txt b/yake/core/StopwordsList/stopwords_fr.txt similarity index 86% rename from yake/StopwordsList/stopwords_fr.txt rename to yake/core/StopwordsList/stopwords_fr.txt index f6e87b55..a953b9d4 100644 --- a/yake/StopwordsList/stopwords_fr.txt +++ b/yake/core/StopwordsList/stopwords_fr.txt @@ -1,463 +1,463 @@ -a -à -â -abord -afin -ah -ai -aie -ainsi -allaient -allo -allô -allons -après -assez -attendu -au -aucun -aucune -aujourd -aujourd'hui -auquel -aura -auront -aussi -autre -autres -aux -auxquelles -auxquels -avaient -avais -avait -avant -avec -avoir -ayant -b -bah -beaucoup -bien -bigre -boum -bravo -brrr -c -ça -car -ce -ceci -cela -celle -celle-ci -celle-là -celles -celles-ci -celles-là -celui -celui-ci -celui-là -cent -cependant -certain -certaine -certaines -certains -certes -ces -cet -cette -ceux -ceux-ci -ceux-là -chacun -chaque -cher -chère -chères -chers -chez -chiche -chut -ci -cinq -cinquantaine -cinquante -cinquantième -cinquième -clac -clic -combien -comme -comment -compris -concernant -contre -couic -crac -d -da -dans -de -debout -dedans -dehors -delà -depuis -derrière -des -dès -désormais -desquelles -desquels -dessous -dessus -deux -deuxième -deuxièmement -devant -devers -devra -différent -différente -différentes -différents -dire -divers -diverse -diverses -dix -dix-huit -dixième -dix-neuf -dix-sept -doit -doivent -donc -dont -douze -douzième -dring -du -duquel -durant -e -effet -eh -elle -elle-même -elles -elles-mêmes -en -encore -entre -envers -environ -es -ès -est -et -etant -étaient -étais -était -étant -etc -été -etre -être -eu -euh -eux -eux-mêmes -excepté -f -façon -fais -faisaient -faisant -fait -feront -fi -flac -floc -font -g -gens -h -ha -hé -hein -hélas -hem -hep -hi -ho -holà -hop -hormis -hors -hou -houp -hue -hui -huit -huitième -hum -hurrah -i -il -ils -importe -j -je -jusqu -jusque -k -l -la -là -laquelle -las -le -lequel -les -lès -lesquelles -lesquels -leur -leurs -longtemps -lorsque -lui -lui-même -m -ma -maint -mais -malgré -me -même -mêmes -merci -mes -mien -mienne -miennes -miens -mille -mince -moi -moi-même -moins -mon -moyennant -n -na -ne -néanmoins -neuf -neuvième -ni -nombreuses -nombreux -non -nos -notre -nôtre -nôtres -nous -nous-mêmes -nul -o -o| -ô -oh -ohé -olé -ollé -on -ont -onze -onzième -ore -ou -où -ouf -ouias -oust -ouste -outre -p -paf -pan -par -parmi -partant -particulier -particulière -particulièrement -pas -passé -pendant -personne -peu -peut -peuvent -peux -pff -pfft -pfut -pif -plein -plouf -plus -plusieurs -plutôt -pouah -pour -pourquoi -premier -première -premièrement -près -proche -psitt -puisque -q -qu -quand -quant -quanta -quant-à-soi -quarante -quatorze -quatre -quatre-vingt -quatrième -quatrièmement -que -quel -quelconque -quelle -quelles -quelque -quelques -quelqu'un -quels -qui -quiconque -quinze -quoi -quoique -r -revoici -revoilà -rien -s -sa -sacrebleu -sans -sapristi -sauf -se -seize -selon -sept -septième -sera -seront -ses -si -sien -sienne -siennes -siens -sinon -six -sixième -soi -soi-même -soit -soixante -son -sont -sous -stop -suis -suivant -sur -surtout -t -ta -tac -tant -te -té -tel -telle -tellement -telles -tels -tenant -tes -tic -tien -tienne -tiennes -tiens -toc -toi -toi-même -ton -touchant -toujours -tous -tout -toute -toutes -treize -trente -très -trois -troisième -troisièmement -trop -tsoin -tsouin -tu -u -un -une -unes -uns -v -va -vais -vas -vé -vers -via -vif -vifs -vingt -vivat -vive -vives -vlan -voici -voilà -vont -vos -votre -vôtre -vôtres -vous -vous-mêmes -vu -w -x -y -z +a +à +â +abord +afin +ah +ai +aie +ainsi +allaient +allo +allô +allons +après +assez +attendu +au +aucun +aucune +aujourd +aujourd'hui +auquel +aura +auront +aussi +autre +autres +aux +auxquelles +auxquels +avaient +avais +avait +avant +avec +avoir +ayant +b +bah +beaucoup +bien +bigre +boum +bravo +brrr +c +ça +car +ce +ceci +cela +celle +celle-ci +celle-là +celles +celles-ci +celles-là +celui +celui-ci +celui-là +cent +cependant +certain +certaine +certaines +certains +certes +ces +cet +cette +ceux +ceux-ci +ceux-là +chacun +chaque +cher +chère +chères +chers +chez +chiche +chut +ci +cinq +cinquantaine +cinquante +cinquantième +cinquième +clac +clic +combien +comme +comment +compris +concernant +contre +couic +crac +d +da +dans +de +debout +dedans +dehors +delà +depuis +derrière +des +dès +désormais +desquelles +desquels +dessous +dessus +deux +deuxième +deuxièmement +devant +devers +devra +différent +différente +différentes +différents +dire +divers +diverse +diverses +dix +dix-huit +dixième +dix-neuf +dix-sept +doit +doivent +donc +dont +douze +douzième +dring +du +duquel +durant +e +effet +eh +elle +elle-même +elles +elles-mêmes +en +encore +entre +envers +environ +es +ès +est +et +etant +étaient +étais +était +étant +etc +été +etre +être +eu +euh +eux +eux-mêmes +excepté +f +façon +fais +faisaient +faisant +fait +feront +fi +flac +floc +font +g +gens +h +ha +hé +hein +hélas +hem +hep +hi +ho +holà +hop +hormis +hors +hou +houp +hue +hui +huit +huitième +hum +hurrah +i +il +ils +importe +j +je +jusqu +jusque +k +l +la +là +laquelle +las +le +lequel +les +lès +lesquelles +lesquels +leur +leurs +longtemps +lorsque +lui +lui-même +m +ma +maint +mais +malgré +me +même +mêmes +merci +mes +mien +mienne +miennes +miens +mille +mince +moi +moi-même +moins +mon +moyennant +n +na +ne +néanmoins +neuf +neuvième +ni +nombreuses +nombreux +non +nos +notre +nôtre +nôtres +nous +nous-mêmes +nul +o +o| +ô +oh +ohé +olé +ollé +on +ont +onze +onzième +ore +ou +où +ouf +ouias +oust +ouste +outre +p +paf +pan +par +parmi +partant +particulier +particulière +particulièrement +pas +passé +pendant +personne +peu +peut +peuvent +peux +pff +pfft +pfut +pif +plein +plouf +plus +plusieurs +plutôt +pouah +pour +pourquoi +premier +première +premièrement +près +proche +psitt +puisque +q +qu +quand +quant +quanta +quant-à-soi +quarante +quatorze +quatre +quatre-vingt +quatrième +quatrièmement +que +quel +quelconque +quelle +quelles +quelque +quelques +quelqu'un +quels +qui +quiconque +quinze +quoi +quoique +r +revoici +revoilà +rien +s +sa +sacrebleu +sans +sapristi +sauf +se +seize +selon +sept +septième +sera +seront +ses +si +sien +sienne +siennes +siens +sinon +six +sixième +soi +soi-même +soit +soixante +son +sont +sous +stop +suis +suivant +sur +surtout +t +ta +tac +tant +te +té +tel +telle +tellement +telles +tels +tenant +tes +tic +tien +tienne +tiennes +tiens +toc +toi +toi-même +ton +touchant +toujours +tous +tout +toute +toutes +treize +trente +très +trois +troisième +troisièmement +trop +tsoin +tsouin +tu +u +un +une +unes +uns +v +va +vais +vas +vé +vers +via +vif +vifs +vingt +vivat +vive +vives +vlan +voici +voilà +vont +vos +votre +vôtre +vôtres +vous +vous-mêmes +vu +w +x +y +z zut \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hi.txt b/yake/core/StopwordsList/stopwords_hi.txt similarity index 92% rename from yake/StopwordsList/stopwords_hi.txt rename to yake/core/StopwordsList/stopwords_hi.txt index 8cab47ca..2306826a 100644 --- a/yake/StopwordsList/stopwords_hi.txt +++ b/yake/core/StopwordsList/stopwords_hi.txt @@ -1,163 +1,163 @@ -पर -इन -वह -यिह -वुह -जिन्हें -जिन्हों -तिन्हें -तिन्हों -किन्हों -किन्हें -इत्यादि -द्वारा -इन्हें -इन्हों -उन्हों -बिलकुल -निहायत -ऱ्वासा -इन्हीं -उन्हीं -उन्हें -इसमें -जितना -दुसरा -कितना -दबारा -साबुत -वग़ैरह -दूसरे -कौनसा -लेकिन -होता -करने -किया -लिये -अपने -नहीं -दिया -इसका -करना -वाले -सकते -इसके -सबसे -होने -करते -बहुत -वर्ग -करें -होती -अपनी -उनके -कहते -होते -करता -उनकी -इसकी -सकता -रखें -अपना -उसके -जिसे -तिसे -किसे -किसी -काफ़ी -पहले -नीचे -बाला -यहाँ -जैसा -जैसे -मानो -अंदर -भीतर -पूरा -सारा -होना -उनको -वहाँ -वहीं -जहाँ -जीधर -उनका -इनका -के -हैं -गया -बनी -एवं -हुआ -साथ -बाद -लिए -कुछ -कहा -यदि -हुई -इसे -हुए -अभी -सभी -कुल -रहा -रहे -इसी -उसे -जिस -जिन -तिस -तिन -कौन -किस -कोई -ऐसे -तरह -किर -साभ -संग -यही -बही -उसी -फिर -मगर -का -एक -यह -से -को -इस -कि -जो -कर -मे -ने -तो -ही -या -हो -था -तक -आप -ये -थे -दो -वे -थी -जा -ना -उस -एस -पे -उन -सो -भी -और -घर -तब -जब -अत -व +पर +इन +वह +यिह +वुह +जिन्हें +जिन्हों +तिन्हें +तिन्हों +किन्हों +किन्हें +इत्यादि +द्वारा +इन्हें +इन्हों +उन्हों +बिलकुल +निहायत +ऱ्वासा +इन्हीं +उन्हीं +उन्हें +इसमें +जितना +दुसरा +कितना +दबारा +साबुत +वग़ैरह +दूसरे +कौनसा +लेकिन +होता +करने +किया +लिये +अपने +नहीं +दिया +इसका +करना +वाले +सकते +इसके +सबसे +होने +करते +बहुत +वर्ग +करें +होती +अपनी +उनके +कहते +होते +करता +उनकी +इसकी +सकता +रखें +अपना +उसके +जिसे +तिसे +किसे +किसी +काफ़ी +पहले +नीचे +बाला +यहाँ +जैसा +जैसे +मानो +अंदर +भीतर +पूरा +सारा +होना +उनको +वहाँ +वहीं +जहाँ +जीधर +उनका +इनका +के +हैं +गया +बनी +एवं +हुआ +साथ +बाद +लिए +कुछ +कहा +यदि +हुई +इसे +हुए +अभी +सभी +कुल +रहा +रहे +इसी +उसे +जिस +जिन +तिस +तिन +कौन +किस +कोई +ऐसे +तरह +किर +साभ +संग +यही +बही +उसी +फिर +मगर +का +एक +यह +से +को +इस +कि +जो +कर +मे +ने +तो +ही +या +हो +था +तक +आप +ये +थे +दो +वे +थी +जा +ना +उस +एस +पे +उन +सो +भी +और +घर +तब +जब +अत +व न \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hr.txt b/yake/core/StopwordsList/stopwords_hr.txt similarity index 83% rename from yake/StopwordsList/stopwords_hr.txt rename to yake/core/StopwordsList/stopwords_hr.txt index d049a460..26e4fd91 100644 --- a/yake/StopwordsList/stopwords_hr.txt +++ b/yake/core/StopwordsList/stopwords_hr.txt @@ -1,179 +1,179 @@ -a -ako -ali -bi -bih -bila -bili -bilo -bio -bismo -biste -biti -bumo -da -do -duž -ga -hoće -hoćemo -hoćete -hoćeš -hoću -i -iako -ih -ili -iz -ja -je -jedna -jedne -jedno -jer -jesam -jesi -jesmo -jest -jeste -jesu -jim -joj -još -ju -kada -kako -kao -koja -koje -koji -kojima -koju -kroz -li -me -mene -meni -mi -mimo -moj -moja -moje -mu -na -nad -nakon -nam -nama -nas -naš -naša -naše -našeg -ne -nego -neka -neki -nekog -neku -nema -netko -neće -nećemo -nećete -nećeš -neću -nešto -ni -nije -nikoga -nikoje -nikoju -nisam -nisi -nismo -niste -nisu -njega -njegov -njegova -njegovo -njemu -njezin -njezina -njezino -njih -njihov -njihova -njihovo -njim -njima -njoj -nju -no -o -od -odmah -on -ona -oni -ono -ova -pa -pak -po -pod -pored -prije -s -sa -sam -samo -se -sebe -sebi -si -smo -ste -su -sve -svi -svog -svoj -svoja -svoje -svom -ta -tada -taj -tako -te -tebe -tebi -ti -to -toj -tome -tu -tvoj -tvoja -tvoje -u -uz -vam -vama -vas -vaš -vaša -vaše -već -vi -vrlo -za -zar -će -ćemo -ćete -ćeš -ću +a +ako +ali +bi +bih +bila +bili +bilo +bio +bismo +biste +biti +bumo +da +do +duž +ga +hoće +hoćemo +hoćete +hoćeš +hoću +i +iako +ih +ili +iz +ja +je +jedna +jedne +jedno +jer +jesam +jesi +jesmo +jest +jeste +jesu +jim +joj +još +ju +kada +kako +kao +koja +koje +koji +kojima +koju +kroz +li +me +mene +meni +mi +mimo +moj +moja +moje +mu +na +nad +nakon +nam +nama +nas +naš +naša +naše +našeg +ne +nego +neka +neki +nekog +neku +nema +netko +neće +nećemo +nećete +nećeš +neću +nešto +ni +nije +nikoga +nikoje +nikoju +nisam +nisi +nismo +niste +nisu +njega +njegov +njegova +njegovo +njemu +njezin +njezina +njezino +njih +njihov +njihova +njihovo +njim +njima +njoj +nju +no +o +od +odmah +on +ona +oni +ono +ova +pa +pak +po +pod +pored +prije +s +sa +sam +samo +se +sebe +sebi +si +smo +ste +su +sve +svi +svog +svoj +svoja +svoje +svom +ta +tada +taj +tako +te +tebe +tebi +ti +to +toj +tome +tu +tvoj +tvoja +tvoje +u +uz +vam +vama +vas +vaš +vaša +vaše +već +vi +vrlo +za +zar +će +ćemo +ćete +ćeš +ću što \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hu.txt b/yake/core/StopwordsList/stopwords_hu.txt similarity index 90% rename from yake/StopwordsList/stopwords_hu.txt rename to yake/core/StopwordsList/stopwords_hu.txt index dbc6942f..6d911268 100644 --- a/yake/StopwordsList/stopwords_hu.txt +++ b/yake/core/StopwordsList/stopwords_hu.txt @@ -1,737 +1,737 @@ -a -abba -abban -abból -addig -ahhoz -ahol -akár -aki -akik -akkor -alá -alád -alájuk -alám -alánk -alapján -alátok -alatt -alatta -alattad -alattam -alattatok -alattuk -alattunk -alól -alóla -alólad -alólam -alólatok -alóluk -alólunk -által -általában -ám -amely -amelybol -amelyek -amelyekben -amelyeket -amelyet -amelyik -amelynek -ami -amíg -amikor -amit -amott -annak -annál -arra -arról -át -attól -az -azért -aznap -azok -azokat -azokba -azokban -azokból -azokért -azokhoz -azokig -azokká -azokkal -azoknak -azoknál -azokon -azokra -azokról -azoktól -azon -azonban -azonnal -azt -aztán -azzá -azzal -bal -balra -ban -bár -bárcsak -bármilyen -be -belé -beléd -beléjük -belém -belénk -belétek -belÅ‘le -belÅ‘led -belÅ‘lem -belÅ‘letek -belÅ‘lük -belÅ‘lünk -belül -ben -benne -benned -bennem -bennetek -bennük -bennünk -búcsú -csak -csakhogy -csupán -de -dehogy -ebbe -ebben -ebbÅ‘l -eddig -egész -egészen -egy -egyéb -egyebek -egyebet -egyedül -egyelÅ‘re -egyet -egyik -egymás -egyre -egyszerre -együtt -ehhez -el -elé -eléd -elég -eleinte -eléjük -elém -elénk -elétek -éljen -ellen -ellenére -ellenes -elleni -elmondta -elÅ‘bb -elÅ‘l -elÅ‘le -elÅ‘led -elÅ‘lem -elÅ‘letek -elÅ‘lük -elÅ‘lünk -elÅ‘ször -elÅ‘tt -elÅ‘tte -elÅ‘tted -elÅ‘ttem -elÅ‘ttetek -elÅ‘ttük -elÅ‘ttünk -elÅ‘zÅ‘ -elsÅ‘ -elsÅ‘k -elsÅ‘sorban -elsÅ‘t -én -engem -ennek -ennél -ennyi -enyém -erre -errÅ‘l -érte -érted -értem -értetek -értük -értünk -és -esetben -ettÅ‘l -év -évben -éve -évek -éves -évi -évvel -ez -ezek -ezekbe -ezekben -ezekbÅ‘l -ezeken -ezekért -ezeket -ezekhez -ezekig -ezekké -ezekkel -ezeknek -ezeknél -ezekre -ezekrÅ‘l -ezektÅ‘l -ezen -ezentúl -ezer -ezért -ezret -ezt -ezután -ezzé -ezzel -fel -fél -fele -felé -felek -felet -felett -fent -fenti -fölé -gyakran -ha -halló -hamar -hanem -hány -hányszor -harmadik -harmadikat -hármat -harminc -három -hat -hát -hátha -hatodik -hatodikat -hatot -hátulsó -hatvan -helyett -hét -hetedik -hetediket -hetet -hetven -hiába -hirtelen -hiszen -hogy -hol -holnap -holnapot -honnan -hova -hozzá -hozzád -hozzájuk -hozzám -hozzánk -hozzátok -hurrá -húsz -huszadik -idén -ide-оda -igazán -igen -így -illetve -ilyen -immár -inkább -is -ismét -itt -jelenleg -jó -jobban -jobbra -jól -jólesik -jóval -jövÅ‘re -kell -kellene -kellett -kelljen -képest -kérem -kérlek -késÅ‘ -késÅ‘bb -késÅ‘n -kész -két -kétszer -ketten -kettÅ‘ -kettÅ‘t -kevés -ki -kiben -kibÅ‘l -kicsit -kicsoda -kié -kiért -kihez -kik -kikbe -kikben -kikbÅ‘l -kiken -kikért -kiket -kikhez -kikké -kikkel -kiknek -kiknél -kikre -kikrÅ‘l -kiktÅ‘l -kilenc -kilencedik -kilencediket -kilencet -kilencven -kin -kinek -kinél -kire -kirÅ‘l -kit -kitÅ‘l -kivé -kivel -korábban -körül -köszönhetÅ‘en -köszönöm -közben -közé -közel -közepén -közepesen -között -közül -külön -különben -különbözÅ‘ -különbözÅ‘bb -különbözÅ‘ek -lassan -le -legalább -legyen -lehet -lehetetlen -lehetÅ‘leg -lehetÅ‘ség -lenne -lennék -lennének -lesz -leszek -lesznek -leszünk -lett -lettek -lettem -lettünk -lévÅ‘ -ma -maga -magad -magam -magát -magatokat -magukat -magunkat -mai -majd -majdnem -manapság -már -más -másik -másikat -másnap -második -másodszor -mások -másokat -mást -meg -még -megcsinál -megcsinálnak -megint -mégis -megvan -mellé -melléd -melléjük -mellém -mellénk -mellétek -mellett -mellette -melletted -mellettem -mellettetek -mellettük -mellettünk -mellÅ‘l -mellÅ‘le -mellÅ‘led -mellÅ‘lem -mellÅ‘letek -mellÅ‘lük -mellÅ‘lünk -melyik -mennyi -mert -mi -miatt -miatta -miattad -miattam -miattatok -miattuk -miattunk -mibe -miben -mibÅ‘l -miért -míg -mihez -mik -mikbe -mikben -mikbÅ‘l -miken -mikért -miket -mikhez -mikké -mikkel -miknek -miknél -mikor -mikre -mikrÅ‘l -miktÅ‘l -milyen -min -mind -mindegyik -mindegyiket -minden -mindenesetre -mindenki -mindent -mindenütt -mindig -mindketten -minek -minél -minket -mint -mire -mirÅ‘l -mit -mitÅ‘l -mivé -mivel -mögé -mögéd -mögéjük -mögém -mögénk -mögétek -mögött -mögötte -mögötted -mögöttem -mögöttetek -mögöttük -mögöttünk -mögül -mögüle -mögüled -mögülem -mögületek -mögülük -mögülünk -mondta -most -mostanáig -múltkor -múlva -na -nagyon -nála -nálad -nálam -nálatok -náluk -nálunk -naponta -napot -ne -négy -negyedik -negyediket -négyet -negyven -néha -néhány -neked -nekem -neki -nekik -nektek -nekünk -nélkül -nem -nemcsak -nemrég -nincs -nyolc -nyolcadik -nyolcadikat -nyolcat -nyolcvan -Å‘ -Å‘k -Å‘ket -olyan -ön -önbe -önben -önbÅ‘l -önért -önhöz -onnan -önnek -önnel -önnél -önök -önökbe -önökben -önökbÅ‘l -önökért -önöket -önökhöz -önökkel -önöknek -önöknél -önökön -önökre -önökrÅ‘l -önöktÅ‘l -önön -önre -önrÅ‘l -önt -öntÅ‘l -öt -Å‘t -óta -ötödik -ötödiket -ötöt -ott -ötven -pár -pedig -például -persze -rá -rád -rajta -rajtad -rajtam -rajtatok -rajtuk -rajtunk -rájuk -rám -ránk -rátok -régen -régóta -rendben -részére -rögtön -róla -rólad -rólam -rólatok -róluk -rólunk -rosszul -se -sem -semmi -semmilyen -semmiség -senki -soha -sok -sokáig -sokan -sokszor -során -sÅ‘t -stb. -számára -száz -századik -százat -szemben -szépen -szerbusz -szerint -szerinte -szerinted -szerintem -szerintetek -szerintük -szerintünk -szervusz -szinte -szíves -szívesen -szíveskedjék -talán -tavaly -távol -te -téged -tegnap -tegnapelÅ‘tt -tehát -tele -tényleg -tessék -ti -tied -titeket -tíz -tizedik -tizediket -tizenegy -tizenegyedik -tizenhárom -tizenhat -tizenhét -tizenkét -tizenkettedik -tizenkettÅ‘ -tizenkilenc -tizennégy -tizennyolc -tizenöt -tizet -több -többi -többször -tÅ‘le -tÅ‘led -tÅ‘lem -tÅ‘letek -tÅ‘lük -tÅ‘lünk -tovább -további -túl -úgy -ugyanakkor -ugyanez -ugyanis -ugye -úgyis -úgynevezett -újra -úr -urak -uram -urat -után -utoljára -utolsó -vagy -vagyis -vagyok -vagytok -vagyunk -vajon -valahol -valaki -valakit -valamelyik -valami -valamint -van -vannak -végén -végre -végül -vele -veled -velem -veletek -velük -velünk -viszlát -viszont -viszontlátásra -volna -volnának -volnék -volt -voltak -voltam +a +abba +abban +abból +addig +ahhoz +ahol +akár +aki +akik +akkor +alá +alád +alájuk +alám +alánk +alapján +alátok +alatt +alatta +alattad +alattam +alattatok +alattuk +alattunk +alól +alóla +alólad +alólam +alólatok +alóluk +alólunk +által +általában +ám +amely +amelybol +amelyek +amelyekben +amelyeket +amelyet +amelyik +amelynek +ami +amíg +amikor +amit +amott +annak +annál +arra +arról +át +attól +az +azért +aznap +azok +azokat +azokba +azokban +azokból +azokért +azokhoz +azokig +azokká +azokkal +azoknak +azoknál +azokon +azokra +azokról +azoktól +azon +azonban +azonnal +azt +aztán +azzá +azzal +bal +balra +ban +bár +bárcsak +bármilyen +be +belé +beléd +beléjük +belém +belénk +belétek +belÅ‘le +belÅ‘led +belÅ‘lem +belÅ‘letek +belÅ‘lük +belÅ‘lünk +belül +ben +benne +benned +bennem +bennetek +bennük +bennünk +búcsú +csak +csakhogy +csupán +de +dehogy +ebbe +ebben +ebbÅ‘l +eddig +egész +egészen +egy +egyéb +egyebek +egyebet +egyedül +egyelÅ‘re +egyet +egyik +egymás +egyre +egyszerre +együtt +ehhez +el +elé +eléd +elég +eleinte +eléjük +elém +elénk +elétek +éljen +ellen +ellenére +ellenes +elleni +elmondta +elÅ‘bb +elÅ‘l +elÅ‘le +elÅ‘led +elÅ‘lem +elÅ‘letek +elÅ‘lük +elÅ‘lünk +elÅ‘ször +elÅ‘tt +elÅ‘tte +elÅ‘tted +elÅ‘ttem +elÅ‘ttetek +elÅ‘ttük +elÅ‘ttünk +elÅ‘zÅ‘ +elsÅ‘ +elsÅ‘k +elsÅ‘sorban +elsÅ‘t +én +engem +ennek +ennél +ennyi +enyém +erre +errÅ‘l +érte +érted +értem +értetek +értük +értünk +és +esetben +ettÅ‘l +év +évben +éve +évek +éves +évi +évvel +ez +ezek +ezekbe +ezekben +ezekbÅ‘l +ezeken +ezekért +ezeket +ezekhez +ezekig +ezekké +ezekkel +ezeknek +ezeknél +ezekre +ezekrÅ‘l +ezektÅ‘l +ezen +ezentúl +ezer +ezért +ezret +ezt +ezután +ezzé +ezzel +fel +fél +fele +felé +felek +felet +felett +fent +fenti +fölé +gyakran +ha +halló +hamar +hanem +hány +hányszor +harmadik +harmadikat +hármat +harminc +három +hat +hát +hátha +hatodik +hatodikat +hatot +hátulsó +hatvan +helyett +hét +hetedik +hetediket +hetet +hetven +hiába +hirtelen +hiszen +hogy +hol +holnap +holnapot +honnan +hova +hozzá +hozzád +hozzájuk +hozzám +hozzánk +hozzátok +hurrá +húsz +huszadik +idén +ide-оda +igazán +igen +így +illetve +ilyen +immár +inkább +is +ismét +itt +jelenleg +jó +jobban +jobbra +jól +jólesik +jóval +jövÅ‘re +kell +kellene +kellett +kelljen +képest +kérem +kérlek +késÅ‘ +késÅ‘bb +késÅ‘n +kész +két +kétszer +ketten +kettÅ‘ +kettÅ‘t +kevés +ki +kiben +kibÅ‘l +kicsit +kicsoda +kié +kiért +kihez +kik +kikbe +kikben +kikbÅ‘l +kiken +kikért +kiket +kikhez +kikké +kikkel +kiknek +kiknél +kikre +kikrÅ‘l +kiktÅ‘l +kilenc +kilencedik +kilencediket +kilencet +kilencven +kin +kinek +kinél +kire +kirÅ‘l +kit +kitÅ‘l +kivé +kivel +korábban +körül +köszönhetÅ‘en +köszönöm +közben +közé +közel +közepén +közepesen +között +közül +külön +különben +különbözÅ‘ +különbözÅ‘bb +különbözÅ‘ek +lassan +le +legalább +legyen +lehet +lehetetlen +lehetÅ‘leg +lehetÅ‘ség +lenne +lennék +lennének +lesz +leszek +lesznek +leszünk +lett +lettek +lettem +lettünk +lévÅ‘ +ma +maga +magad +magam +magát +magatokat +magukat +magunkat +mai +majd +majdnem +manapság +már +más +másik +másikat +másnap +második +másodszor +mások +másokat +mást +meg +még +megcsinál +megcsinálnak +megint +mégis +megvan +mellé +melléd +melléjük +mellém +mellénk +mellétek +mellett +mellette +melletted +mellettem +mellettetek +mellettük +mellettünk +mellÅ‘l +mellÅ‘le +mellÅ‘led +mellÅ‘lem +mellÅ‘letek +mellÅ‘lük +mellÅ‘lünk +melyik +mennyi +mert +mi +miatt +miatta +miattad +miattam +miattatok +miattuk +miattunk +mibe +miben +mibÅ‘l +miért +míg +mihez +mik +mikbe +mikben +mikbÅ‘l +miken +mikért +miket +mikhez +mikké +mikkel +miknek +miknél +mikor +mikre +mikrÅ‘l +miktÅ‘l +milyen +min +mind +mindegyik +mindegyiket +minden +mindenesetre +mindenki +mindent +mindenütt +mindig +mindketten +minek +minél +minket +mint +mire +mirÅ‘l +mit +mitÅ‘l +mivé +mivel +mögé +mögéd +mögéjük +mögém +mögénk +mögétek +mögött +mögötte +mögötted +mögöttem +mögöttetek +mögöttük +mögöttünk +mögül +mögüle +mögüled +mögülem +mögületek +mögülük +mögülünk +mondta +most +mostanáig +múltkor +múlva +na +nagyon +nála +nálad +nálam +nálatok +náluk +nálunk +naponta +napot +ne +négy +negyedik +negyediket +négyet +negyven +néha +néhány +neked +nekem +neki +nekik +nektek +nekünk +nélkül +nem +nemcsak +nemrég +nincs +nyolc +nyolcadik +nyolcadikat +nyolcat +nyolcvan +Å‘ +Å‘k +Å‘ket +olyan +ön +önbe +önben +önbÅ‘l +önért +önhöz +onnan +önnek +önnel +önnél +önök +önökbe +önökben +önökbÅ‘l +önökért +önöket +önökhöz +önökkel +önöknek +önöknél +önökön +önökre +önökrÅ‘l +önöktÅ‘l +önön +önre +önrÅ‘l +önt +öntÅ‘l +öt +Å‘t +óta +ötödik +ötödiket +ötöt +ott +ötven +pár +pedig +például +persze +rá +rád +rajta +rajtad +rajtam +rajtatok +rajtuk +rajtunk +rájuk +rám +ránk +rátok +régen +régóta +rendben +részére +rögtön +róla +rólad +rólam +rólatok +róluk +rólunk +rosszul +se +sem +semmi +semmilyen +semmiség +senki +soha +sok +sokáig +sokan +sokszor +során +sÅ‘t +stb. +számára +száz +századik +százat +szemben +szépen +szerbusz +szerint +szerinte +szerinted +szerintem +szerintetek +szerintük +szerintünk +szervusz +szinte +szíves +szívesen +szíveskedjék +talán +tavaly +távol +te +téged +tegnap +tegnapelÅ‘tt +tehát +tele +tényleg +tessék +ti +tied +titeket +tíz +tizedik +tizediket +tizenegy +tizenegyedik +tizenhárom +tizenhat +tizenhét +tizenkét +tizenkettedik +tizenkettÅ‘ +tizenkilenc +tizennégy +tizennyolc +tizenöt +tizet +több +többi +többször +tÅ‘le +tÅ‘led +tÅ‘lem +tÅ‘letek +tÅ‘lük +tÅ‘lünk +tovább +további +túl +úgy +ugyanakkor +ugyanez +ugyanis +ugye +úgyis +úgynevezett +újra +úr +urak +uram +urat +után +utoljára +utolsó +vagy +vagyis +vagyok +vagytok +vagyunk +vajon +valahol +valaki +valakit +valamelyik +valami +valamint +van +vannak +végén +végre +végül +vele +veled +velem +veletek +velük +velünk +viszlát +viszont +viszontlátásra +volna +volnának +volnék +volt +voltak +voltam voltunk \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_hy.txt b/yake/core/StopwordsList/stopwords_hy.txt similarity index 87% rename from yake/StopwordsList/stopwords_hy.txt rename to yake/core/StopwordsList/stopwords_hy.txt index 10a5b8f7..327af43d 100644 --- a/yake/StopwordsList/stopwords_hy.txt +++ b/yake/core/StopwordsList/stopwords_hy.txt @@ -1,45 +1,45 @@ -այդ -այլ -այն -այս -դու -դուք -եմ -են -ենք -ես -եք -է -էի -էին -էինք -էիր -էիք -էր -ըստ -թ -ի -ին -իսկ -իր -կամ -համար -հետ -հետո -մենք -մեջ -մի -ն -նա -նաև -նրա -նրանք -որ -որը -որոնք -որպես -ու -ում -պիտի -վրա +այդ +այլ +այն +այս +դու +դուք +եմ +են +ենք +ես +եք +է +էի +էին +էինք +էիր +էիք +էր +ըստ +թ +ի +ին +իսկ +իր +կամ +համար +հետ +հետո +մենք +մեջ +մի +ն +նա +նաև +նրա +նրանք +որ +որը +որոնք +որպես +ու +ում +պիտի +վրա և \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_id.txt b/yake/core/StopwordsList/stopwords_id.txt similarity index 88% rename from yake/StopwordsList/stopwords_id.txt rename to yake/core/StopwordsList/stopwords_id.txt index fbf611fb..7f876e57 100644 --- a/yake/StopwordsList/stopwords_id.txt +++ b/yake/core/StopwordsList/stopwords_id.txt @@ -1,359 +1,359 @@ -# from appendix D of: A Study of Stemming Effects on Information -# Retrieval in Bahasa Indonesia -ada -adanya -adalah -adapun -agak -agaknya -agar -akan -akankah -akhirnya -aku -akulah -amat -amatlah -anda -andalah -antar -diantaranya -antara -antaranya -diantara -apa -apaan -mengapa -apabila -apakah -apalagi -apatah -atau -ataukah -ataupun -bagai -bagaikan -sebagai -sebagainya -bagaimana -bagaimanapun -sebagaimana -bagaimanakah -bagi -bahkan -bahwa -bahwasanya -sebaliknya -banyak -sebanyak -beberapa -seberapa -begini -beginian -beginikah -beginilah -sebegini -begitu -begitukah -begitulah -begitupun -sebegitu -belum -belumlah -sebelum -sebelumnya -sebenarnya -berapa -berapakah -berapalah -berapapun -betulkah -sebetulnya -biasa -biasanya -bila -bilakah -bisa -bisakah -sebisanya -boleh -bolehkah -bolehlah -buat -bukan -bukankah -bukanlah -bukannya -cuma -percuma -dahulu -dalam -dan -dapat -dari -daripada -dekat -demi -demikian -demikianlah -sedemikian -dengan -depan -di -dia -dialah -dini -diri -dirinya -terdiri -dong -dulu -enggak -enggaknya -entah -entahlah -terhadap -terhadapnya -hal -hampir -hanya -hanyalah -harus -haruslah -harusnya -seharusnya -hendak -hendaklah -hendaknya -hingga -sehingga -ia -ialah -ibarat -ingin -inginkah -inginkan -ini -inikah -inilah -itu -itukah -itulah -jangan -jangankan -janganlah -jika -jikalau -juga -justru -kala -kalau -kalaulah -kalaupun -kalian -kami -kamilah -kamu -kamulah -kan -kapan -kapankah -kapanpun -dikarenakan -karena -karenanya -ke -kecil -kemudian -kenapa -kepada -kepadanya -ketika -seketika -khususnya -kini -kinilah -kiranya -sekiranya -kita -kitalah -kok -lagi -lagian -selagi -lah -lain -lainnya -melainkan -selaku -lalu -melalui -terlalu -lama -lamanya -selama -selama -selamanya -lebih -terlebih -bermacam -macam -semacam -maka -makanya -makin -malah -malahan -mampu -mampukah -mana -manakala -manalagi -masih -masihkah -semasih -masing -mau -maupun -semaunya -memang -mereka -merekalah -meski -meskipun -semula -mungkin -mungkinkah -nah -namun -nanti -nantinya -nyaris -oleh -olehnya -seorang -seseorang -pada -padanya -padahal -paling -sepanjang -pantas -sepantasnya -sepantasnyalah -para -pasti -pastilah -per -pernah -pula -pun -merupakan -rupanya -serupa -saat -saatnya -sesaat -saja -sajalah -saling -bersama -sama -sesama -sambil -sampai -sana -sangat -sangatlah -saya -sayalah -se -sebab -sebabnya -sebuah -tersebut -tersebutlah -sedang -sedangkan -sedikit -sedikitnya -segala -segalanya -segera -sesegera -sejak -sejenak -sekali -sekalian -sekalipun -sesekali -sekaligus -sekarang -sekarang -sekitar -sekitarnya -sela -selain -selalu -seluruh -seluruhnya -semakin -sementara -sempat -semua -semuanya -sendiri -sendirinya -seolah -seperti -sepertinya -sering -seringnya -serta -siapa -siapakah -siapapun -disini -disinilah -sini -sinilah -sesuatu -sesuatunya -suatu -sesudah -sesudahnya -sudah -sudahkah -sudahlah -supaya -tadi -tadinya -tak -tanpa -setelah -telah -tentang -tentu -tentulah -tentunya -tertentu -seterusnya -tapi -tetapi -setiap -tiap -setidaknya -tidak -tidakkah -tidaklah -toh -waduh -wah -wahai -sewaktu -walau -walaupun -wong -yaitu -yakni +# from appendix D of: A Study of Stemming Effects on Information +# Retrieval in Bahasa Indonesia +ada +adanya +adalah +adapun +agak +agaknya +agar +akan +akankah +akhirnya +aku +akulah +amat +amatlah +anda +andalah +antar +diantaranya +antara +antaranya +diantara +apa +apaan +mengapa +apabila +apakah +apalagi +apatah +atau +ataukah +ataupun +bagai +bagaikan +sebagai +sebagainya +bagaimana +bagaimanapun +sebagaimana +bagaimanakah +bagi +bahkan +bahwa +bahwasanya +sebaliknya +banyak +sebanyak +beberapa +seberapa +begini +beginian +beginikah +beginilah +sebegini +begitu +begitukah +begitulah +begitupun +sebegitu +belum +belumlah +sebelum +sebelumnya +sebenarnya +berapa +berapakah +berapalah +berapapun +betulkah +sebetulnya +biasa +biasanya +bila +bilakah +bisa +bisakah +sebisanya +boleh +bolehkah +bolehlah +buat +bukan +bukankah +bukanlah +bukannya +cuma +percuma +dahulu +dalam +dan +dapat +dari +daripada +dekat +demi +demikian +demikianlah +sedemikian +dengan +depan +di +dia +dialah +dini +diri +dirinya +terdiri +dong +dulu +enggak +enggaknya +entah +entahlah +terhadap +terhadapnya +hal +hampir +hanya +hanyalah +harus +haruslah +harusnya +seharusnya +hendak +hendaklah +hendaknya +hingga +sehingga +ia +ialah +ibarat +ingin +inginkah +inginkan +ini +inikah +inilah +itu +itukah +itulah +jangan +jangankan +janganlah +jika +jikalau +juga +justru +kala +kalau +kalaulah +kalaupun +kalian +kami +kamilah +kamu +kamulah +kan +kapan +kapankah +kapanpun +dikarenakan +karena +karenanya +ke +kecil +kemudian +kenapa +kepada +kepadanya +ketika +seketika +khususnya +kini +kinilah +kiranya +sekiranya +kita +kitalah +kok +lagi +lagian +selagi +lah +lain +lainnya +melainkan +selaku +lalu +melalui +terlalu +lama +lamanya +selama +selama +selamanya +lebih +terlebih +bermacam +macam +semacam +maka +makanya +makin +malah +malahan +mampu +mampukah +mana +manakala +manalagi +masih +masihkah +semasih +masing +mau +maupun +semaunya +memang +mereka +merekalah +meski +meskipun +semula +mungkin +mungkinkah +nah +namun +nanti +nantinya +nyaris +oleh +olehnya +seorang +seseorang +pada +padanya +padahal +paling +sepanjang +pantas +sepantasnya +sepantasnyalah +para +pasti +pastilah +per +pernah +pula +pun +merupakan +rupanya +serupa +saat +saatnya +sesaat +saja +sajalah +saling +bersama +sama +sesama +sambil +sampai +sana +sangat +sangatlah +saya +sayalah +se +sebab +sebabnya +sebuah +tersebut +tersebutlah +sedang +sedangkan +sedikit +sedikitnya +segala +segalanya +segera +sesegera +sejak +sejenak +sekali +sekalian +sekalipun +sesekali +sekaligus +sekarang +sekarang +sekitar +sekitarnya +sela +selain +selalu +seluruh +seluruhnya +semakin +sementara +sempat +semua +semuanya +sendiri +sendirinya +seolah +seperti +sepertinya +sering +seringnya +serta +siapa +siapakah +siapapun +disini +disinilah +sini +sinilah +sesuatu +sesuatunya +suatu +sesudah +sesudahnya +sudah +sudahkah +sudahlah +supaya +tadi +tadinya +tak +tanpa +setelah +telah +tentang +tentu +tentulah +tentunya +tertentu +seterusnya +tapi +tetapi +setiap +tiap +setidaknya +tidak +tidakkah +tidaklah +toh +waduh +wah +wahai +sewaktu +walau +walaupun +wong +yaitu +yakni yang \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_it.txt b/yake/core/StopwordsList/stopwords_it.txt similarity index 85% rename from yake/StopwordsList/stopwords_it.txt rename to yake/core/StopwordsList/stopwords_it.txt index 4e0a50d3..9dc97512 100644 --- a/yake/StopwordsList/stopwords_it.txt +++ b/yake/core/StopwordsList/stopwords_it.txt @@ -1,398 +1,398 @@ -a -abbastanza -accidenti -ad -adesso -affinche -agli -ahime -ahimè -ai -al -alcuna -alcuni -alcuno -all -alla -alle -allo -altri -altrimenti -altro -altrui -anche -ancora -anni -anno -ansa -assai -attesa -avanti -avendo -avente -aver -avere -avete -aveva -avuta -avute -avuti -avuto -basta -bene -benissimo -berlusconi -brava -bravo -c -casa -caso -cento -certa -certe -certi -certo -che -chi -chicchessia -chiunque -ci -ciascuna -ciascuno -cima -cio -ciò -cioe -cioè -circa -citta -città -codesta -codesti -codesto -cogli -coi -col -colei -coll -coloro -colui -come -con -concernente -consiglio -contro -cortesia -cos -cosa -cosi -così -cui -d -da -dagli -dai -dal -dall -dalla -dalle -dallo -davanti -degli -dei -del -dell -della -delle -dello -dentro -detto -deve -di -dice -dietro -dire -dirimpetto -dopo -dove -dovra -dovrà -due -dunque -durante -e -è -ecco -ed -egli -ella -eppure -era -erano -esse -essendo -esser -essere -essi -ex -fa -fare -fatto -favore -fin -finalmente -finche -fine -fino -forse -fra -fuori -gia -già -giacche -giorni -giorno -gli -gliela -gliele -glieli -glielo -gliene -governo -grande -grazie -gruppo -ha -hai -hanno -ho -i -ieri -il -improvviso -in -infatti -insieme -intanto -intorno -invece -io -l -la -là -lavoro -le -lei -li -lo -lontano -loro -lui -lungo -ma -macche -magari -mai -male -malgrado -malissimo -me -medesimo -mediante -meglio -meno -mentre -mesi -mezzo -mi -mia -mie -miei -mila -miliardi -milioni -mio -moltissimo -molto -mondo -nazionale -ne -negli -nei -nel -nell -nella -nelle -nello -nemmeno -neppure -nessuna -nessuno -niente -no -noi -non -nondimeno -nostra -nostre -nostri -nostro -nulla -nuovo -o -od -oggi -ogni -ognuna -ognuno -oltre -oppure -ora -ore -osi -ossia -paese -parecchi -parecchie -parecchio -parte -partendo -peccato -peggio -per -perche -perchè -percio -perciò -perfino -pero -però -persone -piedi -pieno -piglia -piu -più -po -pochissimo -poco -poi -poiche -press -prima -primo -proprio -puo -può -pure -purtroppo -qualche -qualcuna -qualcuno -quale -quali -qualunque -quando -quanta -quante -quanti -quanto -quantunque -quasi -quattro -quel -quella -quelli -quello -quest -questa -queste -questi -questo -qui -quindi -riecco -salvo -sara -sarà -sarebbe -scopo -scorso -se -secondo -seguente -sei -sempre -senza -si -sia -siamo -siete -solito -solo -sono -sopra -sotto -sta -staranno -stata -state -stati -stato -stesso -su -sua -successivo -sue -sugli -sui -sul -sull -sulla -sulle -sullo -suo -suoi -tale -talvolta -tanto -te -tempo -ti -torino -tra -tranne -tre -troppo -tu -tua -tue -tuo -tuoi -tutta -tuttavia -tutte -tutti -tutto -uguali -un -una -uno -uomo -va -vale -varia -varie -vario -verso -vi -via -vicino -visto -vita -voi -volta -vostra -vostre -vostri +a +abbastanza +accidenti +ad +adesso +affinche +agli +ahime +ahimè +ai +al +alcuna +alcuni +alcuno +all +alla +alle +allo +altri +altrimenti +altro +altrui +anche +ancora +anni +anno +ansa +assai +attesa +avanti +avendo +avente +aver +avere +avete +aveva +avuta +avute +avuti +avuto +basta +bene +benissimo +berlusconi +brava +bravo +c +casa +caso +cento +certa +certe +certi +certo +che +chi +chicchessia +chiunque +ci +ciascuna +ciascuno +cima +cio +ciò +cioe +cioè +circa +citta +città +codesta +codesti +codesto +cogli +coi +col +colei +coll +coloro +colui +come +con +concernente +consiglio +contro +cortesia +cos +cosa +cosi +così +cui +d +da +dagli +dai +dal +dall +dalla +dalle +dallo +davanti +degli +dei +del +dell +della +delle +dello +dentro +detto +deve +di +dice +dietro +dire +dirimpetto +dopo +dove +dovra +dovrà +due +dunque +durante +e +è +ecco +ed +egli +ella +eppure +era +erano +esse +essendo +esser +essere +essi +ex +fa +fare +fatto +favore +fin +finalmente +finche +fine +fino +forse +fra +fuori +gia +già +giacche +giorni +giorno +gli +gliela +gliele +glieli +glielo +gliene +governo +grande +grazie +gruppo +ha +hai +hanno +ho +i +ieri +il +improvviso +in +infatti +insieme +intanto +intorno +invece +io +l +la +là +lavoro +le +lei +li +lo +lontano +loro +lui +lungo +ma +macche +magari +mai +male +malgrado +malissimo +me +medesimo +mediante +meglio +meno +mentre +mesi +mezzo +mi +mia +mie +miei +mila +miliardi +milioni +mio +moltissimo +molto +mondo +nazionale +ne +negli +nei +nel +nell +nella +nelle +nello +nemmeno +neppure +nessuna +nessuno +niente +no +noi +non +nondimeno +nostra +nostre +nostri +nostro +nulla +nuovo +o +od +oggi +ogni +ognuna +ognuno +oltre +oppure +ora +ore +osi +ossia +paese +parecchi +parecchie +parecchio +parte +partendo +peccato +peggio +per +perche +perchè +percio +perciò +perfino +pero +però +persone +piedi +pieno +piglia +piu +più +po +pochissimo +poco +poi +poiche +press +prima +primo +proprio +puo +può +pure +purtroppo +qualche +qualcuna +qualcuno +quale +quali +qualunque +quando +quanta +quante +quanti +quanto +quantunque +quasi +quattro +quel +quella +quelli +quello +quest +questa +queste +questi +questo +qui +quindi +riecco +salvo +sara +sarà +sarebbe +scopo +scorso +se +secondo +seguente +sei +sempre +senza +si +sia +siamo +siete +solito +solo +sono +sopra +sotto +sta +staranno +stata +state +stati +stato +stesso +su +sua +successivo +sue +sugli +sui +sul +sull +sulla +sulle +sullo +suo +suoi +tale +talvolta +tanto +te +tempo +ti +torino +tra +tranne +tre +troppo +tu +tua +tue +tuo +tuoi +tutta +tuttavia +tutte +tutti +tutto +uguali +un +una +uno +uomo +va +vale +varia +varie +vario +verso +vi +via +vicino +visto +vita +voi +volta +vostra +vostre +vostri vostro \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_ja.txt b/yake/core/StopwordsList/stopwords_ja.txt similarity index 87% rename from yake/StopwordsList/stopwords_ja.txt rename to yake/core/StopwordsList/stopwords_ja.txt index c57e8f3a..1f6462e1 100644 --- a/yake/StopwordsList/stopwords_ja.txt +++ b/yake/core/StopwordsList/stopwords_ja.txt @@ -1,44 +1,44 @@ -これ -それ -あれ -この -その -あの -ここ -そこ -あそこ -こちら -どこ -だれ -なに -なん -何 -私 -貴方 -貴方方 -我々 -私達 -あの人 -あのかた -彼女 -彼 -です -あります -おります -います -は -が -の -に -を -で -え -から -まで -より -も -どの -と -し -それで +これ +それ +あれ +この +その +あの +ここ +そこ +あそこ +こちら +どこ +だれ +なに +なん +何 +私 +貴方 +貴方方 +我々 +私達 +あの人 +あのかた +彼女 +彼 +です +あります +おります +います +は +が +の +に +を +で +え +から +まで +より +も +どの +と +し +それで しかし \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_lt.txt b/yake/core/StopwordsList/stopwords_lt.txt similarity index 85% rename from yake/StopwordsList/stopwords_lt.txt rename to yake/core/StopwordsList/stopwords_lt.txt index d282c514..0e98aad7 100644 --- a/yake/StopwordsList/stopwords_lt.txt +++ b/yake/core/StopwordsList/stopwords_lt.txt @@ -1,65 +1,65 @@ -apie -po -pire -visi -taip pat -yra -nra -klausimas -klausti -tarp -bet -gali -negali -kiekvienas -nei -net -kiekvienas -iekoti -nuo -gauti -gauna -turjo -turi -jo -jos -ia -jam -kaip - -a -tik -maiau -daryti -daug -maai -daugiau -daugiausia -turi -alia -niekada -niekas -dabar -danai -kart -vienas -tik -kitas -ms -per -praau -tikrai -pasak -sak -sakyti -maas -kada -negu -ai -tas -iki -kas -kam -taip -ne +apie +po +pire +visi +taip pat +yra +nra +klausimas +klausti +tarp +bet +gali +negali +kiekvienas +nei +net +kiekvienas +iekoti +nuo +gauti +gauna +turjo +turi +jo +jos +ia +jam +kaip + +a +tik +maiau +daryti +daug +maai +daugiau +daugiausia +turi +alia +niekada +niekas +dabar +danai +kart +vienas +tik +kitas +ms +per +praau +tikrai +pasak +sak +sakyti +maas +kada +negu +ai +tas +iki +kas +kam +taip +ne tavo \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_lv.txt b/yake/core/StopwordsList/stopwords_lv.txt similarity index 86% rename from yake/StopwordsList/stopwords_lv.txt rename to yake/core/StopwordsList/stopwords_lv.txt index a569f7c6..d536b5c7 100644 --- a/yake/StopwordsList/stopwords_lv.txt +++ b/yake/core/StopwordsList/stopwords_lv.txt @@ -1,167 +1,167 @@ -aiz -ap -ar -apakš -ārpus -augšpus -bez -caur -dēļ -gar -iekš -iz -kopš -labad -lejpus -līdz -no -otrpus -pa -par -pār -pēc -pie -pirms -pret -priekš -starp -šaipus -uz -viņpus -virs -virspus -zem -apakšpus -# Conjunctions -un -bet -jo -ja -ka -lai -tomēr -tikko -turpretī -arī -kaut -gan -tādēļ -tā -ne -tikvien -vien -kā -ir -te -vai -kamēr -# Particles -ar -diezin -droši -diemžēl -nebūt -ik -it -taču -nu -pat -tiklab -iekšpus -nedz -tik -nevis -turpretim -jeb -iekam -iekām -iekāms -kolīdz -līdzko -tiklīdz -jebšu -tālab -tāpēc -nekā -itin -jā -jau -jel -nē -nezin -tad -tikai -vis -tak -iekams -vien -# modal verbs -būt -biju -biji -bija -bijām -bijāt -esmu -esi -esam -esat -būšu -būsi -būs -būsim -būsiet -tikt -tiku -tiki -tika -tikām -tikāt -tieku -tiec -tiek -tiekam -tiekat -tikšu -tiks -tiksim -tiksiet -tapt -tapi -tapāt -topat -tapšu -tapsi -taps -tapsim -tapsiet -kļūt -kļuvu -kļuvi -kļuva -kļuvām -kļuvāt -kļūstu -kļūsti -kļūst -kļūstam -kļūstat -kļūšu -kļūsi -kļūs -kļūsim -kļūsiet -# verbs -varēt -varēju -varējām -varēšu -varēsim -var -varēji -varējāt -varēsi -varēsiet -varat -varēja +aiz +ap +ar +apakš +ārpus +augšpus +bez +caur +dēļ +gar +iekš +iz +kopš +labad +lejpus +līdz +no +otrpus +pa +par +pār +pēc +pie +pirms +pret +priekš +starp +šaipus +uz +viņpus +virs +virspus +zem +apakšpus +# Conjunctions +un +bet +jo +ja +ka +lai +tomēr +tikko +turpretī +arī +kaut +gan +tādēļ +tā +ne +tikvien +vien +kā +ir +te +vai +kamēr +# Particles +ar +diezin +droši +diemžēl +nebūt +ik +it +taču +nu +pat +tiklab +iekšpus +nedz +tik +nevis +turpretim +jeb +iekam +iekām +iekāms +kolīdz +līdzko +tiklīdz +jebšu +tālab +tāpēc +nekā +itin +jā +jau +jel +nē +nezin +tad +tikai +vis +tak +iekams +vien +# modal verbs +būt +biju +biji +bija +bijām +bijāt +esmu +esi +esam +esat +būšu +būsi +būs +būsim +būsiet +tikt +tiku +tiki +tika +tikām +tikāt +tieku +tiec +tiek +tiekam +tiekat +tikšu +tiks +tiksim +tiksiet +tapt +tapi +tapāt +topat +tapšu +tapsi +taps +tapsim +tapsiet +kļūt +kļuvu +kļuvi +kļuva +kļuvām +kļuvāt +kļūstu +kļūsti +kļūst +kļūstam +kļūstat +kļūšu +kļūsi +kļūs +kļūsim +kļūsiet +# verbs +varēt +varēju +varējām +varēšu +varēsim +var +varēji +varējāt +varēsi +varēsiet +varat +varēja varēs \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_nl.txt b/yake/core/StopwordsList/stopwords_nl.txt similarity index 85% rename from yake/StopwordsList/stopwords_nl.txt rename to yake/core/StopwordsList/stopwords_nl.txt index b7236598..bc8c9019 100644 --- a/yake/StopwordsList/stopwords_nl.txt +++ b/yake/core/StopwordsList/stopwords_nl.txt @@ -1,501 +1,501 @@ -a -aan -aangaande -aangezien -achter -achterna -aen -af -afd -afgelopen -agter -al -aldaar -aldus -alhoewel -alias -alle -allebei -alleen -alleenlyk -allen -alles -als -alsnog -altijd -altoos -altyd -ander -andere -anderen -anders -anderszins -anm -b -behalve -behoudens -beide -beiden -ben -beneden -bent -bepaald -beter -betere -betreffende -bij -bijna -bijvoorbeeld -bijv -binnen -binnenin -bizonder -bizondere -bl -blz -boven -bovenal -bovendien -bovengenoemd -bovenstaand -bovenvermeld -buiten -by -daar -daarheen -daarin -daarna -daarnet -daarom -daarop -daarvanlangs -daer -dan -dat -de -deeze -den -der -ders -derzelver -des -deszelfs -deszelvs -deze -dezelfde -dezelve -dezelven -dezen -dezer -dezulke -die -dien -dikwijls -dikwyls -dit -dl -doch -doen -doet -dog -door -doorgaand -doorgaans -dr -dra -ds -dus -echter -ed -een -eene -eenen -eener -eenig -eenige -eens -eer -eerdat -eerder -eerlang -eerst -eerste -eersten -effe -egter -eigen -eigene -elk -elkanderen -elkanderens -elke -en -enig -enige -enigerlei -enigszins -enkel -enkele -enz -er -erdoor -et -etc -even -eveneens -evenwel -ff -gauw -ge -gebragt -gedurende -geen -geene -geenen -gegeven -gehad -geheel -geheele -gekund -geleden -gelijk -gelyk -gemoeten -gemogen -geven -geweest -gewoon -gewoonweg -geworden -gezegt -gij -gt -gy -haar -had -hadden -hadt -haer -haere -haeren -haerer -hans -hare -heb -hebben -hebt -heeft -hele -hem -hen -het -hier -hierbeneden -hierboven -hierin -hij -hoe -hoewel -hun -hunne -hunner -hy -ibid -idd -ieder -iemand -iet -iets -ii -iig -ik -ikke -ikzelf -in -indien -inmiddels -inz -inzake -is -ja -je -jezelf -jij -jijzelf -jou -jouw -jouwe -juist -jullie -kan -klaar -kon -konden -krachtens -kunnen -kunt -laetste -lang -later -liet -liever -like -m -maar -maeken -maer -mag -martin -me -mede -meer -meesten -men -menigwerf -met -mezelf -mij -mijn -mijnent -mijner -mijzelf -min -minder -misschien -mocht -mochten -moest -moesten -moet -moeten -mogelijk -mogelyk -mogen -my -myn -myne -mynen -myner -myzelf -na -naar -nabij -nadat -naer -net -niet -niets -nimmer -nit -no -noch -nog -nogal -nooit -nr -nu -o -of -ofschoon -om -omdat -omhoog -omlaag -omstreeks -omtrent -omver -onder -ondertussen -ongeveer -ons -onszelf -onze -onzen -onzer -ooit -ook -oorspr -op -opdat -opnieuw -opzij -opzy -over -overeind -overigens -p -pas -pp -precies -pres -prof -publ -reeds -rond -rondom -rug -s -sedert -sinds -sindsdien -sl -slechts -sommige -spoedig -st -steeds -sy -t -tamelijk -tamelyk -te -tegen -tegens -ten -tenzij -ter -terwijl -terwyl -thans -tijdens -toch -toe -toen -toenmaals -toenmalig -tot -totdat -tusschen -tussen -tydens -u -uit -uitg -uitgezonderd -uw -uwe -uwen -uwer -vaak -vaakwat -vakgr -van -vanaf -vandaan -vanuit -vanwege -veel -veeleer -veelen -verder -verre -vert -vervolgens -vgl -vol -volgens -voor -vooraf -vooral -vooralsnog -voorbij -voorby -voordat -voordezen -voordien -voorheen -voorop -voort -voortgez -voorts -voortz -vooruit -vrij -vroeg -vry -waar -waarom -wanneer -want -waren -was -wat -we -weer -weg -wege -wegens -weinig -weinige -wel -weldra -welk -welke -welken -welker -werd -werden -werdt -wezen -wie -wiens -wier -wierd -wierden -wij -wijzelf -wil -wilde -worden -wordt -wy -wyze -wyzelf -zal -ze -zeer -zei -zeker -zekere -zelf -zelfde -zelfs -zelve -zelven -zelvs -zich -zichzelf -zichzelve -zichzelven -zie -zig -zij -zijn -zijnde -zijne -zijner -zo -zo'n -zoals -zodra -zommige -zommigen -zonder -zoo -zou -zoude -zouden -zoveel -zowat -zulk -zulke -zulks -zullen -zult -zy -zyn -zynde -zyne -zynen -zyner +a +aan +aangaande +aangezien +achter +achterna +aen +af +afd +afgelopen +agter +al +aldaar +aldus +alhoewel +alias +alle +allebei +alleen +alleenlyk +allen +alles +als +alsnog +altijd +altoos +altyd +ander +andere +anderen +anders +anderszins +anm +b +behalve +behoudens +beide +beiden +ben +beneden +bent +bepaald +beter +betere +betreffende +bij +bijna +bijvoorbeeld +bijv +binnen +binnenin +bizonder +bizondere +bl +blz +boven +bovenal +bovendien +bovengenoemd +bovenstaand +bovenvermeld +buiten +by +daar +daarheen +daarin +daarna +daarnet +daarom +daarop +daarvanlangs +daer +dan +dat +de +deeze +den +der +ders +derzelver +des +deszelfs +deszelvs +deze +dezelfde +dezelve +dezelven +dezen +dezer +dezulke +die +dien +dikwijls +dikwyls +dit +dl +doch +doen +doet +dog +door +doorgaand +doorgaans +dr +dra +ds +dus +echter +ed +een +eene +eenen +eener +eenig +eenige +eens +eer +eerdat +eerder +eerlang +eerst +eerste +eersten +effe +egter +eigen +eigene +elk +elkanderen +elkanderens +elke +en +enig +enige +enigerlei +enigszins +enkel +enkele +enz +er +erdoor +et +etc +even +eveneens +evenwel +ff +gauw +ge +gebragt +gedurende +geen +geene +geenen +gegeven +gehad +geheel +geheele +gekund +geleden +gelijk +gelyk +gemoeten +gemogen +geven +geweest +gewoon +gewoonweg +geworden +gezegt +gij +gt +gy +haar +had +hadden +hadt +haer +haere +haeren +haerer +hans +hare +heb +hebben +hebt +heeft +hele +hem +hen +het +hier +hierbeneden +hierboven +hierin +hij +hoe +hoewel +hun +hunne +hunner +hy +ibid +idd +ieder +iemand +iet +iets +ii +iig +ik +ikke +ikzelf +in +indien +inmiddels +inz +inzake +is +ja +je +jezelf +jij +jijzelf +jou +jouw +jouwe +juist +jullie +kan +klaar +kon +konden +krachtens +kunnen +kunt +laetste +lang +later +liet +liever +like +m +maar +maeken +maer +mag +martin +me +mede +meer +meesten +men +menigwerf +met +mezelf +mij +mijn +mijnent +mijner +mijzelf +min +minder +misschien +mocht +mochten +moest +moesten +moet +moeten +mogelijk +mogelyk +mogen +my +myn +myne +mynen +myner +myzelf +na +naar +nabij +nadat +naer +net +niet +niets +nimmer +nit +no +noch +nog +nogal +nooit +nr +nu +o +of +ofschoon +om +omdat +omhoog +omlaag +omstreeks +omtrent +omver +onder +ondertussen +ongeveer +ons +onszelf +onze +onzen +onzer +ooit +ook +oorspr +op +opdat +opnieuw +opzij +opzy +over +overeind +overigens +p +pas +pp +precies +pres +prof +publ +reeds +rond +rondom +rug +s +sedert +sinds +sindsdien +sl +slechts +sommige +spoedig +st +steeds +sy +t +tamelijk +tamelyk +te +tegen +tegens +ten +tenzij +ter +terwijl +terwyl +thans +tijdens +toch +toe +toen +toenmaals +toenmalig +tot +totdat +tusschen +tussen +tydens +u +uit +uitg +uitgezonderd +uw +uwe +uwen +uwer +vaak +vaakwat +vakgr +van +vanaf +vandaan +vanuit +vanwege +veel +veeleer +veelen +verder +verre +vert +vervolgens +vgl +vol +volgens +voor +vooraf +vooral +vooralsnog +voorbij +voorby +voordat +voordezen +voordien +voorheen +voorop +voort +voortgez +voorts +voortz +vooruit +vrij +vroeg +vry +waar +waarom +wanneer +want +waren +was +wat +we +weer +weg +wege +wegens +weinig +weinige +wel +weldra +welk +welke +welken +welker +werd +werden +werdt +wezen +wie +wiens +wier +wierd +wierden +wij +wijzelf +wil +wilde +worden +wordt +wy +wyze +wyzelf +zal +ze +zeer +zei +zeker +zekere +zelf +zelfde +zelfs +zelve +zelven +zelvs +zich +zichzelf +zichzelve +zichzelven +zie +zig +zij +zijn +zijnde +zijne +zijner +zo +zo'n +zoals +zodra +zommige +zommigen +zonder +zoo +zou +zoude +zouden +zoveel +zowat +zulk +zulke +zulks +zullen +zult +zy +zyn +zynde +zyne +zynen +zyner zyns \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_no.txt b/yake/core/StopwordsList/stopwords_no.txt similarity index 83% rename from yake/StopwordsList/stopwords_no.txt rename to yake/core/StopwordsList/stopwords_no.txt index e7a444f1..ce8492b5 100644 --- a/yake/StopwordsList/stopwords_no.txt +++ b/yake/core/StopwordsList/stopwords_no.txt @@ -1,119 +1,119 @@ -alle -andre -arbeid -av -begge -bort -bra -bruke -da -denne -der -deres -det -din -disse -du -eller -en -ene -eneste -enhver -enn -er -et -folk -for -fordi -forsÛke -fra -fÅ -fÛr -fÛrst -gjorde -gjÛre -god -gÅ -ha -hadde -han -hans -hennes -her -hva -hvem -hver -hvilken -hvis -hvor -hvordan -hvorfor -i -ikke -inn -innen -kan -kunne -lage -lang -lik -like -makt -mange -med -meg -meget -men -mens -mer -mest -min -mye -mÅ -mÅte -navn -nei -ny -nÅ -nÅr -og -ogsÅ -om -opp -oss -over -part -punkt -pÅ -rett -riktig -samme -sant -si -siden -sist -skulle -slik -slutt -som -start -stille -sÅ -tid -til -tilbake -tilstand -under -ut -uten -var -ved -verdi -vi -vil -ville -vite -vÅr -vÖre -vÖrt +alle +andre +arbeid +av +begge +bort +bra +bruke +da +denne +der +deres +det +din +disse +du +eller +en +ene +eneste +enhver +enn +er +et +folk +for +fordi +forsÛke +fra +fÅ +fÛr +fÛrst +gjorde +gjÛre +god +gÅ +ha +hadde +han +hans +hennes +her +hva +hvem +hver +hvilken +hvis +hvor +hvordan +hvorfor +i +ikke +inn +innen +kan +kunne +lage +lang +lik +like +makt +mange +med +meg +meget +men +mens +mer +mest +min +mye +mÅ +mÅte +navn +nei +ny +nÅ +nÅr +og +ogsÅ +om +opp +oss +over +part +punkt +pÅ +rett +riktig +samme +sant +si +siden +sist +skulle +slik +slutt +som +start +stille +sÅ +tid +til +tilbake +tilstand +under +ut +uten +var +ved +verdi +vi +vil +ville +vite +vÅr +vÖre +vÖrt Å \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_noLang.txt b/yake/core/StopwordsList/stopwords_noLang.txt similarity index 100% rename from yake/StopwordsList/stopwords_noLang.txt rename to yake/core/StopwordsList/stopwords_noLang.txt diff --git a/yake/StopwordsList/stopwords_pl.txt b/yake/core/StopwordsList/stopwords_pl.txt similarity index 83% rename from yake/StopwordsList/stopwords_pl.txt rename to yake/core/StopwordsList/stopwords_pl.txt index d8853f44..df26b1c6 100644 --- a/yake/StopwordsList/stopwords_pl.txt +++ b/yake/core/StopwordsList/stopwords_pl.txt @@ -1,138 +1,138 @@ -ach -aj -albo -bardzo -bez -bo -być -ci -cię -ciebie -co -czy -daleko -dla -dlaczego -dlatego -do -dobrze -dokąd -dość -dużo -dwa -dwaj -dwie -dwoje -dziś -dzisiaj -gdyby -gdzie -go -ich -ile -im -inny -ja -ją -jak -jakby -jaki -je -jeden -jedna -jedno -jego -jej -jemu -jeśli -jest -jestem -jeżeli -już -każdy -kiedy -kierunku -kto -ku -lub -ma -mają -mam -mi -mną -mnie -moi -mój -moja -moje -może -mu -my -na -nam -nami -nas -nasi -nasz -nasza -nasze -natychmiast -nią -nic -nich -nie -niego -niej -niemu -nigdy -nim -nimi -niż -obok -od -około -on -ona -one -oni -ono -owszem -po -pod -ponieważ -przed -przedtem -są -sam -sama -się -skąd -tak -taki -tam -ten -to -tobą -tobie -tu -tutaj -twoi -twój -twoja -twoje -ty -wam -wami -was -wasi -wasz -wasza -wasze -we -więc -wszystko -wtedy -wy -żaden -zawsze -że +ach +aj +albo +bardzo +bez +bo +być +ci +cię +ciebie +co +czy +daleko +dla +dlaczego +dlatego +do +dobrze +dokąd +dość +dużo +dwa +dwaj +dwie +dwoje +dziś +dzisiaj +gdyby +gdzie +go +ich +ile +im +inny +ja +ją +jak +jakby +jaki +je +jeden +jedna +jedno +jego +jej +jemu +jeśli +jest +jestem +jeżeli +już +każdy +kiedy +kierunku +kto +ku +lub +ma +mają +mam +mi +mną +mnie +moi +mój +moja +moje +może +mu +my +na +nam +nami +nas +nasi +nasz +nasza +nasze +natychmiast +nią +nic +nich +nie +niego +niej +niemu +nigdy +nim +nimi +niż +obok +od +około +on +ona +one +oni +ono +owszem +po +pod +ponieważ +przed +przedtem +są +sam +sama +się +skąd +tak +taki +tam +ten +to +tobą +tobie +tu +tutaj +twoi +twój +twoja +twoje +ty +wam +wami +was +wasi +wasz +wasza +wasze +we +więc +wszystko +wtedy +wy +żaden +zawsze +że diff --git a/yake/StopwordsList/stopwords_pt.txt b/yake/core/StopwordsList/stopwords_pt.txt similarity index 85% rename from yake/StopwordsList/stopwords_pt.txt rename to yake/core/StopwordsList/stopwords_pt.txt index f7df788a..0f2f460f 100644 --- a/yake/StopwordsList/stopwords_pt.txt +++ b/yake/core/StopwordsList/stopwords_pt.txt @@ -1,396 +1,396 @@ -dr -dra -sr -sra -a -à -adeus -agora -aí -ainda -além -algo -algumas -alguns -ali -ano -anos -antes -ao -aos -apenas -apoio -após -aquela -aquelas -aquele -aqueles -aqui -aquilo -área -as -às -assim -até -atrás -através -baixo -bastante -bem -boa -boas -bom -bons -breve -cá -cada -catorze -cedo -cento -certamente -certeza -cima -cinco -coisa -com -como -conselho -contra -custa -da -dá -dão -daquela -daquelas -daquele -daqueles -dar -das -de -debaixo -demais -dentro -depois -desde -dessa -dessas -desse -desses -desta -destas -deste -destes -deve -deverá -dez -dezanove -dezasseis -dezassete -dezoito -dia -diante -diz -dizem -dizer -do -dois -dos -doze -duas -dúvida -e -é -ela -elas -ele -eles -em -embora -entre -era -és -essa -essas -esse -esses -esta -está -estão -estar -estas -estás -estava -este -estes -esteve -estive -estivemos -estiveram -estiveste -estivestes -estou -eu -exemplo -faço -falta -favor -faz -fazeis -fazem -fazemos -fazer -fazes -fez -fim -final -foi -fomos -for -foram -forma -foste -fostes -fui -geral -grande -grandes -grupo -há -hoje -hora -horas -isso -isto -já -lá -lado -local -logo -longe -lugar -maior -maioria -mais -mal -mas -máximo -me -meio -menor -menos -mês -meses -meu -meus -mil -minha -minhas -momento -muito -muitos -na -nada -não -naquela -naquelas -naquele -naqueles -nas -nem -nenhuma -nessa -nessas -nesse -nesses -nesta -nestas -neste -nestes -nível -no -noite -nome -nos -nós -nossa -nossas -nosso -nossos -nova -novas -nove -novo -novos -num -numa -número -nunca -o -obra -obrigada -obrigado -oitava -oitavo -oito -onde -ontem -onze -os -ou -outra -outras -outro -outros -para -parece -parte -partir -paucas -pela -pelas -pelo -pelos -perto -pode -pôde -podem -poder -põe -põem -ponto -pontos -por -porque -porquê -posição -possível -possivelmente -posso -pouca -pouco -poucos -primeira -primeiras -primeiro -primeiros -própria -próprias -próprio -próprios -próxima -próximas -próximo -próximos -puderam -quáis -qual -quando -quanto -quarta -quarto -quatro -que -quê -quem -quer -quereis -querem -queremas -queres -quero -questão -quinta -quinto -quinze -relação -sabe -sabem -são -se -segunda -segundo -sei -seis -sem -sempre -ser -seria -sete -sétima -sétimo -seu -seus -sexta -sexto -sim -sistema -sob -sobre -sois -somos -sou -sua -suas -tal -talvez -também -tanta -tantas -tanto -tão -tarde -te -tem -têm -temos -tendes -tenho -tens -ter -terceira -terceiro -teu -teus -teve -tive -tivemos -tiveram -tiveste -tivestes -toda -todas -todo -todos -trabalho -três -treze -tu -tua -tuas -tudo -um -uma -umas -uns -vai -vais -vão -vários -vem -vêm -vens -ver -vez -vezes -viagem -vindo -vinte -você -vocês -vos -vós -vossa -vossas -vosso -vossos +dr +dra +sr +sra +a +à +adeus +agora +aí +ainda +além +algo +algumas +alguns +ali +ano +anos +antes +ao +aos +apenas +apoio +após +aquela +aquelas +aquele +aqueles +aqui +aquilo +área +as +às +assim +até +atrás +através +baixo +bastante +bem +boa +boas +bom +bons +breve +cá +cada +catorze +cedo +cento +certamente +certeza +cima +cinco +coisa +com +como +conselho +contra +custa +da +dá +dão +daquela +daquelas +daquele +daqueles +dar +das +de +debaixo +demais +dentro +depois +desde +dessa +dessas +desse +desses +desta +destas +deste +destes +deve +deverá +dez +dezanove +dezasseis +dezassete +dezoito +dia +diante +diz +dizem +dizer +do +dois +dos +doze +duas +dúvida +e +é +ela +elas +ele +eles +em +embora +entre +era +és +essa +essas +esse +esses +esta +está +estão +estar +estas +estás +estava +este +estes +esteve +estive +estivemos +estiveram +estiveste +estivestes +estou +eu +exemplo +faço +falta +favor +faz +fazeis +fazem +fazemos +fazer +fazes +fez +fim +final +foi +fomos +for +foram +forma +foste +fostes +fui +geral +grande +grandes +grupo +há +hoje +hora +horas +isso +isto +já +lá +lado +local +logo +longe +lugar +maior +maioria +mais +mal +mas +máximo +me +meio +menor +menos +mês +meses +meu +meus +mil +minha +minhas +momento +muito +muitos +na +nada +não +naquela +naquelas +naquele +naqueles +nas +nem +nenhuma +nessa +nessas +nesse +nesses +nesta +nestas +neste +nestes +nível +no +noite +nome +nos +nós +nossa +nossas +nosso +nossos +nova +novas +nove +novo +novos +num +numa +número +nunca +o +obra +obrigada +obrigado +oitava +oitavo +oito +onde +ontem +onze +os +ou +outra +outras +outro +outros +para +parece +parte +partir +paucas +pela +pelas +pelo +pelos +perto +pode +pôde +podem +poder +põe +põem +ponto +pontos +por +porque +porquê +posição +possível +possivelmente +posso +pouca +pouco +poucos +primeira +primeiras +primeiro +primeiros +própria +próprias +próprio +próprios +próxima +próximas +próximo +próximos +puderam +quáis +qual +quando +quanto +quarta +quarto +quatro +que +quê +quem +quer +quereis +querem +queremas +queres +quero +questão +quinta +quinto +quinze +relação +sabe +sabem +são +se +segunda +segundo +sei +seis +sem +sempre +ser +seria +sete +sétima +sétimo +seu +seus +sexta +sexto +sim +sistema +sob +sobre +sois +somos +sou +sua +suas +tal +talvez +também +tanta +tantas +tanto +tão +tarde +te +tem +têm +temos +tendes +tenho +tens +ter +terceira +terceiro +teu +teus +teve +tive +tivemos +tiveram +tiveste +tivestes +toda +todas +todo +todos +trabalho +três +treze +tu +tua +tuas +tudo +um +uma +umas +uns +vai +vais +vão +vários +vem +vêm +vens +ver +vez +vezes +viagem +vindo +vinte +você +vocês +vos +vós +vossa +vossas +vosso +vossos zero \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_ro.txt b/yake/core/StopwordsList/stopwords_ro.txt similarity index 85% rename from yake/StopwordsList/stopwords_ro.txt rename to yake/core/StopwordsList/stopwords_ro.txt index b84f7618..66d488f5 100644 --- a/yake/StopwordsList/stopwords_ro.txt +++ b/yake/core/StopwordsList/stopwords_ro.txt @@ -1,281 +1,281 @@ -acea -aceasta -această -aceea -acei -aceia -acel -acela -acele -acelea -acest -acesta -aceste -acestea -aceşti -aceştia -acolo -acord -acum -ai -aia -aibă -aici -al -ăla -ale -alea -ălea -altceva -altcineva -am -ar -are -aş -aşadar -asemenea -asta -ăsta -astăzi -astea -ăstea -ăştia -asupra -aţi -au -avea -avem -aveţi -azi -bine -bucur -bună -ca -că -căci -când -care -cărei -căror -cărui -cât -câte -câţi -către -câtva -caut -ce -cel -ceva -chiar -cinci -cînd -cine -cineva -cît -cîte -cîţi -cîtva -contra -cu -cum -cumva -curând -curînd -da -dă -dacă -dar -dată -datorită -dau -de -deci -deja -deoarece -departe -deşi -din -dinaintea -dintr- -dintre -doi -doilea -două -drept -după -ea -ei -el -ele -eram -este -eşti -eu -face -fără -fata -fi -fie -fiecare -fii -fim -fiţi -fiu -frumos -graţie -halbă -iar -ieri -îi -îl -îmi -împotriva -în -înainte -înaintea -încât -încît -încotro -între -întrucât -întrucît -îţi -la -lângă -le -li -lîngă -lor -lui -mă -mai -mâine -mea -mei -mele -mereu -meu -mi -mie -mîine -mine -mult -multă -mulţi -mulţumesc -ne -nevoie -nicăieri -nici -nimeni -nimeri -nimic -nişte -noastră -noastre -noi -noroc -noştri -nostru -nouă -nu -opt -ori -oricând -oricare -oricât -orice -oricînd -oricine -oricît -oricum -oriunde -până -patra -patru -patrulea -pe -pentru -peste -pic -pînă -poate -pot -prea -prima -primul -prin -puţin -puţina -puţină -rog -sa -să -săi -sale -şapte -şase -sau -său -se -şi -sînt -sîntem -sînteţi -spate -spre -ştiu -sub -sunt -suntem -sunteţi -sută -ta -tăi -tale -tău -te -ţi -ţie -timp -tine -toată -toate -tot -toţi -totuşi -trei -treia -treilea -tu -un -una -unde -undeva -unei -uneia -unele -uneori -unii -unor -unora -unu -unui -unuia -unul -vă -vi -voastră -voastre -voi -voştri -vostru -vouă -vreme -vreo -vreun -zece -zero -zi +acea +aceasta +această +aceea +acei +aceia +acel +acela +acele +acelea +acest +acesta +aceste +acestea +aceşti +aceştia +acolo +acord +acum +ai +aia +aibă +aici +al +ăla +ale +alea +ălea +altceva +altcineva +am +ar +are +aş +aşadar +asemenea +asta +ăsta +astăzi +astea +ăstea +ăştia +asupra +aţi +au +avea +avem +aveţi +azi +bine +bucur +bună +ca +că +căci +când +care +cărei +căror +cărui +cât +câte +câţi +către +câtva +caut +ce +cel +ceva +chiar +cinci +cînd +cine +cineva +cît +cîte +cîţi +cîtva +contra +cu +cum +cumva +curând +curînd +da +dă +dacă +dar +dată +datorită +dau +de +deci +deja +deoarece +departe +deşi +din +dinaintea +dintr- +dintre +doi +doilea +două +drept +după +ea +ei +el +ele +eram +este +eşti +eu +face +fără +fata +fi +fie +fiecare +fii +fim +fiţi +fiu +frumos +graţie +halbă +iar +ieri +îi +îl +îmi +împotriva +în +înainte +înaintea +încât +încît +încotro +între +întrucât +întrucît +îţi +la +lângă +le +li +lîngă +lor +lui +mă +mai +mâine +mea +mei +mele +mereu +meu +mi +mie +mîine +mine +mult +multă +mulţi +mulţumesc +ne +nevoie +nicăieri +nici +nimeni +nimeri +nimic +nişte +noastră +noastre +noi +noroc +noştri +nostru +nouă +nu +opt +ori +oricând +oricare +oricât +orice +oricînd +oricine +oricît +oricum +oriunde +până +patra +patru +patrulea +pe +pentru +peste +pic +pînă +poate +pot +prea +prima +primul +prin +puţin +puţina +puţină +rog +sa +să +săi +sale +şapte +şase +sau +său +se +şi +sînt +sîntem +sînteţi +spate +spre +ştiu +sub +sunt +suntem +sunteţi +sută +ta +tăi +tale +tău +te +ţi +ţie +timp +tine +toată +toate +tot +toţi +totuşi +trei +treia +treilea +tu +un +una +unde +undeva +unei +uneia +unele +uneori +unii +unor +unora +unu +unui +unuia +unul +vă +vi +voastră +voastre +voi +voştri +vostru +vouă +vreme +vreo +vreun +zece +zero +zi zice \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_ru.txt b/yake/core/StopwordsList/stopwords_ru.txt similarity index 91% rename from yake/StopwordsList/stopwords_ru.txt rename to yake/core/StopwordsList/stopwords_ru.txt index d179d8e7..a1a28eca 100644 --- a/yake/StopwordsList/stopwords_ru.txt +++ b/yake/core/StopwordsList/stopwords_ru.txt @@ -1,422 +1,422 @@ -а -е -и -ж -м -о -на -не -ни -об -но -он -мне -мои -мож -она -они -оно -мной -много -многочисленное -многочисленная -многочисленные -многочисленный -мною -мой -мог -могут -можно -может -можхо -мор -моя -моё -мочь -над -нее -оба -нам -нем -нами -ними -мимо -немного -одной -одного -менее -однажды -однако -меня -нему -меньше -ней -наверху -него -ниже -мало -надо -один -одиннадцать -одиннадцатый -назад -наиболее -недавно -миллионов -недалеко -между -низко -меля -нельзя -нибудь -непрерывно -наконец -никогда -никуда -нас -наш -нет -нею -неё -них -мира -наша -наше -наши -ничего -начала -нередко -несколько -обычно -опять -около -мы -ну -нх -от -отовсюду -особенно -нужно -очень -отсюда -в -во -вон -вниз -внизу -вокруг -вот -восемнадцать -восемнадцатый -восемь -восьмой -вверх -вам -вами -важное -важная -важные -важный -вдали -везде -ведь -вас -ваш -ваша -ваше -ваши -впрочем -весь -вдруг -вы -все -второй -всем -всеми -времени -время -всему -всего -всегда -всех -всею -всю -вся -всё -всюду -г -год -говорил -говорит -года -году -где -да -ее -за -из -ли -же -им -до -по -ими -под -иногда -довольно -именно -долго -позже -более -должно -пожалуйста -значит -иметь -больше -пока -ему -имя -пор -пора -потом -потому -после -почему -почти -посреди -ей -два -две -двенадцать -двенадцатый -двадцать -двадцатый -двух -его -дел -или -без -день -занят -занята -занято -заняты -действительно -давно -девятнадцать -девятнадцатый -девять -девятый -даже -алло -жизнь -далеко -близко -здесь -дальше -для -лет -зато -даром -первый -перед -затем -зачем -лишь -десять -десятый -ею -её -их -бы -еще -при -был -про -процентов -против -просто -бывает -бывь -если -люди -была -были -было -будем -будет -будете -будешь -прекрасно -буду -будь -будто -будут -ещё -пятнадцать -пятнадцатый -друго -другое -другой -другие -другая -других -есть -пять -быть -лучше -пятый -к -ком -конечно -кому -кого -когда -которой -которого -которая -которые -который -которых -кем -каждое -каждая -каждые -каждый -кажется -как -какой -какая -кто -кроме -куда -кругом -с -т -у -я -та -те -уж -со -то -том -снова -тому -совсем -того -тогда -тоже -собой -тобой -собою -тобою -сначала -только -уметь -тот -тою -хорошо -хотеть -хочешь -хоть -хотя -свое -свои -твой -своей -своего -своих -свою -твоя -твоё -раз -уже -сам -там -тем -чем -сама -сами -теми -само -рано -самом -самому -самой -самого -семнадцать -семнадцатый -самим -самими -самих -саму -семь -чему -раньше -сейчас -чего -сегодня -себе -тебе -сеаой -человек -разве -теперь -себя -тебя -седьмой -спасибо -слишком -так -такое -такой -такие -также -такая -сих -тех -чаще -четвертый -через -часто -шестой -шестнадцать -шестнадцатый -шесть -четыре -четырнадцать -четырнадцатый -сколько -сказал -сказала -сказать -ту -ты -три -эта -эти -что -это -чтоб -этом -этому -этой -этого -чтобы -этот -стал -туда -этим -этими -рядом -тринадцать -тринадцатый -этих -третий -тут -эту -суть -чуть -тысяч - +а +е +и +ж +м +о +на +не +ни +об +но +он +мне +мои +мож +она +они +оно +мной +много +многочисленное +многочисленная +многочисленные +многочисленный +мною +мой +мог +могут +можно +может +можхо +мор +моя +моё +мочь +над +нее +оба +нам +нем +нами +ними +мимо +немного +одной +одного +менее +однажды +однако +меня +нему +меньше +ней +наверху +него +ниже +мало +надо +один +одиннадцать +одиннадцатый +назад +наиболее +недавно +миллионов +недалеко +между +низко +меля +нельзя +нибудь +непрерывно +наконец +никогда +никуда +нас +наш +нет +нею +неё +них +мира +наша +наше +наши +ничего +начала +нередко +несколько +обычно +опять +около +мы +ну +нх +от +отовсюду +особенно +нужно +очень +отсюда +в +во +вон +вниз +внизу +вокруг +вот +восемнадцать +восемнадцатый +восемь +восьмой +вверх +вам +вами +важное +важная +важные +важный +вдали +везде +ведь +вас +ваш +ваша +ваше +ваши +впрочем +весь +вдруг +вы +все +второй +всем +всеми +времени +время +всему +всего +всегда +всех +всею +всю +вся +всё +всюду +г +год +говорил +говорит +года +году +где +да +ее +за +из +ли +же +им +до +по +ими +под +иногда +довольно +именно +долго +позже +более +должно +пожалуйста +значит +иметь +больше +пока +ему +имя +пор +пора +потом +потому +после +почему +почти +посреди +ей +два +две +двенадцать +двенадцатый +двадцать +двадцатый +двух +его +дел +или +без +день +занят +занята +занято +заняты +действительно +давно +девятнадцать +девятнадцатый +девять +девятый +даже +алло +жизнь +далеко +близко +здесь +дальше +для +лет +зато +даром +первый +перед +затем +зачем +лишь +десять +десятый +ею +её +их +бы +еще +при +был +про +процентов +против +просто +бывает +бывь +если +люди +была +были +было +будем +будет +будете +будешь +прекрасно +буду +будь +будто +будут +ещё +пятнадцать +пятнадцатый +друго +другое +другой +другие +другая +других +есть +пять +быть +лучше +пятый +к +ком +конечно +кому +кого +когда +которой +которого +которая +которые +который +которых +кем +каждое +каждая +каждые +каждый +кажется +как +какой +какая +кто +кроме +куда +кругом +с +т +у +я +та +те +уж +со +то +том +снова +тому +совсем +того +тогда +тоже +собой +тобой +собою +тобою +сначала +только +уметь +тот +тою +хорошо +хотеть +хочешь +хоть +хотя +свое +свои +твой +своей +своего +своих +свою +твоя +твоё +раз +уже +сам +там +тем +чем +сама +сами +теми +само +рано +самом +самому +самой +самого +семнадцать +семнадцатый +самим +самими +самих +саму +семь +чему +раньше +сейчас +чего +сегодня +себе +тебе +сеаой +человек +разве +теперь +себя +тебя +седьмой +спасибо +слишком +так +такое +такой +такие +также +такая +сих +тех +чаще +четвертый +через +часто +шестой +шестнадцать +шестнадцатый +шесть +четыре +четырнадцать +четырнадцатый +сколько +сказал +сказала +сказать +ту +ты +три +эта +эти +что +это +чтоб +этом +этому +этой +этого +чтобы +этот +стал +туда +этим +этими +рядом +тринадцать +тринадцатый +этих +третий +тут +эту +суть +чуть +тысяч + diff --git a/yake/StopwordsList/stopwords_sk.txt b/yake/core/StopwordsList/stopwords_sk.txt similarity index 79% rename from yake/StopwordsList/stopwords_sk.txt rename to yake/core/StopwordsList/stopwords_sk.txt index 687db576..68d7eeb7 100644 --- a/yake/StopwordsList/stopwords_sk.txt +++ b/yake/core/StopwordsList/stopwords_sk.txt @@ -1,110 +1,110 @@ -a -aby -aj -ako -ak -ale -alebo -ani -avak -ba -bez -bu -cez -do -ho -hoci -i -ich -im -ja -jeho -jej -jemu -ju -k -kam -kde -kede -ke -kto -ktor -ku -lebo -ma -mi -mne -mnou -mu -my -ma -mj -na -nad -nami -neho -nej -nemu -nich -nielen -nim -no -nm -ns -n -nm -o -od -on -ona -oni -ono -ony -po -pod -pre -pred -pri -s -sa -seba -sem -so -svoj -tak -tam -teba -tebe -tebou -tej -ten -ti -tie -to -toho -tomu -tou -tvoj -ty -t -tm -v -vami -ve -vo -vy -vm -vs -v -vak -z -za -zo -a -i -o - -om -ou -u +a +aby +aj +ako +ak +ale +alebo +ani +avak +ba +bez +bu +cez +do +ho +hoci +i +ich +im +ja +jeho +jej +jemu +ju +k +kam +kde +kede +ke +kto +ktor +ku +lebo +ma +mi +mne +mnou +mu +my +ma +mj +na +nad +nami +neho +nej +nemu +nich +nielen +nim +no +nm +ns +n +nm +o +od +on +ona +oni +ono +ony +po +pod +pre +pred +pri +s +sa +seba +sem +so +svoj +tak +tam +teba +tebe +tebou +tej +ten +ti +tie +to +toho +tomu +tou +tvoj +ty +t +tm +v +vami +ve +vo +vy +vm +vs +v +vak +z +za +zo +a +i +o + +om +ou +u e \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_sl.txt b/yake/core/StopwordsList/stopwords_sl.txt similarity index 84% rename from yake/StopwordsList/stopwords_sl.txt rename to yake/core/StopwordsList/stopwords_sl.txt index dadaf7f1..03926a08 100644 --- a/yake/StopwordsList/stopwords_sl.txt +++ b/yake/core/StopwordsList/stopwords_sl.txt @@ -1,446 +1,446 @@ -a -ali -april -avgust -b -bi -bil -bila -bile -bili -bilo -biti -blizu -bo -bodo -bojo -bolj -bom -bomo -boste -bova -boš -brez -c -cel -cela -celi -celo -d -da -daleč -dan -danes -datum -december -deset -deseta -deseti -deseto -devet -deveta -deveti -deveto -do -dober -dobra -dobri -dobro -dokler -dol -dolg -dolga -dolgi -dovolj -drug -druga -drugi -drugo -dva -dve -e -eden -en -ena -ene -eni -enkrat -eno -etc. -f -februar -g -g. -ga -ga. -gor -gospa -gospod -h -halo -i -idr. -ii -iii -in -iv -ix -iz -j -januar -jaz -je -ji -jih -jim -jo -julij -junij -jutri -k -kadarkoli -kaj -kajti -kako -kakor -kamor -kamorkoli -kar -karkoli -katerikoli -kdaj -kdo -kdorkoli -ker -ki -kje -kjer -kjerkoli -ko -koder -koderkoli -koga -komu -kot -kratek -kratka -kratke -kratki -l -lahka -lahke -lahki -lahko -le -lep -lepa -lepe -lepi -lepo -leto -m -maj -majhen -majhna -majhni -malce -malo -manj -marec -me -med -medtem -mene -mesec -mi -midva -midve -mnogo -moj -moja -moje -mora -morajo -moram -moramo -morate -moraš -morem -mu -n -na -nad -naj -najina -najino -najmanj -naju -največ -nam -narobe -nas -nato -nazaj -naš -naša -naše -ne -nedavno -nedelja -nek -neka -nekaj -nekatere -nekateri -nekatero -nekdo -neke -nekega -neki -nekje -neko -nekoga -nekoč -ni -nikamor -nikdar -nikjer -nikoli -nič -nje -njega -njegov -njegova -njegovo -njej -njemu -njen -njena -njeno -nji -njih -njihov -njihova -njihovo -njiju -njim -njo -njun -njuna -njuno -no -nocoj -november -npr. -o -ob -oba -obe -oboje -od -odprt -odprta -odprti -okoli -oktober -on -onadva -one -oni -onidve -osem -osma -osmi -osmo -oz. -p -pa -pet -peta -petek -peti -peto -po -pod -pogosto -poleg -poln -polna -polni -polno -ponavadi -ponedeljek -ponovno -potem -povsod -pozdravljen -pozdravljeni -prav -prava -prave -pravi -pravo -prazen -prazna -prazno -prbl. -precej -pred -prej -preko -pri -pribl. -približno -primer -pripravljen -pripravljena -pripravljeni -proti -prva -prvi -prvo -r -ravno -redko -res -reč -s -saj -sam -sama -same -sami -samo -se -sebe -sebi -sedaj -sedem -sedma -sedmi -sedmo -sem -september -seveda -si -sicer -skoraj -skozi -slab -smo -so -sobota -spet -sreda -srednja -srednji -sta -ste -stran -stvar -sva -t -ta -tak -taka -take -taki -tako -takoj -tam -te -tebe -tebi -tega -težak -težka -težki -težko -ti -tista -tiste -tisti -tisto -tj. -tja -to -toda -torek -tretja -tretje -tretji -tri -tu -tudi -tukaj -tvoj -tvoja -tvoje -u -v -vaju -vam -vas -vaš -vaša -vaše -ve -vedno -velik -velika -veliki -veliko -vendar -ves -več -vi -vidva -vii -viii -visok -visoka -visoke -visoki -vsa -vsaj -vsak -vsaka -vsakdo -vsake -vsaki -vsakomur -vse -vsega -vsi -vso -včasih -včeraj -x -z -za -zadaj -zadnji -zakaj -zaprta -zaprti -zaprto -zdaj -zelo -zunaj -č -če -često -četrta -četrtek -četrti -četrto -čez -čigav -š -šest -šesta -šesti -šesto -štiri -ž +a +ali +april +avgust +b +bi +bil +bila +bile +bili +bilo +biti +blizu +bo +bodo +bojo +bolj +bom +bomo +boste +bova +boš +brez +c +cel +cela +celi +celo +d +da +daleč +dan +danes +datum +december +deset +deseta +deseti +deseto +devet +deveta +deveti +deveto +do +dober +dobra +dobri +dobro +dokler +dol +dolg +dolga +dolgi +dovolj +drug +druga +drugi +drugo +dva +dve +e +eden +en +ena +ene +eni +enkrat +eno +etc. +f +februar +g +g. +ga +ga. +gor +gospa +gospod +h +halo +i +idr. +ii +iii +in +iv +ix +iz +j +januar +jaz +je +ji +jih +jim +jo +julij +junij +jutri +k +kadarkoli +kaj +kajti +kako +kakor +kamor +kamorkoli +kar +karkoli +katerikoli +kdaj +kdo +kdorkoli +ker +ki +kje +kjer +kjerkoli +ko +koder +koderkoli +koga +komu +kot +kratek +kratka +kratke +kratki +l +lahka +lahke +lahki +lahko +le +lep +lepa +lepe +lepi +lepo +leto +m +maj +majhen +majhna +majhni +malce +malo +manj +marec +me +med +medtem +mene +mesec +mi +midva +midve +mnogo +moj +moja +moje +mora +morajo +moram +moramo +morate +moraš +morem +mu +n +na +nad +naj +najina +najino +najmanj +naju +največ +nam +narobe +nas +nato +nazaj +naš +naša +naše +ne +nedavno +nedelja +nek +neka +nekaj +nekatere +nekateri +nekatero +nekdo +neke +nekega +neki +nekje +neko +nekoga +nekoč +ni +nikamor +nikdar +nikjer +nikoli +nič +nje +njega +njegov +njegova +njegovo +njej +njemu +njen +njena +njeno +nji +njih +njihov +njihova +njihovo +njiju +njim +njo +njun +njuna +njuno +no +nocoj +november +npr. +o +ob +oba +obe +oboje +od +odprt +odprta +odprti +okoli +oktober +on +onadva +one +oni +onidve +osem +osma +osmi +osmo +oz. +p +pa +pet +peta +petek +peti +peto +po +pod +pogosto +poleg +poln +polna +polni +polno +ponavadi +ponedeljek +ponovno +potem +povsod +pozdravljen +pozdravljeni +prav +prava +prave +pravi +pravo +prazen +prazna +prazno +prbl. +precej +pred +prej +preko +pri +pribl. +približno +primer +pripravljen +pripravljena +pripravljeni +proti +prva +prvi +prvo +r +ravno +redko +res +reč +s +saj +sam +sama +same +sami +samo +se +sebe +sebi +sedaj +sedem +sedma +sedmi +sedmo +sem +september +seveda +si +sicer +skoraj +skozi +slab +smo +so +sobota +spet +sreda +srednja +srednji +sta +ste +stran +stvar +sva +t +ta +tak +taka +take +taki +tako +takoj +tam +te +tebe +tebi +tega +težak +težka +težki +težko +ti +tista +tiste +tisti +tisto +tj. +tja +to +toda +torek +tretja +tretje +tretji +tri +tu +tudi +tukaj +tvoj +tvoja +tvoje +u +v +vaju +vam +vas +vaš +vaša +vaše +ve +vedno +velik +velika +veliki +veliko +vendar +ves +več +vi +vidva +vii +viii +visok +visoka +visoke +visoki +vsa +vsaj +vsak +vsaka +vsakdo +vsake +vsaki +vsakomur +vse +vsega +vsi +vso +včasih +včeraj +x +z +za +zadaj +zadnji +zakaj +zaprta +zaprti +zaprto +zdaj +zelo +zunaj +č +če +često +četrta +četrtek +četrti +četrto +čez +čigav +š +šest +šesta +šesti +šesto +štiri +ž že \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_sv.txt b/yake/core/StopwordsList/stopwords_sv.txt similarity index 86% rename from yake/StopwordsList/stopwords_sv.txt rename to yake/core/StopwordsList/stopwords_sv.txt index eb21ab80..0fb086f6 100644 --- a/yake/StopwordsList/stopwords_sv.txt +++ b/yake/core/StopwordsList/stopwords_sv.txt @@ -1,386 +1,386 @@ -aderton -adertonde -adjö -aldrig -alla -allas -allt -alltid -alltså -än -andra -andras -annan -annat -ännu -artonde -artonn -åtminstone -att -åtta -åttio -åttionde -åttonde -av -även -båda -bådas -bakom -bara -bäst -bättre -behöva -behövas -behövde -behövt -beslut -beslutat -beslutit -bland -blev -bli -blir -blivit -bort -borta -bra -då -dag -dagar -dagarna -dagen -där -därför -de -del -delen -dem -den -deras -dess -det -detta -dig -din -dina -dit -ditt -dock -du -efter -eftersom -elfte -eller -elva -en -enkel -enkelt -enkla -enligt -er -era -ert -ett -ettusen -få -fanns -får -fått -fem -femte -femtio -femtionde -femton -femtonde -fick -fin -finnas -finns -fjärde -fjorton -fjortonde -fler -flera -flesta -följande -för -före -förlåt -förra -första -fram -framför -från -fyra -fyrtio -fyrtionde -gå -gälla -gäller -gällt -går -gärna -gått -genast -genom -gick -gjorde -gjort -god -goda -godare -godast -gör -göra -gott -ha -hade -haft -han -hans -har -här -heller -hellre -helst -helt -henne -hennes -hit -hög -höger -högre -högst -hon -honom -hundra -hundraen -hundraett -hur -i -ibland -idag -igår -igen -imorgon -in -inför -inga -ingen -ingenting -inget -innan -inne -inom -inte -inuti -ja -jag -jämfört -kan -kanske -knappast -kom -komma -kommer -kommit -kr -kunde -kunna -kunnat -kvar -länge -längre -långsam -långsammare -långsammast -långsamt -längst -långt -lätt -lättare -lättast -legat -ligga -ligger -lika -likställd -likställda -lilla -lite -liten -litet -man -många -måste -med -mellan -men -mer -mera -mest -mig -min -mina -mindre -minst -mitt -mittemot -möjlig -möjligen -möjligt -möjligtvis -mot -mycket -någon -någonting -något -några -när -nästa -ned -nederst -nedersta -nedre -nej -ner -ni -nio -nionde -nittio -nittionde -nitton -nittonde -nödvändig -nödvändiga -nödvändigt -nödvändigtvis -nog -noll -nr -nu -nummer -och -också -ofta -oftast -olika -olikt -om -oss -över -övermorgon -överst -övre -på -rakt -rätt -redan -så -sade -säga -säger -sagt -samma -sämre -sämst -sedan -senare -senast -sent -sex -sextio -sextionde -sexton -sextonde -sig -sin -sina -sist -sista -siste -sitt -sjätte -sju -sjunde -sjuttio -sjuttionde -sjutton -sjuttonde -ska -skall -skulle -slutligen -små -smått -snart -som -stor -stora -större -störst -stort -tack -tidig -tidigare -tidigast -tidigt -till -tills -tillsammans -tio -tionde -tjugo -tjugoen -tjugoett -tjugonde -tjugotre -tjugotvå -tjungo -tolfte -tolv -tre -tredje -trettio -trettionde -tretton -trettonde -två -tvåhundra -under -upp -ur -ursäkt -ut -utan -utanför -ute -vad -vänster -vänstra -var -vår -vara -våra -varför -varifrån -varit -varken -värre -varsågod -vart -vårt -vem -vems -verkligen -vi -vid -vidare -viktig -viktigare -viktigast -viktigt -vilka -vilken -vilket +aderton +adertonde +adjö +aldrig +alla +allas +allt +alltid +alltså +än +andra +andras +annan +annat +ännu +artonde +artonn +åtminstone +att +åtta +åttio +åttionde +åttonde +av +även +båda +bådas +bakom +bara +bäst +bättre +behöva +behövas +behövde +behövt +beslut +beslutat +beslutit +bland +blev +bli +blir +blivit +bort +borta +bra +då +dag +dagar +dagarna +dagen +där +därför +de +del +delen +dem +den +deras +dess +det +detta +dig +din +dina +dit +ditt +dock +du +efter +eftersom +elfte +eller +elva +en +enkel +enkelt +enkla +enligt +er +era +ert +ett +ettusen +få +fanns +får +fått +fem +femte +femtio +femtionde +femton +femtonde +fick +fin +finnas +finns +fjärde +fjorton +fjortonde +fler +flera +flesta +följande +för +före +förlåt +förra +första +fram +framför +från +fyra +fyrtio +fyrtionde +gå +gälla +gäller +gällt +går +gärna +gått +genast +genom +gick +gjorde +gjort +god +goda +godare +godast +gör +göra +gott +ha +hade +haft +han +hans +har +här +heller +hellre +helst +helt +henne +hennes +hit +hög +höger +högre +högst +hon +honom +hundra +hundraen +hundraett +hur +i +ibland +idag +igår +igen +imorgon +in +inför +inga +ingen +ingenting +inget +innan +inne +inom +inte +inuti +ja +jag +jämfört +kan +kanske +knappast +kom +komma +kommer +kommit +kr +kunde +kunna +kunnat +kvar +länge +längre +långsam +långsammare +långsammast +långsamt +längst +långt +lätt +lättare +lättast +legat +ligga +ligger +lika +likställd +likställda +lilla +lite +liten +litet +man +många +måste +med +mellan +men +mer +mera +mest +mig +min +mina +mindre +minst +mitt +mittemot +möjlig +möjligen +möjligt +möjligtvis +mot +mycket +någon +någonting +något +några +när +nästa +ned +nederst +nedersta +nedre +nej +ner +ni +nio +nionde +nittio +nittionde +nitton +nittonde +nödvändig +nödvändiga +nödvändigt +nödvändigtvis +nog +noll +nr +nu +nummer +och +också +ofta +oftast +olika +olikt +om +oss +över +övermorgon +överst +övre +på +rakt +rätt +redan +så +sade +säga +säger +sagt +samma +sämre +sämst +sedan +senare +senast +sent +sex +sextio +sextionde +sexton +sextonde +sig +sin +sina +sist +sista +siste +sitt +sjätte +sju +sjunde +sjuttio +sjuttionde +sjutton +sjuttonde +ska +skall +skulle +slutligen +små +smått +snart +som +stor +stora +större +störst +stort +tack +tidig +tidigare +tidigast +tidigt +till +tills +tillsammans +tio +tionde +tjugo +tjugoen +tjugoett +tjugonde +tjugotre +tjugotvå +tjungo +tolfte +tolv +tre +tredje +trettio +trettionde +tretton +trettonde +två +tvåhundra +under +upp +ur +ursäkt +ut +utan +utanför +ute +vad +vänster +vänstra +var +vår +vara +våra +varför +varifrån +varit +varken +värre +varsågod +vart +vårt +vem +vems +verkligen +vi +vid +vidare +viktig +viktigare +viktigast +viktigt +vilka +vilken +vilket vill \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_tr.txt b/yake/core/StopwordsList/stopwords_tr.txt similarity index 87% rename from yake/StopwordsList/stopwords_tr.txt rename to yake/core/StopwordsList/stopwords_tr.txt index 3097f765..8cc78bbe 100644 --- a/yake/StopwordsList/stopwords_tr.txt +++ b/yake/core/StopwordsList/stopwords_tr.txt @@ -1,212 +1,212 @@ -# Turkish stopwords from LUCENE-559 -# merged with the list from "Information Retrieval on Turkish Texts" -# (http://www.users.muohio.edu/canf/papers/JASIST2008offPrint.pdf) -acaba -altmış -altı -ama -ancak -arada -aslında -ayrıca -bana -bazı -belki -ben -benden -beni -benim -beri -beş -bile -bin -bir -birçok -biri -birkaç -birkez -birşey -birşeyi -biz -bize -bizden -bizi -bizim -böyle -böylece -bu -buna -bunda -bundan -bunlar -bunları -bunların -bunu -bunun -burada -çok -çünkü -da -daha -dahi -de -defa -değil -diğer -diye -doksan -dokuz -dolayı -dolayısıyla -dört -edecek -eden -ederek -edilecek -ediliyor -edilmesi -ediyor -eğer -elli -en -etmesi -etti -ettiği -ettiğini -gibi -göre -halen -hangi -hatta -hem -henüz -hep -hepsi -her -herhangi -herkesin -hiç -hiçbir -için -iki -ile -ilgili -ise -işte -itibaren -itibariyle -kadar -karşın -katrilyon -kendi -kendilerine -kendini -kendisi -kendisine -kendisini -kez -ki -kim -kimden -kime -kimi -kimse -kırk -milyar -milyon -mu -mü -mı -nasıl -ne -neden -nedenle -nerde -nerede -nereye -niye -niçin -o -olan -olarak -oldu -olduğu -olduğunu -olduklarını -olmadı -olmadığı -olmak -olması -olmayan -olmaz -olsa -olsun -olup -olur -olursa -oluyor -on -ona -ondan -onlar -onlardan -onları -onların -onu -onun -otuz -oysa -öyle -pek -rağmen -sadece -sanki -sekiz -seksen -sen -senden -seni -senin -siz -sizden -sizi -sizin -şey -şeyden -şeyi -şeyler -şöyle -şu -şuna -şunda -şundan -şunları -şunu -tarafından -trilyon -tüm -üç -üzere -var -vardı -ve -veya -ya -yani -yapacak -yapılan -yapılması -yapıyor -yapmak -yaptı -yaptığı -yaptığını -yaptıkları -yedi -yerine -yetmiş -yine -yirmi -yoksa -yüz +# Turkish stopwords from LUCENE-559 +# merged with the list from "Information Retrieval on Turkish Texts" +# (http://www.users.muohio.edu/canf/papers/JASIST2008offPrint.pdf) +acaba +altmış +altı +ama +ancak +arada +aslında +ayrıca +bana +bazı +belki +ben +benden +beni +benim +beri +beş +bile +bin +bir +birçok +biri +birkaç +birkez +birşey +birşeyi +biz +bize +bizden +bizi +bizim +böyle +böylece +bu +buna +bunda +bundan +bunlar +bunları +bunların +bunu +bunun +burada +çok +çünkü +da +daha +dahi +de +defa +değil +diğer +diye +doksan +dokuz +dolayı +dolayısıyla +dört +edecek +eden +ederek +edilecek +ediliyor +edilmesi +ediyor +eğer +elli +en +etmesi +etti +ettiği +ettiğini +gibi +göre +halen +hangi +hatta +hem +henüz +hep +hepsi +her +herhangi +herkesin +hiç +hiçbir +için +iki +ile +ilgili +ise +işte +itibaren +itibariyle +kadar +karşın +katrilyon +kendi +kendilerine +kendini +kendisi +kendisine +kendisini +kez +ki +kim +kimden +kime +kimi +kimse +kırk +milyar +milyon +mu +mü +mı +nasıl +ne +neden +nedenle +nerde +nerede +nereye +niye +niçin +o +olan +olarak +oldu +olduğu +olduğunu +olduklarını +olmadı +olmadığı +olmak +olması +olmayan +olmaz +olsa +olsun +olup +olur +olursa +oluyor +on +ona +ondan +onlar +onlardan +onları +onların +onu +onun +otuz +oysa +öyle +pek +rağmen +sadece +sanki +sekiz +seksen +sen +senden +seni +senin +siz +sizden +sizi +sizin +şey +şeyden +şeyi +şeyler +şöyle +şu +şuna +şunda +şundan +şunları +şunu +tarafından +trilyon +tüm +üç +üzere +var +vardı +ve +veya +ya +yani +yapacak +yapılan +yapılması +yapıyor +yapmak +yaptı +yaptığı +yaptığını +yaptıkları +yedi +yerine +yetmiş +yine +yirmi +yoksa +yüz zaten \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_uk.txt b/yake/core/StopwordsList/stopwords_uk.txt similarity index 91% rename from yake/StopwordsList/stopwords_uk.txt rename to yake/core/StopwordsList/stopwords_uk.txt index d331dfda..e561734b 100644 --- a/yake/StopwordsList/stopwords_uk.txt +++ b/yake/core/StopwordsList/stopwords_uk.txt @@ -1,385 +1,385 @@ -a -б -в -г -е -ж -з -м -т -у -я -є -і -аж -ви -де -до -за -зі -ми -на -не -ну -нх -ні -по -та -ти -то -ту -ті -це -цю -ця -ці -чи -ще -що -як -їй -їм -їх -її -або -але -ало -без -був -вам -вас -ваш -вже -все -всю -вся -від -він -два -дві -для -ким -мож -моя -моє -мої -міг -між -мій -над -нам -нас -наш -нею -неї -них -ніж -ній -ось -при -про -під -пір -раз -рік -сам -сих -сім -так -там -теж -тим -тих -той -тою -три -тут -хоч -хто -цей -цим -цих -час -щоб -яка -які -адже -буде -буду -будь -була -були -було -бути -вами -ваша -ваше -ваші -весь -вниз -вона -вони -воно -всею -всім -всіх -втім -геть -далі -двох -день -дуже -зате -його -йому -каже -кого -коли -кому -крім -куди -лише -люди -мало -мати -мене -мені -миру -мною -може -нами -наша -наше -наші -ними -ніби -один -поки -пора -рано -року -році -сама -саме -саму -самі -свою -своє -свої -себе -собі -став -суть -така -таке -такі -твоя -твоє -твій -тебе -тими -тобі -того -тоді -тому -туди -хоча -хіба -цими -цієї -часу -чого -чому -який -яких -якої -якщо -ім'я -інша -інше -інші -буває -будеш -більш -вгору -вміти -внизу -вісім -давно -даром -добре -довго -друго -дякую -життя -зараз -знову -какая -кожен -кожна -кожне -кожні -краще -ледве -майже -менше -могти -можна -назад -немає -нижче -нього -однак -п'ять -перед -поруч -потім -проти -після -років -самим -самих -самій -свого -своєї -своїх -собою -справ -такий -також -тепер -тисяч -тобою -треба -трохи -усюди -усіма -хочеш -цього -цьому -часто -через -шість -якого -іноді -інший -інших -багато -будемо -будете -будуть -більше -всього -всьому -далеко -десять -досить -другий -дійсно -завжди -звідси -зовсім -кругом -кілька -людина -можуть -навіть -навіщо -нагорі -небудь -низько -ніколи -нікуди -нічого -обидва -одного -однієї -п'ятий -перший -просто -раніше -раптом -самими -самого -самому -сказав -скрізь -сьомий -третій -тільки -хотіти -чотири -чудово -шостий -близько -важлива -важливе -важливі -вдалині -восьмий -говорив -дев'ять -десятий -зайнята -зайнято -зайняті -занадто -значить -навколо -нарешті -нерідко -повинно -посеред -початку -пізніше -сказала -сказати -скільки -спасибі -частіше -важливий -двадцять -дев'ятий -зазвичай -зайнятий -звичайно -здається -найбільш -не можна -недалеко -особливо -потрібно -спочатку -сьогодні -численна -численне -численні -відсотків -двадцятий -звідусіль -мільйонів -нещодавно -прекрасно -четвертий -численний -будь ласка -дванадцять -одинадцять -сімнадцять -тринадцять -безперервно -дванадцятий -одинадцятий -одного разу -п'ятнадцять -сімнадцятий -тринадцятий -шістнадцять -вісімнадцять -п'ятнадцятий -чотирнадцять -шістнадцятий -вісімнадцятий -дев'ятнадцять -чотирнадцятий +a +б +в +г +е +ж +з +м +т +у +я +є +і +аж +ви +де +до +за +зі +ми +на +не +ну +нх +ні +по +та +ти +то +ту +ті +це +цю +ця +ці +чи +ще +що +як +їй +їм +їх +її +або +але +ало +без +був +вам +вас +ваш +вже +все +всю +вся +від +він +два +дві +для +ким +мож +моя +моє +мої +міг +між +мій +над +нам +нас +наш +нею +неї +них +ніж +ній +ось +при +про +під +пір +раз +рік +сам +сих +сім +так +там +теж +тим +тих +той +тою +три +тут +хоч +хто +цей +цим +цих +час +щоб +яка +які +адже +буде +буду +будь +була +були +було +бути +вами +ваша +ваше +ваші +весь +вниз +вона +вони +воно +всею +всім +всіх +втім +геть +далі +двох +день +дуже +зате +його +йому +каже +кого +коли +кому +крім +куди +лише +люди +мало +мати +мене +мені +миру +мною +може +нами +наша +наше +наші +ними +ніби +один +поки +пора +рано +року +році +сама +саме +саму +самі +свою +своє +свої +себе +собі +став +суть +така +таке +такі +твоя +твоє +твій +тебе +тими +тобі +того +тоді +тому +туди +хоча +хіба +цими +цієї +часу +чого +чому +який +яких +якої +якщо +ім'я +інша +інше +інші +буває +будеш +більш +вгору +вміти +внизу +вісім +давно +даром +добре +довго +друго +дякую +життя +зараз +знову +какая +кожен +кожна +кожне +кожні +краще +ледве +майже +менше +могти +можна +назад +немає +нижче +нього +однак +п'ять +перед +поруч +потім +проти +після +років +самим +самих +самій +свого +своєї +своїх +собою +справ +такий +також +тепер +тисяч +тобою +треба +трохи +усюди +усіма +хочеш +цього +цьому +часто +через +шість +якого +іноді +інший +інших +багато +будемо +будете +будуть +більше +всього +всьому +далеко +десять +досить +другий +дійсно +завжди +звідси +зовсім +кругом +кілька +людина +можуть +навіть +навіщо +нагорі +небудь +низько +ніколи +нікуди +нічого +обидва +одного +однієї +п'ятий +перший +просто +раніше +раптом +самими +самого +самому +сказав +скрізь +сьомий +третій +тільки +хотіти +чотири +чудово +шостий +близько +важлива +важливе +важливі +вдалині +восьмий +говорив +дев'ять +десятий +зайнята +зайнято +зайняті +занадто +значить +навколо +нарешті +нерідко +повинно +посеред +початку +пізніше +сказала +сказати +скільки +спасибі +частіше +важливий +двадцять +дев'ятий +зазвичай +зайнятий +звичайно +здається +найбільш +не можна +недалеко +особливо +потрібно +спочатку +сьогодні +численна +численне +численні +відсотків +двадцятий +звідусіль +мільйонів +нещодавно +прекрасно +четвертий +численний +будь ласка +дванадцять +одинадцять +сімнадцять +тринадцять +безперервно +дванадцятий +одинадцятий +одного разу +п'ятнадцять +сімнадцятий +тринадцятий +шістнадцять +вісімнадцять +п'ятнадцятий +чотирнадцять +шістнадцятий +вісімнадцятий +дев'ятнадцять +чотирнадцятий дев'ятнадцятий \ No newline at end of file diff --git a/yake/StopwordsList/stopwords_zh.txt b/yake/core/StopwordsList/stopwords_zh.txt similarity index 80% rename from yake/StopwordsList/stopwords_zh.txt rename to yake/core/StopwordsList/stopwords_zh.txt index 955ff2b0..0b3ef8f8 100644 --- a/yake/StopwordsList/stopwords_zh.txt +++ b/yake/core/StopwordsList/stopwords_zh.txt @@ -1,125 +1,125 @@ -的 -一 -不 -在 -人 -有 -是 -为 -以 -于 -上 -他 -而 -后 -之 -来 -及 -了 -因 -下 -可 -到 -由 -这 -与 -也 -此 -但 -并 -个 -其 -已 -无 -小 -我 -们 -起 -最 -再 -今 -去 -好 -只 -又 -或 -很 -亦 -某 -把 -那 -你 -乃 -它 -吧 -被 -比 -别 -趁 -当 -从 -到 -得 -打 -凡 -儿 -尔 -该 -各 -给 -跟 -和 -何 -还 -即 -几 -既 -看 -据 -距 -靠 -啦 -了 -另 -么 -每 -们 -嘛 -拿 -哪 -那 -您 -凭 -且 -却 -让 -仍 -啥 -如 -若 -使 -谁 -虽 -随 -同 -所 -她 -哇 -嗡 -往 -哪 -些 -向 -沿 -哟 -用 -于 -咱 -则 -怎 -曾 -至 -致 -着 -诸 +的 +一 +不 +在 +人 +有 +是 +为 +以 +于 +上 +他 +而 +后 +之 +来 +及 +了 +因 +下 +可 +到 +由 +这 +与 +也 +此 +但 +并 +个 +其 +已 +无 +小 +我 +们 +起 +最 +再 +今 +去 +好 +只 +又 +或 +很 +亦 +某 +把 +那 +你 +乃 +它 +吧 +被 +比 +别 +趁 +当 +从 +到 +得 +打 +凡 +儿 +尔 +该 +各 +给 +跟 +和 +何 +还 +即 +几 +既 +看 +据 +距 +靠 +啦 +了 +另 +么 +每 +们 +嘛 +拿 +哪 +那 +您 +凭 +且 +却 +让 +仍 +啥 +如 +若 +使 +谁 +虽 +随 +同 +所 +她 +哇 +嗡 +往 +哪 +些 +向 +沿 +哟 +用 +于 +咱 +则 +怎 +曾 +至 +致 +着 +诸 自 \ No newline at end of file diff --git a/yake/core/__pycache__/Levenshtein.cpython-310.pyc b/yake/core/__pycache__/Levenshtein.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..2a6ba6955d3c843d61c5cdc9b70936ce160832f9 GIT binary patch literal 2215 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 C{|lG^ literal 0 HcmV?d00001 diff --git a/yake/core/__pycache__/yake.cpython-310.pyc b/yake/core/__pycache__/yake.cpython-310.pyc new file mode 100644 index 0000000000000000000000000000000000000000..8c5c5d27cc6c7f164e607d5f06e312208de086aa GIT binary patch literal 8237 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 Date: Tue, 13 May 2025 15:13:37 +0100 Subject: [PATCH 080/122] Update README.md --- README.md | 53 +++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 39 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 6da00a3e..d1ac5cda 100644 --- a/README.md +++ b/README.md @@ -17,8 +17,16 @@ YAKE! is a lightweight unsupervised automatic keyword extraction method that use pip install git+https://github.com/LIAAD/yake ``` +or + +```bash +pip install yake +``` + ## Basic Usage +#### Usage (Python) + ```python import yake @@ -45,14 +53,35 @@ custom_kw_extractor = yake.KeywordExtractor( keywords = custom_kw_extractor.extract_keywords(text) ``` +#### Usage (Command line) + +How to use it on your favorite command line + +``` bash +Usage: yake [OPTIONS] + +Options: + -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. +``` + ## Multilingual Support YAKE! supports multiple languages. Example with Portuguese text: ```python -text_pt = "YAKE! é um extrator de palavras-chave automático não supervisionado." +text = "Alvor – encantadora vila. A aldeia piscatória de Alvor está situada no estuário do Rio Alvor e apesar da evolução constante do turismo no Algarve, mantém a sua arquitetura baixa e encanto da cidade velha, com ruas estreitas de paralelepípedos que nos levam até à Ria de Alvor, uma das belezas naturais mais impressionantes de Portugal. Há muitos hotéis em Alvor por onde escolher e adequar às exigências das suas férias, quanto a gosto e orçamento, bem como uma série de alojamento autossuficiente para aqueles que preferem ter um pouco mais de liberdade durante a sua estadia na Região de Portimão. Há muito para fazer e descobrir em Alvor, quer seja passar os seus dias descobrindo a rede de ruas desta encantadora vila de pescadores, explorar as lojas, ir para a praia para se divertir entre brincadeiras na areia e mergulhos no mar, ou descobrir a flora e fauna da área classificada da Ria de Alvor. O charme de Alvor não se esgota na Vila. Ficar hospedado em Alvor vai proporcionar-lhe momento mágicos entre paisagens de colinas, lagoas rasas e vistas panorâmicas sobre o Oceano Atlântico. Terá oportunidade de praticar o seu swing num dos campos de golfe de classe mundial e explorar as principais atrações históricas e alguns dos segredos mais bem escondidos do Algarve, nas proximidades, em Portimão e Mexilhoeira Grande. Consulte a lista dos nossos parceiros e escolha o hotel em Alvor, onde ficar durante as suas férias no Algarve." custom_kw_extractor = yake.KeywordExtractor(lan="pt") -keywords = custom_kw_extractor.extract_keywords(text_pt) +keywords = custom_kw_extractor.extract_keywords(text) ``` ## Text Highlighting @@ -73,30 +102,26 @@ custom_th = TextHighlighter( ) ``` - ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [Documentation](https://tiagolv.github.io/yakerf/docs) -- 📦 Python package: [GitHub](https://github.com/LIAAD/yake_demo) +- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs) +- 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) +- 💻 Pypi [https://pypi.org/project/yake/](https://pypi.org/project/yake/) ## Citation -If you use YAKE in your research, please cite: +If you use YAKE in your research, please cite the best suited: -``` Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. -Information Sciences Journal. Elsevier, Vol 509, pp 257-289. -``` -[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) +Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) -``` Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. -ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. -``` -[pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) +ECIR 2018. Lecture Notes in Computer Science, vol 10772, pp. 684-691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) + +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) ## Awards From 6d85a057a9a21c2eeff854bf409c7ef92120fe4c Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 15:37:28 +0100 Subject: [PATCH 081/122] cleaning repository and read-me tests --- README.md | 76 +++++++++++++++++++++-------- demo/packages.txt | 9 ---- demo/streamlit_app.py | 107 ----------------------------------------- tests/README.md | 18 +++++++ tests/doc1.txt | 1 - tests/yakenew.md | 109 ------------------------------------------ 6 files changed, 74 insertions(+), 246 deletions(-) delete mode 100644 demo/packages.txt delete mode 100644 demo/streamlit_app.py create mode 100644 tests/README.md delete mode 100644 tests/doc1.txt delete mode 100644 tests/yakenew.md diff --git a/README.md b/README.md index d1ac5cda..d66171fd 100644 --- a/README.md +++ b/README.md @@ -25,12 +25,54 @@ pip install yake ## Basic Usage +#### Usage (Command line) + +How to use it on your favorite command line + +``` bash +Usage: yake [OPTIONS] + +Options: + -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. +``` + #### Usage (Python) ```python import yake -text = "YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text." +text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ +"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ +"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ +"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ +"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ +"was founded by Goldbloom and Ben Hamner in 2010. "\ +"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ +"it has managed to stay well ahead of them by focusing on its specific niche. "\ +"The service is basically the de facto home for running data science and machine learning competitions. "\ +"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ +"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ +"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ +"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ +"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ +"will keep the service running - likely under its current name. While the acquisition is probably more about "\ +"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ +"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ +"share this code on the platform (the company previously called them 'scripts'). "\ +"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ +"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ +"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ +"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " # Simple usage with default parameters kw_extractor = yake.KeywordExtractor() @@ -53,27 +95,21 @@ custom_kw_extractor = yake.KeywordExtractor( keywords = custom_kw_extractor.extract_keywords(text) ``` -#### Usage (Command line) - -How to use it on your favorite command line - +#### Output +The lower the score, the more relevant the keyword is. ``` bash -Usage: yake [OPTIONS] - -Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. +('google', 0.026580863364597897) +('kaggle', 0.0289005976239829) +('ceo anthony goldbloom', 0.029946071606210194) +('san francisco', 0.048810837074825336) +('anthony goldbloom declined', 0.06176910090701819) +('google cloud platform', 0.06261974476422487) +('co-founder ceo anthony', 0.07357749587020043) +('acquiring kaggle', 0.08723571551039863) ``` + + ## Multilingual Support YAKE! supports multiple languages. Example with Portuguese text: @@ -107,7 +143,7 @@ custom_th = TextHighlighter( - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) - 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs) - 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) -- 💻 Pypi [https://pypi.org/project/yake/](https://pypi.org/project/yake/) +- 💻 Pypi: [https://pypi.org/project/yake/](https://pypi.org/project/yake/) ## Citation diff --git a/demo/packages.txt b/demo/packages.txt deleted file mode 100644 index 6092a9af..00000000 --- a/demo/packages.txt +++ /dev/null @@ -1,9 +0,0 @@ -matplotlib==3.3.1 -importlib-metadata==4.13.0 -git+https://github.com/LIAAD/yake -numpy==1.18.5 -pandas==1.0.5 -spacy==2.3.2 -wordcloud==1.8.0 -streamlit==0.64.0 -Pillow==7.2.0 diff --git a/demo/streamlit_app.py b/demo/streamlit_app.py deleted file mode 100644 index 79a94f71..00000000 --- a/demo/streamlit_app.py +++ /dev/null @@ -1,107 +0,0 @@ -import streamlit as st -import yake -import pandas as pd -import numpy as np -from wordcloud import WordCloud -import matplotlib.pyplot as plt -from spacy import displacy -import re - -st.write('', unsafe_allow_html=True) -HTML_WRAPPER = """

    {}
    """ - - -st.sidebar.title("Yet Another Keyword Extractor (YAKE)") -st.sidebar.markdown(""" -Unsupervised Approach for Automatic Keyword Extraction using Text Features. -https://liaad.github.io/yake/ -""" -) - -st.sidebar.markdown(""" -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) -""") - -st.sidebar.header('Parameters') - -#side bar parameters -max_ngram_size = st.sidebar.slider("Select max ngram size", 1, 10, 3) -deduplication_thresold = st.sidebar.slider("Select deduplication threshold", 0.5, 1.0, 0.9) -numOfKeywords = st.sidebar.slider("Select number of keywords to return", 1, 50, 10) -deduplication_algo = st.sidebar.selectbox('deduplication function', ('leve','jaro','seqm'),2) - - - -input_text_demo = [ - "Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size . The need to automate this task so that text can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools . Yake is a novel feature-based system for multi-lingual keyword extraction , which supports texts of different sizes, domain or languages. Unlike other approaches, Yake does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where access to training corpora is either limited or restricted.", - "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner", - "Genius quietly laid off a bunch of its engineers — now can it survive as a media company?. Genius, which raised $56.9 million on the promise that it would one day annotate the entire internet, has been losing its minds. In January, the company quietly laid off a quarter of its staff, with the bulk of the cuts coming from the engineering department. In a post on the Genius blog at the time, co-founder Tom Lehman told employees that Genius planned to shift its emphasis away from the annotation platform that once attracted top-tier investors in favor of becoming a more video-focused media company. 'After taking a careful look at the company and our priorities,' Lehman wrote, 'we’ve had to make some tough decisions about how we want to spend our resources. And unfortunately this meant that today we laid off some very talented people.' The company then took the unusual step of posting the Genius usernames of those it had laid off — 12 full-time and five part-time employees. 'WE NEEDED TO SHIFT RESOURCES FROM CAPTURING KNOWLEDGE... TOWARD PACKAGING AND DISTRIBUTING KNOWLEDGE.' At the same time, Lehman noted that the company was continuing to hire for roles in video and sales. The company recently redesigned its homepage with expanded space for editorial content and advertising. It has also been deepening its Behind the Lyrics partnership with Spotify, for which it contributes a mix of song lyrics and factoids that pop up in a slideshow format when you’re listening to popular songs. 'The change we made in January was in recognition of the fact that we needed to shift resources from capturing knowledge — which we've been doing almost exclusively for the past five years — toward packaging and distributing knowledge into easy-to-consume formats like video and Spotify Behind the Lyrics,' Lehman told The Verge. It’s not unusual for tech companies to transform over time, though typically they are loath to lay off engineers. But Genius’ shift is more dramatic than most: going from all-encompassing annotator of the internet to a more traditional media company model, chasing video views alongside an ever-growing number of well-capitalized competitors. The move illustrates the company’s difficulty attracting contributors — and an audience for their contributions — particularly outside of the music world. In an interview last week, Lehman said the company had turned to video in an effort to reach its core audience‚ which continues to be rap fans, beyond its website and mobile apps. 'Video makes it a little bit more accessible,' he said. 'I love the Genius website. One of my favorite websites. But it can be a little frustrating to use. You have to be really, really dedicated to learn everything about a song on Genius. You've got to be down to click and read a lot.' Genius’ videos to date have included interviews with artists about their craft, and a series where rappers perform original freestyle verses. One of Lehman’s favorite videos traces a whistle sample featured in a series of popular songs back to its origins in a Quentin Tarantino movie. Last week, Genius posted a video about rapper Lil Yachty learning how to make pizza. The company is also investing in original editorial content, aggregating news headlines, doing Q&As with artists like the Track Burnaz, and writing short profiles. ", -] - - - -windowSize = 1 - -#User text in content -st.header('Demo') - -selected_input_text = st.selectbox("Select sample text", input_text_demo) -text = st.text_area("Selected text", selected_input_text, 330) -language = "english" - -#use yake to extract keywords -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_thresold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None) -keywords = custom_kw_extractor.extract_keywords(text) - - - - -#get keywords and their position -ents = [] -text_lower = text.lower() - -keywords_list = str(keywords[0][0]) -for m in re.finditer(keywords_list, text_lower): - d = dict(start = m.start(), end = m.end(), label = "") - ents.append(d) - -for i in range(1, len(keywords)): - kwords = str(keywords[i][0]) - keywords_list += (', ' + kwords) - for m in re.finditer(kwords, text_lower): - d = dict(start = m.start(), end = m.end(), label = "") - ents.append(d) - -#sort the result by ents, as ent rule suggests -sort_ents = sorted(ents, key=lambda x: x["start"]) - -st.header('Output') - -result_view = st.radio("Choose visualization type",('Highlighting', 'Word cloud', 'Table'), index=0) -if result_view == 'Highlighting': - #use spacy to higlight the keywords - ex = [{"text": text, - "ents": sort_ents, - "title": None}] - - html = displacy.render(ex, style="ent", manual=True) - html = html.replace("\n", " ") - st.write(HTML_WRAPPER.format(html), unsafe_allow_html=True) -elif result_view == "Table": - #tabular data (columns: keywords, score) - df = pd.DataFrame(keywords, columns=("keywords","score")) - st.table(df) - -else: - #create and generate a word cloud image - wordcloud = WordCloud(width = 1000, height = 600, max_font_size = 80, - min_font_size=10, prefer_horizontal=1, - max_words=numOfKeywords, - background_color="white", - collocations=False, - regexp = r"\w[\w ']+").generate(keywords_list) - - #display the generated image - plt.imshow(wordcloud, interpolation='bilinear') - plt.axis("off") - st.pyplot(plt) diff --git a/tests/README.md b/tests/README.md new file mode 100644 index 00000000..47218002 --- /dev/null +++ b/tests/README.md @@ -0,0 +1,18 @@ +🧪 How to run the tests +This project uses pytes to run it´s tests. + +📋 Pre-requirements +If not already installed install pytest: + +bash +``` +pip install pytest +``` + +🚀 Running the tests +To run the tests, run the following command on the root of your project: + +bash +``` +pytest tests/test_yake.py -v +``` diff --git a/tests/doc1.txt b/tests/doc1.txt deleted file mode 100644 index 7ef9c955..00000000 --- a/tests/doc1.txt +++ /dev/null @@ -1 +0,0 @@ -Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner \ No newline at end of file diff --git a/tests/yakenew.md b/tests/yakenew.md deleted file mode 100644 index 8a66c5db..00000000 --- a/tests/yakenew.md +++ /dev/null @@ -1,109 +0,0 @@ -Importações: - -Organizadas em grupos (stdlib, third-party, local) -Ordenadas alfabeticamente e por natividade -Removida importação não utilizada de string - -Nomes de variáveis e funções: - -Classes CamelCase -Função: snake_case -Variáveis: snake_case -Constantes: UPPER_CASE - -----------------------Docstrings----------------------------------: - -Adicionada docstring ao módulo -Adicionada docstring à classe -Adicionadas docstrings aos métodos com descrição dos parâmetros - -----------------------Formatação----------------------------------: - -Espaçamento atualizados -Parênteses removidos de condicionais desnecessários -Limite de 100 caracteres -Parâmetros do __init__ organizados verticalmente para melhor legibilidade - ------------------------Boas práticas------------------------------: - -Removida herança explícita de object (atualmente desnecessária em Python 3) -Melhorada mensagem de exceção -Substituído - - == False -por - not - -Melhorada verificação de string vazia usando if not text - ------------------------------------------------------------------------------------------------------------------------ - -Status semanda 07/02/2025 //////Refactoring score (3.21) ---------> PYlint (PEP 8) - -- Exploração das mencionadas ferramentas puppet e cheff. -(Ferramentas que acabam por ser extremamente parecidas ao git actions, não considero que usá-las seja algo que vala a pena; visto que o github actions será mais intuitivo.) (04 e 05 /02/2025) - -- finalização da configuração do pylint (Git Action), que me deu uma série de "code smells" em vários ficheiros. (07/02/2025) - -pylint: Action capaz de avaliar um commit, analizando todos os ficheiros .py, num sistema de pontos de 0 a 10 realçando melhoramentos. - -Planos próxima semana: - -- Criação de novos testes e possivel automatização dos mesmos para puder aprofundar refatorização. - (de 9 a 11 pretendo acabar esta etapa), visto que viajo dia 14 e 15 - -- Caso consigo tempo, começar a tratar de problemas identificados pelo pylint - -Status semana 14/02/2025 //////Refactoring score (3.21) - -- Automatização dos testes de resultados - -Planos próxima semana - -- Avançar com refatorização e tratamento de problemas identificados pelo pylint. - -////// Refactoring score (3.21) -> (3.94) 18/02/2025 - -Tamanhos de linha e troca para enumerate -isinstance() por vez de type() - -////// Refactoring score (3.94) -> (5.07) 20/02/2025 - -indexação de linhas e espaços -tamanho de linhas -atualizados os catches de erros (especificação quantos aos catches) - -////// Refactoring score (5.07) -> (6.57) 25/02/2025 - -organização dos métodos, classes e variaveis -generator por vez 'sum' -enumerate por vez de iteração com range e len -prefixos com 'u' e 'r' removidos e adicionados respetivamente ( 'u' não necessarios para o python 3.10 e o contrário para 'r') - - -///// Refactoring score (6.57) -> (6.59) 05/03/2025 - -yake.py - -Redução de código duplo -Criação de dicionários de "guia", _get_dedup_function -Lógica foi extraída para um método separado,_load_stopwords - -///// Refactoring score (6.59) -> (6.86) 06/03/2025 - -highligh.py - -Redução de código duplo (Próximo passo) -Documentação +/- -Separação de métodos e argumentos (quase todos) - -///// Refactoring score (6.86) -> (6.93) 07/03/2025 - -Criação de dicionários de forma a diminuir o numero de argumentos por cada função e comparações condicionais. - -///// Refactoring score (6.86) -> (7.23) 25/03/2025 - -data representation acabado -separação de argumentos e atributos por dicionáros -métodos mais compactos -criação de propriedades de "backwards compatibility" para facilitar refatorização, não necessário mas peça imperial para desenvolvimento sem problemas com variaveis e criação de novos dicionários From 04916576eba71e95e80b48c5ba1244f8f62c5a8d Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 16:00:24 +0100 Subject: [PATCH 082/122] Update README.md --- tests/README.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tests/README.md b/tests/README.md index 47218002..d8f25bbb 100644 --- a/tests/README.md +++ b/tests/README.md @@ -1,7 +1,7 @@ -🧪 How to run the tests +# 🧪 How to run the tests This project uses pytes to run it´s tests. -📋 Pre-requirements +### 📋 Pre-requirements If not already installed install pytest: bash @@ -9,7 +9,7 @@ bash pip install pytest ``` -🚀 Running the tests +### 🚀 Running the tests To run the tests, run the following command on the root of your project: bash From c510de000e123d50342f3bf8ab255417c7767a5f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 16:59:42 +0100 Subject: [PATCH 083/122] updated homepage and readme --- README.md | 6 +- docs-site/content/docs/index.mdx | 394 ++++++++----------------------- 2 files changed, 109 insertions(+), 291 deletions(-) diff --git a/README.md b/README.md index d66171fd..b233d68e 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,8 @@ [![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) + YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. ## Features @@ -37,7 +39,7 @@ Options: -i, --input_file TEXT Input file -l, --language TEXT Language -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] + -df, --dedup-func [leve|jaro|seqm] * Deduplication function. -dl, --dedup-lim FLOAT Deduplication limiar. -ws, --window-size INTEGER Window size. @@ -46,6 +48,8 @@ Options: --help Show this message and exit. ``` +Dont know which Deduplication function to use, see more here () + #### Usage (Python) ```python diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index ceccb29d..8d246ce6 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,348 +1,165 @@ -# Yet Another Keyword Extractor (Yake) +# Yet Another Keyword Extractor (YAKE!) -Unsupervised Approach for Automatic Keyword Extraction using Text Features. +**Unsupervised, corpus-independent keyword extraction from single documents.** -YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app. +YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. -## Main Features +YAKE! is designed to be: +- 🧠 **Unsupervised** – no training data required +- 🌍 **Language & domain independent** – works across domains and languages +- 📄 **Single-document based** – no need for a reference corpus +- ⚡ **Efficient** – lightweight and fast -* Unsupervised approach -* Corpus-Independent -* Domain and Language Independent -* Single-Document +## Why YAKE!? -## Benchmark +In an era where data is abundant and multilingual content is common, keyword extraction must be fast, adaptable, and reliable. YAKE! is built to handle: +- Small or large documents +- Texts in various languages +- Environments with limited or no training data -For Benchmark results check out our paper published on Information Science Journal (see the references section). +Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. -## Rationale +## Try It Out -Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. +- 🧪 [Online Demo](http://yake.inesctec.pt) +- 🐍 [GitHub Repository](https://github.com/LIAAD/yake) -## Where can I find YAKE!? -YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords). +## Install YAKE! -## Installing YAKE! +You can use YAKE! via: -There are three installation alternatives. - -- To run YAKE! in the command line (say, to integrate in a script), but you do not need an HTTP server on top, you can use our [simple YAKE! Docker image](#cli-image). This container will allow you to run text extraction as a command, and then exit. -- To run YAKE! as an HTTP server featuring a RESTful API (say to integrate in a web application or host your own YAKE!), you can use our [RESTful API server image](#rest-api-image). This container/server *will run in the background*. -- To install YAKE! straight "on the metal" or you want to integrate it in your Python app, you can [install it and its dependencies](#standalone-installation). - - -### Option 1. YAKE as a CLI utility inside a Docker container - -First, install Docker. Ubuntu users, please see our [script below](#installing-docker) for a complete installation script. - -Then, run: - -```bash -docker run liaad/yake:latest -ti "Caffeine is a central nervous system (CNS) stimulant of the methylxanthine class.[10] It is the world's most widely consumed psychoactive drug. Unlike many other psychoactive substances, it is legal and unregulated in nearly all parts of the world. There are several known mechanisms of action to explain the effects of caffeine. The most prominent is that it reversibly blocks the action of adenosine on its receptor and consequently prevents the onset of drowsiness induced by adenosine. Caffeine also stimulates certain portions of the autonomic nervous system." -``` -*Example text from Wikipedia* - - -### Option 2. REST API Server in a Docker container - -This install will provide you a mirror of the original REST API of YAKE! available [here](https://boiling-castle-88317.herokuapp.com). +### ▶️ Python Package ```bash -docker run -p 5000:5000 -d liaad/yake-server:latest +pip install git+https://github.com/LIAAD/yake ``` -After it starts up, the container will run in the background, at http://127.0.0.1:5000. To access the YAKE! API documentation, go to http://127.0.0.1:5000/apidocs/. - -You can test the RESTful API using `curl`: - -```bash -curl -X POST "http://localhost:5000/yake/" -H "accept: application/json" -H "Content-Type: application/json" \ --d @- <<'EOF' -{ - "language": "en", - "max_ngram_size": 3, - "number_of_keywords": 10, - "text": "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists ..." -} -EOF -``` -*Example text from Wikipedia* +## How It Works - -### Option 3. Standalone Installation (for development or integration) +YAKE! assigns relevance scores to keywords based on multiple features: +- Term frequency +- Term position +- Word casing +- Sentence placement +- Contextual diversity -#### Requirements +The lower the score, the more relevant the keyword. -Python3 +## Example (Python) -#### Installation +```python +import yake -To install Yake using pip: +text = "Google is acquiring Kaggle, a platform for machine learning competitions..." +kw_extractor = yake.KeywordExtractor() +keywords = kw_extractor.extract_keywords(text) -``` bash -pip install git+https://github.com/LIAAD/yake +for kw in keywords: + print(kw) ``` -To upgrade using pip: - -``` bash -pip install git+https://github.com/LIAAD/yake –-upgrade -``` #### Usage (Command line) How to use it on your favorite command line + ``` bash Usage: yake [OPTIONS] Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes(') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. -``` -### Usage (Python) - -How to use it on Python - -``` python -import yake - -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ -"was founded by Goldbloom and Ben Hamner in 2010. "\ -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ -"it has managed to stay well ahead of them by focusing on its specific niche. "\ -"The service is basically the de facto home for running data science and machine learning competitions. "\ -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ -"will keep the service running - likely under its current name. While the acquisition is probably more about "\ -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ -"share this code on the platform (the company previously called them 'scripts'). "\ -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ -"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " + -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] * + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. ``` -#### assuming default parameters -```bash -kw_extractor = yake.KeywordExtractor() -keywords = kw_extractor.extract_keywords(text) +# Keyword Deduplication Methods in YAKE -for kw in keywords: - print(kw) -``` - -#### specifying parameters -```bash -language = "en" -max_ngram_size = 3 -deduplication_threshold = 0.9 -deduplication_algo = 'seqm' -windowSize = 1 -numOfKeywords = 20 +In YAKE (Yet Another Keyword Extractor), the methods `levs`, `jaro`, and `seqm` are used to compute **string similarity** during the **keyword deduplication** process — that is, removing keywords that are too similar to each other. Here's what distinguishes each of these methods: -custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_threshold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None) -keywords = custom_kw_extractor.extract_keywords(text) +## 🔤 1. `levs` — **Levenshtein Similarity** -for kw in keywords: - print(kw) -``` +* **What it is:** Measures the edit distance between two strings — i.e., how many operations (insertions, deletions, substitutions) are needed to turn one string into another. +* **How it's used here:** The distance is **normalized** by the length of the longer string, then converted to a **similarity score**. +* **Formula used:** -#### Output -The lower the score, the more relevant the keyword is. -``` bash -('google', 0.026580863364597897) -('kaggle', 0.0289005976239829) -('ceo anthony goldbloom', 0.029946071606210194) -('san francisco', 0.048810837074825336) -('anthony goldbloom declined', 0.06176910090701819) -('google cloud platform', 0.06261974476422487) -('co-founder ceo anthony', 0.07357749587020043) -('acquiring kaggle', 0.08723571551039863) -('ceo anthony', 0.08915156857226395) -('anthony goldbloom', 0.09123482372372106) -('machine learning', 0.09147989238151344) -('kaggle co-founder ceo', 0.093805063905847) -('data', 0.097574333771058) -('google cloud', 0.10260128641464673) -('machine learning competitions', 0.10773000650607861) -('francisco this week', 0.11519915079240485) -('platform', 0.1183512305596321) -('conference in san', 0.12392066376108138) -('service', 0.12546743261462942) -('goldbloom', 0.14611408778815776) +```python +similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) ``` -### Highlighting Feature -Highlighting feature will tag every keyword in the text with the default tag ``. +* **Advantages:** + * Very accurate for small changes (e.g., "house" vs "horse"). + * Considers **character positions**. +* **Disadvantage:** + * **Slower** than other methods, due to calculating edit operations. -``` python +## 🔤 2. `jaro` — **Jaro Similarity** -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size = 3) -th.highlight(text, keywords) - -``` -#### Output -By default, keywords will be highlighted using the tag 'kw'. -``` -Sources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that google is hosting its Cloud Next conference in san francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the acquisition is happening. google itself declined 'to comment on rumors'. -..... -..... -``` +* **What it is:** Measures similarity based on matching characters and their relative positions. +* **Note:** YAKE uses the `jellyfish` library implementation. +* **How it works:** Gives more weight to **nearby matching characters** and penalizes character misalignments. +* **Score:** Ranges from 0.0 (completely different) to 1.0 (identical). +* **Advantages:** + * More **tolerant of transpositions** (e.g., "maria" vs "maira"). + * Faster than Levenshtein. +* **Disadvantage:** + * May be less accurate for strings with big length differences. +## 🔤 3. `seqm` — **SequenceMatcher Ratio** -### Custom Highlighting Feature -Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag `` makes use of an hyphotetical function `my_class` whose purpose would be to highlight in white colour or the relevant keywords. +* **What it is:** Uses Python's built-in `difflib.SequenceMatcher`, which measures similarity based on **common subsequences**. +* **How it works:** Detects matching blocks and computes a ratio: -#### Output ```python - -from yake.highlight import TextHighlighter -th = TextHighlighter(max_ngram_size = 3, highlight_pre = "", highlight_post= "") -th.highlight(text, keywords) -``` - -``` -self.highlight_postSources tell us that google is acquiring kaggle, a platform that hosts data science and machine learning self.highlight_postcompetitions. Details about the transaction remain somewhat vague , but given that google is hosting self.highlight_postits Cloud Next conference in san francisco this week, the official announcement could come as early self.highlight_postas tomorrow. Reached by phone, Kaggle co-founder ceo anthony goldbloom declined to deny that the self.highlight_postacquisition is happening. google itself declined 'to comment on rumors'. -..... -..... -``` - -### Languages others than English -While English (`en`) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text. -``` bash -text = ''' -"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui. -A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto. -''' - -custom_kw_extractor = yake.KeywordExtractor(lan="pt") -keywords = custom_kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) +ratio = 2 * M / T ``` -#### Output -``` bash -('conta-me histórias', 0.006225012963810038) -('liaad do inesc', 0.01899063587015275) -('inesc tec', 0.01995432290332246) -('conta-me', 0.04513273690417472) -('histórias', 0.04513273690417472) -('prémio arquivo.pt', 0.05749361520927859) -('liaad', 0.07738867367929901) -('inesc', 0.07738867367929901) -('tec', 0.08109398065524037) -('xutos inspiram projeto', 0.08720742489353424) -('inspiram projeto premiado', 0.08720742489353424) -('adam jatwot docente', 0.09407053486771558) -('arquivo.pt', 0.10261392141666957) -('alípio jorge', 0.12190479662535166) -('ciências da universidade', 0.12368384021490342) -('ricardo campos investigador', 0.12789997272332762) -('politécnico de tomar', 0.13323587141127738) -('arian pasquali', 0.13323587141127738) -('vitor mangaravite', 0.13323587141127738) -('preservados da web', 0.13596322680882506) -``` - -## Related projects - -### YAKE! Mobile APP -YAKE! is now available on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake) - -### `pke` - python keyphrase extraction - -https://github.com/boudinfl/pke - `pke` is an **open source** python-based **keyphrase extraction** toolkit. It -provides an end-to-end keyphrase extraction pipeline in which each component can -be easily modified or extended to develop new models. `pke` also allows for -easy benchmarking of state-of-the-art keyphrase extraction models, and -ships with supervised models trained on the SemEval-2010 dataset (http://aclweb.org/anthology/S10-1004). +where `M` is the number of matching characters, and `T` is the total number of characters in both strings. -Credits to https://github.com/boudinfl +* **Advantages:** + * Good for detecting shared blocks in longer strings. + * Reasonably fast. +* **Disadvantage:** + * Can be **too sensitive** to small changes in short strings. -### `SparkNLP` - State of the Art Natural Language Processing framework -https://github.com/JohnSnowLabs/spark-nlp - `SparkNLP` from [John Snow Labs](https://www.johnsnowlabs.com/) is an open source framework with full Python, Scala, and Java Support. Check [their documentation](https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction), [demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/) and [google colab](https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb). A video on how to use spark nlp with yake can also be found here: https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code +## 🧠 Which one to use? -### `General Index` by Archive.org -https://archive.org/details/GeneralIndex - A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in [Nature](https://www.nature.com/articles/d41586-021-02895-8). +| Name | Based on | Best for... | Performance | +|------|----------|-------------|------------| +| `levs` | Edit operations | Typos and small changes | Medium | +| `jaro` | Matching character positions | Names and short strings with swaps | Fast | +| `seqm` | Common subsequences | General phrase similarity | Fast | -### `textacy` - NLP, before and after spaCy +## ✅ Practical Example: -https://github.com/chartbeat-labs/textacy - `textacy` is a Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE. +| Compared Strings | `levs` | `jaro` | `seqm` | +|------------------|--------|--------|--------| +| "casa" vs "caso" | 0.75 | 0.83 | 0.75 | +| "machine" vs "mecine" | 0.71 | 0.88 | 0.82 | +| "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | -Credits to https://github.com/chartbeat-labs +**Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. +## Highlighting Keywords - - -### `Annif` - Tool for automated subject indexing and classification -https://github.com/NatLibFi/Annif/ - `Annif` is a multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official website http://annif.org/. - -### `Portulan Clarin` - Services and data for researchers, innovators, students and language professionals -https://portulanclarin.net/workbench/liaad-yake/ - `Portulan Clarin` is a Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official website https://portulanclarin.net/. - -## How to install Docker - -Here is the "just copy and paste" installations script for Docker in Ubuntu. Enjoy. +```python +from yake.highlight import TextHighlighter -```bash -# Install dependencies -sudo apt-get update -sudo apt-get install \ - apt-transport-https \ - ca-certificates \ - curl \ - software-properties-common - -# Add Docker repo -curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - -sudo apt-key fingerprint 0EBFCD88 -sudo add-apt-repository \ - "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ - $(lsb_release -cs) \ - stable" -sudo apt-get update - -# Install Docker -sudo apt-get install -y docker-ce - -# Start Docker Daemon -sudo service docker start - -# Add yourself to the Docker user group, otherwise docker will complain that -# it does not know if the Docker Daemon is running -sudo usermod -aG docker ${USER} - -# Install docker-compose -sudo curl -L "https://github.com/docker/compose/releases/download/1.23.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose -sudo chmod +x /usr/local/bin/docker-compose -source ~/.bashrc -docker-compose --version -echo "Done!" +th = TextHighlighter(max_ngram_size=3) +highlighted = th.highlight(text, keywords) ``` -Credits to https://github.com/silvae86 for the Docker scripts. +## Benchmarks + +YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. ## References -Please cite the following works when using YAKE +Please best cite suited work when using YAKE In-depth journal paper at Information Sciences Journal @@ -353,6 +170,3 @@ Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) - -## Awards -[ECIR'18](http://ecir2018.org) Best Short Paper From 0df5032b2f1fa0d2ad4e60267e9241840b34bbfe Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:06:26 +0100 Subject: [PATCH 084/122] updated homepage doc site --- README.md | 4 +--- docs-site/content/docs/index.mdx | 14 +++++++------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index b233d68e..eef130cf 100644 --- a/README.md +++ b/README.md @@ -1,8 +1,6 @@ # YAKE! (Yet Another Keyword Extractor) -[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) - -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 8d246ce6..f8a06cb5 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -79,11 +79,11 @@ Options: --help Show this message and exit. ``` -# Keyword Deduplication Methods in YAKE +##### Keyword Deduplication Methods in YAKE In YAKE (Yet Another Keyword Extractor), the methods `levs`, `jaro`, and `seqm` are used to compute **string similarity** during the **keyword deduplication** process — that is, removing keywords that are too similar to each other. Here's what distinguishes each of these methods: -## 🔤 1. `levs` — **Levenshtein Similarity** +###### 🔤 1. `levs` — **Levenshtein Similarity** * **What it is:** Measures the edit distance between two strings — i.e., how many operations (insertions, deletions, substitutions) are needed to turn one string into another. * **How it's used here:** The distance is **normalized** by the length of the longer string, then converted to a **similarity score**. @@ -99,7 +99,7 @@ similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2) * **Disadvantage:** * **Slower** than other methods, due to calculating edit operations. -## 🔤 2. `jaro` — **Jaro Similarity** +###### 2. `jaro` — **Jaro Similarity** * **What it is:** Measures similarity based on matching characters and their relative positions. * **Note:** YAKE uses the `jellyfish` library implementation. @@ -111,7 +111,7 @@ similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2) * **Disadvantage:** * May be less accurate for strings with big length differences. -## 🔤 3. `seqm` — **SequenceMatcher Ratio** +###### 3. `seqm` — **SequenceMatcher Ratio** * **What it is:** Uses Python's built-in `difflib.SequenceMatcher`, which measures similarity based on **common subsequences**. * **How it works:** Detects matching blocks and computes a ratio: @@ -128,7 +128,7 @@ where `M` is the number of matching characters, and `T` is the total number of c * **Disadvantage:** * Can be **too sensitive** to small changes in short strings. -## 🧠 Which one to use? +###### Which one to use? | Name | Based on | Best for... | Performance | |------|----------|-------------|------------| @@ -136,7 +136,7 @@ where `M` is the number of matching characters, and `T` is the total number of c | `jaro` | Matching character positions | Names and short strings with swaps | Fast | | `seqm` | Common subsequences | General phrase similarity | Fast | -## ✅ Practical Example: +###### Practical Example: | Compared Strings | `levs` | `jaro` | `seqm` | |------------------|--------|--------|--------| @@ -145,7 +145,7 @@ where `M` is the number of matching characters, and `T` is the total number of c | "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | **Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. -## Highlighting Keywords +###### Highlighting Keywords ```python from yake.highlight import TextHighlighter From ae0828d42b975895570565b6f72d1cc94cfe65b5 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:09:15 +0100 Subject: [PATCH 085/122] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index eef130cf..68b1c45f 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more here () +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods-in-yake) #### Usage (Python) From b758a7fcac2c0c2d777d44d63a0cd4c0ac19438e Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:27:49 +0100 Subject: [PATCH 086/122] updating homepage and doc site links --- docs-site/README.md | 4 + docs-site/content/docs/index.mdx | 147 ++++++++++++++----------------- 2 files changed, 71 insertions(+), 80 deletions(-) diff --git a/docs-site/README.md b/docs-site/README.md index 4bf5dfc1..2c0cec55 100644 --- a/docs-site/README.md +++ b/docs-site/README.md @@ -11,3 +11,7 @@ yarn dev ``` Open http://localhost:3000 with your browser to see the result. + +## You can also simply access the site from the following link + +https://tiagolv.github.io/yakerf/docs diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index f8a06cb5..9ef57d41 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -4,6 +4,8 @@ YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. +## Key Features + YAKE! is designed to be: - 🧠 **Unsupervised** – no training data required - 🌍 **Language & domain independent** – works across domains and languages @@ -19,33 +21,20 @@ In an era where data is abundant and multilingual content is common, keyword ext Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. -## Try It Out +## Quick Start + +### Try It Out - 🧪 [Online Demo](http://yake.inesctec.pt) - 🐍 [GitHub Repository](https://github.com/LIAAD/yake) -## Install YAKE! - -You can use YAKE! via: - -### ▶️ Python Package +### Installation ```bash pip install git+https://github.com/LIAAD/yake ``` -## How It Works - -YAKE! assigns relevance scores to keywords based on multiple features: -- Term frequency -- Term position -- Word casing -- Sentence placement -- Contextual diversity - -The lower the score, the more relevant the keyword. - -## Example (Python) +### Basic Usage ```python import yake @@ -58,85 +47,90 @@ for kw in keywords: print(kw) ``` -#### Usage (Command line) +### Highlighting Keywords -How to use it on your favorite command line +```python +from yake.highlight import TextHighlighter -``` bash +th = TextHighlighter(max_ngram_size=3) +highlighted = th.highlight(text, keywords) +``` + +## How It Works + +YAKE! assigns relevance scores to keywords based on multiple features: +- Term frequency +- Term position +- Word casing +- Sentence placement +- Contextual diversity + +The lower the score, the more relevant the keyword. + +## Command Line Usage + +```bash Usage: yake [OPTIONS] Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram. - -df, --dedup-func [leve|jaro|seqm] * - Deduplication function. - -dl, --dedup-lim FLOAT Deduplication limiar. - -ws, --window-size INTEGER Window size. - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit. + -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram + -df, --dedup-func [leve|jaro|seqm] + Deduplication function + -dl, --dedup-lim FLOAT Deduplication limiar + -ws, --window-size INTEGER Window size + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit ``` -##### Keyword Deduplication Methods in YAKE +## Keyword Deduplication Methods -In YAKE (Yet Another Keyword Extractor), the methods `levs`, `jaro`, and `seqm` are used to compute **string similarity** during the **keyword deduplication** process — that is, removing keywords that are too similar to each other. Here's what distinguishes each of these methods: +YAKE uses three methods to compute string similarity during keyword deduplication: -###### 🔤 1. `levs` — **Levenshtein Similarity** +### 1. `levs` — Levenshtein Similarity -* **What it is:** Measures the edit distance between two strings — i.e., how many operations (insertions, deletions, substitutions) are needed to turn one string into another. -* **How it's used here:** The distance is **normalized** by the length of the longer string, then converted to a **similarity score**. +* **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. * **Formula used:** ```python similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) ``` -* **Advantages:** - * Very accurate for small changes (e.g., "house" vs "horse"). - * Considers **character positions**. -* **Disadvantage:** - * **Slower** than other methods, due to calculating edit operations. +* **Best for:** Very accurate for small changes (e.g., "house" vs "horse") +* **Performance:** Medium speed -###### 2. `jaro` — **Jaro Similarity** +### 2. `jaro` — Jaro Similarity -* **What it is:** Measures similarity based on matching characters and their relative positions. -* **Note:** YAKE uses the `jellyfish` library implementation. -* **How it works:** Gives more weight to **nearby matching characters** and penalizes character misalignments. -* **Score:** Ranges from 0.0 (completely different) to 1.0 (identical). -* **Advantages:** - * More **tolerant of transpositions** (e.g., "maria" vs "maira"). - * Faster than Levenshtein. -* **Disadvantage:** - * May be less accurate for strings with big length differences. +* **What it is:** Measures similarity based on matching characters and their relative positions +* **Implementation:** Uses the `jellyfish` library +* **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") +* **Performance:** Fast -###### 3. `seqm` — **SequenceMatcher Ratio** +### 3. `seqm` — SequenceMatcher Ratio -* **What it is:** Uses Python's built-in `difflib.SequenceMatcher`, which measures similarity based on **common subsequences**. -* **How it works:** Detects matching blocks and computes a ratio: +* **What it is:** Uses Python's built-in `difflib.SequenceMatcher` +* **Formula:** ```python ratio = 2 * M / T ``` - where `M` is the number of matching characters, and `T` is the total number of characters in both strings. -* **Advantages:** - * Good for detecting shared blocks in longer strings. - * Reasonably fast. -* **Disadvantage:** - * Can be **too sensitive** to small changes in short strings. +* **Best for:** Good for detecting shared blocks in longer strings +* **Performance:** Fast -###### Which one to use? +### Comparison Table -| Name | Based on | Best for... | Performance | -|------|----------|-------------|------------| +| Method | Based on | Best for | Performance | +|--------|----------|----------|-------------| | `levs` | Edit operations | Typos and small changes | Medium | -| `jaro` | Matching character positions | Names and short strings with swaps | Fast | +| `jaro` | Matching positions | Names and short strings with swaps | Fast | | `seqm` | Common subsequences | General phrase similarity | Fast | -###### Practical Example: +### Practical Examples | Compared Strings | `levs` | `jaro` | `seqm` | |------------------|--------|--------|--------| @@ -145,28 +139,21 @@ where `M` is the number of matching characters, and `T` is the total number of c | "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | **Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. -###### Highlighting Keywords - -```python -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size=3) -highlighted = th.highlight(text, keywords) -``` ## Benchmarks YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. ## References -Please best cite suited work when using YAKE -In-depth journal paper at Information Sciences Journal +Please cite the appropriate work when using YAKE: + +### In-depth Journal Publication -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) +Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). **YAKE! Keyword Extraction from Single Documents using Multiple Local Features**. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [PDF](https://doi.org/10.1016/j.ins.2019.09.013) -ECIR'18 Best Short Paper +### ECIR'18 Best Short Paper -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **A Text Feature Based Automatic Keyword Extraction Method for Single Documents**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) +Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **YAKE! Collection-independent Automatic Keyword Extractor**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) \ No newline at end of file From 6b01aa926055e8dcb0a507326c0522526be46fd3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 13 May 2025 17:37:54 +0100 Subject: [PATCH 087/122] homepage final form --- docs-site/content/docs/index.mdx | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 9ef57d41..f20a24e8 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,9 +1,12 @@ # Yet Another Keyword Extractor (YAKE!) **Unsupervised, corpus-independent keyword extraction from single documents.** +--- YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. +--- + ## Key Features YAKE! is designed to be: @@ -12,6 +15,8 @@ YAKE! is designed to be: - 📄 **Single-document based** – no need for a reference corpus - ⚡ **Efficient** – lightweight and fast +--- + ## Why YAKE!? In an era where data is abundant and multilingual content is common, keyword extraction must be fast, adaptable, and reliable. YAKE! is built to handle: @@ -21,6 +26,8 @@ In an era where data is abundant and multilingual content is common, keyword ext Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. +--- + ## Quick Start ### Try It Out @@ -56,6 +63,8 @@ th = TextHighlighter(max_ngram_size=3) highlighted = th.highlight(text, keywords) ``` +--- + ## How It Works YAKE! assigns relevance scores to keywords based on multiple features: @@ -67,6 +76,8 @@ YAKE! assigns relevance scores to keywords based on multiple features: The lower the score, the more relevant the keyword. +--- + ## Command Line Usage ```bash @@ -86,6 +97,8 @@ Options: --help Show this message and exit ``` +--- + ## Keyword Deduplication Methods YAKE uses three methods to compute string similarity during keyword deduplication: @@ -140,10 +153,14 @@ where `M` is the number of matching characters, and `T` is the total number of c **Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. +--- + ## Benchmarks YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. +--- + ## References Please cite the appropriate work when using YAKE: From f903ca259c290c000f94d66913f62b8dc43d3e44 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Fri, 16 May 2025 19:29:23 +0100 Subject: [PATCH 088/122] cleaning up and link redirection working --- README.md | 25 +- docs-site/package.json | 1 + docs/AUTHORS.rst | 21 - docs/strategy.ini | 26 - package-lock.json | 4366 ++++------------------------------------ package.json | 5 + 6 files changed, 426 insertions(+), 4018 deletions(-) delete mode 100644 docs/AUTHORS.rst delete mode 100644 docs/strategy.ini create mode 100644 package.json diff --git a/README.md b/README.md index 68b1c45f..de509fa7 100644 --- a/README.md +++ b/README.md @@ -46,35 +46,14 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods-in-yake) +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods) #### Usage (Python) ```python import yake -text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning "\ -"competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud "\ -"Next conference in San Francisco this week, the official announcement could come as early as tomorrow. "\ -"Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. "\ -"Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, "\ -"was founded by Goldbloom and Ben Hamner in 2010. "\ -"The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, "\ -"it has managed to stay well ahead of them by focusing on its specific niche. "\ -"The service is basically the de facto home for running data science and machine learning competitions. "\ -"With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, "\ -"it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow "\ -"and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, "\ -"Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. "\ -"That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google "\ -"will keep the service running - likely under its current name. While the acquisition is probably more about "\ -"Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition "\ -"and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can "\ -"share this code on the platform (the company previously called them 'scripts'). "\ -"Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with "\ -"that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) "\ -"since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, "\ -"Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " +text = "Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner " # Simple usage with default parameters kw_extractor = yake.KeywordExtractor() diff --git a/docs-site/package.json b/docs-site/package.json index 0a95f634..98de417c 100644 --- a/docs-site/package.json +++ b/docs-site/package.json @@ -4,6 +4,7 @@ "private": true, "scripts": { "build": "next build", + "deploy": "gh-pages -d out", "dev": "next dev --turbopack", "start": "next start", "postinstall": "fumadocs-mdx" diff --git a/docs/AUTHORS.rst b/docs/AUTHORS.rst deleted file mode 100644 index 3dda713c..00000000 --- a/docs/AUTHORS.rst +++ /dev/null @@ -1,21 +0,0 @@ -======= -Credits -======= - -Development ----------------- - -* Ricardo Campos -* Vitor Mangaravite -* Arian Pasquali -* Alípio Jorge - -Contributors ------------- - -None yet. Why not be the first? - - -DevOps - Docker ----------------- -* João Rocha da Silva diff --git a/docs/strategy.ini b/docs/strategy.ini deleted file mode 100644 index 0fe10d28..00000000 --- a/docs/strategy.ini +++ /dev/null @@ -1,26 +0,0 @@ -# Authorized and unauthorized licenses in LOWER CASE -[Licenses] -authorized_licenses: - bsd - new bsd - bsd license - new bsd license - simplified bsd - apache - apache 2.0 - apache software license - gnu lgpl - lgpl with exceptions or zpl - isc license - isc license (iscl) - mit - mit license - python software foundation license - zpl 2.1 - -unauthorized_licenses: - gpl v3 - -[Authorized Packages] -# Python software license (see http://zesty.ca/python/uuid.README.txt) -uuid: 1.30 diff --git a/package-lock.json b/package-lock.json index b7c742cc..852326a2 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,4112 +4,582 @@ "requires": true, "packages": { "": { - "dependencies": { - "@maximai/fumadocs-ui": "^12.5.4-beta1", - "fumadocs-ui": "^15.2.15" - } - }, - "node_modules/@emnapi/runtime": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", - "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", - "optional": true, - "peer": true, - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/@floating-ui/core": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.7.0.tgz", - "integrity": "sha512-FRdBLykrPPA6P76GGGqlex/e7fbe0F1ykgxHYNXQsH/iTEtjMj/f9bpY5oQqbjt5VgZvgz/uKXbGuROijh3VLA==", - "dependencies": { - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/dom": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.7.0.tgz", - "integrity": "sha512-lGTor4VlXcesUMh1cupTUTDoCxMb0V6bm3CnxHzQcw8Eaf1jQbgQX4i02fYgT0vJ82tb5MZ4CZk1LRGkktJCzg==", - "dependencies": { - "@floating-ui/core": "^1.7.0", - "@floating-ui/utils": "^0.2.9" - } - }, - "node_modules/@floating-ui/react-dom": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.1.2.tgz", - "integrity": "sha512-06okr5cgPzMNBy+Ycse2A6udMi4bqwW/zgBF/rwjcNqWkyr82Mcg8b0vjX8OJpZFy/FKjJmw6wV7t44kK6kW7A==", - "dependencies": { - "@floating-ui/dom": "^1.0.0" - }, - "peerDependencies": { - "react": ">=16.8.0", - "react-dom": ">=16.8.0" - } - }, - "node_modules/@floating-ui/utils": { - "version": "0.2.9", - "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.9.tgz", - "integrity": "sha512-MDWhGtE+eHw5JW7lq4qhc5yRLS11ERl1c7Z6Xd0a58DozHES6EnNNwUWbMiG4J9Cgj053Bhk8zvlhFYKVhULwg==" - }, - "node_modules/@formatjs/intl-localematcher": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.10.tgz", - "integrity": "sha512-af3qATX+m4Rnd9+wHcjJ4w2ijq+rAVP3CCinJQvFv1kgSu1W6jypUmvleJxcewdxmutM8dmIRZFxO/IQBZmP2Q==", - "dependencies": { - "tslib": "2" - } - }, - "node_modules/@img/sharp-darwin-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", - "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-darwin-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", - "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-darwin-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-libvips-darwin-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", - "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-darwin-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", - "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", - "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", - "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-ppc64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", - "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", - "cpu": [ - "ppc64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-s390x": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", - "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linux-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", - "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-arm64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", - "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-libvips-linuxmusl-x64": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", - "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-linux-arm": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", - "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", - "cpu": [ - "arm" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", - "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-s390x": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", - "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", - "cpu": [ - "s390x" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-s390x": "1.1.0" - } - }, - "node_modules/@img/sharp-linux-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", - "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linux-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-arm64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", - "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" - } - }, - "node_modules/@img/sharp-linuxmusl-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", - "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-libvips-linuxmusl-x64": "1.1.0" - } - }, - "node_modules/@img/sharp-wasm32": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", - "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", - "cpu": [ - "wasm32" - ], - "optional": true, - "peer": true, - "dependencies": { - "@emnapi/runtime": "^1.4.0" - }, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-ia32": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", - "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", - "cpu": [ - "ia32" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@img/sharp-win32-x64": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", - "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" - }, - "funding": { - "url": "https://opencollective.com/libvips" - } - }, - "node_modules/@maximai/fumadocs-ui": { - "version": "12.5.4-beta1", - "resolved": "https://registry.npmjs.org/@maximai/fumadocs-ui/-/fumadocs-ui-12.5.4-beta1.tgz", - "integrity": "sha512-lC/LfNmU02aWFz7k14LJiGojIfUrps4nPBQPc0xvlx5fhQATseYMWfJatzNhUxfRnE5TnSOa/OIX9+wsoqbJbw==", - "dependencies": { - "@radix-ui/react-accordion": "^1.2.0", - "@radix-ui/react-collapsible": "^1.1.0", - "@radix-ui/react-dialog": "^1.1.1", - "@radix-ui/react-direction": "^1.1.0", - "@radix-ui/react-popover": "^1.1.1", - "@radix-ui/react-scroll-area": "^1.1.0", - "@radix-ui/react-tabs": "^1.1.0", - "@tailwindcss/typography": "^0.5.13", - "class-variance-authority": "^0.7.0", - "cmdk": "^1.0.0", - "fumadocs-core": "12.5.4", - "lucide-react": "^0.408.0", - "next-themes": "^0.3.0", - "react-medium-image-zoom": "^5.2.8", - "swr": "^2.2.5", - "tailwind-merge": "^2.4.0" - }, - "peerDependencies": { - "next": ">= 14.1.0", - "react": ">= 18", - "react-dom": ">= 18" - } - }, - "node_modules/@next/env": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.2.tgz", - "integrity": "sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==", - "peer": true - }, - "node_modules/@next/swc-darwin-arm64": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.2.tgz", - "integrity": "sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-darwin-x64": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz", - "integrity": "sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "darwin" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-gnu": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz", - "integrity": "sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-arm64-musl": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz", - "integrity": "sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-gnu": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz", - "integrity": "sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-linux-x64-musl": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz", - "integrity": "sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "linux" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-arm64-msvc": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz", - "integrity": "sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==", - "cpu": [ - "arm64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@next/swc-win32-x64-msvc": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz", - "integrity": "sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==", - "cpu": [ - "x64" - ], - "optional": true, - "os": [ - "win32" - ], - "peer": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@orama/orama": { - "version": "3.1.6", - "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.6.tgz", - "integrity": "sha512-qtSrqCqRU93SjEBedz987tvWao1YQSELjBhGkHYGVP7Dg0lBWP6d+uZEIt5gxTAYio/YWWlhivmRABvRfPLmnQ==", - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/@radix-ui/number": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/number/-/number-1.1.1.tgz", - "integrity": "sha512-MkKCwxlXTgz6CFoJx3pCwn07GKp36+aZyu/u2Ln2VrA5DcdyCZkASEDBTd8x5whTQQL5CiYf4prXKLcgQdv29g==" - }, - "node_modules/@radix-ui/primitive": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.1.2.tgz", - "integrity": "sha512-XnbHrrprsNqZKQhStrSwgRUQzoCI1glLzdw79xiZPoofhGICeZRSQ3dIxAKH1gb3OHfNf4d6f+vAv3kil2eggA==" - }, - "node_modules/@radix-ui/react-accordion": { - "version": "1.2.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-accordion/-/react-accordion-1.2.10.tgz", - "integrity": "sha512-x+URzV1siKmeXPSUIQ22L81qp2eOhjpy3tgteF+zOr4d1u0qJnFuyBF4MoQRhmKP6ivDxlvDAvqaF77gh7DOIw==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-collapsible": "1.1.10", - "@radix-ui/react-collection": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-arrow": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.1.6.tgz", - "integrity": "sha512-2JMfHJf/eVnwq+2dewT3C0acmCWD3XiVA1Da+jTDqo342UlU13WvXtqHhG+yJw5JeQmu4ue2eMy6gcEArLBlcw==", - "dependencies": { - "@radix-ui/react-primitive": "2.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collapsible": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collapsible/-/react-collapsible-1.1.10.tgz", - "integrity": "sha512-O2mcG3gZNkJ/Ena34HurA3llPOEA/M4dJtIRMa6y/cknRDC8XY5UZBInKTsUwW5cUue9A4k0wi1XU5fKBzKe1w==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-collection": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-collection/-/react-collection-1.1.6.tgz", - "integrity": "sha512-PbhRFK4lIEw9ADonj48tiYWzkllz81TM7KVYyyMMw2cwHO7D5h4XKEblL8NlaRisTK3QTe6tBEhDccFUryxHBQ==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-slot": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-compose-refs": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-compose-refs/-/react-compose-refs-1.1.2.tgz", - "integrity": "sha512-z4eqJvfiNnFMHIIvXP3CY57y2WJs5g2v3X0zm9mEJkrkNv4rDxu+sg9Jh8EkXyeqBkB7SOcboo9dMVqhyrACIg==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-context": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-context/-/react-context-1.1.2.tgz", - "integrity": "sha512-jCi/QKUM2r1Ju5a3J64TH2A5SpKAgh0LpknyqdQ4m6DCV0xJ2HG1xARRwNGPQfi1SLdLWZ1OJz6F4OMBBNiGJA==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dialog": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dialog/-/react-dialog-1.1.13.tgz", - "integrity": "sha512-ARFmqUyhIVS3+riWzwGTe7JLjqwqgnODBUZdqpWar/z1WFs9z76fuOs/2BOWCR+YboRn4/WN9aoaGVwqNRr8VA==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.9", - "@radix-ui/react-focus-guards": "1.1.2", - "@radix-ui/react-focus-scope": "1.1.6", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-portal": "1.1.8", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-slot": "1.2.2", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-direction": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-direction/-/react-direction-1.1.1.tgz", - "integrity": "sha512-1UEWRX6jnOA2y4H5WczZ44gOOjTEmlqv1uNW4GAJEO5+bauCBhv8snY65Iw5/VOS/ghKN9gr2KjnLKxrsvoMVw==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-dismissable-layer": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.1.9.tgz", - "integrity": "sha512-way197PiTvNp+WBP7svMJasHl+vibhWGQDb6Mgf5mhEWJkgb85z7Lfl9TUdkqpWsf8GRNmoopx9ZxCyDzmgRMQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-escape-keydown": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-guards": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.1.2.tgz", - "integrity": "sha512-fyjAACV62oPV925xFCrH8DR5xWhg9KYtJT4s3u54jxp+L/hbpTY2kIeEFFbFe+a/HCE94zGQMZLIpVTPVZDhaA==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-focus-scope": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.1.6.tgz", - "integrity": "sha512-r9zpYNUQY+2jWHWZGyddQLL9YHkM/XvSFHVcWs7bdVuxMAnCwTAuy6Pf47Z4nw7dYcUou1vg/VgjjrrH03VeBw==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-id": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.1.1.tgz", - "integrity": "sha512-kGkGegYIdQsOb4XjsfM97rXsiHaBwco+hFI66oO4s9LU+PLAC5oJ7khdOVFxkhsmlbpUqDAvXw11CluXP+jkHg==", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-navigation-menu": { - "version": "1.2.12", - "resolved": "https://registry.npmjs.org/@radix-ui/react-navigation-menu/-/react-navigation-menu-1.2.12.tgz", - "integrity": "sha512-iExvawdu7n6DidDJRU5pMTdi+Z3DaVPN4UZbAGuTs7nJA8P4RvvkEz+XYI2UJjb/Hh23RrH19DakgZNLdaq9Bw==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-collection": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-dismissable-layer": "1.1.9", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-previous": "1.1.1", - "@radix-ui/react-visually-hidden": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popover": { - "version": "1.1.13", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.1.13.tgz", - "integrity": "sha512-84uqQV3omKDR076izYgcha6gdpN8m3z6w/AeJ83MSBJYVG/AbOHdLjAgsPZkeC/kt+k64moXFCnio8BbqXszlw==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-dismissable-layer": "1.1.9", - "@radix-ui/react-focus-guards": "1.1.2", - "@radix-ui/react-focus-scope": "1.1.6", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-popper": "1.2.6", - "@radix-ui/react-portal": "1.1.8", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-slot": "1.2.2", - "@radix-ui/react-use-controllable-state": "1.2.2", - "aria-hidden": "^1.2.4", - "react-remove-scroll": "^2.6.3" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-popper": { - "version": "1.2.6", - "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.2.6.tgz", - "integrity": "sha512-7iqXaOWIjDBfIG7aq8CUEeCSsQMLFdn7VEE8TaFz704DtEzpPHR7w/uuzRflvKgltqSAImgcmxQ7fFX3X7wasg==", - "dependencies": { - "@floating-ui/react-dom": "^2.0.0", - "@radix-ui/react-arrow": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.1", - "@radix-ui/react-use-rect": "1.1.1", - "@radix-ui/react-use-size": "1.1.1", - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-portal": { - "version": "1.1.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.1.8.tgz", - "integrity": "sha512-hQsTUIn7p7fxCPvao/q6wpbxmCwgLrlz+nOrJgC+RwfZqWY/WN+UMqkXzrtKbPrF82P43eCTl3ekeKuyAQbFeg==", - "dependencies": { - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-presence": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.1.4.tgz", - "integrity": "sha512-ueDqRbdc4/bkaQT3GIpLQssRlFgWaL/U2z/S31qRwwLWoxHLgry3SIfCwhxeQNbirEUXFa+lq3RL3oBYXtcmIA==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-primitive": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-2.1.2.tgz", - "integrity": "sha512-uHa+l/lKfxuDD2zjN/0peM/RhhSmRjr5YWdk/37EnSv1nJ88uvG85DPexSm8HdFQROd2VdERJ6ynXbkCFi+APw==", - "dependencies": { - "@radix-ui/react-slot": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-roving-focus": { - "version": "1.1.9", - "resolved": "https://registry.npmjs.org/@radix-ui/react-roving-focus/-/react-roving-focus-1.1.9.tgz", - "integrity": "sha512-ZzrIFnMYHHCNqSNCsuN6l7wlewBEq0O0BCSBkabJMFXVO51LRUTq71gLP1UxFvmrXElqmPjA5VX7IqC9VpazAQ==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-collection": "1.1.6", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-scroll-area": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@radix-ui/react-scroll-area/-/react-scroll-area-1.2.8.tgz", - "integrity": "sha512-K5h1RkYA6M0Sn61BV5LQs686zqBsSC0sGzL4/Gw4mNnjzrQcGSc6YXfC6CRFNaGydSdv5+M8cb0eNsOGo0OXtQ==", - "dependencies": { - "@radix-ui/number": "1.1.1", - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-compose-refs": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-use-callback-ref": "1.1.1", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-slot": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.2.2.tgz", - "integrity": "sha512-y7TBO4xN4Y94FvcWIOIh18fM4R1A8S4q1jhoz4PNzOoHsFcN8pogcFmZrTYAm4F9VRUrWP/Mw7xSKybIeRI+CQ==", - "dependencies": { - "@radix-ui/react-compose-refs": "1.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-tabs": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/@radix-ui/react-tabs/-/react-tabs-1.1.11.tgz", - "integrity": "sha512-4FiKSVoXqPP/KfzlB7lwwqoFV6EPwkrrqGp9cUYXjwDYHhvpnqq79P+EPHKcdoTE7Rl8w/+6s9rTlsfXHES9GA==", - "dependencies": { - "@radix-ui/primitive": "1.1.2", - "@radix-ui/react-context": "1.1.2", - "@radix-ui/react-direction": "1.1.1", - "@radix-ui/react-id": "1.1.1", - "@radix-ui/react-presence": "1.1.4", - "@radix-ui/react-primitive": "2.1.2", - "@radix-ui/react-roving-focus": "1.1.9", - "@radix-ui/react-use-controllable-state": "1.2.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-callback-ref": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.1.1.tgz", - "integrity": "sha512-FkBMwD+qbGQeMu1cOHnuGB6x4yzPjho8ap5WtbEJ26umhgqVXbhekKUQO+hZEL1vU92a3wHwdp0HAcqAUF5iDg==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-controllable-state": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.2.2.tgz", - "integrity": "sha512-BjasUjixPFdS+NKkypcyyN5Pmg83Olst0+c6vGov0diwTEo6mgdqVR6hxcEgFuh4QrAs7Rc+9KuGJ9TVCj0Zzg==", - "dependencies": { - "@radix-ui/react-use-effect-event": "0.0.2", - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-effect-event": { - "version": "0.0.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-effect-event/-/react-use-effect-event-0.0.2.tgz", - "integrity": "sha512-Qp8WbZOBe+blgpuUT+lw2xheLP8q0oatc9UpmiemEICxGvFLYmHm9QowVZGHtJlGbS6A6yJ3iViad/2cVjnOiA==", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-escape-keydown": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.1.1.tgz", - "integrity": "sha512-Il0+boE7w/XebUHyBjroE+DbByORGR9KKmITzbR7MyQ4akpORYP/ZmbhAr0DG7RmmBqoOnZdy2QlvajJ2QA59g==", - "dependencies": { - "@radix-ui/react-use-callback-ref": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-layout-effect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.1.1.tgz", - "integrity": "sha512-RbJRS4UWQFkzHTTwVymMTUv8EqYhOp8dOOviLj2ugtTiXRaRQS7GLGxZTLL1jWhMeoSCf5zmcZkqTl9IiYfXcQ==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-previous": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-previous/-/react-use-previous-1.1.1.tgz", - "integrity": "sha512-2dHfToCj/pzca2Ck724OZ5L0EVrr3eHRNsG/b3xQJLA2hZpVCS99bLAX+hm1IHXDEnzU6by5z/5MIY794/a8NQ==", - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.1.1.tgz", - "integrity": "sha512-QTYuDesS0VtuHNNvMh+CjlKJ4LJickCMUAqjlE3+j8w+RlRpwyX3apEQKGFzbZGdo7XNG1tXa+bQqIE7HIXT2w==", - "dependencies": { - "@radix-ui/rect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-use-size": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.1.1.tgz", - "integrity": "sha512-ewrXRDTAqAXlkl6t/fkXWNAhFX9I+CkKlw6zjEwk86RSPKwZr3xpBRso655aqYafwtnbpHLj6toFzmd6xdVptQ==", - "dependencies": { - "@radix-ui/react-use-layout-effect": "1.1.1" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/@radix-ui/react-visually-hidden": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/@radix-ui/react-visually-hidden/-/react-visually-hidden-1.2.2.tgz", - "integrity": "sha512-ORCmRUbNiZIv6uV5mhFrhsIKw4UX/N3syZtyqvry61tbGm4JlgQuSn0hk5TwCARsCjkcnuRkSdCE3xfb+ADHew==", - "dependencies": { - "@radix-ui/react-primitive": "2.1.2" - }, - "peerDependencies": { - "@types/react": "*", - "@types/react-dom": "*", - "react": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17.0 || ^18.0 || ^19.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - }, - "@types/react-dom": { - "optional": true - } - } - }, - "node_modules/@radix-ui/rect": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.1.1.tgz", - "integrity": "sha512-HPwpGIzkl28mWyZqG52jiqDJ12waP11Pa1lGoiyUkIEuMLBP0oeK/C89esbXrxsky5we7dfd8U58nm0SgAWpVw==" - }, - "node_modules/@shikijs/core": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", - "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", - "dependencies": { - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.4" - } - }, - "node_modules/@shikijs/engine-javascript": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", - "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "oniguruma-to-es": "^2.2.0" - } - }, - "node_modules/@shikijs/engine-oniguruma": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", - "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", - "dependencies": { - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1" - } - }, - "node_modules/@shikijs/langs": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", - "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/rehype": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-1.29.2.tgz", - "integrity": "sha512-sxi53HZe5XDz0s2UqF+BVN/kgHPMS9l6dcacM4Ra3ZDzCJa5rDGJ+Ukpk4LxdD1+MITBM6hoLbPfGv9StV8a5Q==", - "dependencies": { - "@shikijs/types": "1.29.2", - "@types/hast": "^3.0.4", - "hast-util-to-string": "^3.0.1", - "shiki": "1.29.2", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0" - } - }, - "node_modules/@shikijs/themes": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", - "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", - "dependencies": { - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/transformers": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-1.29.2.tgz", - "integrity": "sha512-NHQuA+gM7zGuxGWP9/Ub4vpbwrYCrho9nQCLcCPfOe3Yc7LOYwmSuhElI688oiqIXk9dlZwDiyAG9vPBTuPJMA==", - "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/types": "1.29.2" - } - }, - "node_modules/@shikijs/types": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", - "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" - } - }, - "node_modules/@shikijs/vscode-textmate": { - "version": "10.0.2", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", - "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==" - }, - "node_modules/@swc/counter": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", - "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", - "peer": true - }, - "node_modules/@swc/helpers": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", - "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", - "peer": true, - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/@tailwindcss/typography": { - "version": "0.5.16", - "resolved": "https://registry.npmjs.org/@tailwindcss/typography/-/typography-0.5.16.tgz", - "integrity": "sha512-0wDLwCVF5V3x3b1SGXPCDcdsbDHMBe+lkFzBRaHeLvNi+nrrnZ1lA18u+OTWO8iSWU2GxUOCvlXtDuqftc1oiA==", - "dependencies": { - "lodash.castarray": "^4.4.0", - "lodash.isplainobject": "^4.0.6", - "lodash.merge": "^4.6.2", - "postcss-selector-parser": "6.0.10" - }, - "peerDependencies": { - "tailwindcss": ">=3.0.0 || insiders || >=4.0.0-alpha.20 || >=4.0.0-beta.1" - } - }, - "node_modules/@types/debug": { - "version": "4.1.12", - "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", - "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", - "dependencies": { - "@types/ms": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", - "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" - }, - "node_modules/@types/estree-jsx": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", - "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/@types/hast": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", - "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/mdast": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", - "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", - "dependencies": { - "@types/unist": "*" - } - }, - "node_modules/@types/ms": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", - "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" - }, - "node_modules/@types/unist": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", - "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" - }, - "node_modules/@ungap/structured-clone": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", - "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" - }, - "node_modules/acorn": { - "version": "8.14.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", - "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" - } - }, - "node_modules/aria-hidden": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.4.tgz", - "integrity": "sha512-y+CcFFwelSXpLZk/7fMB2mUbGtX9lKycf1MWJ7CaTIERyitVlyQx6C+sxcROU2BAJ24OiZyK+8wj2i8AlBoS3A==", - "dependencies": { - "tslib": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/bail": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", - "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/busboy": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", - "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", - "peer": true, - "dependencies": { - "streamsearch": "^1.1.0" - }, - "engines": { - "node": ">=10.16.0" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001717", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001717.tgz", - "integrity": "sha512-auPpttCq6BDEG8ZAuHJIplGw6GODhjw+/11e7IjpnYCxZcW/ONgPs0KVBJ0d1bY3e2+7PRe5RCLyP+PfwVgkYw==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true - }, - "node_modules/ccount": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", - "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", - "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-html4": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", - "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-entities-legacy": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", - "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/character-reference-invalid": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", - "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/class-variance-authority": { - "version": "0.7.1", - "resolved": "https://registry.npmjs.org/class-variance-authority/-/class-variance-authority-0.7.1.tgz", - "integrity": "sha512-Ka+9Trutv7G8M6WT6SeiRWz792K5qEqIGEGzXKhAE6xOWAY6pPH8U+9IY3oCMv6kqTmLsv7Xh/2w2RigkePMsg==", - "dependencies": { - "clsx": "^2.1.1" - }, - "funding": { - "url": "https://polar.sh/cva" - } - }, - "node_modules/client-only": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", - "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", - "peer": true - }, - "node_modules/clsx": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.1.tgz", - "integrity": "sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/cmdk": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/cmdk/-/cmdk-1.1.1.tgz", - "integrity": "sha512-Vsv7kFaXm+ptHDMZ7izaRsP70GgrW9NBNGswt9OZaVBLlE0SNpDq8eu/VGXyF9r7M0azK3Wy7OlYXsuyYLFzHg==", - "dependencies": { - "@radix-ui/react-compose-refs": "^1.1.1", - "@radix-ui/react-dialog": "^1.1.6", - "@radix-ui/react-id": "^1.1.0", - "@radix-ui/react-primitive": "^2.0.2" - }, - "peerDependencies": { - "react": "^18 || ^19 || ^19.0.0-rc", - "react-dom": "^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/color": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", - "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", - "optional": true, - "peer": true, - "dependencies": { - "color-convert": "^2.0.1", - "color-string": "^1.9.0" - }, - "engines": { - "node": ">=12.5.0" - } - }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "optional": true, - "peer": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "optional": true, - "peer": true - }, - "node_modules/color-string": { - "version": "1.9.1", - "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", - "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", - "optional": true, - "peer": true, - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "node_modules/comma-separated-tokens": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", - "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/compute-scroll-into-view": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", - "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==" - }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/debug": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.0.tgz", - "integrity": "sha512-6WTZ/IxCY/T6BALoZHaE4ctp9xm+Z5kY/pzYaCHRFeyVhojxlrm+46y68HA6hr0TcwEssoxNiDEUJQjfPZ/RYA==", - "dependencies": { - "ms": "^2.1.3" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/decode-named-character-reference": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", - "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", - "dependencies": { - "character-entities": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/dequal": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", - "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", - "engines": { - "node": ">=6" - } - }, - "node_modules/detect-libc": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", - "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", - "optional": true, - "peer": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/detect-node-es": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", - "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" - }, - "node_modules/devlop": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", - "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", - "dependencies": { - "dequal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/emoji-regex-xs": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", - "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==" - }, - "node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/estree-util-attach-comments": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", - "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", - "dependencies": { - "@types/estree": "^1.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-is-identifier-name": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", - "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/estree-util-visit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", - "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" - }, - "node_modules/flexsearch": { - "version": "0.7.21", - "resolved": "https://registry.npmjs.org/flexsearch/-/flexsearch-0.7.21.tgz", - "integrity": "sha512-W7cHV7Hrwjid6lWmy0IhsWDFQboWSng25U3VVywpHOTJnnAZNPScog67G+cVpeX9f7yDD21ih0WDrMMT+JoaYg==" - }, - "node_modules/fumadocs-core": { - "version": "12.5.4", - "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-12.5.4.tgz", - "integrity": "sha512-KE6vWCSijo2xYEq+xvebNcNrPK9gcIbigMoZn20AIoOVg7aKGkkshTjwR6M2lXdq9PyV/BdgAO5u+sWlTMebeQ==", - "dependencies": { - "@formatjs/intl-localematcher": "^0.5.4", - "@shikijs/rehype": "^1.10.3", - "@shikijs/transformers": "^1.10.3", - "flexsearch": "0.7.21", - "github-slugger": "^2.0.0", - "negotiator": "^0.6.3", - "npm-to-yarn": "^2.2.1", - "react-remove-scroll": "^2.5.10", - "remark": "^15.0.0", - "remark-gfm": "^4.0.0", - "remark-mdx": "^3.0.1", - "scroll-into-view-if-needed": "^3.1.0", - "shiki": "^1.10.3", - "swr": "^2.2.5", - "unist-util-visit": "^5.0.0" - }, - "peerDependencies": { - "next": ">= 14.1.0", - "react": ">= 18", - "react-dom": ">= 18" - } - }, - "node_modules/fumadocs-ui": { - "version": "15.2.15", - "resolved": "https://registry.npmjs.org/fumadocs-ui/-/fumadocs-ui-15.2.15.tgz", - "integrity": "sha512-2CkzLkv0bP7B0jShrpmHmWLXMcpbHdaFiWDG/l4AWkGf5nN1QhirM1tSsXuwYLmQX9OZXO7xB3HU6smAuUA+kA==", - "dependencies": { - "@radix-ui/react-accordion": "^1.2.8", - "@radix-ui/react-collapsible": "^1.1.8", - "@radix-ui/react-dialog": "^1.1.11", - "@radix-ui/react-direction": "^1.1.1", - "@radix-ui/react-navigation-menu": "^1.2.10", - "@radix-ui/react-popover": "^1.1.11", - "@radix-ui/react-scroll-area": "^1.2.6", - "@radix-ui/react-slot": "^1.2.0", - "@radix-ui/react-tabs": "^1.1.9", - "class-variance-authority": "^0.7.1", - "fumadocs-core": "15.2.15", - "lodash.merge": "^4.6.2", - "next-themes": "^0.4.6", - "postcss-selector-parser": "^7.1.0", - "react-medium-image-zoom": "^5.2.14", - "tailwind-merge": "^3.2.0" - }, - "peerDependencies": { - "next": "14.x.x || 15.x.x", - "react": "18.x.x || 19.x.x", - "react-dom": "18.x.x || 19.x.x", - "tailwindcss": "^3.4.14 || ^4.0.0" - }, - "peerDependenciesMeta": { - "tailwindcss": { - "optional": true - } - } - }, - "node_modules/fumadocs-ui/node_modules/@formatjs/intl-localematcher": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", - "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", - "dependencies": { - "tslib": "^2.8.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/core": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.4.0.tgz", - "integrity": "sha512-0YOzTSRDn/IAfQWtK791gs1u8v87HNGToU6IwcA3K7nPoVOrS2Dh6X6A6YfXgPTSkTwR5y6myk0MnI0htjnwrA==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.5" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/engine-javascript": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.4.0.tgz", - "integrity": "sha512-1ywDoe+z/TPQKj9Jw0eU61B003J9DqUFRfH+DVSzdwPUFhR7yOmfyLzUrFz0yw8JxFg/NgzXoQyyykXgO21n5Q==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2", - "oniguruma-to-es": "^4.3.3" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/engine-oniguruma": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.0.tgz", - "integrity": "sha512-zwcWlZ4OQuJ/+1t32ClTtyTU1AiDkK1lhtviRWoq/hFqPjCNyLj22bIg9rB7BfoZKOEOfrsGz7No33BPCf+WlQ==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/langs": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.0.tgz", - "integrity": "sha512-bQkR+8LllaM2duU9BBRQU0GqFTx7TuF5kKlw/7uiGKoK140n1xlLAwCgXwSxAjJ7Htk9tXTFwnnsJTCU5nDPXQ==", - "dependencies": { - "@shikijs/types": "3.4.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/rehype": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-3.4.0.tgz", - "integrity": "sha512-wm7RTSmrcmjZg+F9JRrsH0Brwi36joUMXkUWIDmBGW+XExNEi8Xjmmp2NOBXa3DujZtnL6Dbcg7V6gtZabGoXw==", - "dependencies": { - "@shikijs/types": "3.4.0", - "@types/hast": "^3.0.4", - "hast-util-to-string": "^3.0.1", - "shiki": "3.4.0", - "unified": "^11.0.5", - "unist-util-visit": "^5.0.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/themes": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.0.tgz", - "integrity": "sha512-YPP4PKNFcFGLxItpbU0ZW1Osyuk8AyZ24YEFaq04CFsuCbcqydMvMUTi40V2dkc0qs1U2uZFrnU6s5zI6IH+uA==", - "dependencies": { - "@shikijs/types": "3.4.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/transformers": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.4.0.tgz", - "integrity": "sha512-GrGaOj1/I6h75IU0VvjdWDpqGCynx0bqHzd1rErBTGxrcmusYIBhrV7aEySWyJ6HHb9figeXfcNxUFS1HKUfBw==", - "dependencies": { - "@shikijs/core": "3.4.0", - "@shikijs/types": "3.4.0" - } - }, - "node_modules/fumadocs-ui/node_modules/@shikijs/types": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.0.tgz", - "integrity": "sha512-EUT/0lGiE//7j5N/yTMNMT3eCWNcHJLrRKxT0NDXWIfdfSmFJKfPX7nMmRBrQnWboAzIsUziCThrYMMhjbMS1A==", - "dependencies": { - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/fumadocs-ui/node_modules/fumadocs-core": { - "version": "15.2.15", - "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-15.2.15.tgz", - "integrity": "sha512-Ly1xMGW8HYirs/O2yLX3cGHcOM/1nfKTk7gKiQ5J4wycGE1KdWFnGW2S60nLP8itgeqlYAp35FaNDNRDxCzWgA==", - "dependencies": { - "@formatjs/intl-localematcher": "^0.6.1", - "@orama/orama": "^3.1.6", - "@shikijs/rehype": "^3.3.0", - "@shikijs/transformers": "^3.3.0", - "github-slugger": "^2.0.0", - "hast-util-to-estree": "^3.1.3", - "hast-util-to-jsx-runtime": "^2.3.6", - "image-size": "^2.0.2", - "negotiator": "^1.0.0", - "react-remove-scroll": "^2.6.3", - "remark": "^15.0.0", - "remark-gfm": "^4.0.1", - "scroll-into-view-if-needed": "^3.1.0", - "shiki": "^3.3.0", - "unist-util-visit": "^5.0.0" - }, - "peerDependencies": { - "@oramacloud/client": "1.x.x || 2.x.x", - "algoliasearch": "4.24.0", - "next": "14.x.x || 15.x.x", - "react": "18.x.x || 19.x.x", - "react-dom": "18.x.x || 19.x.x" - }, - "peerDependenciesMeta": { - "@oramacloud/client": { - "optional": true - }, - "algoliasearch": { - "optional": true - }, - "next": { - "optional": true - }, - "react": { - "optional": true - }, - "react-dom": { - "optional": true - } - } - }, - "node_modules/fumadocs-ui/node_modules/negotiator": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", - "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/fumadocs-ui/node_modules/next-themes": { - "version": "0.4.6", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.4.6.tgz", - "integrity": "sha512-pZvgD5L0IEvX5/9GWyHMf3m8BKiVQwsCMHfoFosXtXBMnaS0ZnIJ9ST4b4NqLVKDEm8QBxoNNGNaBv2JNF6XNA==", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc", - "react-dom": "^16.8 || ^17 || ^18 || ^19 || ^19.0.0-rc" - } - }, - "node_modules/fumadocs-ui/node_modules/oniguruma-to-es": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", - "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", - "dependencies": { - "oniguruma-parser": "^0.12.1", - "regex": "^6.0.1", - "regex-recursion": "^6.0.2" - } - }, - "node_modules/fumadocs-ui/node_modules/postcss-selector-parser": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-7.1.0.tgz", - "integrity": "sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/fumadocs-ui/node_modules/regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", - "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/fumadocs-ui/node_modules/regex-recursion": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", - "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/fumadocs-ui/node_modules/shiki": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.4.0.tgz", - "integrity": "sha512-Ni80XHcqhOEXv5mmDAvf5p6PAJqbUc/RzFeaOqk+zP5DLvTPS3j0ckvA+MI87qoxTQ5RGJDVTbdl/ENLSyyAnQ==", - "dependencies": { - "@shikijs/core": "3.4.0", - "@shikijs/engine-javascript": "3.4.0", - "@shikijs/engine-oniguruma": "3.4.0", - "@shikijs/langs": "3.4.0", - "@shikijs/themes": "3.4.0", - "@shikijs/types": "3.4.0", - "@shikijs/vscode-textmate": "^10.0.2", - "@types/hast": "^3.0.4" - } - }, - "node_modules/fumadocs-ui/node_modules/tailwind-merge": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-3.2.0.tgz", - "integrity": "sha512-FQT/OVqCD+7edmmJpsgCsY820RTD5AkBryuG5IUqR5YQZSdj5xlH5nLgH7YPths7WsLPSpSBNneJdM8aS8aeFA==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" - } - }, - "node_modules/get-nonce": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", - "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", - "engines": { - "node": ">=6" - } - }, - "node_modules/github-slugger": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", - "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==" - }, - "node_modules/hast-util-to-estree": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", - "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-attach-comments": "^3.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-html": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", - "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "comma-separated-tokens": "^2.0.0", - "hast-util-whitespace": "^3.0.0", - "html-void-elements": "^3.0.0", - "mdast-util-to-hast": "^13.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "stringify-entities": "^4.0.0", - "zwitch": "^2.0.4" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-jsx-runtime": { - "version": "2.3.6", - "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", - "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", - "dependencies": { - "@types/estree": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/unist": "^3.0.0", - "comma-separated-tokens": "^2.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "hast-util-whitespace": "^3.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "property-information": "^7.0.0", - "space-separated-tokens": "^2.0.0", - "style-to-js": "^1.0.0", - "unist-util-position": "^5.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-to-string": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", - "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/hast-util-whitespace": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", - "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", - "dependencies": { - "@types/hast": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/html-void-elements": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", - "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/image-size": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", - "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", - "bin": { - "image-size": "bin/image-size.js" - }, - "engines": { - "node": ">=16.x" - } - }, - "node_modules/inline-style-parser": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", - "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" - }, - "node_modules/is-alphabetical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", - "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-alphanumerical": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", - "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", - "dependencies": { - "is-alphabetical": "^2.0.0", - "is-decimal": "^2.0.0" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-arrayish": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", - "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", - "optional": true, - "peer": true - }, - "node_modules/is-decimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", - "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-hexadecimal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", - "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/is-plain-obj": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", - "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "peer": true - }, - "node_modules/lodash.castarray": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/lodash.castarray/-/lodash.castarray-4.4.0.tgz", - "integrity": "sha512-aVx8ztPv7/2ULbArGJ2Y42bG1mEQ5mGjpdvrbJcJFU3TbYybe+QlLS4pst9zV52ymy2in1KpFPiZnAOATxD4+Q==" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" - }, - "node_modules/longest-streak": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", - "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/loose-envify": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", - "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", - "peer": true, - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "node_modules/lucide-react": { - "version": "0.408.0", - "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.408.0.tgz", - "integrity": "sha512-8kETAAeWmOvtGIr7HPHm51DXoxlfkNncQ5FZWXR+abX8saQwMYXANWIkUstaYtcKSo/imOe/q+tVFA8ANzdSVA==", - "peerDependencies": { - "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/markdown-table": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", - "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } - }, - "node_modules/mdast-util-find-and-replace": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", - "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "escape-string-regexp": "^5.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-from-markdown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", - "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark": "^4.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-stringify-position": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", - "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-gfm-autolink-literal": "^2.0.0", - "mdast-util-gfm-footnote": "^2.0.0", - "mdast-util-gfm-strikethrough": "^2.0.0", - "mdast-util-gfm-table": "^2.0.0", - "mdast-util-gfm-task-list-item": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-autolink-literal": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", - "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "ccount": "^2.0.0", - "devlop": "^1.0.0", - "mdast-util-find-and-replace": "^3.0.0", - "micromark-util-character": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-strikethrough": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", - "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-table": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", - "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "markdown-table": "^3.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-gfm-task-list-item": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", - "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", - "dependencies": { - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", - "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", - "dependencies": { - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-mdx-expression": "^2.0.0", - "mdast-util-mdx-jsx": "^3.0.0", - "mdast-util-mdxjs-esm": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-expression": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", - "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdx-jsx": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", - "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "ccount": "^2.0.0", - "devlop": "^1.1.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0", - "parse-entities": "^4.0.0", - "stringify-entities": "^4.0.0", - "unist-util-stringify-position": "^4.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-mdxjs-esm": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", - "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", - "dependencies": { - "@types/estree-jsx": "^1.0.0", - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "devlop": "^1.0.0", - "mdast-util-from-markdown": "^2.0.0", - "mdast-util-to-markdown": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-phrasing": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", - "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", - "dependencies": { - "@types/mdast": "^4.0.0", - "unist-util-is": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-hast": { - "version": "13.2.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", - "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", - "dependencies": { - "@types/hast": "^3.0.0", - "@types/mdast": "^4.0.0", - "@ungap/structured-clone": "^1.0.0", - "devlop": "^1.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "trim-lines": "^3.0.0", - "unist-util-position": "^5.0.0", - "unist-util-visit": "^5.0.0", - "vfile": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-markdown": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", - "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", - "dependencies": { - "@types/mdast": "^4.0.0", - "@types/unist": "^3.0.0", - "longest-streak": "^3.0.0", - "mdast-util-phrasing": "^4.0.0", - "mdast-util-to-string": "^4.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-decode-string": "^2.0.0", - "unist-util-visit": "^5.0.0", - "zwitch": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/mdast-util-to-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", - "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", - "dependencies": { - "@types/mdast": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", - "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/debug": "^4.0.0", - "debug": "^4.0.0", - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-core-commonmark": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", - "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-destination": "^2.0.0", - "micromark-factory-label": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-factory-title": "^2.0.0", - "micromark-factory-whitespace": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-html-tag-name": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-subtokenize": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-gfm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", - "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", - "dependencies": { - "micromark-extension-gfm-autolink-literal": "^2.0.0", - "micromark-extension-gfm-footnote": "^2.0.0", - "micromark-extension-gfm-strikethrough": "^2.0.0", - "micromark-extension-gfm-table": "^2.0.0", - "micromark-extension-gfm-tagfilter": "^2.0.0", - "micromark-extension-gfm-task-list-item": "^2.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-autolink-literal": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", - "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-footnote": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", - "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-normalize-identifier": "^2.0.0", - "micromark-util-sanitize-uri": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-strikethrough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", - "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-classify-character": "^2.0.0", - "micromark-util-resolve-all": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-table": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", - "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-tagfilter": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", - "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-gfm-task-list-item": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", - "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", - "dependencies": { - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-expression": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", - "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-extension-mdx-jsx": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", - "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "estree-util-is-identifier-name": "^3.0.0", - "micromark-factory-mdx-expression": "^2.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdx-md": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", - "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", - "dependencies": { - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", - "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", - "dependencies": { - "acorn": "^8.0.0", - "acorn-jsx": "^5.0.0", - "micromark-extension-mdx-expression": "^3.0.0", - "micromark-extension-mdx-jsx": "^3.0.0", - "micromark-extension-mdx-md": "^2.0.0", - "micromark-extension-mdxjs-esm": "^3.0.0", - "micromark-util-combine-extensions": "^2.0.0", - "micromark-util-types": "^2.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-extension-mdxjs-esm": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", - "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-core-commonmark": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/micromark-factory-destination": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", - "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-label": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", - "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-mdx-expression": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", - "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "devlop": "^1.0.0", - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-events-to-acorn": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unist-util-position-from-estree": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-factory-space": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", - "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-title": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", - "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-factory-whitespace": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", - "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-factory-space": "^2.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-character": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", - "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-chunked": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", - "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-classify-character": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", - "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-combine-extensions": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", - "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-chunked": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-numeric-character-reference": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", - "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-decode-string": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", - "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "decode-named-character-reference": "^1.0.0", - "micromark-util-character": "^2.0.0", - "micromark-util-decode-numeric-character-reference": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-encode": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", - "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-events-to-acorn": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", - "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "@types/estree": "^1.0.0", - "@types/unist": "^3.0.0", - "devlop": "^1.0.0", - "estree-util-visit": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0", - "vfile-message": "^4.0.0" - } - }, - "node_modules/micromark-util-html-tag-name": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", - "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-normalize-identifier": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", - "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-resolve-all": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", - "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-sanitize-uri": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", - "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "micromark-util-character": "^2.0.0", - "micromark-util-encode": "^2.0.0", - "micromark-util-symbol": "^2.0.0" - } - }, - "node_modules/micromark-util-subtokenize": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", - "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ], - "dependencies": { - "devlop": "^1.0.0", - "micromark-util-chunked": "^2.0.0", - "micromark-util-symbol": "^2.0.0", - "micromark-util-types": "^2.0.0" - } - }, - "node_modules/micromark-util-symbol": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", - "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/micromark-util-types": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", - "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", - "funding": [ - { - "type": "GitHub Sponsors", - "url": "https://github.com/sponsors/unifiedjs" - }, - { - "type": "OpenCollective", - "url": "https://opencollective.com/unified" - } - ] - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + "devDependencies": { + "gh-pages": "^6.3.0" + } }, - "node_modules/nanoid": { - "version": "3.3.11", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", - "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "bin": { - "nanoid": "bin/nanoid.cjs" + "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, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" }, "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">= 8" } }, - "node_modules/negotiator": { - "version": "0.6.4", - "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.4.tgz", - "integrity": "sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==", + "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, "engines": { - "node": ">= 0.6" + "node": ">= 8" } }, - "node_modules/next": { - "version": "15.3.2", - "resolved": "https://registry.npmjs.org/next/-/next-15.3.2.tgz", - "integrity": "sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==", - "peer": true, + "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, "dependencies": { - "@next/env": "15.3.2", - "@swc/counter": "0.1.3", - "@swc/helpers": "0.5.15", - "busboy": "1.6.0", - "caniuse-lite": "^1.0.30001579", - "postcss": "8.4.31", - "styled-jsx": "5.1.6" - }, - "bin": { - "next": "dist/bin/next" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" }, "engines": { - "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" - }, - "optionalDependencies": { - "@next/swc-darwin-arm64": "15.3.2", - "@next/swc-darwin-x64": "15.3.2", - "@next/swc-linux-arm64-gnu": "15.3.2", - "@next/swc-linux-arm64-musl": "15.3.2", - "@next/swc-linux-x64-gnu": "15.3.2", - "@next/swc-linux-x64-musl": "15.3.2", - "@next/swc-win32-arm64-msvc": "15.3.2", - "@next/swc-win32-x64-msvc": "15.3.2", - "sharp": "^0.34.1" - }, - "peerDependencies": { - "@opentelemetry/api": "^1.1.0", - "@playwright/test": "^1.41.2", - "babel-plugin-react-compiler": "*", - "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", - "sass": "^1.3.0" - }, - "peerDependenciesMeta": { - "@opentelemetry/api": { - "optional": true - }, - "@playwright/test": { - "optional": true - }, - "babel-plugin-react-compiler": { - "optional": true - }, - "sass": { - "optional": true - } - } - }, - "node_modules/next-themes": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/next-themes/-/next-themes-0.3.0.tgz", - "integrity": "sha512-/QHIrsYpd6Kfk7xakK4svpDI5mmXP0gfvCoJdGpZQ2TOrQZmsW0QxjaiLn8wbIKjtm4BTSqLoix4lxYYOnLJ/w==", - "peerDependencies": { - "react": "^16.8 || ^17 || ^18", - "react-dom": "^16.8 || ^17 || ^18" + "node": ">= 8" } }, - "node_modules/npm-to-yarn": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/npm-to-yarn/-/npm-to-yarn-2.2.1.tgz", - "integrity": "sha512-O/j/ROyX0KGLG7O6Ieut/seQ0oiTpHF2tXAcFbpdTLQFiaNtkyTXXocM1fwpaa60dg1qpWj0nHlbNhx6qwuENQ==", + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/nebrelbug/npm-to-yarn?sponsor=1" + "node": ">=8" } }, - "node_modules/oniguruma-parser": { - "version": "0.12.1", - "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", - "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==" - }, - "node_modules/oniguruma-to-es": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", - "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", - "dependencies": { - "emoji-regex-xs": "^1.0.0", - "regex": "^5.1.1", - "regex-recursion": "^5.1.1" - } + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true }, - "node_modules/parse-entities": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", - "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, "dependencies": { - "@types/unist": "^2.0.0", - "character-entities-legacy": "^3.0.0", - "character-reference-invalid": "^2.0.0", - "decode-named-character-reference": "^1.0.0", - "is-alphanumerical": "^2.0.0", - "is-decimal": "^2.0.0", - "is-hexadecimal": "^2.0.0" + "fill-range": "^7.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=8" } }, - "node_modules/parse-entities/node_modules/@types/unist": { - "version": "2.0.11", - "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", - "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" - }, - "node_modules/picocolors": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", - "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==", - "peer": true - }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "peer": true, - "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=18" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.10", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", - "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" + "path-type": "^4.0.0" }, "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/property-information": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.0.0.tgz", - "integrity": "sha512-7D/qOz/+Y4X/rzSB6jKxKUsQnphO046ei8qxG59mtM3RG3DHgTK81HrxrmoDVINJb8NKT5ZsRbwHvQ6B68Iyhg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" - } + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true }, - "node_modules/react": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react/-/react-18.3.1.tgz", - "integrity": "sha512-wS+hAgJShR0KhEvPJArfuPVN1+Hz1t0Y6n5jLrGQbkb4urgPE/0Rve+1kMB1v/oWgHgm4WIcV+i7F2pTVj+2iQ==", - "peer": true, + "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, "dependencies": { - "loose-envify": "^1.1.0" + "@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": ">=0.10.0" + "node": ">=8.6.0" } }, - "node_modules/react-dom": { - "version": "18.3.1", - "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.3.1.tgz", - "integrity": "sha512-5m4nQKp+rZRb09LNH59GM4BxTh9251/ylbKIbpe7TpGxfJ+9kv6BLkLBXIjjspbgbnIBNqlI23tRnTWT0snUIw==", - "peer": true, + "node_modules/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dev": true, "dependencies": { - "loose-envify": "^1.1.0", - "scheduler": "^0.23.2" - }, - "peerDependencies": { - "react": "^18.3.1" + "reusify": "^1.0.4" } }, - "node_modules/react-medium-image-zoom": { - "version": "5.2.14", - "resolved": "https://registry.npmjs.org/react-medium-image-zoom/-/react-medium-image-zoom-5.2.14.tgz", - "integrity": "sha512-nfTVYcAUnBzXQpPDcZL+cG/e6UceYUIG+zDcnemL7jtAqbJjVVkA85RgneGtJeni12dTyiRPZVM6Szkmwd/o8w==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/rpearce" - } - ], - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0", - "react-dom": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" } }, - "node_modules/react-remove-scroll": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.6.3.tgz", - "integrity": "sha512-pnAi91oOk8g8ABQKGF5/M9qxmmOPxaAnopyTHYfqYEwJhyFrbbBtHuSgtKEoH0jpcxx5o3hXqH1mNd9/Oi+8iQ==", + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, "dependencies": { - "react-remove-scroll-bar": "^2.3.7", - "react-style-singleton": "^2.2.3", - "tslib": "^2.1.0", - "use-callback-ref": "^1.3.3", - "use-sidecar": "^1.1.3" + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + "node": ">=8" }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/react-remove-scroll-bar": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", - "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, "dependencies": { - "react-style-singleton": "^2.2.2", - "tslib": "^2.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=8" } }, - "node_modules/react-style-singleton": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", - "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, "dependencies": { - "get-nonce": "^1.0.0", - "tslib": "^2.0.0" + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } - } - }, - "node_modules/regex": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", - "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", - "dependencies": { - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-recursion": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", - "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", - "dependencies": { - "regex": "^5.1.1", - "regex-utilities": "^2.3.0" - } - }, - "node_modules/regex-utilities": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", - "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==" - }, - "node_modules/remark": { - "version": "15.0.1", - "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", - "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", - "dependencies": { - "@types/mdast": "^4.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" + "node": ">=8" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" } }, - "node_modules/remark-gfm": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", - "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-gfm": "^3.0.0", - "micromark-extension-gfm": "^3.0.0", - "remark-parse": "^11.0.0", - "remark-stringify": "^11.0.0", - "unified": "^11.0.0" + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/remark-mdx": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", - "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, "dependencies": { - "mdast-util-mdx": "^3.0.0", - "micromark-extension-mdxjs": "^3.0.0" + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=14.14" } }, - "node_modules/remark-parse": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", - "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "node_modules/gh-pages": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", + "dev": true, "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-from-markdown": "^2.0.0", - "micromark-util-types": "^2.0.0", - "unified": "^11.0.0" + "async": "^3.2.4", + "commander": "^13.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^11.1.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/remark-stringify": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", - "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", - "dependencies": { - "@types/mdast": "^4.0.0", - "mdast-util-to-markdown": "^2.0.0", - "unified": "^11.0.0" + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" - } - }, - "node_modules/scheduler": { - "version": "0.23.2", - "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.2.tgz", - "integrity": "sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==", - "peer": true, - "dependencies": { - "loose-envify": "^1.1.0" + "engines": { + "node": ">=10" } }, - "node_modules/scroll-into-view-if-needed": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", - "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "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, "dependencies": { - "compute-scroll-into-view": "^3.0.2" - } - }, - "node_modules/semver": { - "version": "7.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.1.tgz", - "integrity": "sha512-hlq8tAfn0m/61p4BVRcPzIGr6LKiMwo4VM6dGi6pt4qcRkmNzTcWq6eCEjEh+qXjkMDvPlOFFSGwQjoEa6gyMA==", - "optional": true, - "peer": true, - "bin": { - "semver": "bin/semver.js" + "is-glob": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">= 6" } }, - "node_modules/sharp": { - "version": "0.34.1", - "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", - "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", - "hasInstallScript": true, - "optional": true, - "peer": true, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, "dependencies": { - "color": "^4.2.3", - "detect-libc": "^2.0.3", - "semver": "^7.7.1" + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + "node": ">=10" }, "funding": { - "url": "https://opencollective.com/libvips" - }, - "optionalDependencies": { - "@img/sharp-darwin-arm64": "0.34.1", - "@img/sharp-darwin-x64": "0.34.1", - "@img/sharp-libvips-darwin-arm64": "1.1.0", - "@img/sharp-libvips-darwin-x64": "1.1.0", - "@img/sharp-libvips-linux-arm": "1.1.0", - "@img/sharp-libvips-linux-arm64": "1.1.0", - "@img/sharp-libvips-linux-ppc64": "1.1.0", - "@img/sharp-libvips-linux-s390x": "1.1.0", - "@img/sharp-libvips-linux-x64": "1.1.0", - "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", - "@img/sharp-libvips-linuxmusl-x64": "1.1.0", - "@img/sharp-linux-arm": "0.34.1", - "@img/sharp-linux-arm64": "0.34.1", - "@img/sharp-linux-s390x": "0.34.1", - "@img/sharp-linux-x64": "0.34.1", - "@img/sharp-linuxmusl-arm64": "0.34.1", - "@img/sharp-linuxmusl-x64": "0.34.1", - "@img/sharp-wasm32": "0.34.1", - "@img/sharp-win32-ia32": "0.34.1", - "@img/sharp-win32-x64": "0.34.1" - } - }, - "node_modules/shiki": { - "version": "1.29.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", - "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", - "dependencies": { - "@shikijs/core": "1.29.2", - "@shikijs/engine-javascript": "1.29.2", - "@shikijs/engine-oniguruma": "1.29.2", - "@shikijs/langs": "1.29.2", - "@shikijs/themes": "1.29.2", - "@shikijs/types": "1.29.2", - "@shikijs/vscode-textmate": "^10.0.1", - "@types/hast": "^3.0.4" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/simple-swizzle": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", - "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", - "optional": true, - "peer": true, - "dependencies": { - "is-arrayish": "^0.3.1" - } + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true }, - "node_modules/source-map-js": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", - "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", - "peer": true, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/space-separated-tokens": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", - "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node": ">= 4" } }, - "node_modules/streamsearch": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", - "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", - "peer": true, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, "engines": { - "node": ">=10.0.0" + "node": ">=0.10.0" } }, - "node_modules/stringify-entities": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", - "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, "dependencies": { - "character-entities-html4": "^2.0.0", - "character-entities-legacy": "^3.0.0" + "is-extglob": "^2.1.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/style-to-js": { - "version": "1.1.16", - "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", - "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", - "dependencies": { - "style-to-object": "1.0.8" + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" } }, - "node_modules/style-to-object": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", - "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, "dependencies": { - "inline-style-parser": "0.2.4" + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/styled-jsx": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", - "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", - "peer": true, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, "dependencies": { - "client-only": "0.0.1" + "p-locate": "^4.1.0" }, "engines": { - "node": ">= 12.0.0" - }, - "peerDependencies": { - "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" - }, - "peerDependenciesMeta": { - "@babel/core": { - "optional": true - }, - "babel-plugin-macros": { - "optional": true - } + "node": ">=8" } }, - "node_modules/swr": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/swr/-/swr-2.3.3.tgz", - "integrity": "sha512-dshNvs3ExOqtZ6kJBaAsabhPdHyeY4P2cKwRCniDVifBMoG/SVI7tfLWqPXriVspf2Rg4tPzXJTnwaihIeFw2A==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, "dependencies": { - "dequal": "^2.0.3", - "use-sync-external-store": "^1.4.0" + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" }, - "peerDependencies": { - "react": "^16.11.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - } - }, - "node_modules/tailwind-merge": { - "version": "2.6.0", - "resolved": "https://registry.npmjs.org/tailwind-merge/-/tailwind-merge-2.6.0.tgz", - "integrity": "sha512-P+Vu1qXfzediirmHOC3xKGAYeZtPcV9g76X+xg2FD4tYgR71ewMA35Y3sCz3zhiN/dwefRpJX0yBcgwi1fXNQA==", "funding": { - "type": "github", - "url": "https://github.com/sponsors/dcastil" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/tailwindcss": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-4.1.5.tgz", - "integrity": "sha512-nYtSPfWGDiWgCkwQG/m+aX83XCwf62sBgg3bIlNiiOcggnS1x3uVRDAuyelBFL+vJdOPPCGElxv9DjHJjRHiVA==", - "peer": true - }, - "node_modules/trim-lines": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", - "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/trough": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", - "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "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, + "engines": { + "node": ">= 8" } }, - "node_modules/tslib": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", - "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" - }, - "node_modules/unified": { - "version": "11.0.5", - "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", - "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "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, "dependencies": { - "@types/unist": "^3.0.0", - "bail": "^2.0.0", - "devlop": "^1.0.0", - "extend": "^3.0.0", - "is-plain-obj": "^4.0.0", - "trough": "^2.0.0", - "vfile": "^6.0.0" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8.6" } }, - "node_modules/unist-util-is": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", - "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0" + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/unist-util-position": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", - "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0" + "p-limit": "^2.2.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-position-from-estree": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", - "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" } }, - "node_modules/unist-util-stringify-position": { + "node_modules/path-exists": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", - "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", - "dependencies": { - "@types/unist": "^3.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-visit": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", - "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0", - "unist-util-visit-parents": "^6.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/unist-util-visit-parents": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", - "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", - "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-is": "^6.0.0" + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/use-callback-ref": { - "version": "1.3.3", - "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", - "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, "dependencies": { - "tslib": "^2.0.0" + "find-up": "^4.0.0" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true + "node": ">=8" + } + }, + "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" + } + ] + }, + "node_modules/reusify": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", + "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "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, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/use-sidecar": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", - "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "node_modules/strip-outer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", + "integrity": "sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==", + "dev": true, "dependencies": { - "detect-node-es": "^1.1.0", - "tslib": "^2.0.0" + "escape-string-regexp": "^1.0.2" }, "engines": { - "node": ">=10" - }, - "peerDependencies": { - "@types/react": "*", - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" - }, - "peerDependenciesMeta": { - "@types/react": { - "optional": true - } + "node": ">=0.10.0" } }, - "node_modules/use-sync-external-store": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.5.0.tgz", - "integrity": "sha512-Rb46I4cGGVBmjamjphe8L/UnvJD+uPPtTkNvX5mZgqdbavhI4EbgIWJiIHXJ8bc/i9EQGPRh4DwEURJ552Do0A==", - "peerDependencies": { - "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + "node_modules/strip-outer/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, - "node_modules/vfile": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", - "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0", - "vfile-message": "^4.0.0" + "is-number": "^7.0.0" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=8.0" } }, - "node_modules/vfile-message": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", - "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "node_modules/trim-repeated": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", + "integrity": "sha512-pkonvlKk8/ZuR0D5tLW8ljt5I8kmxp2XKymhepUeOdCEfKpZaktSArkLHZt76OB1ZvO9bssUsDty4SWhLvZpLg==", + "dev": true, "dependencies": { - "@types/unist": "^3.0.0", - "unist-util-stringify-position": "^4.0.0" + "escape-string-regexp": "^1.0.2" }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/unified" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/zwitch": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", - "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", - "funding": { - "type": "github", - "url": "https://github.com/sponsors/wooorm" + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "dev": true, + "engines": { + "node": ">= 10.0.0" } } } diff --git a/package.json b/package.json new file mode 100644 index 00000000..1b58964b --- /dev/null +++ b/package.json @@ -0,0 +1,5 @@ +{ + "devDependencies": { + "gh-pages": "^6.3.0" + } +} From b7565b5a6bbc29e0200c5a22c491fa65975115a3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 19 May 2025 19:39:58 +0100 Subject: [PATCH 089/122] doc site update --- docs-site/content/docs/About.mdx | 17 + .../content/docs/{index.mdx => Home.mdx} | 0 docs-site/content/docs/core/highlight.mdx | 2 +- docs-site/content/docs/core/yake.mdx | 482 ++++++++---------- yake/core/Levenshtein.py | 88 +++- .../__pycache__/highlight.cpython-310.pyc | Bin 12667 -> 15086 bytes yake/core/highlight.py | 67 ++- 7 files changed, 369 insertions(+), 287 deletions(-) create mode 100644 docs-site/content/docs/About.mdx rename docs-site/content/docs/{index.mdx => Home.mdx} (100%) diff --git a/docs-site/content/docs/About.mdx b/docs-site/content/docs/About.mdx new file mode 100644 index 00000000..657219bf --- /dev/null +++ b/docs-site/content/docs/About.mdx @@ -0,0 +1,17 @@ +This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at INESCTEC. It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). + +Authors +Ricardo Campos is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). + +Vítor Mangaravite is a research intern of LIAAD/INESC TEC - INESC Technology. He has MSc and BSc in Computer Science by Universidade Federal de Minas Gerais and Universidade Federal de Ouro Preto, respectively. + +Arian Pasquali is a researcher associated to University of Porto and the Artificial Intelligence and Decision Support Laboratory at INESC TEC - INESC Technology. He has MSc in Computer Science by University of Porto with specialization in data mining. + +Alípio M. Jorge is an associate professor at the Department of Computer Science of the Faculty of Science of the U. Porto and the coordinator of LIAAD/INESC TEC - INESC Technology and Science, the Artificial Intelligence and Decision Support Lab of U. Porto since 2012. He is PhD in Computer Science by U. Porto. + +Célia Nunes is an Assistant Professor at the Department of Mathematics of the University of Beira Interior (UBI) and member of CMA - Center of Mathematics and Aplications, UBI. She is PhD in Mathematics by UBI, MSc. on Applied Mathematics by the University of Évora (UE) and BSc. in Mathematics - Probability and Statistics (UE). + +Adam Jatowt is an Associate Professor at the Department of Computer Science, University of Innsbruck. He has received his Ph.D. in Information Science and Technology from the University of Tokyo, Japan in 2005. + +Aknowledgements +Project “TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020” is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/Home.mdx similarity index 100% rename from docs-site/content/docs/index.mdx rename to docs-site/content/docs/Home.mdx diff --git a/docs-site/content/docs/core/highlight.mdx b/docs-site/content/docs/core/highlight.mdx index c853e2e1..ae45ca1d 100644 --- a/docs-site/content/docs/core/highlight.mdx +++ b/docs-site/content/docs/core/highlight.mdx @@ -23,7 +23,7 @@ DEFAULT_HIGHLIGHT_PRE = "" DEFAULT_HIGHLIGHT_POST = "" ``` -## Class Definitions +## Constructor ### NgramData diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/core/yake.mdx index 7cc1ecfe..7489252d 100644 --- a/docs-site/content/docs/core/yake.mdx +++ b/docs-site/content/docs/core/yake.mdx @@ -1,15 +1,11 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' +KeywordExtractor Class +The KeywordExtractor class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. -# KeywordExtractor Class +Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation. -The `KeywordExtractor` class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. - -> **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. - -## Module Overview - -```python -""" +Module Overview +python""" Keyword extraction module for YAKE. This module provides the KeywordExtractor class which serves as the main entry point @@ -22,12 +18,8 @@ import os import jellyfish from yake.data import DataCore from .Levenshtein import Levenshtein -``` - -The `KeywordExtractor` class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. - -## Class Definition - +The KeywordExtractor class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. +Constructor @@ -38,49 +30,47 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def __init__(self, **kwargs): """ Initialize the KeywordExtractor with configuration parameters. - - Args: - **kwargs: Configuration parameters including: - lan (str): Language for stopwords (default: "en") - n (int): Maximum n-gram size (default: 3) - dedup_lim (float): Similarity threshold for deduplication (default: 0.9) - dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") - window_size (int): Size of word window for co-occurrence (default: 1) - top (int): Maximum number of keywords to extract (default: 20) - features (list): List of features to use for scoring (default: None = all features) - stopwords (set): Custom set of stopwords (default: None = use language-specific) - """ - # Initialize configuration dictionary with default values - self.config = { - "lan": kwargs.get("lan", "en"), - "n": kwargs.get("n", 3), - "dedup_lim": kwargs.get("dedup_lim", 0.9), - "dedup_func": kwargs.get("dedup_func", "seqm"), - "window_size": kwargs.get("window_size", 1), - "top": kwargs.get("top", 20), - "features": kwargs.get("features", None), - } - - # Load appropriate stopwords and deduplication function - self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) - self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) - ``` - + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values + self.config = { + "lan": kwargs.get("lan", "en"), + "n": kwargs.get("n", 3), + "dedup_lim": kwargs.get("dedup_lim", 0.9), + "dedup_func": kwargs.get("dedup_func", "seqm"), + "window_size": kwargs.get("window_size", 1), + "top": kwargs.get("top", 20), + "features": kwargs.get("features", None), + } + + # Load appropriate stopwords and deduplication function + self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) + self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) + ``` + - -**Parameters:** -- `lan` (str, optional): Language for stopwords (default: "en") -- `n` (int, optional): Maximum n-gram size (default: 3) -- `dedup_lim` (float, optional): Similarity threshold for deduplication (default: 0.9) -- `dedup_func` (str, optional): Deduplication function to use (default: "seqm") -- `window_size` (int, optional): Size of word window for co-occurrence (default: 1) -- `top` (int, optional): Maximum number of keywords to return (default: 20) -- `features` (list, optional): List of features to use for scoring (default: None = all features) -- `stopwords` (set, optional): Custom stopwords set (default: None, loads from language file) - -## Core Methods - +Parameters: + +lan (str, optional): Language for stopwords (default: "en") +n (int, optional): Maximum n-gram size (default: 3) +dedup_lim (float, optional): Similarity threshold for deduplication (default: 0.9) +dedup_func (str, optional): Deduplication function to use (default: "seqm") +window_size (int, optional): Size of word window for co-occurrence (default: 1) +top (int, optional): Maximum number of keywords to return (default: 20) +features (list, optional): List of features to use for scoring (default: None = all features) +stopwords (set, optional): Custom stopwords set (default: None, loads from language file) + +Core Methods @@ -91,87 +81,86 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def extract_keywords(self, text): """ Extract keywords from text. + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords - - Args: - text (str): The input text to extract keywords from - - Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) - """ - # Handle empty input - if not text: - return [] - - # Normalize text by replacing newlines with spaces - text = text.replace("\n", " ") - - # Create a configuration dictionary for DataCore - core_config = { - "windows_size": self.config["window_size"], - "n": self.config["n"], - } - - # Initialize the data core with the text - dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) - - # Build features for single terms and multi-word terms - dc.build_single_terms_features(features=self.config["features"]) - dc.build_mult_terms_features(features=self.config["features"]) - - # Collect and sort all valid candidates by score (lower is better) - result_set = [] - candidates_sorted = sorted( - [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h - ) - - # If deduplication is disabled, return all candidates up to the limit - if self.config["dedup_lim"] >= 1.0: - return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ - : self.config["top"] - ] - - # Perform deduplication by comparing candidates - for cand in candidates_sorted: - should_add = True - # Check if this candidate is too similar to any already selected - for h, cand_result in result_set: - if ( - self.dedup_function(cand.unique_kw, cand_result.unique_kw) - > self.config["dedup_lim"] - ): - should_add = False - break - - # Add candidate if it passes deduplication - if should_add: - result_set.append((cand.h, cand)) - - # Stop once we have enough candidates - if len(result_set) == self.config["top"]: + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input + if not text: + return [] + + # Normalize text by replacing newlines with spaces + text = text.replace("\n", " ") + + # Create a configuration dictionary for DataCore + core_config = { + "windows_size": self.config["window_size"], + "n": self.config["n"], + } + + # Initialize the data core with the text + dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + + # Build features for single terms and multi-word terms + dc.build_single_terms_features(features=self.config["features"]) + dc.build_mult_terms_features(features=self.config["features"]) + + # Collect and sort all valid candidates by score (lower is better) + result_set = [] + candidates_sorted = sorted( + [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h + ) + + # If deduplication is disabled, return all candidates up to the limit + if self.config["dedup_lim"] >= 1.0: + return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ + : self.config["top"] + ] + + # Perform deduplication by comparing candidates + for cand in candidates_sorted: + should_add = True + # Check if this candidate is too similar to any already selected + for h, cand_result in result_set: + if ( + self.dedup_function(cand.unique_kw, cand_result.unique_kw) + > self.config["dedup_lim"] + ): + should_add = False break - # Format results as (keyword, score) tuples - return [(cand.kw, h) for (h, cand) in result_set] - ``` - + # Add candidate if it passes deduplication + if should_add: + result_set.append((cand.h, cand)) + + # Stop once we have enough candidates + if len(result_set) == self.config["top"]: + break + + # Format results as (keyword, score) tuples + return [(cand.kw, h) for (h, cand) in result_set] + ``` + +Parameters: -**Parameters:** -- `text` (str): The text to extract keywords from +text (str): The text to extract keywords from -**Returns:** -- list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) +Returns: -## Helper Methods +list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) +Helper Methods @@ -182,46 +171,44 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def _load_stopwords(self, stopwords): """ Load stopwords from file or use provided set. + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use - This method handles the loading of language-specific stopwords from - the appropriate resource file, falling back to a language-agnostic - list if the specific language is not available. - - Args: - stopwords (set, optional): Custom set of stopwords to use - - Returns: - set: A set of stopwords for filtering non-content words - """ - # Use provided stopwords if available - if stopwords is not None: - return set(stopwords) - - # Determine the path to the appropriate stopword list - dir_path = os.path.dirname(os.path.realpath(__file__)) - local_path = os.path.join( - "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" - ) - - # Fall back to language-agnostic list if specific language not available - if not os.path.exists(os.path.join(dir_path, local_path)): - local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - - resource_path = os.path.join(dir_path, local_path) - - # Attempt to read the stopword file with UTF-8 encoding - try: - with open(resource_path, encoding="utf-8") as stop_file: - return set(stop_file.read().lower().split("\n")) - except UnicodeDecodeError: - # Fall back to ISO-8859-1 encoding if UTF-8 fails - print("Warning: reading stopword list as ISO-8859-1") - with open(resource_path, encoding="ISO-8859-1") as stop_file: - return set(stop_file.read().lower().split("\n")) - ``` - + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available + if stopwords is not None: + return set(stopwords) + + # Determine the path to the appropriate stopword list + dir_path = os.path.dirname(os.path.realpath(__file__)) + local_path = os.path.join( + "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" + ) + + # Fall back to language-agnostic list if specific language not available + if not os.path.exists(os.path.join(dir_path, local_path)): + local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") + + resource_path = os.path.join(dir_path, local_path) + + # Attempt to read the stopword file with UTF-8 encoding + try: + with open(resource_path, encoding="utf-8") as stop_file: + return set(stop_file.read().lower().split("\n")) + except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails + print("Warning: reading stopword list as ISO-8859-1") + with open(resource_path, encoding="ISO-8859-1") as stop_file: + return set(stop_file.read().lower().split("\n")) + ``` + - _get_dedup_function(func_name) @@ -231,30 +218,27 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def _get_dedup_function(self, func_name): """ Retrieve the appropriate deduplication function. + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use - Maps the requested string similarity function name to the corresponding - method implementation for keyword deduplication. - - Args: - func_name (str): Name of the deduplication function to use - - Returns: - function: Reference to the selected string similarity function - """ - # Map function names to their implementations - return { - "jaro_winkler": self.jaro, - "jaro": self.jaro, - "sequencematcher": self.seqm, - "seqm": self.seqm, - }.get(func_name.lower(), self.levs) - ``` - + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations + return { + "jaro_winkler": self.jaro, + "jaro": self.jaro, + "sequencematcher": self.seqm, + "seqm": self.seqm, + }.get(func_name.lower(), self.levs) + ``` + - -## Similarity Functions - +Similarity Functions @@ -265,22 +249,20 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def jaro(self, cand1, cand2): """ Calculate Jaro similarity between two strings. + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare - A string metric measuring edit distance between two sequences, - with higher values indicating greater similarity. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return jellyfish.jaro(cand1, cand2) - ``` - + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return jellyfish.jaro(cand1, cand2) + ``` + - levs(cand1, cand2) @@ -290,22 +272,20 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def levs(self, cand1, cand2): """ Calculate normalized Levenshtein similarity between two strings. + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare - Computes the Levenshtein distance and normalizes it by the length - of the longer string, returning a similarity score. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) - ``` - + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) + ``` + - seqm(cand1, cand2) @@ -315,30 +295,25 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra def seqm(self, cand1, cand2): """ Calculate sequence matcher ratio between two strings. + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare - Uses the Levenshtein ratio which measures the similarity between - two strings based on the minimum number of operations required - to transform one string into the other. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return Levenshtein.ratio(cand1, cand2) - ``` - + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return Levenshtein.ratio(cand1, cand2) + ``` + - -## Usage Examples - -### Basic Usage - -```python -from yake import KeywordExtractor +Usage Examples +Basic Usage +pythonfrom yake import KeywordExtractor text = """ Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence @@ -353,12 +328,8 @@ keywords = kw_extractor.extract_keywords(text) # Print the keywords and their scores for kw, score in keywords: print(f"{kw}: {score:.4f}") -``` - -### Customized Usage - -```python -from yake import KeywordExtractor +Customized Usage +pythonfrom yake import KeywordExtractor # Create a custom stopwords set custom_stopwords = {"the", "a", "an", "in", "on", "at", "of", "for", "with"} @@ -380,22 +351,17 @@ keywords = kw_extractor.extract_keywords(text) # Print the top 10 keywords for kw, score in keywords: print(f"{kw}: {score:.4f}") -``` - -## Deduplication Functions - -The `KeywordExtractor` supports multiple string similarity algorithms for deduplication: +Deduplication Functions +The KeywordExtractor supports multiple string similarity algorithms for deduplication: -1. **Jaro-Winkler** ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches - -2. **Levenshtein Ratio** ("levs"): Based on Levenshtein edit distance normalized by string length - -3. **SequenceMatcher** ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm - -## Dependencies +Jaro-Winkler ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches +Levenshtein Ratio ("levs"): Based on Levenshtein edit distance normalized by string length +SequenceMatcher ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm +Dependencies The module relies on: -- `os`: For file operations and path handling -- `jellyfish`: For Jaro-Winkler string similarity -- `yake.data.DataCore`: For core data representation -- `.Levenshtein`: For Levenshtein distance and ratio calculations \ No newline at end of file + +os: For file operations and path handling +jellyfish: For Jaro-Winkler string similarity +yake.data.DataCore: For core data representation +.Levenshtein: For Levenshtein distance and ratio calculations \ No newline at end of file diff --git a/yake/core/Levenshtein.py b/yake/core/Levenshtein.py index ea3674bd..c2f82a8f 100644 --- a/yake/core/Levenshtein.py +++ b/yake/core/Levenshtein.py @@ -1,34 +1,63 @@ -"""Module providing Levenshtein distance and ratio calculations.""" +""" +Module providing Levenshtein distance and ratio calculations. + +This module implements the Levenshtein (edit distance) algorithm for measuring +the difference between two strings. It provides both a raw distance calculation +and a normalized similarity ratio, which are useful for comparing text strings +and identifying potential matches with slight variations. +""" import numpy as np class Levenshtein: - """Class for computing Levenshtein distance and similarity ratio.""" + """ + Class for computing Levenshtein distance and similarity ratio. + + This class provides static methods to calculate the edit distance between + strings (how many insertions, deletions, or substitutions are needed to + transform one string into another) and to determine a normalized similarity + ratio between them. + + These metrics are widely used in fuzzy string matching, spell checking, + and approximate text similarity measurements. + """ @staticmethod def __ratio(distance: float, str_length: int) -> float: - """Calculate the similarity ratio based on distance and string length. - + """ + Calculate the similarity ratio based on distance and string length. + + This method normalizes the Levenshtein distance into a similarity ratio + between 0 and 1, where 1 represents identical strings and 0 represents + completely different strings. + Args: distance (float): The Levenshtein distance between two strings. str_length (int): The length of the longer string. Returns: - float: The similarity ratio. + float: The similarity ratio, where higher values indicate greater similarity. + The range is [0.0, 1.0] where 1.0 means identical strings. """ return 1 - float(distance) / float(str_length) @staticmethod def ratio(seq1: str, seq2: str) -> float: - """Compute the similarity ratio between two strings. - + """ + Compute the similarity ratio between two strings. + + This is the main method for determining string similarity. It calculates + the Levenshtein distance and then converts it to a ratio representing + how similar the strings are. + Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - float: The similarity ratio. + float: The similarity ratio between the two strings, ranging from 0.0 + (completely different) to 1.0 (identical). """ str_distance = Levenshtein.distance(seq1, seq2) str_length = max(len(seq1), len(seq2)) @@ -36,35 +65,50 @@ def ratio(seq1: str, seq2: str) -> float: @staticmethod def distance(seq1: str, seq2: str) -> int: - """Calculate the Levenshtein distance between two strings. + """ + Calculate the Levenshtein distance between two strings. + + This method implements the core Levenshtein algorithm, which calculates + the minimum number of single-character edits (insertions, deletions, or + substitutions) required to change one string into another. + + The algorithm uses dynamic programming with a matrix approach to efficiently + compute the minimum edit distance. Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - int: The Levenshtein distance. + int: The Levenshtein distance - the minimum number of edit operations + required to transform seq1 into seq2. """ + # Create a matrix of size (len(seq1)+1) x (len(seq2)+1) size_x = len(seq1) + 1 size_y = len(seq2) + 1 matrix = np.zeros((size_x, size_y)) + # Initialize the first row and column of the matrix for x in range(size_x): - matrix[x, 0] = x + matrix[x, 0] = x # Cost of deleting characters from seq1 for y in range(size_y): - matrix[0, y] = y + matrix[0, y] = y # Cost of inserting characters from seq2 + # Fill the matrix using dynamic programming approach for x in range(1, size_x): for y in range(1, size_y): + # Check if the characters at current positions match if seq1[x - 1] == seq2[y - 1]: - cost = 0 + cost = 0 # No cost for matching characters else: - cost = 1 + cost = 1 # Cost of 1 for substitution + # Calculate minimum cost among deletion, insertion, and substitution matrix[x, y] = min( - matrix[x - 1, y] + 1, # Deletion - matrix[x, y - 1] + 1, # Insertion - matrix[x - 1, y - 1] + cost, # Substitution + matrix[x - 1, y] + 1, # Deletion (remove from seq1) + matrix[x, y - 1] + 1, # Insertion (add from seq2) + matrix[x - 1, y - 1] + cost, # Substitution or match ) - return int(matrix[size_x - 1, size_y - 1]) + # Return the bottom-right value of the matrix as the final distance + return int(matrix[size_x - 1, size_y - 1]) \ No newline at end of file diff --git a/yake/core/__pycache__/highlight.cpython-310.pyc b/yake/core/__pycache__/highlight.cpython-310.pyc index ec26a0352334fd4bacdd2a312ad34fbdb8a0959e..51673b912cf8c6b156b47734ff2a081ca392bbb3 100644 GIT binary patch delta 3062 zcmb7GU2GIp6z<)&WZdb`wn7V)!YwV*(sn6=MG>Q76ZwlY5#J!>?#%7Zb!TVB`RR5^ zNJS$?VvKkb6XMT{50DttWS)#h!kZz)_#z2JAAB}3MvW2y^_)Aqv)iorvztz)J9E$d z&Ue1^oqMbBL)7DTcW2w+GkbcAB@dnLInl|skhZq7XSVlbk60q0W!H>sPQA0AJ-A#E zp(Pv|@}-cPt`U{F69)P0{*YSCF>M~uf*V>i5Ka-6R9xSrgct!63smNoTfryQWy*X`1J4#At?^ld4@_bpb$KET zeNl))9_&{C;{%L!90TvBhgO6SEfyk8WwmtzI$fo9I$o;OS8l5<#XtcyTqk70sl!fS z)$ynp@&SHJaw+q9Cp!tW%7@zX9SBY?w7;=DrB)~{V8lh{3pWB* zQ7;|~L+(2X8D-eBzOU!I9`_Xze6L~&o2xj?^Xw|dNy+{fhGywA9F(f!g;mN7g9m}@ zgDN>_NePK9GGVg<2npcS7><8!@63=HdAsui@{7E%YR57rgrAf|r4(oeEG=TEAPB!o zJr~kYaaD>bP5_;!&=mj$A=HG0@1zm28JG#$NEbn1zr+D8%lU2ukL$AIrhH*?YyA7F zkdSAkt9_;K#c~Y5rK49KxaUqMdmT%$KfApZ`FsNcvKzWh8w$r1i^7bUUDK%&QkjK@ zr82GSASo*nl9tws93za9eo%d#6qKe)a(z)04n$VW1fd_n`#zV4^CR)OY=#g!en%fA z`Y}v}!ll0_zS5N?o$NH`a;CyP^Gr(mJkNBI5SiAparSSARd~CS`KQ1YJww{Xe6;7gA_neK zkg0xQh@hta7OOlpxjBVeUVV++i09UH6aAAquORWG1K(!mGxCwahg;F^gB@}3B+l*G z%uq$Edv}8#(PY}d5mYsRIT19pZGs`f+DHU2~ORP22LUz^zX)esW}G%X(&5o*1>@q zz#?d8Rv))$<=En;P!o{(qzc_OEN>0&h_4SlPV{zYtN@37W-uOGznhRtAc99t>}&j_ z(VHnX+_DF=7i3rz1`f1ZQI#*NMrj(_X@mx3nlz*QKDSkVJa$ulwBb4OR6MkC7ttxg zIRJ35!t@5YB6p3nI3{wr%HhuK$7<}3_2 z^jG*_Zrn6DTCo7UA`FP8u7`~e3V}01I;)_Jugc+x*WwGC4-)-(1T_bswBGoS`;QTF zRrT_T@%63b&DHh=&8hQ8v-_tc)_k%GhZ5$%)bye2Q|3}+p|&-KB? zpeRbV&^5%9Pv_6X!xQ5~KaVJPDwJ}5>(At}0$G@x5G~9#M$}43$bkobgR--kUxY(K z-P++~L>;#=O;csS$q#A`z3x_=I&Jd3sgnLR;=z%r^~%-LcgQ!gKmS-OVe{O_Mojz! zj*>VVeU7%m@vw_fQjm28t#p=@xzu6qJ~fA$r_jnl86VESMf9H#^;#5Qul#Y_jp9)pbD#Gr?WsI4CIp)#>=w#y9snKS?2_y6Y1d>LCgddHEjaE9 z$a`KFh=cTh!-X8oCb; Date: Mon, 19 May 2025 19:42:23 +0100 Subject: [PATCH 090/122] updated index --- docs-site/content/docs/{Home.mdx => index.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs-site/content/docs/{Home.mdx => index.mdx} (100%) diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/index.mdx similarity index 100% rename from docs-site/content/docs/Home.mdx rename to docs-site/content/docs/index.mdx From 6a25334ac662c3b24383b681f6e75354d760aea4 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Mon, 19 May 2025 19:45:04 +0100 Subject: [PATCH 091/122] Update yake.mdx --- docs-site/content/docs/core/yake.mdx | 482 ++++++++++++++------------- 1 file changed, 258 insertions(+), 224 deletions(-) diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/core/yake.mdx index 7489252d..4188c551 100644 --- a/docs-site/content/docs/core/yake.mdx +++ b/docs-site/content/docs/core/yake.mdx @@ -1,11 +1,15 @@ import { Accordion, AccordionContent, AccordionItem, AccordionTrigger } from '@/components/ui/accordion' -KeywordExtractor Class -The KeywordExtractor class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. -Info: This documentation provides interactive code views for each method. Click on a function name to view its implementation. +# KeywordExtractor Class -Module Overview -python""" +The `KeywordExtractor` class is the main entry point for YAKE (Yet Another Keyword Extractor), providing a simple API to extract meaningful keywords from textual content. + +> **Info:** This documentation provides interactive code views for each method. Click on a function name to view its implementation. + +## Module Overview + +```python +""" Keyword extraction module for YAKE. This module provides the KeywordExtractor class which serves as the main entry point @@ -18,8 +22,12 @@ import os import jellyfish from yake.data import DataCore from .Levenshtein import Levenshtein -The KeywordExtractor class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. -Constructor +``` + +The `KeywordExtractor` class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. + +## Constructor + @@ -30,47 +38,49 @@ Constructor def __init__(self, **kwargs): """ Initialize the KeywordExtractor with configuration parameters. - Args: - **kwargs: Configuration parameters including: - lan (str): Language for stopwords (default: "en") - n (int): Maximum n-gram size (default: 3) - dedup_lim (float): Similarity threshold for deduplication (default: 0.9) - dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") - window_size (int): Size of word window for co-occurrence (default: 1) - top (int): Maximum number of keywords to extract (default: 20) - features (list): List of features to use for scoring (default: None = all features) - stopwords (set): Custom set of stopwords (default: None = use language-specific) - """ - # Initialize configuration dictionary with default values - self.config = { - "lan": kwargs.get("lan", "en"), - "n": kwargs.get("n", 3), - "dedup_lim": kwargs.get("dedup_lim", 0.9), - "dedup_func": kwargs.get("dedup_func", "seqm"), - "window_size": kwargs.get("window_size", 1), - "top": kwargs.get("top", 20), - "features": kwargs.get("features", None), - } - - # Load appropriate stopwords and deduplication function - self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) - self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) - ``` - + + Args: + **kwargs: Configuration parameters including: + lan (str): Language for stopwords (default: "en") + n (int): Maximum n-gram size (default: 3) + dedup_lim (float): Similarity threshold for deduplication (default: 0.9) + dedup_func (str): Deduplication function: "seqm", "jaro", or "levs" (default: "seqm") + window_size (int): Size of word window for co-occurrence (default: 1) + top (int): Maximum number of keywords to extract (default: 20) + features (list): List of features to use for scoring (default: None = all features) + stopwords (set): Custom set of stopwords (default: None = use language-specific) + """ + # Initialize configuration dictionary with default values + self.config = { + "lan": kwargs.get("lan", "en"), + "n": kwargs.get("n", 3), + "dedup_lim": kwargs.get("dedup_lim", 0.9), + "dedup_func": kwargs.get("dedup_func", "seqm"), + "window_size": kwargs.get("window_size", 1), + "top": kwargs.get("top", 20), + "features": kwargs.get("features", None), + } + + # Load appropriate stopwords and deduplication function + self.stopword_set = self._load_stopwords(kwargs.get("stopwords")) + self.dedup_function = self._get_dedup_function(self.config["dedup_func"]) + ``` + -Parameters: - -lan (str, optional): Language for stopwords (default: "en") -n (int, optional): Maximum n-gram size (default: 3) -dedup_lim (float, optional): Similarity threshold for deduplication (default: 0.9) -dedup_func (str, optional): Deduplication function to use (default: "seqm") -window_size (int, optional): Size of word window for co-occurrence (default: 1) -top (int, optional): Maximum number of keywords to return (default: 20) -features (list, optional): List of features to use for scoring (default: None = all features) -stopwords (set, optional): Custom stopwords set (default: None, loads from language file) - -Core Methods + +**Parameters:** +- `lan` (str, optional): Language for stopwords (default: "en") +- `n` (int, optional): Maximum n-gram size (default: 3) +- `dedup_lim` (float, optional): Similarity threshold for deduplication (default: 0.9) +- `dedup_func` (str, optional): Deduplication function to use (default: "seqm") +- `window_size` (int, optional): Size of word window for co-occurrence (default: 1) +- `top` (int, optional): Maximum number of keywords to return (default: 20) +- `features` (list, optional): List of features to use for scoring (default: None = all features) +- `stopwords` (set, optional): Custom stopwords set (default: None, loads from language file) + +## Core Methods + @@ -81,86 +91,87 @@ Core Methods def extract_keywords(self, text): """ Extract keywords from text. - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords - - Args: - text (str): The input text to extract keywords from - Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) - """ - # Handle empty input - if not text: - return [] - - # Normalize text by replacing newlines with spaces - text = text.replace("\n", " ") - - # Create a configuration dictionary for DataCore - core_config = { - "windows_size": self.config["window_size"], - "n": self.config["n"], - } - - # Initialize the data core with the text - dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) - - # Build features for single terms and multi-word terms - dc.build_single_terms_features(features=self.config["features"]) - dc.build_mult_terms_features(features=self.config["features"]) - - # Collect and sort all valid candidates by score (lower is better) - result_set = [] - candidates_sorted = sorted( - [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h - ) - - # If deduplication is disabled, return all candidates up to the limit - if self.config["dedup_lim"] >= 1.0: - return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ - : self.config["top"] - ] - - # Perform deduplication by comparing candidates - for cand in candidates_sorted: - should_add = True - # Check if this candidate is too similar to any already selected - for h, cand_result in result_set: - if ( - self.dedup_function(cand.unique_kw, cand_result.unique_kw) - > self.config["dedup_lim"] - ): - should_add = False + This method implements the complete YAKE keyword extraction pipeline: + 1. Text preprocessing + 2. Term extraction and feature computation + 3. Candidate keyword generation + 4. Scoring and deduplication + 5. Ranking and selection of top keywords + + Args: + text (str): The input text to extract keywords from + + Returns: + list: A list of tuples (keyword, score) sorted by score (lower is better) + """ + # Handle empty input + if not text: + return [] + + # Normalize text by replacing newlines with spaces + text = text.replace("\n", " ") + + # Create a configuration dictionary for DataCore + core_config = { + "windows_size": self.config["window_size"], + "n": self.config["n"], + } + + # Initialize the data core with the text + dc = DataCore(text=text, stopword_set=self.stopword_set, config=core_config) + + # Build features for single terms and multi-word terms + dc.build_single_terms_features(features=self.config["features"]) + dc.build_mult_terms_features(features=self.config["features"]) + + # Collect and sort all valid candidates by score (lower is better) + result_set = [] + candidates_sorted = sorted( + [cc for cc in dc.candidates.values() if cc.is_valid()], key=lambda c: c.h + ) + + # If deduplication is disabled, return all candidates up to the limit + if self.config["dedup_lim"] >= 1.0: + return [(cand.unique_kw, cand.h) for cand in candidates_sorted][ + : self.config["top"] + ] + + # Perform deduplication by comparing candidates + for cand in candidates_sorted: + should_add = True + # Check if this candidate is too similar to any already selected + for h, cand_result in result_set: + if ( + self.dedup_function(cand.unique_kw, cand_result.unique_kw) + > self.config["dedup_lim"] + ): + should_add = False + break + + # Add candidate if it passes deduplication + if should_add: + result_set.append((cand.h, cand)) + + # Stop once we have enough candidates + if len(result_set) == self.config["top"]: break - # Add candidate if it passes deduplication - if should_add: - result_set.append((cand.h, cand)) - - # Stop once we have enough candidates - if len(result_set) == self.config["top"]: - break - - # Format results as (keyword, score) tuples - return [(cand.kw, h) for (h, cand) in result_set] - ``` - + # Format results as (keyword, score) tuples + return [(cand.kw, h) for (h, cand) in result_set] + ``` + -Parameters: -text (str): The text to extract keywords from +**Parameters:** +- `text` (str): The text to extract keywords from -Returns: +**Returns:** +- list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) -list: A list of tuples containing (keyword, score) pairs, sorted by relevance (lower scores are better) +## Helper Methods -Helper Methods @@ -171,44 +182,46 @@ Helper Methods def _load_stopwords(self, stopwords): """ Load stopwords from file or use provided set. - This method handles the loading of language-specific stopwords from - the appropriate resource file, falling back to a language-agnostic - list if the specific language is not available. - - Args: - stopwords (set, optional): Custom set of stopwords to use - Returns: - set: A set of stopwords for filtering non-content words - """ - # Use provided stopwords if available - if stopwords is not None: - return set(stopwords) - - # Determine the path to the appropriate stopword list - dir_path = os.path.dirname(os.path.realpath(__file__)) - local_path = os.path.join( - "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" - ) - - # Fall back to language-agnostic list if specific language not available - if not os.path.exists(os.path.join(dir_path, local_path)): - local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") - - resource_path = os.path.join(dir_path, local_path) - - # Attempt to read the stopword file with UTF-8 encoding - try: - with open(resource_path, encoding="utf-8") as stop_file: - return set(stop_file.read().lower().split("\n")) - except UnicodeDecodeError: - # Fall back to ISO-8859-1 encoding if UTF-8 fails - print("Warning: reading stopword list as ISO-8859-1") - with open(resource_path, encoding="ISO-8859-1") as stop_file: - return set(stop_file.read().lower().split("\n")) - ``` - + This method handles the loading of language-specific stopwords from + the appropriate resource file, falling back to a language-agnostic + list if the specific language is not available. + + Args: + stopwords (set, optional): Custom set of stopwords to use + + Returns: + set: A set of stopwords for filtering non-content words + """ + # Use provided stopwords if available + if stopwords is not None: + return set(stopwords) + + # Determine the path to the appropriate stopword list + dir_path = os.path.dirname(os.path.realpath(__file__)) + local_path = os.path.join( + "StopwordsList", f"stopwords_{self.config['lan'][:2].lower()}.txt" + ) + + # Fall back to language-agnostic list if specific language not available + if not os.path.exists(os.path.join(dir_path, local_path)): + local_path = os.path.join("StopwordsList", "stopwords_noLang.txt") + + resource_path = os.path.join(dir_path, local_path) + + # Attempt to read the stopword file with UTF-8 encoding + try: + with open(resource_path, encoding="utf-8") as stop_file: + return set(stop_file.read().lower().split("\n")) + except UnicodeDecodeError: + # Fall back to ISO-8859-1 encoding if UTF-8 fails + print("Warning: reading stopword list as ISO-8859-1") + with open(resource_path, encoding="ISO-8859-1") as stop_file: + return set(stop_file.read().lower().split("\n")) + ``` + + _get_dedup_function(func_name) @@ -218,27 +231,30 @@ Helper Methods def _get_dedup_function(self, func_name): """ Retrieve the appropriate deduplication function. - Maps the requested string similarity function name to the corresponding - method implementation for keyword deduplication. - - Args: - func_name (str): Name of the deduplication function to use - Returns: - function: Reference to the selected string similarity function - """ - # Map function names to their implementations - return { - "jaro_winkler": self.jaro, - "jaro": self.jaro, - "sequencematcher": self.seqm, - "seqm": self.seqm, - }.get(func_name.lower(), self.levs) - ``` - + Maps the requested string similarity function name to the corresponding + method implementation for keyword deduplication. + + Args: + func_name (str): Name of the deduplication function to use + + Returns: + function: Reference to the selected string similarity function + """ + # Map function names to their implementations + return { + "jaro_winkler": self.jaro, + "jaro": self.jaro, + "sequencematcher": self.seqm, + "seqm": self.seqm, + }.get(func_name.lower(), self.levs) + ``` + -Similarity Functions + +## Similarity Functions + @@ -249,20 +265,22 @@ Similarity Functions def jaro(self, cand1, cand2): """ Calculate Jaro similarity between two strings. - A string metric measuring edit distance between two sequences, - with higher values indicating greater similarity. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return jellyfish.jaro(cand1, cand2) - ``` - + A string metric measuring edit distance between two sequences, + with higher values indicating greater similarity. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return jellyfish.jaro(cand1, cand2) + ``` + + levs(cand1, cand2) @@ -272,20 +290,22 @@ Similarity Functions def levs(self, cand1, cand2): """ Calculate normalized Levenshtein similarity between two strings. - Computes the Levenshtein distance and normalizes it by the length - of the longer string, returning a similarity score. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) - ``` - + Computes the Levenshtein distance and normalizes it by the length + of the longer string, returning a similarity score. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) + ``` + + seqm(cand1, cand2) @@ -295,25 +315,30 @@ Similarity Functions def seqm(self, cand1, cand2): """ Calculate sequence matcher ratio between two strings. - Uses the Levenshtein ratio which measures the similarity between - two strings based on the minimum number of operations required - to transform one string into the other. - - Args: - cand1 (str): First string to compare - cand2 (str): Second string to compare - Returns: - float: Similarity score between 0.0 (different) and 1.0 (identical) - """ - return Levenshtein.ratio(cand1, cand2) - ``` - + Uses the Levenshtein ratio which measures the similarity between + two strings based on the minimum number of operations required + to transform one string into the other. + + Args: + cand1 (str): First string to compare + cand2 (str): Second string to compare + + Returns: + float: Similarity score between 0.0 (different) and 1.0 (identical) + """ + return Levenshtein.ratio(cand1, cand2) + ``` + -Usage Examples -Basic Usage -pythonfrom yake import KeywordExtractor + +## Usage Examples + +### Basic Usage + +```python +from yake import KeywordExtractor text = """ Natural language processing (NLP) is a subfield of linguistics, computer science, and artificial intelligence @@ -328,8 +353,12 @@ keywords = kw_extractor.extract_keywords(text) # Print the keywords and their scores for kw, score in keywords: print(f"{kw}: {score:.4f}") -Customized Usage -pythonfrom yake import KeywordExtractor +``` + +### Customized Usage + +```python +from yake import KeywordExtractor # Create a custom stopwords set custom_stopwords = {"the", "a", "an", "in", "on", "at", "of", "for", "with"} @@ -351,17 +380,22 @@ keywords = kw_extractor.extract_keywords(text) # Print the top 10 keywords for kw, score in keywords: print(f"{kw}: {score:.4f}") -Deduplication Functions -The KeywordExtractor supports multiple string similarity algorithms for deduplication: +``` -Jaro-Winkler ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches -Levenshtein Ratio ("levs"): Based on Levenshtein edit distance normalized by string length -SequenceMatcher ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm +## Deduplication Functions -Dependencies -The module relies on: +The `KeywordExtractor` supports multiple string similarity algorithms for deduplication: + +1. **Jaro-Winkler** ("jaro", "jaro_winkler"): Based on character matches with higher weights for prefix matches + +2. **Levenshtein Ratio** ("levs"): Based on Levenshtein edit distance normalized by string length + +3. **SequenceMatcher** ("seqm", "sequencematcher"): Based on Python's difflib sequence matching algorithm -os: For file operations and path handling -jellyfish: For Jaro-Winkler string similarity -yake.data.DataCore: For core data representation -.Levenshtein: For Levenshtein distance and ratio calculations \ No newline at end of file +## Dependencies + +The module relies on: +- `os`: For file operations and path handling +- `jellyfish`: For Jaro-Winkler string similarity +- `yake.data.DataCore`: For core data representation +- `.Levenshtein`: For Levenshtein distance and ratio calculations \ No newline at end of file From 07dd952576f8511cc56b77dc2f0656b259aafe28 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:13:36 +0100 Subject: [PATCH 092/122] updated home.mdx --- docs-site/content/docs/About.mdx | 17 ----- docs-site/content/docs/Home.mdx | 115 +++++++++++++++++++++++++++++++ 2 files changed, 115 insertions(+), 17 deletions(-) delete mode 100644 docs-site/content/docs/About.mdx create mode 100644 docs-site/content/docs/Home.mdx diff --git a/docs-site/content/docs/About.mdx b/docs-site/content/docs/About.mdx deleted file mode 100644 index 657219bf..00000000 --- a/docs-site/content/docs/About.mdx +++ /dev/null @@ -1,17 +0,0 @@ -This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at INESCTEC. It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). - -Authors -Ricardo Campos is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). - -Vítor Mangaravite is a research intern of LIAAD/INESC TEC - INESC Technology. He has MSc and BSc in Computer Science by Universidade Federal de Minas Gerais and Universidade Federal de Ouro Preto, respectively. - -Arian Pasquali is a researcher associated to University of Porto and the Artificial Intelligence and Decision Support Laboratory at INESC TEC - INESC Technology. He has MSc in Computer Science by University of Porto with specialization in data mining. - -Alípio M. Jorge is an associate professor at the Department of Computer Science of the Faculty of Science of the U. Porto and the coordinator of LIAAD/INESC TEC - INESC Technology and Science, the Artificial Intelligence and Decision Support Lab of U. Porto since 2012. He is PhD in Computer Science by U. Porto. - -Célia Nunes is an Assistant Professor at the Department of Mathematics of the University of Beira Interior (UBI) and member of CMA - Center of Mathematics and Aplications, UBI. She is PhD in Mathematics by UBI, MSc. on Applied Mathematics by the University of Évora (UE) and BSc. in Mathematics - Probability and Statistics (UE). - -Adam Jatowt is an Associate Professor at the Department of Computer Science, University of Innsbruck. He has received his Ph.D. in Information Science and Technology from the University of Tokyo, Japan in 2005. - -Aknowledgements -Project “TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020” is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/Home.mdx new file mode 100644 index 00000000..9d32ea68 --- /dev/null +++ b/docs-site/content/docs/Home.mdx @@ -0,0 +1,115 @@ +--- +title: Yet Another Keyword Extractor (YAKE) +description: Unsupervised Approach for Automatic Keyword Extraction using Text Features +--- + +# Yet Another Keyword Extractor (YAKE) + +Unsupervised Approach for Automatic Keyword Extraction using Text Features. + + + +--- + +YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) + +## Background + +Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. + +## Main Features + +- Unsupervised approach +- Corpus-Independent +- Domain and Language Independent +- Single-Document + +## References + +If you use "YAKE" in a work that leads to a scientific publication, we would appreciate it if you would kindly cite it in your manuscript. + +- Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) + +- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) (ECIR'18 Best Short Paper) + +- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) + +## License + +Copyright (C) 2018, INESC TEC [license](https://github.com/LIAAD/yake/blob/master/LICENSE). + +## Contributing + +When contributing to this repository, 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. Read more about becoming a contributor in [our GitHub repo](https://github.com/LIAAD/yake/blob/master/CONTRIBUTING.rst). + +### Thank you to the contributors of YAKE! + + + +If you are feeling nostalgic you can access the old site [here](http://yake.inesctec.pt/). + +--- + +
    +

    + Back to top +

    +

    + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

    +
    \ No newline at end of file From 963687abb2d565221d88e75892e37dbe783b54ac Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:37:24 +0100 Subject: [PATCH 093/122] final docs website structure --- docs-site/content/docs/Home.mdx | 14 +- docs-site/content/docs/about.mdx | 27 ++++ docs-site/content/docs/gettingstarted.mdx | 177 +++++++++++++++++++++ docs-site/content/docs/index.mdx | 176 -------------------- docs-site/content/docs/relatedprojects.mdx | 28 ++++ docs-site/public/logo_inesctec.png | Bin 0 -> 8724 bytes 6 files changed, 233 insertions(+), 189 deletions(-) create mode 100644 docs-site/content/docs/about.mdx create mode 100644 docs-site/content/docs/gettingstarted.mdx delete mode 100644 docs-site/content/docs/index.mdx create mode 100644 docs-site/content/docs/relatedprojects.mdx create mode 100644 docs-site/public/logo_inesctec.png diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/Home.mdx index 9d32ea68..1750c6ac 100644 --- a/docs-site/content/docs/Home.mdx +++ b/docs-site/content/docs/Home.mdx @@ -1,5 +1,5 @@ --- -title: Yet Another Keyword Extractor (YAKE) +title: HOME description: Unsupervised Approach for Automatic Keyword Extraction using Text Features --- @@ -7,18 +7,6 @@ description: Unsupervised Approach for Automatic Keyword Extraction using Text F Unsupervised Approach for Automatic Keyword Extraction using Text Features. - - --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx new file mode 100644 index 00000000..a0ca0451 --- /dev/null +++ b/docs-site/content/docs/about.mdx @@ -0,0 +1,27 @@ +--- +title: About +--- + +![Logo LIAAD](/yake/assets/images/logo_inesctec.png) + + +This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). + + +## Authors + +* **Ricardo Campos** is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). + +* **Vítor Mangaravite** is a research intern of LIAAD/INESC TEC - INESC Technology. He has MSc and BSc in Computer Science by Universidade Federal de Minas Gerais and Universidade Federal de Ouro Preto, respectively. + +* **Arian Pasquali** is a researcher associated to University of Porto and the Artificial Intelligence and Decision Support Laboratory at INESC TEC - INESC Technology. He has MSc in Computer Science by University of Porto with specialization in data mining. + +* **Alípio M. Jorge** is an associate professor at the Department of Computer Science of the Faculty of Science of the U. Porto and the coordinator of LIAAD/INESC TEC - INESC Technology and Science, the Artificial Intelligence and Decision Support Lab of U. Porto since 2012. He is PhD in Computer Science by U. Porto. + +* **Célia Nunes** is an Assistant Professor at the Department of Mathematics of the University of Beira Interior (UBI) and member of CMA - Center of Mathematics and Aplications, UBI. She is PhD in Mathematics by UBI, MSc. on Applied Mathematics by the University of Évora (UE) and BSc. in Mathematics - Probability and Statistics (UE). + +* **Adam Jatowt** is an Associate Professor at the Department of Computer Science, University of Innsbruck. He has received his Ph.D. in Information Science and Technology from the University of Tokyo, Japan in 2005. + + +## Aknowledgements +Project "TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020" is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx new file mode 100644 index 00000000..caac927b --- /dev/null +++ b/docs-site/content/docs/gettingstarted.mdx @@ -0,0 +1,177 @@ +--- +title: Getting Started +--- + +# Quick Start +{: .no_toc } + +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) + +## Installing YAKE! + +Installing Yake using pip: + +``` bash +pip install git+https://github.com/LIAAD/yake +``` + +## Usage (Command line) + +How to use it on your using the command line: + +``` bash +Usage: yake [OPTIONS] + +Options: + -ti, --text_input TEXT Input text, SURROUNDED by single quotes(\') + -i, --input_file TEXT Input file + -l, --language TEXT Language + -n, --ngram-size INTEGER Max size of the ngram. + -df, --dedup-func [leve|jaro|seqm] + Deduplication function. + -dl, --dedup-lim FLOAT Deduplication limiar. + -ws, --window-size INTEGER Window size. + -t, --top INTEGER Number of keyphrases to extract + -v, --verbose Gets detailed information (such as the score) + --help Show this message and exit. +``` + +## Keyword Deduplication Methods + +YAKE uses three methods to compute string similarity during keyword deduplication: + +### 1. `levs` — Levenshtein Similarity + +* **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. +* **Formula used:** + +```python +similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) +``` + +* **Best for:** Very accurate for small changes (e.g., "house" vs "horse") +* **Performance:** Medium speed + +### 2. `jaro` — Jaro Similarity + +* **What it is:** Measures similarity based on matching characters and their relative positions +* **Implementation:** Uses the `jellyfish` library +* **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") +* **Performance:** Fast + +### 3. `seqm` — SequenceMatcher Ratio + +* **What it is:** Uses Python's built-in `difflib.SequenceMatcher` +* **Formula:** + +```python +ratio = 2 * M / T +``` +where `M` is the number of matching characters, and `T` is the total number of characters in both strings. + +* **Best for:** Good for detecting shared blocks in longer strings +* **Performance:** Fast + +### Comparison Table + +| Method | Based on | Best for | Performance | +|--------|----------|----------|-------------| +| `levs` | Edit operations | Typos and small changes | Medium | +| `jaro` | Matching positions | Names and short strings with swaps | Fast | +| `seqm` | Common subsequences | General phrase similarity | Fast | + +### Practical Examples + +| Compared Strings | `levs` | `jaro` | `seqm` | +|------------------|--------|--------|--------| +| "casa" vs "caso" | 0.75 | 0.83 | 0.75 | +| "machine" vs "mecine" | 0.71 | 0.88 | 0.82 | +| "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | + +**Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. +## Usage (Python) + +How to use it using Python: + +``` python +import yake + +text = """Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning +competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud +Next conference in San Francisco this week, the official announcement could come as early as tomorrow. +Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. +Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, +was founded by Goldbloom and Ben Hamner in 2010. +The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, +it has managed to stay well ahead of them by focusing on its specific niche. +The service is basically the de facto home for running data science and machine learning competitions. +With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, +it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow +and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, +Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. +That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google +will keep the service running - likely under its current name. While the acquisition is probably more about +Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition +and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can +share this code on the platform (the company previously called them 'scripts'). +Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with +that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) +since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, +Google chief economist Hal Varian, Khosla Ventures and Yuri Milner """ +``` + +### Simple usage using default parameters +```bash +kw_extractor = yake.KeywordExtractor() +keywords = kw_extractor.extract_keywords(text) + +for kw in keywords: + print(kw) +``` + +### Specifying custom parameters +```bash +language = "en" +max_ngram_size = 3 +deduplication_thresold = 0.9 +deduplication_algo = 'seqm' +windowSize = 1 +numOfKeywords = 20 + +kw_extractor = yake.KeywordExtractor(lan=language, + n=max_ngram_size, + dedupLim=deduplication_thresold, + dedupFunc=deduplication_algo, + windowsSize=windowSize, + top=numOfKeywords) + +keywords = kw_extractor.extract_keywords(text) + +for kw in keywords: + print(kw) +``` + +### Output +The lower the score, the more relevant the keyword is. +``` bash +('google', 0.026580863364597897) +('kaggle', 0.0289005976239829) +('ceo anthony goldbloom', 0.029946071606210194) +('san francisco', 0.048810837074825336) +('anthony goldbloom declined', 0.06176910090701819) +('google cloud platform', 0.06261974476422487) +('co-founder ceo anthony', 0.07357749587020043) +('acquiring kaggle', 0.08723571551039863) +('ceo anthony', 0.08915156857226395) +('anthony goldbloom', 0.09123482372372106) +('machine learning', 0.09147989238151344) +('kaggle co-founder ceo', 0.093805063905847) +('data', 0.097574333771058) +('google cloud', 0.10260128641464673) +('machine learning competitions', 0.10773000650607861) +('francisco this week', 0.11519915079240485) +('platform', 0.1183512305596321) +('conference in san', 0.12392066376108138) +('service', 0.12546743261462942) +('goldbloom', 0.14611408778815776) +``` \ No newline at end of file diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx deleted file mode 100644 index f20a24e8..00000000 --- a/docs-site/content/docs/index.mdx +++ /dev/null @@ -1,176 +0,0 @@ -# Yet Another Keyword Extractor (YAKE!) - -**Unsupervised, corpus-independent keyword extraction from single documents.** ---- - -YAKE! (Yet Another Keyword Extractor) is a lightweight, unsupervised automatic keyword extraction system. It uses statistical text features from **single documents** — without relying on external corpora, dictionaries, or domain-specific knowledge — to extract the most relevant keywords. - ---- - -## Key Features - -YAKE! is designed to be: -- 🧠 **Unsupervised** – no training data required -- 🌍 **Language & domain independent** – works across domains and languages -- 📄 **Single-document based** – no need for a reference corpus -- ⚡ **Efficient** – lightweight and fast - ---- - -## Why YAKE!? - -In an era where data is abundant and multilingual content is common, keyword extraction must be fast, adaptable, and reliable. YAKE! is built to handle: -- Small or large documents -- Texts in various languages -- Environments with limited or no training data - -Unlike traditional approaches, YAKE! doesn't depend on NLP pipelines or annotated datasets. It instead uses a combination of text features like word frequency, position, and casing to compute keyword relevance scores. - ---- - -## Quick Start - -### Try It Out - -- 🧪 [Online Demo](http://yake.inesctec.pt) -- 🐍 [GitHub Repository](https://github.com/LIAAD/yake) - -### Installation - -```bash -pip install git+https://github.com/LIAAD/yake -``` - -### Basic Usage - -```python -import yake - -text = "Google is acquiring Kaggle, a platform for machine learning competitions..." -kw_extractor = yake.KeywordExtractor() -keywords = kw_extractor.extract_keywords(text) - -for kw in keywords: - print(kw) -``` - -### Highlighting Keywords - -```python -from yake.highlight import TextHighlighter - -th = TextHighlighter(max_ngram_size=3) -highlighted = th.highlight(text, keywords) -``` - ---- - -## How It Works - -YAKE! assigns relevance scores to keywords based on multiple features: -- Term frequency -- Term position -- Word casing -- Sentence placement -- Contextual diversity - -The lower the score, the more relevant the keyword. - ---- - -## Command Line Usage - -```bash -Usage: yake [OPTIONS] - -Options: - -ti, --text_input TEXT Input text, SURROUNDED by single quotes (') - -i, --input_file TEXT Input file - -l, --language TEXT Language - -n, --ngram-size INTEGER Max size of the ngram - -df, --dedup-func [leve|jaro|seqm] - Deduplication function - -dl, --dedup-lim FLOAT Deduplication limiar - -ws, --window-size INTEGER Window size - -t, --top INTEGER Number of keyphrases to extract - -v, --verbose Gets detailed information (such as the score) - --help Show this message and exit -``` - ---- - -## Keyword Deduplication Methods - -YAKE uses three methods to compute string similarity during keyword deduplication: - -### 1. `levs` — Levenshtein Similarity - -* **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. -* **Formula used:** - -```python -similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2)) -``` - -* **Best for:** Very accurate for small changes (e.g., "house" vs "horse") -* **Performance:** Medium speed - -### 2. `jaro` — Jaro Similarity - -* **What it is:** Measures similarity based on matching characters and their relative positions -* **Implementation:** Uses the `jellyfish` library -* **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") -* **Performance:** Fast - -### 3. `seqm` — SequenceMatcher Ratio - -* **What it is:** Uses Python's built-in `difflib.SequenceMatcher` -* **Formula:** - -```python -ratio = 2 * M / T -``` -where `M` is the number of matching characters, and `T` is the total number of characters in both strings. - -* **Best for:** Good for detecting shared blocks in longer strings -* **Performance:** Fast - -### Comparison Table - -| Method | Based on | Best for | Performance | -|--------|----------|----------|-------------| -| `levs` | Edit operations | Typos and small changes | Medium | -| `jaro` | Matching positions | Names and short strings with swaps | Fast | -| `seqm` | Common subsequences | General phrase similarity | Fast | - -### Practical Examples - -| Compared Strings | `levs` | `jaro` | `seqm` | -|------------------|--------|--------|--------| -| "casa" vs "caso" | 0.75 | 0.83 | 0.75 | -| "machine" vs "mecine" | 0.71 | 0.88 | 0.82 | -| "apple" vs "a pple" | 0.8 | 0.93 | 0.9 | - -**Recommendation:** For general use with a good balance of speed and accuracy, `seqm` is a solid default (and it is YAKE's default). For stricter lexical similarity, choose `levs`. For names or when letter swaps are common, go with `jaro`. - ---- - -## Benchmarks - -YAKE! has been evaluated against 10+ state-of-the-art methods across 20+ datasets. See our paper in Information Sciences Journal for details. - ---- - -## References - -Please cite the appropriate work when using YAKE: - -### In-depth Journal Publication - -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). **YAKE! Keyword Extraction from Single Documents using Multiple Local Features**. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [PDF](https://doi.org/10.1016/j.ins.2019.09.013) - -### ECIR'18 Best Short Paper - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **A Text Feature Based Automatic Keyword Extraction Method for Single Documents**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). **YAKE! Collection-independent Automatic Keyword Extractor**. In: Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [PDF](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) \ No newline at end of file diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx new file mode 100644 index 00000000..11eaf072 --- /dev/null +++ b/docs-site/content/docs/relatedprojects.mdx @@ -0,0 +1,28 @@ +--- +title: Related Projects +--- + +# Related projects +{: .no_toc } + +List of relevant projects using YAKE: + +- [SparkNLP](https://github.com/JohnSnowLabs/spark-nlp) by [John Snow Labs](https://www.johnsnowlabs.com/). +Open source framework with full Python, Scala, and Java Support. Check [their documentation](https://nlp.johnsnowlabs.com/docs/en/annotators#yakekeywordextraction), [demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/) and [google colab](https://colab.research.google.com/github/JohnSnowLabs/spark-nlp-workshop/blob/master/tutorials/streamlit_notebooks/KEYPHRASE_EXTRACTION.ipynb). A video on how to use spark nlp with yake can also be found [here](https://events.johnsnowlabs.com/john-snow-labs-nlu-become-a-data-science-superhero-with-one-line-of-python-code): + +- [pke](https://github.com/boudinfl/pke) - Python Keyphrase Extraction module. +Ii is an open source python-based keyphrase extraction toolkit. It provides an end-to-end keyphrase extraction pipeline in which each component can be easily modified or extended to develop new models. Credits to Florian Boudin. + +- [Textacy](https://github.com/chartbeat-labs/textacy) - NLP, before and after spaCy. +Python library for performing a variety of natural language processing (NLP) tasks, built on the high-performance spaCy library. among other features it supports keyword extration using YAKE. + +- [General Index](https://archive.org/details/GeneralIndex) by Archive.org. +A catalogue of 19 billions of YAKE keywords extracted from 107 million papers. An article about the General Index project can also be found in [Nature](https://www.nature.com/articles/d41586-021-02895-8). + +- [Annif](https://github.com/NatLibFi/Annif) is a tool for automated subject indexing and classification. +Multi-algorithm automated subject indexing tool for libraries, archives and museums. This repository is used for developing a production version of the system, based on ideas from the initial prototype. Official [website](http://annif.org/). + +- [Portulan Clarin](https://portulanclarin.net/workbench/liaad-yake/) - Provides Sservices and data for researchers, innovators, students and language professionals +Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official [website](https://portulanclarin.net/). + +- [Tell me stories](https://contamehistorias.pt/arquivopt) is a research project that allows users to automatically build news narratives based on news preserved by the [Portuguese Web Archive](https://arquivo.pt). \ No newline at end of file diff --git a/docs-site/public/logo_inesctec.png b/docs-site/public/logo_inesctec.png new file mode 100644 index 0000000000000000000000000000000000000000..eb36b4b376437227646aab597163beb57d3807fb GIT binary patch literal 8724 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 Date: Tue, 20 May 2025 02:40:31 +0100 Subject: [PATCH 094/122] Update about.mdx --- docs-site/content/docs/about.mdx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index a0ca0451..04be95e7 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -2,7 +2,7 @@ title: About --- -![Logo LIAAD](/yake/assets/images/logo_inesctec.png) +![Logo LIAAD](logo_inesctec.png) This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). From d1800c80246027c990f5bd9d048c7043a991aa85 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:42:07 +0100 Subject: [PATCH 095/122] Update about.mdx --- docs-site/content/docs/about.mdx | 2 -- 1 file changed, 2 deletions(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 04be95e7..69d68587 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -2,8 +2,6 @@ title: About --- -![Logo LIAAD](logo_inesctec.png) - This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). From b3fd21140c74e02c992b6d678be21d4433b250cb Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:44:09 +0100 Subject: [PATCH 096/122] compatibility error --- docs-site/content/docs/gettingstarted.mdx | 1 - docs-site/content/docs/relatedprojects.mdx | 1 - 2 files changed, 2 deletions(-) diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index caac927b..b4a423bd 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -3,7 +3,6 @@ title: Getting Started --- # Quick Start -{: .no_toc } [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx index 11eaf072..f1b465e9 100644 --- a/docs-site/content/docs/relatedprojects.mdx +++ b/docs-site/content/docs/relatedprojects.mdx @@ -3,7 +3,6 @@ title: Related Projects --- # Related projects -{: .no_toc } List of relevant projects using YAKE: From 00230a2233ab044a75717a9943c1f0a957df387d Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 02:46:47 +0100 Subject: [PATCH 097/122] index --- docs-site/content/docs/{Home.mdx => index.mdx} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename docs-site/content/docs/{Home.mdx => index.mdx} (100%) diff --git a/docs-site/content/docs/Home.mdx b/docs-site/content/docs/index.mdx similarity index 100% rename from docs-site/content/docs/Home.mdx rename to docs-site/content/docs/index.mdx From 0ada57fcc57c18423cebc2adbb17b307e36710b4 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 03:18:47 +0100 Subject: [PATCH 098/122] updated formattting --- docs-site/content/docs/about.mdx | 1 - docs-site/content/docs/gettingstarted.mdx | 16 +++++++++------- docs-site/content/docs/index.mdx | 9 ++------- docs-site/content/docs/relatedprojects.mdx | 2 -- 4 files changed, 11 insertions(+), 17 deletions(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 69d68587..c98d8c8d 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -2,7 +2,6 @@ title: About --- - This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index b4a423bd..22137576 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -2,6 +2,8 @@ title: Getting Started --- +--- + # Quick Start [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) @@ -13,7 +15,7 @@ Installing Yake using pip: ``` bash pip install git+https://github.com/LIAAD/yake ``` - +--- ## Usage (Command line) How to use it on your using the command line: @@ -35,11 +37,11 @@ Options: --help Show this message and exit. ``` -## Keyword Deduplication Methods +### Keyword Deduplication Methods YAKE uses three methods to compute string similarity during keyword deduplication: -### 1. `levs` — Levenshtein Similarity +#### 1. `levs` — Levenshtein Similarity * **What it is:** Measures the edit distance between two strings — how many operations (insertions, deletions, substitutions) are needed to turn one string into another. * **Formula used:** @@ -51,14 +53,14 @@ similarity = 1 - Levenshtein.distance(cand1, cand2) / max(len(cand1), len(cand2) * **Best for:** Very accurate for small changes (e.g., "house" vs "horse") * **Performance:** Medium speed -### 2. `jaro` — Jaro Similarity +#### 2. `jaro` — Jaro Similarity * **What it is:** Measures similarity based on matching characters and their relative positions * **Implementation:** Uses the `jellyfish` library * **Best for:** More tolerant of transpositions (e.g., "maria" vs "maira") * **Performance:** Fast -### 3. `seqm` — SequenceMatcher Ratio +#### 3. `seqm` — SequenceMatcher Ratio * **What it is:** Uses Python's built-in `difflib.SequenceMatcher` * **Formula:** @@ -71,7 +73,7 @@ where `M` is the number of matching characters, and `T` is the total number of c * **Best for:** Good for detecting shared blocks in longer strings * **Performance:** Fast -### Comparison Table +#### Comparison Table | Method | Based on | Best for | Performance | |--------|----------|----------|-------------| @@ -79,7 +81,7 @@ where `M` is the number of matching characters, and `T` is the total number of c | `jaro` | Matching positions | Names and short strings with swaps | Fast | | `seqm` | Common subsequences | General phrase similarity | Fast | -### Practical Examples +#### Practical Examples | Compared Strings | `levs` | `jaro` | `seqm` | |------------------|--------|--------|--------| diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 1750c6ac..4596f28e 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,14 +1,9 @@ --- -title: HOME -description: Unsupervised Approach for Automatic Keyword Extraction using Text Features +title: Yet Another Keyword Extractor (YAKE) --- - -# Yet Another Keyword Extractor (YAKE) - -Unsupervised Approach for Automatic Keyword Extraction using Text Features. +> **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- - YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx index f1b465e9..c2bb657a 100644 --- a/docs-site/content/docs/relatedprojects.mdx +++ b/docs-site/content/docs/relatedprojects.mdx @@ -2,8 +2,6 @@ title: Related Projects --- -# Related projects - List of relevant projects using YAKE: - [SparkNLP](https://github.com/JohnSnowLabs/spark-nlp) by [John Snow Labs](https://www.johnsnowlabs.com/). From 7c11fb4cee77746ec04b467504503ee9a3f8172f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 03:34:54 +0100 Subject: [PATCH 099/122] icon test --- README.md | 2 +- docs-site/content/docs/about.mdx | 1 + docs-site/content/docs/gettingstarted.mdx | 6 +++--- docs-site/content/docs/index.mdx | 1 - docs-site/content/docs/relatedprojects.mdx | 1 + 5 files changed, 6 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index de509fa7..afed494a 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs#keyword-deduplication-methods) +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/gettingstarted#keyword-deduplication-methods) #### Usage (Python) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index c98d8c8d..944cf408 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -1,5 +1,6 @@ --- title: About +icon: CircleHelp --- This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index 22137576..3b9d9881 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -1,7 +1,7 @@ --- -title: Getting Started ---- - +title: Quick Start +description: Getting Started with Yake! +icon: Album --- # Quick Start diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 4596f28e..39203415 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -2,7 +2,6 @@ title: Yet Another Keyword Extractor (YAKE) --- > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. - --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/relatedprojects.mdx index c2bb657a..8c396869 100644 --- a/docs-site/content/docs/relatedprojects.mdx +++ b/docs-site/content/docs/relatedprojects.mdx @@ -1,5 +1,6 @@ --- title: Related Projects +icon: GitCompareArrows --- List of relevant projects using YAKE: From 8ce7ca4b867a1b871bba9e7f4c053d3d9c0b46e6 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 03:45:16 +0100 Subject: [PATCH 100/122] docs --- docs-site/content/docs/about.mdx | 3 +-- docs-site/content/docs/gettingstarted.mdx | 6 ------ docs-site/content/docs/index.mdx | 7 +++---- 3 files changed, 4 insertions(+), 12 deletions(-) diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 944cf408..4ecc0747 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -4,8 +4,7 @@ icon: CircleHelp --- This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). - - +--- ## Authors * **Ricardo Campos** is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index 3b9d9881..b464c53c 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -1,9 +1,3 @@ ---- -title: Quick Start -description: Getting Started with Yake! -icon: Album ---- - # Quick Start [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/index.mdx index 39203415..4ab68ec0 100644 --- a/docs-site/content/docs/index.mdx +++ b/docs-site/content/docs/index.mdx @@ -1,12 +1,11 @@ ---- -title: Yet Another Keyword Extractor (YAKE) ---- + +# Yet Another Keyword Extractor (YAKE!) > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) - +--- ## Background Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted. From fb723061196f6c38b752ecd10c49ec0b36366f8f Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:24:21 +0100 Subject: [PATCH 101/122] added notebook --- docs-site/content/docs/about.mdx | 2 + .../content/docs/{index.mdx => home.mdx} | 0 docs-site/public/1YAKE.ipynb | 1480 +++++++++++++++++ 3 files changed, 1482 insertions(+) rename docs-site/content/docs/{index.mdx => home.mdx} (100%) create mode 100644 docs-site/public/1YAKE.ipynb diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 4ecc0747..7b013048 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -4,7 +4,9 @@ icon: CircleHelp --- This project was developed by LIAAD - Laboratory of Artificial Intelligence and Decision Support. LIAAD is an R&D laboratory at [INESCTEC](http://www.inesctec.pt/en). It is one of the associated units of INESC Tec which is funded by Fundação para a Ciência e a Tecnologia (FCT, Portugal). + --- + ## Authors * **Ricardo Campos** is an assistant professor at the ICT Departmental Unit of the Polytechnic Institute of Tomar (IPT) and member of LIAAD-INESC TEC, the Artificial Intelligence and Decision Support Lab of U. Porto. He is PhD in Computer Science by the University of Porto (U. Porto). diff --git a/docs-site/content/docs/index.mdx b/docs-site/content/docs/home.mdx similarity index 100% rename from docs-site/content/docs/index.mdx rename to docs-site/content/docs/home.mdx diff --git a/docs-site/public/1YAKE.ipynb b/docs-site/public/1YAKE.ipynb new file mode 100644 index 00000000..3e7f0287 --- /dev/null +++ b/docs-site/public/1YAKE.ipynb @@ -0,0 +1,1480 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "skip" + } + }, + "source": [ + "
    YAKE
    \n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**Notebook Developed by**: [Ricardo Campos](http://www.ccc.ipt.pt/~ricardo)
    \n", + "**email:** ricardo.campos@ubi.pt
    \n", + "**Affiliation:** *Assistant Professor* @ [University of Beira Interior](http://www.ubi.pt);\n", + "*Researcher* @ [LIAAD](https://www.inesctec.pt/en/centres/liaad)-[INESC TEC](https://www.inesctec.pt/en)\n", + "\n", + "
    \n", + "\n", + "\n", + "

    \"Download

    \n", + "

     

    \n", + "

     

    \n", + "\n", + "
    " + ] + }, + { + "cell_type": "markdown", + "metadata": { + "toc": true + }, + "source": [ + "

    Table of Contents

    \n", + "" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## YAKE - Yet Another Keyword Extractor" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
    " + ], + "text/plain": [ + "" + ] + }, + "execution_count": 1, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from IPython.display import HTML\n", + "HTML('
    ')" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Unsupervised Approach for Automatic Keyword Extraction using Text Features." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package, we also make available a [demo](http://yake.inesctec.pt) an [API](http://yake.inesctec.pt/apidocs/#!/available_methods/post_yake_v2_extract_keywords) and a [mobile app](https://play.google.com/store/apps/details?id=com.yake.yake)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Main Features" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "* Unsupervised approach\n", + "* Corpus-Independent\n", + "* Domain and Language Independent\n", + "* Single-Document" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Rationale" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Extracting keywords from texts has become a challenge for individuals and organizations as the information grows in complexity and size. The need to automate this task so that texts can be processed in a timely and adequate manner has led to the emergence of automatic keyword extraction tools. Despite the advances, there is a clear lack of multilingual online tools to automatically extract keywords from single documents. Yake! is a novel feature-based system for multi-lingual keyword extraction, which supports texts of different sizes, domain or languages. Unlike other approaches, Yake! does not rely on dictionaries nor thesauri, neither is trained against any corpora. Instead, it follows an unsupervised approach which builds upon features extracted from the text, making it thus applicable to documents written in different languages without the need for further knowledge. This can be beneficial for a large number of tasks and a plethora of situations where the access to training corpora is either limited or restricted." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Where can I find YAKE?" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Package" + ] + }, + { + "cell_type": "markdown", + "metadata": { + "slideshow": { + "slide_type": "slide" + } + }, + "source": [ + "### Installation" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "#!pip install git+http://github.com/LIAAD/yake\n", + "!pip install yake\n", + "\n", + "#no caso de já ter instalado o package previamente e quiser fazer um update\n", + "#!pip install git+http://github.com/LIAAD/yake --upgrade" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage (Python)" + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "text = '''\n", + "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner'''" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Google', 0.02509259635302287)\n", + "('Kaggle', 0.027297150442917317)\n", + "('CEO Anthony Goldbloom', 0.04834891465259988)\n", + "('data science', 0.05499112888517541)\n", + "('acquiring data science', 0.06029572445726576)\n", + "('Google Cloud Platform', 0.07461585862381104)\n", + "('data', 0.07999958986489127)\n", + "('San Francisco', 0.0913829662674319)\n", + "('Anthony Goldbloom declined', 0.09740885820462175)\n", + "('science', 0.09834167930168546)\n", + "('science community Kaggle', 0.1014394718805728)\n", + "('machine learning', 0.10754988562466912)\n", + "('Google Cloud', 0.1136787749431024)\n", + "('Google is acquiring', 0.114683257931042)\n", + "('acquiring Kaggle', 0.12012386507741751)\n", + "('Anthony Goldbloom', 0.1213027418574554)\n", + "('platform', 0.12404419723925647)\n", + "('co-founder CEO Anthony', 0.12411964553586782)\n", + "('CEO Anthony', 0.12462950727635251)\n", + "('service', 0.1316357590449064)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "# assuming default parameters\n", + "kw_extractor = yake.KeywordExtractor()\n", + "keywords = kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Playing with the parameters:" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Google', 0.02509259635302287)\n", + "('Kaggle', 0.027297150442917317)\n", + "('CEO Anthony Goldbloom', 0.04834891465259988)\n", + "('data science', 0.05499112888517541)\n", + "('acquiring data science', 0.06029572445726576)\n", + "('Google Cloud Platform', 0.07461585862381104)\n", + "('data', 0.07999958986489127)\n", + "('San Francisco', 0.0913829662674319)\n", + "('Anthony Goldbloom declined', 0.09740885820462175)\n", + "('science', 0.09834167930168546)\n", + "('science community Kaggle', 0.1014394718805728)\n", + "('machine learning', 0.10754988562466912)\n", + "('Google Cloud', 0.1136787749431024)\n", + "('Google is acquiring', 0.114683257931042)\n", + "('acquiring Kaggle', 0.12012386507741751)\n", + "('Anthony Goldbloom', 0.1213027418574554)\n", + "('platform', 0.12404419723925647)\n", + "('co-founder CEO Anthony', 0.12411964553586782)\n", + "('CEO Anthony', 0.12462950727635251)\n", + "('service', 0.1316357590449064)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "language = \"en\"\n", + "max_ngram_size = 3\n", + "deduplication_thresold = 0.9\n", + "deduplication_algo = 'seqm'\n", + "windowSize = 1\n", + "numOfKeywords = 20\n", + "\n", + "custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_thresold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None)\n", + "keywords = custom_kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Google', 0.02509259635302287)\n", + "('Kaggle', 0.027297150442917317)\n", + "('CEO Anthony Goldbloom', 0.04834891465259988)\n", + "('data science', 0.05499112888517541)\n", + "('acquiring data science', 0.06029572445726576)\n", + "('Google Cloud Platform', 0.07461585862381104)\n", + "('data', 0.07999958986489127)\n", + "('San Francisco', 0.0913829662674319)\n", + "('Anthony Goldbloom declined', 0.09740885820462175)\n", + "('science', 0.09834167930168546)\n", + "('science community Kaggle', 0.1014394718805728)\n", + "('machine learning', 0.10754988562466912)\n", + "('Google Cloud', 0.1136787749431024)\n", + "('Google is acquiring', 0.114683257931042)\n", + "('acquiring Kaggle', 0.12012386507741751)\n", + "('Anthony Goldbloom', 0.1213027418574554)\n", + "('platform', 0.12404419723925647)\n", + "('co-founder CEO Anthony', 0.12411964553586782)\n", + "('CEO Anthony', 0.12462950727635251)\n", + "('service', 0.1316357590449064)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "language = \"en\"\n", + "max_ngram_size = 3\n", + "deduplication_thresold = 0.9\n", + "deduplication_algo = 'seqm'\n", + "windowSize = 1\n", + "numOfKeywords = 20\n", + "\n", + "custom_kw_extractor = yake.KeywordExtractor(lan=language, n=max_ngram_size, dedupLim=deduplication_thresold, dedupFunc=deduplication_algo, windowsSize=windowSize, top=numOfKeywords, features=None)\n", + "keywords = custom_kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Highlighting feature will tag every keyword in the text with the default tag ``." + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner\"" + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from yake.highlight import TextHighlighter\n", + "\n", + "th = TextHighlighter(max_ngram_size = 3)\n", + "th.highlight(text, keywords)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Besides tagging a text with the default tag, users can also specify their own custom highlight. In the following text, the tag `` makes use of an hyphotetical function `my_class` whose purpose would be to highlight in white colour or the relevant keywords." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\"Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner\"" + ] + }, + "execution_count": 4, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "from yake.highlight import TextHighlighter\n", + "th = TextHighlighter(max_ngram_size = 3, highlight_pre = \"\", highlight_post= \"\")\n", + "th.highlight(text, keywords)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "While English (`en`) is the default language, users can use YAKE! to extract keywords from whatever language they want to by specifying the the corresponding language universal code. The below example shows how to extract keywords from a portuguese text." + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "('Conta-me Histórias', 0.006225012963810038)\n", + "('LIAAD do INESC', 0.01899063587015275)\n", + "('INESC TEC', 0.01995432290332246)\n", + "('Conta-me', 0.04513273690417472)\n", + "('Histórias', 0.04513273690417472)\n", + "('Prémio Arquivo.pt', 0.05749361520927859)\n", + "('LIAAD', 0.07738867367929901)\n", + "('INESC', 0.07738867367929901)\n", + "('TEC', 0.08109398065524037)\n", + "('Xutos inspiram projeto', 0.08720742489353424)\n", + "('inspiram projeto premiado', 0.08720742489353424)\n", + "('Adam Jatwot docente', 0.09407053486771558)\n", + "('Arquivo.pt', 0.10261392141666957)\n", + "('Alípio Jorge', 0.12190479662535166)\n", + "('Ciências da Universidade', 0.12368384021490342)\n", + "('Ricardo Campos investigador', 0.12789997272332762)\n", + "('Politécnico de Tomar', 0.13323587141127738)\n", + "('Arian Pasquali', 0.13323587141127738)\n", + "('Vitor Mangaravite', 0.13323587141127738)\n", + "('preservados da Web', 0.13596322680882506)\n" + ] + } + ], + "source": [ + "import yake\n", + "\n", + "text = '''\n", + "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", + "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", + "'''\n", + "\n", + "custom_kw_extractor = yake.KeywordExtractor(lan=\"pt\")\n", + "keywords = custom_kw_extractor.extract_keywords(text)\n", + "\n", + "for kw in keywords:\n", + " print(kw)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In the following we are going to constuct a word cloud. To begin, we need to adapt the \"content\" structure to a dictionary consisting of the keyword and of the score. In addition to that, we resort to a normalization function that bounds the values into a range between [0,1]." + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Conta-me Histórias': 1.0,\n", + " 'LIAAD do INESC': 0.9016047583205323,\n", + " 'INESC TEC': 0.8941768232148362,\n", + " 'Conta-me': 0.7001059072167914,\n", + " 'Histórias': 0.7001059072167914,\n", + " 'Prémio Arquivo.pt': 0.6048303678150379,\n", + " 'LIAAD': 0.4514826541353427,\n", + " 'INESC': 0.4514826541353427,\n", + " 'TEC': 0.4229227806321687,\n", + " 'Xutos inspiram projeto': 0.37580139629126075,\n", + " 'inspiram projeto premiado': 0.37580139629126075,\n", + " 'Adam Jatwot docente': 0.3229017164607676,\n", + " 'Arquivo.pt': 0.25705075169290126,\n", + " 'Alípio Jorge': 0.10835997942955777,\n", + " 'Ciências da Universidade': 0.09464741520636755,\n", + " 'Ricardo Campos investigador': 0.06215018572037523,\n", + " 'Politécnico de Tomar': 0.021021989718509326,\n", + " 'Arian Pasquali': 0.021021989718509326,\n", + " 'Vitor Mangaravite': 0.021021989718509326,\n", + " 'preservados da Web': 0.0}" + ] + }, + "execution_count": 2, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for item in keywords])\n", + " min_value = min([item[1] for item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = (item[1] - float(min_value))/(float(max_value) - float(min_value))\n", + " result[item[0]] = abs(1 - normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for\n", + " item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = 1 - item[1]/float(max_value)\n", + " result[item[0]] = abs(normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install matplotlib\n", + "!pip install wordcloud" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 999.5, 499.5, -0.5)" + ] + }, + "execution_count": 7, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from wordcloud import WordCloud\n", + "import matplotlib.pyplot as plt\n", + "\n", + "wordcloud = WordCloud(max_font_size=100, max_words = 20, width = 1000, height = 500).generate_from_frequencies(keyword2WordCloud) #Objeto que permite gerar wordcloud a partir de texto\n", + "plt.figure(figsize=(16,9))\n", + "plt.imshow(wordcloud, interpolation=\"bilinear\") #imshow plota imagens que derivam de arrays\n", + "plt.axis(\"off\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Suponha agora que necessita passar esta imagem a partir de uma API. Com vista a esse objetivo deverá converter a imagem em base64. O código abaixo permite guardar a imagem em buffer e mostra a sua conversão em base64." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "import base64\n", + "import io\n", + "from io import BytesIO\n", + "\n", + "buffer = io.BytesIO()\n", + "wordcloud.to_image().save(buffer, 'png')\n", + "b64 = str(base64.b64encode(buffer.getvalue()).decode(\"ascii\"))\n", + "b64" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A partir dos b64 seria depois possível voltar a mostrar a imagem." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "from io import BytesIO\n", + "from PIL import Image\n", + "\n", + "img1 = Image.open(io.BytesIO(base64.b64decode(b64)))\n", + "img1" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Usage (Command Line)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "Usage: yake [OPTIONS]\n", + "\n", + "Options:\n", + " --help Show this message and exit.\n", + " -ti, --text_input TEXT Input text, SURROUNDED by single quotes(')\n", + " -i, --input_file TEXT Input file\n", + " -l, --language TEXT Language\n", + " -n, --ngram-size INTEGER Max size of the ngram.\n", + " -df, --dedup-func [leve|jaro|seqm] Deduplication function.\n", + " -dl, --dedup-lim FLOAT Deduplication limiar.\n", + " -ws, --window-size INTEGER Window size.\n", + " -t, --top INTEGER Number of keyphrases to extract\n", + " -v, --verbose Gets detailed information (such as the score)\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "A few examples:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```\n", + "yake -i text.txt -l en -n 3\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## API" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### API Docs" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "http://tm-websuiteapps.ipt.pt/yake/apidocs ou http://yake.inesctec.pt/apidocs/" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "### Code" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Extract Keywords from Text" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"\n", + "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords\"\n", + "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords\"" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://boiling-castle-88317.herokuapp.com/v2/extract_keywords\"" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'keywords': [{'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", + " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", + " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", + " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", + " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", + " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", + " {'ngram': 'plataforma', 'score': 0.14041950406587828},\n", + " {'ngram': 'Universidade', 'score': 0.15430157935310973},\n", + " {'ngram': 'docente', 'score': 0.16062340283143323},\n", + " {'ngram': 'fontes', 'score': 0.22178899197855695},\n", + " {'ngram': 'Web', 'score': 0.24221396811318066},\n", + " {'ngram': 'Prémio', 'score': 0.26491441089796414},\n", + " {'ngram': 'TSF', 'score': 0.2814604328980921},\n", + " {'ngram': 'Tomar', 'score': 0.3296342992141605},\n", + " {'ngram': 'Arian', 'score': 0.3296342992141605},\n", + " {'ngram': 'Mangaravite', 'score': 0.3296342992141605},\n", + " {'ngram': 'Alípio', 'score': 0.3296342992141605},\n", + " {'ngram': 'Jorge', 'score': 0.3296342992141605},\n", + " {'ngram': 'Porto', 'score': 0.3296342992141605},\n", + " {'ngram': 'Kyoto', 'score': 0.3296342992141605},\n", + " {'ngram': 'Ricardo', 'score': 0.35667154152030806},\n", + " {'ngram': 'Campos', 'score': 0.35667154152030806},\n", + " {'ngram': 'Instituto', 'score': 0.35667154152030806},\n", + " {'ngram': 'Politécnico', 'score': 0.35667154152030806},\n", + " {'ngram': 'Pasquali', 'score': 0.35667154152030806},\n", + " {'ngram': 'Vitor', 'score': 0.35667154152030806},\n", + " {'ngram': 'Faculdade', 'score': 0.35667154152030806},\n", + " {'ngram': 'Ciências', 'score': 0.35667154152030806},\n", + " {'ngram': 'Adam', 'score': 0.35667154152030806},\n", + " {'ngram': 'Jatwot', 'score': 0.35667154152030806}],\n", + " 'message': 'success',\n", + " 'params': {'language': 'pt',\n", + " 'max_ngram_size': 1,\n", + " 'number_of_keywords': 30,\n", + " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}" + ] + }, + "execution_count": 8, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import requests\n", + "\n", + "text = '''\n", + "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", + "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", + "'''\n", + "\n", + "payload = {'content': text, 'max_ngram_size': 1, 'number_of_keywords': 30}\n", + "r = requests.post(url_api, data=payload)\n", + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "Conta-me\n", + "Histórias\n", + "LIAAD\n", + "INESC\n", + "TEC\n", + "Arquivo.pt\n", + "plataforma\n", + "Universidade\n", + "docente\n", + "fontes\n", + "Web\n", + "Prémio\n", + "TSF\n", + "Tomar\n", + "Arian\n", + "Mangaravite\n", + "Alípio\n", + "Jorge\n", + "Porto\n", + "Kyoto\n", + "Ricardo\n", + "Campos\n", + "Instituto\n", + "Politécnico\n", + "Pasquali\n", + "Vitor\n", + "Faculdade\n", + "Ciências\n", + "Adam\n", + "Jatwot\n" + ] + } + ], + "source": [ + "for ele in content['keywords']:\n", + " print(ele['ngram'])" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "In case you want to tag the keywords in the text, please specify the tag as follows: \n", + "- `preTag` (e.g. `` or ``) \n", + "- `posTag` (e.g., `` or ``)." + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "'\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui. A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.'" + ] + }, + "execution_count": 12, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "import requests\n", + "\n", + "text = '''\n", + "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", + "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", + "'''\n", + "\n", + "payload = {'content': text, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", + "r = requests.post(url_api, data=payload)\n", + "content = r.json()\n", + "content['highlighted_text']" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "To get a better visualization of the results:" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "{'highlighted_text': '\"Conta-me Histórias.\" Xutos inspiram '\n", + " 'projeto premiado. A plataforma \"Conta-me '\n", + " 'Histórias\" foi distinguida com o Prémio '\n", + " 'Arquivo.pt, atribuído a trabalhos inovadores de '\n", + " 'investigação ou aplicação de recursos preservados da '\n", + " 'Web, através dos serviços de pesquisa e acesso '\n", + " 'disponibilizados publicamente pelo Arquivo.pt . '\n", + " 'Nesta plataforma em desenvolvimento, o utilizador pode '\n", + " 'pesquisar sobre qualquer tema e ainda executar alguns '\n", + " 'exemplos predefinidos. Como forma de garantir a '\n", + " 'pluralidade e diversidade de fontes de informação, esta '\n", + " 'são utilizadas 24 fontes de notícias eletrónicas, '\n", + " 'incluindo a TSF. Uma versão experimental (beta) do '\n", + " '\"Conta-me Histórias\" está disponível aqui. A '\n", + " 'plataforma foi desenvolvida por Ricardo Campos '\n", + " 'investigador do LIAAD do INESC '\n", + " 'TEC e docente do Instituto Politécnico de '\n", + " 'Tomar, Arian Pasquali e Vitor '\n", + " 'Mangaravite, também investigadores do LIAAD do '\n", + " 'INESC TEC, Alípio Jorge, '\n", + " 'coordenador do LIAAD do INESC TEC e '\n", + " 'docente na Faculdade de Ciências da '\n", + " 'Universidade do Porto, e Adam Jatwot '\n", + " 'docente da Universidade de Kyoto.',\n", + " 'keywords': [{'ngram': 'Conta-me Histórias', 'score': 0.006225012963810038},\n", + " {'ngram': 'LIAAD do INESC', 'score': 0.01899063587015275},\n", + " {'ngram': 'INESC TEC', 'score': 0.01995432290332246},\n", + " {'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", + " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", + " {'ngram': 'Prémio Arquivo.pt', 'score': 0.05749361520927859},\n", + " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", + " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", + " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", + " {'ngram': 'Xutos inspiram projeto', 'score': 0.08720742489353424},\n", + " {'ngram': 'inspiram projeto premiado',\n", + " 'score': 0.08720742489353424},\n", + " {'ngram': 'Adam Jatwot docente', 'score': 0.09407053486771558},\n", + " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", + " {'ngram': 'Alípio Jorge', 'score': 0.12190479662535166},\n", + " {'ngram': 'Ciências da Universidade',\n", + " 'score': 0.12368384021490342},\n", + " {'ngram': 'Ricardo Campos investigador',\n", + " 'score': 0.12789997272332762},\n", + " {'ngram': 'Politécnico de Tomar', 'score': 0.13323587141127738},\n", + " {'ngram': 'Arian Pasquali', 'score': 0.13323587141127738},\n", + " {'ngram': 'Vitor Mangaravite', 'score': 0.13323587141127738},\n", + " {'ngram': 'preservados da Web', 'score': 0.13596322680882506}],\n", + " 'message': 'success',\n", + " 'params': {'language': 'pt',\n", + " 'max_ngram_size': 3,\n", + " 'number_of_keywords': 20,\n", + " 'posTag': '',\n", + " 'preTag': '',\n", + " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}\n" + ] + } + ], + "source": [ + "import pprint\n", + "content = r.json()\n", + "pprint.pprint(content)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### Extract Keywords from URL" + ] + }, + { + "cell_type": "code", + "execution_count": 17, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"\n", + "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords_by_url\"\n", + "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Ftechcrunch.com%2F2017%2F03%2F07%2Fgoogle-is-acquiring-data-science-community-kaggle%2F&max_ngram_size=3&number_of_keywords=3&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" + ] + } + ], + "source": [ + "import requests\n", + "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", + "#url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", + "url = \"https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/\"\n", + "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 3, 'preTag':\"\", 'posTag':''}\n", + "r = requests.get(url_api, params=payload)\n", + "print(r.url)" + ] + }, + { + "cell_type": "code", + "execution_count": 19, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", + " 'message': 'insuccess',\n", + " 'params': {'max_ngram_size': 3,\n", + " 'number_of_keywords': 3,\n", + " 'posTag': '',\n", + " 'preTag': '',\n", + " 'url': 'https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/'},\n", + " 'result': []}" + ] + }, + "execution_count": 19, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Fwww.publico.pt%2F2019%2F01%2F10%2Fmundo%2Fnoticia%2Fmaduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373&max_ngram_size=3&number_of_keywords=20\n" + ] + } + ], + "source": [ + "import requests\n", + "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", + "url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", + "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20}\n", + "r = requests.get(url_api, params=payload)\n", + "print(r.url)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", + " 'message': 'insuccess',\n", + " 'params': {'max_ngram_size': 3,\n", + " 'number_of_keywords': 20,\n", + " 'url': 'https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373'},\n", + " 'result': []}" + ] + }, + "execution_count": 13, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Again there is a chance to get the text labelled with the tags." + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=http%3A%2F%2Fneurosciencenews.com%2Fgenetics-brain-aging-6250&max_ngram_size=3&number_of_keywords=20&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" + ] + } + ], + "source": [ + "import requests\n", + "url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", + "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", + "r = requests.get(url_api, params=payload)\n", + "print(r.url)" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", + " 'message': 'insuccess',\n", + " 'params': {'max_ngram_size': 3,\n", + " 'number_of_keywords': 20,\n", + " 'posTag': '',\n", + " 'preTag': '',\n", + " 'url': 'http://neurosciencenews.com/genetics-brain-aging-6250'},\n", + " 'result': []}" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "content = r.json()\n", + "content" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "#### WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Para poder gerar uma word cloud a partir de resultados obtidos da API começamos por criar uma lista composta apenas pelas keywords (e respetivos scores):" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "[('Columbia University Medical', 0.00529347656322898),\n", + " ('University Medical Center', 0.0056204056835212944),\n", + " ('Brain Aging', 0.007981486613454188),\n", + " ('Brain Aging Gene', 0.008561464903059477),\n", + " ('Gene Discovered Summary', 0.011117241458580198),\n", + " ('Aging Gene Discovered', 0.011543956129580845),\n", + " ('Brain', 0.01423327097089573),\n", + " ('Aging', 0.015001419612135828),\n", + " ('University Medical', 0.015066192388173577),\n", + " ('normal brain aging', 0.015170215216394334),\n", + " ('Columbia University', 0.015967452701775162),\n", + " ('Medical Center', 0.016898333782857357),\n", + " ('Aging Gene', 0.024664710351924097),\n", + " ('Discovered Summary', 0.028839657817467175),\n", + " ('disease', 0.029978432676500924),\n", + " ('Gene Discovered', 0.036645602314177926),\n", + " ('Gene', 0.036950964796584024),\n", + " ('brain disease', 0.043948285235841565),\n", + " ('University', 0.047988124236656333),\n", + " ('Medical', 0.047988124236656333)]" + ] + }, + "execution_count": 14, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "keywords = [(kw['ngram'],kw['score']) for kw in content['keywords']]\n", + "keywords" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "De seguida balizamos os valores entre [0,1]:" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "{'Columbia University Medical': 1.0,\n", + " 'University Medical Center': 0.992342620489739,\n", + " 'Brain Aging': 0.9370410532302345,\n", + " 'Brain Aging Gene': 0.9234567207386875,\n", + " 'Gene Discovered Summary': 0.8635949653479431,\n", + " 'Aging Gene Discovered': 0.8536003947342071,\n", + " 'Brain': 0.7906108869653287,\n", + " 'Aging': 0.7726192022203064,\n", + " 'University Medical': 0.771102085214606,\n", + " 'normal brain aging': 0.7686656480055105,\n", + " 'Columbia University': 0.7499926402908452,\n", + " 'Medical Center': 0.7281894136146929,\n", + " 'Aging Gene': 0.5462842570603634,\n", + " 'Discovered Summary': 0.4484980545022026,\n", + " 'disease': 0.42182551072706065,\n", + " 'Gene Discovered': 0.2656661324210402,\n", + " 'Gene': 0.2585138897150733,\n", + " 'brain disease': 0.09462167322975978,\n", + " 'University': 0.0,\n", + " 'Medical': 0.0}" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for item in keywords])\n", + " min_value = min([item[1] for item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = (item[1] - float(min_value))/(float(max_value) - float(min_value))\n", + " result[item[0]] = abs(1 - normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "```python\n", + "def normalize_scores(keywords):\n", + " if len(keywords) == 0:\n", + " return {}\n", + " max_value = max([item[1] for\n", + " item in keywords])\n", + " \n", + " result = {}\n", + " for item in keywords:\n", + " normalized_score = 1 - item[1]/float(max_value)\n", + " result[item[0]] = abs(normalized_score)\n", + "\n", + " return result\n", + "\n", + "keyword2WordCloud = normalize_scores(keywords)\n", + "keyword2WordCloud\n", + "```" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." + ] + }, + { + "cell_type": "code", + "execution_count": null, + "metadata": {}, + "outputs": [], + "source": [ + "!pip install matplotlib\n", + "!pip install wordcloud" + ] + }, + { + "cell_type": "code", + "execution_count": 16, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "(-0.5, 999.5, 499.5, -0.5)" + ] + }, + "execution_count": 16, + "metadata": {}, + "output_type": "execute_result" + }, + { + "data": { + "image/png": "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WNUipqVIGT3krMFWGRcnqDFducJ89fFIjPQ4IuQmCywhxOOz+toNQpD9+7+FYlvUzl+k+tkXrT/Zp48TO3MCYRjkv/9DvLnmQkxViD1/htiZE7hTM5R++f6mLqpKIo55cB/G8CBqKhm62Pk+QbWKt7iEMzmDMzaBbGzhHy4Eem831rHD6D2he6FsNHCmZ6lfvIq3sIhiW2R+6zsIw6B6/gK1z9utKULTSLz+EubhAzu6TbLRoPA3P8fbos4kisDcN4I5OozamQuteaqCdFz8chlvbpHGrTHc6Y2LVQvDwD5+GGPfSHi/BPi1Ot78AvVrN3GnZgFJ7PQJYi+coX7tJuW/fW+NEFBiNsmvv4Xe272ja/WW85R+/Lf4G4n3B4WqoHV0YO4bDjcXEnEUy0QGAbIplN25BZyxCbyl5U1FnojZmCNDGCODaLkMwrQgCDcW/KVlnKlZnPEJgvLaJDjCMom/9DzWkbCPLP/ZX93NQLoOxugQybdeA1WlcfU65V99tK3LFYaOOTocbi50ZFEMg8Bxw3GxsETj2s1N+8kKSjyGMTqMOTKImk0jDBOCsN6kt7QcxjiOT2yaBEfr7Sb5lddQkwmcyWmKP/jptq4hIiIiIiLicSJnDXEo8zopo6tVC3YrpAyo+xXyjSluFj6mtI1yQk8SumLRnzjOUPIUMS3dis3cikD6lN1FZirXuFM63yod86wipdzQFe3pFosRERERERERERERTwWClNFNb/wQKaM7LPegWGiKjkBFIpHSx5cujl+nEVSounnyjWkWare3Va/ySUQTBjl7iC57lITeiakmMFQLRWgIBJKAQPphEpygRt0rU/aWWaje2lFW2aeZSCxGREREREREREREPAUoQiOmZYhpaQzVDsWiUJEyFIuedHH8Gg2/TNUr4AVPR/bTrdAVi7iexVKTGKodikUhkHJFLDZw/Bo1v0jVKyJ3kFH2aScSixERERERERERERERERFr2EwsPh655iMiIiIiIiIiIiIiIiIeKyKxGBEREREREREREREREbGGSCxGRERERERERERERERErCESixERERERERERERERERFriMRiRERERERERERERERExBoisRgRERERERERERERERGxBu1RN+BpR00kSZw8jWLHtv6ylLhLC5TPf/7A2/W0Yw4METt89O4HUlK5fBFnZurRNWo9FBVz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\n", + "text/plain": [ + "
    " + ] + }, + "metadata": { + "needs_background": "light" + }, + "output_type": "display_data" + } + ], + "source": [ + "from wordcloud import WordCloud\n", + "import matplotlib.pyplot as plt\n", + "\n", + "wordcloud = WordCloud(max_font_size=100, max_words = 20, width = 1000, height = 500).generate_from_frequencies(keyword2WordCloud) #Objeto que permite gerar wordcloud a partir de texto\n", + "plt.figure(figsize=(16,9))\n", + "plt.imshow(wordcloud, interpolation=\"bilinear\") #imshow plota imagens que derivam de arrays\n", + "plt.axis(\"off\")" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Related Projects" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- [Spark NLP](https://www.johnsnowlabs.com/spark-nlp-in-action/)\n", + "- [Spark NLP Keywords Extraction Demo](https://demo.johnsnowlabs.com/public/KEYPHRASE_EXTRACTION/)\n", + "- [kaggle](https://www.youtube.com/watch?v=6TBvZmg7AsA)\n", + "- [textacy](https://github.com/chartbeat-labs/textacy/search?q=yake)\n", + "- [pke - pyhton keyphrase extraction](https://github.com/boudinfl/pke)\n", + "- [docker](https://github.com/LIAAD/yake#option-1-yake-as-a-cli-utility-inside-a-docker-container)\n", + "- [dendro](http://dendro-stg.inesctec.pt/)\n", + "- [conta-me histórias](http://contamehistorias.pt)\n", + "- [time-matters](http://time-matters.inesctec.pt)\n", + "- [The General Index](https://archive.org/details/GeneralIndex)\n", + "- [Nature. Giant, free index to world’s research papers released online](https://www.nature.com/articles/d41586-021-02895-8)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Awards" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "[ECIR'18](http://ecir2018.org) Best Short Paper (see the below reference)." + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## References" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "Please cite the following works when using YAKE:" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "**In-depth journal paper at Information Sciences Journal**\n", + "\n", + "- Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013)\n", + "\n", + "**ECIR'18 Best Short Paper**\n", + "\n", + "- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63)\n", + "\n", + "- Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80)" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "## Media" + ] + }, + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "- [INESC TEC technology used to create a database of keywords obtained from more than 100 million scientific articles](https://bip.inesctec.pt/en/noticias/inesc-tec-technology-used-to-create-a-database-of-keywords-obtained-from-more-than-100-million-scientific-articles/)\n", + "- [This tool can extract keywords from texts in every language about any topic](https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276?returnurl=https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276)\n", + "- [Apps do YAKE! e Conta-me Histórias já estão disponíveis no Google Play](https://bip.inesctec.pt/noticias/apps-do-yake-e-conta-me-historias-ja-estao-disponiveis-no-google-play/)\n", + "- [INESC TEC team wins another Best Paper Award](https://www.inesctec.pt/en/news/inesc-tec-team-wins-another-best-paper-award#about)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3 (ipykernel)", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.12.3" + }, + "toc": { + "base_numbering": 1, + "nav_menu": {}, + "number_sections": true, + "sideBar": true, + "skip_h1_title": true, + "title_cell": "Table of Contents", + "title_sidebar": "Contents", + "toc_cell": true, + "toc_position": { + "height": "calc(100% - 180px)", + "left": "10px", + "top": "150px", + "width": "255px" + }, + "toc_section_display": true, + "toc_window_display": true + } + }, + "nbformat": 4, + "nbformat_minor": 4 +} From 921fbd3cc45aa5105d74ac39c6b48166e2f012cd Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:38:32 +0100 Subject: [PATCH 102/122] updated collab redirections and notebook --- README.md | 2 +- docs-site/content/docs/gettingstarted.mdx | 2 +- docs-site/content/docs/home.mdx | 2 +- docs-site/public/1YAKE.ipynb | 678 +--------------------- 4 files changed, 5 insertions(+), 679 deletions(-) diff --git a/README.md b/README.md index afed494a..37506ce3 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # YAKE! (Yet Another Keyword Extractor) -[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![ECIR'18 Best Short Paper](https://img.shields.io/badge/ECIR'18-Best%20Short%20Paper-brightgreen.svg)](http://ecir2018.org) [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) YAKE! is a lightweight unsupervised automatic keyword extraction method that uses text statistical features to select the most important keywords from a document. It requires no training, external corpus, or dictionaries, and works across multiple languages and domains regardless of text size. diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/gettingstarted.mdx index b464c53c..916425d0 100644 --- a/docs-site/content/docs/gettingstarted.mdx +++ b/docs-site/content/docs/gettingstarted.mdx @@ -1,6 +1,6 @@ # Quick Start -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) ## Installing YAKE! diff --git a/docs-site/content/docs/home.mdx b/docs-site/content/docs/home.mdx index 4ab68ec0..2895187b 100644 --- a/docs-site/content/docs/home.mdx +++ b/docs-site/content/docs/home.mdx @@ -4,7 +4,7 @@ --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. -[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/LIAAD/yake/blob/gh-pages/notebooks/YAKE_tutorial.ipynb) +[![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) --- ## Background diff --git a/docs-site/public/1YAKE.ipynb b/docs-site/public/1YAKE.ipynb index 3e7f0287..614d977c 100644 --- a/docs-site/public/1YAKE.ipynb +++ b/docs-site/public/1YAKE.ipynb @@ -38,7 +38,7 @@ }, "source": [ "

    Table of Contents

    \n", - "" + "
    • 1  YAKE - Yet Another Keyword Extractor
    • 2  Package
      • 2.1  Installation
      • 2.2  Usage (Python)
      • 2.3  Usage (Command Line)" ] }, { @@ -571,7 +571,7 @@ }, { "data": { - "image/png": "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\n", + "image/png": "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", "text/plain": [ "
        " ] @@ -679,680 +679,6 @@ "```" ] }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "## API" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### API Docs" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "http://tm-websuiteapps.ipt.pt/yake/apidocs ou http://yake.inesctec.pt/apidocs/" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "### Code" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Extract Keywords from Text" - ] - }, - { - "cell_type": "code", - "execution_count": 7, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"\n", - "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords\"\n", - "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords\"" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://boiling-castle-88317.herokuapp.com/v2/extract_keywords\"" - ] - }, - { - "cell_type": "code", - "execution_count": 8, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'keywords': [{'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", - " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", - " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", - " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", - " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", - " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", - " {'ngram': 'plataforma', 'score': 0.14041950406587828},\n", - " {'ngram': 'Universidade', 'score': 0.15430157935310973},\n", - " {'ngram': 'docente', 'score': 0.16062340283143323},\n", - " {'ngram': 'fontes', 'score': 0.22178899197855695},\n", - " {'ngram': 'Web', 'score': 0.24221396811318066},\n", - " {'ngram': 'Prémio', 'score': 0.26491441089796414},\n", - " {'ngram': 'TSF', 'score': 0.2814604328980921},\n", - " {'ngram': 'Tomar', 'score': 0.3296342992141605},\n", - " {'ngram': 'Arian', 'score': 0.3296342992141605},\n", - " {'ngram': 'Mangaravite', 'score': 0.3296342992141605},\n", - " {'ngram': 'Alípio', 'score': 0.3296342992141605},\n", - " {'ngram': 'Jorge', 'score': 0.3296342992141605},\n", - " {'ngram': 'Porto', 'score': 0.3296342992141605},\n", - " {'ngram': 'Kyoto', 'score': 0.3296342992141605},\n", - " {'ngram': 'Ricardo', 'score': 0.35667154152030806},\n", - " {'ngram': 'Campos', 'score': 0.35667154152030806},\n", - " {'ngram': 'Instituto', 'score': 0.35667154152030806},\n", - " {'ngram': 'Politécnico', 'score': 0.35667154152030806},\n", - " {'ngram': 'Pasquali', 'score': 0.35667154152030806},\n", - " {'ngram': 'Vitor', 'score': 0.35667154152030806},\n", - " {'ngram': 'Faculdade', 'score': 0.35667154152030806},\n", - " {'ngram': 'Ciências', 'score': 0.35667154152030806},\n", - " {'ngram': 'Adam', 'score': 0.35667154152030806},\n", - " {'ngram': 'Jatwot', 'score': 0.35667154152030806}],\n", - " 'message': 'success',\n", - " 'params': {'language': 'pt',\n", - " 'max_ngram_size': 1,\n", - " 'number_of_keywords': 30,\n", - " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}" - ] - }, - "execution_count": 8, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import requests\n", - "\n", - "text = '''\n", - "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", - "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", - "'''\n", - "\n", - "payload = {'content': text, 'max_ngram_size': 1, 'number_of_keywords': 30}\n", - "r = requests.post(url_api, data=payload)\n", - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "code", - "execution_count": 11, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Conta-me\n", - "Histórias\n", - "LIAAD\n", - "INESC\n", - "TEC\n", - "Arquivo.pt\n", - "plataforma\n", - "Universidade\n", - "docente\n", - "fontes\n", - "Web\n", - "Prémio\n", - "TSF\n", - "Tomar\n", - "Arian\n", - "Mangaravite\n", - "Alípio\n", - "Jorge\n", - "Porto\n", - "Kyoto\n", - "Ricardo\n", - "Campos\n", - "Instituto\n", - "Politécnico\n", - "Pasquali\n", - "Vitor\n", - "Faculdade\n", - "Ciências\n", - "Adam\n", - "Jatwot\n" - ] - } - ], - "source": [ - "for ele in content['keywords']:\n", - " print(ele['ngram'])" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "In case you want to tag the keywords in the text, please specify the tag as follows: \n", - "- `preTag` (e.g. `` or ``) \n", - "- `posTag` (e.g., `` or ``)." - ] - }, - { - "cell_type": "code", - "execution_count": 5, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords\"" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "'\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui. A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.'" - ] - }, - "execution_count": 12, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "import requests\n", - "\n", - "text = '''\n", - "\"Conta-me Histórias.\" Xutos inspiram projeto premiado. A plataforma \"Conta-me Histórias\" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do \"Conta-me Histórias\" está disponível aqui.\n", - "A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.\n", - "'''\n", - "\n", - "payload = {'content': text, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", - "r = requests.post(url_api, data=payload)\n", - "content = r.json()\n", - "content['highlighted_text']" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "To get a better visualization of the results:" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "{'highlighted_text': '\"Conta-me Histórias.\" Xutos inspiram '\n", - " 'projeto premiado. A plataforma \"Conta-me '\n", - " 'Histórias\" foi distinguida com o Prémio '\n", - " 'Arquivo.pt, atribuído a trabalhos inovadores de '\n", - " 'investigação ou aplicação de recursos preservados da '\n", - " 'Web, através dos serviços de pesquisa e acesso '\n", - " 'disponibilizados publicamente pelo Arquivo.pt . '\n", - " 'Nesta plataforma em desenvolvimento, o utilizador pode '\n", - " 'pesquisar sobre qualquer tema e ainda executar alguns '\n", - " 'exemplos predefinidos. Como forma de garantir a '\n", - " 'pluralidade e diversidade de fontes de informação, esta '\n", - " 'são utilizadas 24 fontes de notícias eletrónicas, '\n", - " 'incluindo a TSF. Uma versão experimental (beta) do '\n", - " '\"Conta-me Histórias\" está disponível aqui. A '\n", - " 'plataforma foi desenvolvida por Ricardo Campos '\n", - " 'investigador do LIAAD do INESC '\n", - " 'TEC e docente do Instituto Politécnico de '\n", - " 'Tomar, Arian Pasquali e Vitor '\n", - " 'Mangaravite, também investigadores do LIAAD do '\n", - " 'INESC TEC, Alípio Jorge, '\n", - " 'coordenador do LIAAD do INESC TEC e '\n", - " 'docente na Faculdade de Ciências da '\n", - " 'Universidade do Porto, e Adam Jatwot '\n", - " 'docente da Universidade de Kyoto.',\n", - " 'keywords': [{'ngram': 'Conta-me Histórias', 'score': 0.006225012963810038},\n", - " {'ngram': 'LIAAD do INESC', 'score': 0.01899063587015275},\n", - " {'ngram': 'INESC TEC', 'score': 0.01995432290332246},\n", - " {'ngram': 'Conta-me', 'score': 0.04513273690417472},\n", - " {'ngram': 'Histórias', 'score': 0.04513273690417472},\n", - " {'ngram': 'Prémio Arquivo.pt', 'score': 0.05749361520927859},\n", - " {'ngram': 'LIAAD', 'score': 0.07738867367929901},\n", - " {'ngram': 'INESC', 'score': 0.07738867367929901},\n", - " {'ngram': 'TEC', 'score': 0.08109398065524037},\n", - " {'ngram': 'Xutos inspiram projeto', 'score': 0.08720742489353424},\n", - " {'ngram': 'inspiram projeto premiado',\n", - " 'score': 0.08720742489353424},\n", - " {'ngram': 'Adam Jatwot docente', 'score': 0.09407053486771558},\n", - " {'ngram': 'Arquivo.pt', 'score': 0.10261392141666957},\n", - " {'ngram': 'Alípio Jorge', 'score': 0.12190479662535166},\n", - " {'ngram': 'Ciências da Universidade',\n", - " 'score': 0.12368384021490342},\n", - " {'ngram': 'Ricardo Campos investigador',\n", - " 'score': 0.12789997272332762},\n", - " {'ngram': 'Politécnico de Tomar', 'score': 0.13323587141127738},\n", - " {'ngram': 'Arian Pasquali', 'score': 0.13323587141127738},\n", - " {'ngram': 'Vitor Mangaravite', 'score': 0.13323587141127738},\n", - " {'ngram': 'preservados da Web', 'score': 0.13596322680882506}],\n", - " 'message': 'success',\n", - " 'params': {'language': 'pt',\n", - " 'max_ngram_size': 3,\n", - " 'number_of_keywords': 20,\n", - " 'posTag': '',\n", - " 'preTag': '',\n", - " 'text': '\\n\"Conta-me Histórias.\" Xutos inspiram projeto prem...'}}\n" - ] - } - ], - "source": [ - "import pprint\n", - "content = r.json()\n", - "pprint.pprint(content)" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### Extract Keywords from URL" - ] - }, - { - "cell_type": "code", - "execution_count": 17, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"\n", - "#url_api = \"http://yake.inesctec.pt/yake/v2/extract_keywords_by_url\"\n", - "#url_api = \"http://studiucodex.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" - ] - }, - { - "cell_type": "code", - "execution_count": 18, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Ftechcrunch.com%2F2017%2F03%2F07%2Fgoogle-is-acquiring-data-science-community-kaggle%2F&max_ngram_size=3&number_of_keywords=3&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" - ] - } - ], - "source": [ - "import requests\n", - "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", - "#url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", - "url = \"https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/\"\n", - "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 3, 'preTag':\"\", 'posTag':''}\n", - "r = requests.get(url_api, params=payload)\n", - "print(r.url)" - ] - }, - { - "cell_type": "code", - "execution_count": 19, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", - " 'message': 'insuccess',\n", - " 'params': {'max_ngram_size': 3,\n", - " 'number_of_keywords': 3,\n", - " 'posTag': '',\n", - " 'preTag': '',\n", - " 'url': 'https://techcrunch.com/2017/03/07/google-is-acquiring-data-science-community-kaggle/'},\n", - " 'result': []}" - ] - }, - "execution_count": 19, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "code", - "execution_count": 12, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=https%3A%2F%2Fwww.publico.pt%2F2019%2F01%2F10%2Fmundo%2Fnoticia%2Fmaduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373&max_ngram_size=3&number_of_keywords=20\n" - ] - } - ], - "source": [ - "import requests\n", - "#url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", - "url = \"https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373\"\n", - "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20}\n", - "r = requests.get(url_api, params=payload)\n", - "print(r.url)" - ] - }, - { - "cell_type": "code", - "execution_count": 13, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", - " 'message': 'insuccess',\n", - " 'params': {'max_ngram_size': 3,\n", - " 'number_of_keywords': 20,\n", - " 'url': 'https://www.publico.pt/2019/01/10/mundo/noticia/maduro-tomou-posse-nicolas-maduro-presidente-democrata-profundo-1857373'},\n", - " 'result': []}" - ] - }, - "execution_count": 13, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Again there is a chance to get the text labelled with the tags." - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [], - "source": [ - "url_api = \"https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url\"" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "https://tm-websuiteapps.ipt.pt/yake/api/v2.0/extract_keywords_by_url?url=http%3A%2F%2Fneurosciencenews.com%2Fgenetics-brain-aging-6250&max_ngram_size=3&number_of_keywords=20&preTag=%3Ckw%3E&posTag=%3C%2Fkw%3E\n" - ] - } - ], - "source": [ - "import requests\n", - "url = \"http://neurosciencenews.com/genetics-brain-aging-6250\"\n", - "payload = {'url': url, 'max_ngram_size': 3, 'number_of_keywords': 20, 'preTag':\"\", 'posTag':''}\n", - "r = requests.get(url_api, params=payload)\n", - "print(r.url)" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'desc': 'Newspaper3k package could not extract text from the given URL. Try with another one.',\n", - " 'message': 'insuccess',\n", - " 'params': {'max_ngram_size': 3,\n", - " 'number_of_keywords': 20,\n", - " 'posTag': '',\n", - " 'preTag': '',\n", - " 'url': 'http://neurosciencenews.com/genetics-brain-aging-6250'},\n", - " 'result': []}" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "content = r.json()\n", - "content" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "#### WordCloud" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Para poder gerar uma word cloud a partir de resultados obtidos da API começamos por criar uma lista composta apenas pelas keywords (e respetivos scores):" - ] - }, - { - "cell_type": "code", - "execution_count": 14, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "[('Columbia University Medical', 0.00529347656322898),\n", - " ('University Medical Center', 0.0056204056835212944),\n", - " ('Brain Aging', 0.007981486613454188),\n", - " ('Brain Aging Gene', 0.008561464903059477),\n", - " ('Gene Discovered Summary', 0.011117241458580198),\n", - " ('Aging Gene Discovered', 0.011543956129580845),\n", - " ('Brain', 0.01423327097089573),\n", - " ('Aging', 0.015001419612135828),\n", - " ('University Medical', 0.015066192388173577),\n", - " ('normal brain aging', 0.015170215216394334),\n", - " ('Columbia University', 0.015967452701775162),\n", - " ('Medical Center', 0.016898333782857357),\n", - " ('Aging Gene', 0.024664710351924097),\n", - " ('Discovered Summary', 0.028839657817467175),\n", - " ('disease', 0.029978432676500924),\n", - " ('Gene Discovered', 0.036645602314177926),\n", - " ('Gene', 0.036950964796584024),\n", - " ('brain disease', 0.043948285235841565),\n", - " ('University', 0.047988124236656333),\n", - " ('Medical', 0.047988124236656333)]" - ] - }, - "execution_count": 14, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "keywords = [(kw['ngram'],kw['score']) for kw in content['keywords']]\n", - "keywords" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "De seguida balizamos os valores entre [0,1]:" - ] - }, - { - "cell_type": "code", - "execution_count": 15, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "{'Columbia University Medical': 1.0,\n", - " 'University Medical Center': 0.992342620489739,\n", - " 'Brain Aging': 0.9370410532302345,\n", - " 'Brain Aging Gene': 0.9234567207386875,\n", - " 'Gene Discovered Summary': 0.8635949653479431,\n", - " 'Aging Gene Discovered': 0.8536003947342071,\n", - " 'Brain': 0.7906108869653287,\n", - " 'Aging': 0.7726192022203064,\n", - " 'University Medical': 0.771102085214606,\n", - " 'normal brain aging': 0.7686656480055105,\n", - " 'Columbia University': 0.7499926402908452,\n", - " 'Medical Center': 0.7281894136146929,\n", - " 'Aging Gene': 0.5462842570603634,\n", - " 'Discovered Summary': 0.4484980545022026,\n", - " 'disease': 0.42182551072706065,\n", - " 'Gene Discovered': 0.2656661324210402,\n", - " 'Gene': 0.2585138897150733,\n", - " 'brain disease': 0.09462167322975978,\n", - " 'University': 0.0,\n", - " 'Medical': 0.0}" - ] - }, - "execution_count": 15, - "metadata": {}, - "output_type": "execute_result" - } - ], - "source": [ - "def normalize_scores(keywords):\n", - " if len(keywords) == 0:\n", - " return {}\n", - " max_value = max([item[1] for item in keywords])\n", - " min_value = min([item[1] for item in keywords])\n", - " \n", - " result = {}\n", - " for item in keywords:\n", - " normalized_score = (item[1] - float(min_value))/(float(max_value) - float(min_value))\n", - " result[item[0]] = abs(1 - normalized_score)\n", - "\n", - " return result\n", - "\n", - "keyword2WordCloud = normalize_scores(keywords)\n", - "keyword2WordCloud" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "```python\n", - "def normalize_scores(keywords):\n", - " if len(keywords) == 0:\n", - " return {}\n", - " max_value = max([item[1] for\n", - " item in keywords])\n", - " \n", - " result = {}\n", - " for item in keywords:\n", - " normalized_score = 1 - item[1]/float(max_value)\n", - " result[item[0]] = abs(normalized_score)\n", - "\n", - " return result\n", - "\n", - "keyword2WordCloud = normalize_scores(keywords)\n", - "keyword2WordCloud\n", - "```" - ] - }, - { - "cell_type": "markdown", - "metadata": {}, - "source": [ - "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." - ] - }, - { - "cell_type": "code", - "execution_count": null, - "metadata": {}, - "outputs": [], - "source": [ - "!pip install matplotlib\n", - "!pip install wordcloud" - ] - }, - { - "cell_type": "code", - "execution_count": 16, - "metadata": {}, - "outputs": [ - { - "data": { - "text/plain": [ - "(-0.5, 999.5, 499.5, -0.5)" - ] - }, - "execution_count": 16, - "metadata": {}, - "output_type": "execute_result" - }, - { - "data": { - "image/png": "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WNUipqVIGT3krMFWGRcnqDFducJ89fFIjPQ4IuQmCywhxOOz+toNQpD9+7+FYlvUzl+k+tkXrT/Zp48TO3MCYRjkv/9DvLnmQkxViD1/htiZE7hTM5R++f6mLqpKIo55cB/G8CBqKhm62Pk+QbWKt7iEMzmDMzaBbGzhHy4Eem831rHD6D2he6FsNHCmZ6lfvIq3sIhiW2R+6zsIw6B6/gK1z9utKULTSLz+EubhAzu6TbLRoPA3P8fbos4kisDcN4I5OozamQuteaqCdFz8chlvbpHGrTHc6Y2LVQvDwD5+GGPfSHi/BPi1Ot78AvVrN3GnZgFJ7PQJYi+coX7tJuW/fW+NEFBiNsmvv4Xe272ja/WW85R+/Lf4G4n3B4WqoHV0YO4bDjcXEnEUy0QGAbIplN25BZyxCbyl5U1FnojZmCNDGCODaLkMwrQgCDcW/KVlnKlZnPEJgvLaJDjCMom/9DzWkbCPLP/ZX93NQLoOxugQybdeA1WlcfU65V99tK3LFYaOOTocbi50ZFEMg8Bxw3GxsETj2s1N+8kKSjyGMTqMOTKImk0jDBOCsN6kt7QcxjiOT2yaBEfr7Sb5lddQkwmcyWmKP/jptq4hIiIiIiLicSJnDXEo8zopo6tVC3YrpAyo+xXyjSluFj6mtI1yQk8SumLRnzjOUPIUMS3dis3cikD6lN1FZirXuFM63yod86wipdzQFe3pFosRERERERERERERTwWClNFNb/wQKaM7LPegWGiKjkBFIpHSx5cujl+nEVSounnyjWkWare3Va/ySUQTBjl7iC57lITeiakmMFQLRWgIBJKAQPphEpygRt0rU/aWWaje2lFW2aeZSCxGREREREREREREPAUoQiOmZYhpaQzVDsWiUJEyFIuedHH8Gg2/TNUr4AVPR/bTrdAVi7iexVKTGKodikUhkHJFLDZw/Bo1v0jVKyJ3kFH2aScSixERERERERERERERERFr2EwsPh655iMiIiIiIiIiIiIiIiIeKyKxGBEREREREREREREREbGGSCxGRERERERERERERERErCESixERERERERERERERERFriMRiRERERERERERERERExBoisRgRERERERERERERERGxBu1RN+BpR00kSZw8jWLHtv6ylLhLC5TPf/7A2/W0Yw4METt89O4HUlK5fBFnZurRNWo9FBVz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\n", - "text/plain": [ - "
        " - ] - }, - "metadata": { - "needs_background": "light" - }, - "output_type": "display_data" - } - ], - "source": [ - "from wordcloud import WordCloud\n", - "import matplotlib.pyplot as plt\n", - "\n", - "wordcloud = WordCloud(max_font_size=100, max_words = 20, width = 1000, height = 500).generate_from_frequencies(keyword2WordCloud) #Objeto que permite gerar wordcloud a partir de texto\n", - "plt.figure(figsize=(16,9))\n", - "plt.imshow(wordcloud, interpolation=\"bilinear\") #imshow plota imagens que derivam de arrays\n", - "plt.axis(\"off\")" - ] - }, { "cell_type": "markdown", "metadata": {}, From 44446e9d58fe9ceaf5545b9b2a04dee70f35cc37 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:48:58 +0100 Subject: [PATCH 103/122] Create meta.json --- docs-site/content/docs/meta.json | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) create mode 100644 docs-site/content/docs/meta.json diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json new file mode 100644 index 00000000..22d45cc2 --- /dev/null +++ b/docs-site/content/docs/meta.json @@ -0,0 +1,26 @@ +{ + "tittle": "Home", + "pages": [ + { + "title": "Home", + "path": "/", + "description": "Welcome to the documentation site for our project. Here you will find all the information you need to get started and make the most of our tools." + }, + { + "title": "Getting Started", + "path": "/getting-started", + "description": "Learn how to set up and use our project quickly and easily." + }, + { + "title": "About", + "path": "/about", + "description": "Learn more about our project, its goals, and the team behind it." + }, + { + "title": "Related Projects", + "path": "/relatedprojects", + "description": "Explore other projects that are related to this one." + } + + ] +} \ No newline at end of file From d1fef9771b2e06dfe33bfc7d6520e57aa7384c85 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:51:04 +0100 Subject: [PATCH 104/122] updated order --- .../content/docs/{gettingstarted.mdx => getting-started.mdx} | 0 docs-site/content/docs/meta.json | 4 ++-- .../docs/{relatedprojects.mdx => related-projects.mdx} | 0 3 files changed, 2 insertions(+), 2 deletions(-) rename docs-site/content/docs/{gettingstarted.mdx => getting-started.mdx} (100%) rename docs-site/content/docs/{relatedprojects.mdx => related-projects.mdx} (100%) diff --git a/docs-site/content/docs/gettingstarted.mdx b/docs-site/content/docs/getting-started.mdx similarity index 100% rename from docs-site/content/docs/gettingstarted.mdx rename to docs-site/content/docs/getting-started.mdx diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json index 22d45cc2..0a41507f 100644 --- a/docs-site/content/docs/meta.json +++ b/docs-site/content/docs/meta.json @@ -3,7 +3,7 @@ "pages": [ { "title": "Home", - "path": "/", + "path": "/home", "description": "Welcome to the documentation site for our project. Here you will find all the information you need to get started and make the most of our tools." }, { @@ -18,7 +18,7 @@ }, { "title": "Related Projects", - "path": "/relatedprojects", + "path": "/related-projects", "description": "Explore other projects that are related to this one." } diff --git a/docs-site/content/docs/relatedprojects.mdx b/docs-site/content/docs/related-projects.mdx similarity index 100% rename from docs-site/content/docs/relatedprojects.mdx rename to docs-site/content/docs/related-projects.mdx From 7343b3ea5f9ed46ff8ca6146c2bb0140b5710b15 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 04:57:56 +0100 Subject: [PATCH 105/122] Delete meta.json --- docs-site/content/docs/meta.json | 26 -------------------------- 1 file changed, 26 deletions(-) delete mode 100644 docs-site/content/docs/meta.json diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json deleted file mode 100644 index 0a41507f..00000000 --- a/docs-site/content/docs/meta.json +++ /dev/null @@ -1,26 +0,0 @@ -{ - "tittle": "Home", - "pages": [ - { - "title": "Home", - "path": "/home", - "description": "Welcome to the documentation site for our project. Here you will find all the information you need to get started and make the most of our tools." - }, - { - "title": "Getting Started", - "path": "/getting-started", - "description": "Learn how to set up and use our project quickly and easily." - }, - { - "title": "About", - "path": "/about", - "description": "Learn more about our project, its goals, and the team behind it." - }, - { - "title": "Related Projects", - "path": "/related-projects", - "description": "Explore other projects that are related to this one." - } - - ] -} \ No newline at end of file From fb3a3cf100ef7e37abeccbcdffc8d98a47b8cbf3 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 05:00:42 +0100 Subject: [PATCH 106/122] Update getting-started.mdx --- docs-site/content/docs/getting-started.mdx | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/docs-site/content/docs/getting-started.mdx b/docs-site/content/docs/getting-started.mdx index 916425d0..cc084de6 100644 --- a/docs-site/content/docs/getting-started.mdx +++ b/docs-site/content/docs/getting-started.mdx @@ -1,4 +1,7 @@ -# Quick Start +--- +title: Getting Started +icon: GitCompareArrows +--- [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) From ab73131cbde5ed4e5781115cd9b8d8d5bfa41e55 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 05:19:13 +0100 Subject: [PATCH 107/122] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 37506ce3..11126cf4 100644 --- a/README.md +++ b/README.md @@ -122,7 +122,7 @@ custom_th = TextHighlighter( ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs) +- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs/home) - 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) - 💻 Pypi: [https://pypi.org/project/yake/](https://pypi.org/project/yake/) From 75a81d73f7dba24bf82edb46dbe4cc2f065edeaf Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 14:50:32 +0100 Subject: [PATCH 108/122] sidebar test --- docs-site/content/docs/getting-started.mdx | 2 -- docs-site/content/docs/home.mdx | 1 - docs-site/content/docs/meta.json | 12 ++++++++++++ 3 files changed, 12 insertions(+), 3 deletions(-) create mode 100644 docs-site/content/docs/meta.json diff --git a/docs-site/content/docs/getting-started.mdx b/docs-site/content/docs/getting-started.mdx index cc084de6..0900cc0b 100644 --- a/docs-site/content/docs/getting-started.mdx +++ b/docs-site/content/docs/getting-started.mdx @@ -2,9 +2,7 @@ title: Getting Started icon: GitCompareArrows --- - [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/github/tiagolv/yakerf/blob/gh-pages/1YAKE.ipynb) - ## Installing YAKE! Installing Yake using pip: diff --git a/docs-site/content/docs/home.mdx b/docs-site/content/docs/home.mdx index 2895187b..bb680788 100644 --- a/docs-site/content/docs/home.mdx +++ b/docs-site/content/docs/home.mdx @@ -1,4 +1,3 @@ - # Yet Another Keyword Extractor (YAKE!) > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json new file mode 100644 index 00000000..c9196720 --- /dev/null +++ b/docs-site/content/docs/meta.json @@ -0,0 +1,12 @@ +{ + "pages": [ + "home", + "getting-started", + "related-projects", + "about", + { + "title": "Documentation", + "type": "separator" + } + ] +} \ No newline at end of file From b0fd5204941a0e09c7f5bc81486c127b8074451d Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:05:01 +0100 Subject: [PATCH 109/122] teste sidebar --- docs-site/content/docs/meta.json | 12 - docs-site/lib/meta.ts | 14 + docs-site/lib/source.ts | 2 +- docs-site/meta.ts | 14 + package-lock.json | 4527 +++++++++++++++++++++++++++--- package.json | 4 + 6 files changed, 4224 insertions(+), 349 deletions(-) delete mode 100644 docs-site/content/docs/meta.json create mode 100644 docs-site/lib/meta.ts create mode 100644 docs-site/meta.ts diff --git a/docs-site/content/docs/meta.json b/docs-site/content/docs/meta.json deleted file mode 100644 index c9196720..00000000 --- a/docs-site/content/docs/meta.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "pages": [ - "home", - "getting-started", - "related-projects", - "about", - { - "title": "Documentation", - "type": "separator" - } - ] -} \ No newline at end of file diff --git a/docs-site/lib/meta.ts b/docs-site/lib/meta.ts new file mode 100644 index 00000000..6e0cc3ea --- /dev/null +++ b/docs-site/lib/meta.ts @@ -0,0 +1,14 @@ +export const docsMetadata = { + pages: [ + 'home', + 'getting-started', + 'related-projects', + 'about', + { + title: 'Documentation', + type: 'separator' + }, + 'core', + 'data' + ] +}; \ No newline at end of file diff --git a/docs-site/lib/source.ts b/docs-site/lib/source.ts index 9871c2fc..28a77668 100644 --- a/docs-site/lib/source.ts +++ b/docs-site/lib/source.ts @@ -6,6 +6,6 @@ import { meta } from '@/.source'; // See https://fumadocs.vercel.app/docs/headless/source-api for more info export const source = loader({ // it assigns a URL to your pages - baseUrl: '/docs', + baseUrl: '/docs-site', source: createMDXSource(docs, meta), }); diff --git a/docs-site/meta.ts b/docs-site/meta.ts new file mode 100644 index 00000000..6e0cc3ea --- /dev/null +++ b/docs-site/meta.ts @@ -0,0 +1,14 @@ +export const docsMetadata = { + pages: [ + 'home', + 'getting-started', + 'related-projects', + 'about', + { + title: 'Documentation', + type: 'separator' + }, + 'core', + 'data' + ] +}; \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 852326a2..c2671023 100644 --- a/package-lock.json +++ b/package-lock.json @@ -4,484 +4,3898 @@ "requires": true, "packages": { "": { + "dependencies": { + "@types/mdx": "^2.0.13", + "fumadocs-mdx": "^11.6.4" + }, "devDependencies": { "gh-pages": "^6.3.0" } }, - "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, + "node_modules/@emnapi/runtime": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/@emnapi/runtime/-/runtime-1.4.3.tgz", + "integrity": "sha512-pBPWdu6MLKROBX05wSNKcNb++m5Er+KQ9QkB+WVM+pW2Kx9hoSrVTnu3BdkI5eBLZoKu/J6mW/B6i6bJB2ytXQ==", + "optional": true, + "peer": true, + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.25.4.tgz", + "integrity": "sha512-1VCICWypeQKhVbE9oW/sJaAmjLxhVqacdkvPLEjwlttjfwENRSClS8EjBz0KzRyFSCPDIkuXW34Je/vk7zdB7Q==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.25.4.tgz", + "integrity": "sha512-QNdQEps7DfFwE3hXiU4BZeOV68HHzYwGd0Nthhd3uCkkEKK7/R6MTgM0P7H7FAs5pU/DIWsviMmEGxEoxIZ+ZQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.25.4.tgz", + "integrity": "sha512-bBy69pgfhMGtCnwpC/x5QhfxAz/cBgQ9enbtwjf6V9lnPI/hMyT9iWpR1arm0l3kttTr4L0KSLpKmLp/ilKS9A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.25.4.tgz", + "integrity": "sha512-TVhdVtQIFuVpIIR282btcGC2oGQoSfZfmBdTip2anCaVYcqWlZXGcdcKIUklfX2wj0JklNYgz39OBqh2cqXvcQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.25.4.tgz", + "integrity": "sha512-Y1giCfM4nlHDWEfSckMzeWNdQS31BQGs9/rouw6Ub91tkK79aIMTH3q9xHvzH8d0wDru5Ci0kWB8b3up/nl16g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.25.4.tgz", + "integrity": "sha512-CJsry8ZGM5VFVeyUYB3cdKpd/H69PYez4eJh1W/t38vzutdjEjtP7hB6eLKBoOdxcAlCtEYHzQ/PJ/oU9I4u0A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.25.4.tgz", + "integrity": "sha512-yYq+39NlTRzU2XmoPW4l5Ifpl9fqSk0nAJYM/V/WUGPEFfek1epLHJIkTQM6bBs1swApjO5nWgvr843g6TjxuQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.25.4.tgz", + "integrity": "sha512-0FgvOJ6UUMflsHSPLzdfDnnBBVoCDtBTVyn/MrWloUNvq/5SFmh13l3dvgRPkDihRxb77Y17MbqbCAa2strMQQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.25.4.tgz", + "integrity": "sha512-kro4c0P85GMfFYqW4TWOpvmF8rFShbWGnrLqlzp4X1TNWjRY3JMYUfDCtOxPKOIY8B0WC8HN51hGP4I4hz4AaQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.25.4.tgz", + "integrity": "sha512-+89UsQTfXdmjIvZS6nUnOOLoXnkUTB9hR5QAeLrQdzOSWZvNSAXAtcRDHWtqAUtAmv7ZM1WPOOeSxDzzzMogiQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.25.4.tgz", + "integrity": "sha512-yTEjoapy8UP3rv8dB0ip3AfMpRbyhSN3+hY8mo/i4QXFeDxmiYbEKp3ZRjBKcOP862Ua4b1PDfwlvbuwY7hIGQ==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.25.4.tgz", + "integrity": "sha512-NeqqYkrcGzFwi6CGRGNMOjWGGSYOpqwCjS9fvaUlX5s3zwOtn1qwg1s2iE2svBe4Q/YOG1q6875lcAoQK/F4VA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.25.4.tgz", + "integrity": "sha512-IcvTlF9dtLrfL/M8WgNI/qJYBENP3ekgsHbYUIzEzq5XJzzVEV/fXY9WFPfEEXmu3ck2qJP8LG/p3Q8f7Zc2Xg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.25.4.tgz", + "integrity": "sha512-HOy0aLTJTVtoTeGZh4HSXaO6M95qu4k5lJcH4gxv56iaycfz1S8GO/5Jh6X4Y1YiI0h7cRyLi+HixMR+88swag==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.25.4.tgz", + "integrity": "sha512-i8JUDAufpz9jOzo4yIShCTcXzS07vEgWzyX3NH2G7LEFVgrLEhjwL3ajFE4fZI3I4ZgiM7JH3GQ7ReObROvSUA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.25.4.tgz", + "integrity": "sha512-jFnu+6UbLlzIjPQpWCNh5QtrcNfMLjgIavnwPQAfoGx4q17ocOU9MsQ2QVvFxwQoWpZT8DvTLooTvmOQXkO51g==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.25.4.tgz", + "integrity": "sha512-6e0cvXwzOnVWJHq+mskP8DNSrKBr1bULBvnFLpc1KY+d+irZSgZ02TGse5FsafKS5jg2e4pbvK6TPXaF/A6+CA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-arm64/-/netbsd-arm64-0.25.4.tgz", + "integrity": "sha512-vUnkBYxZW4hL/ie91hSqaSNjulOnYXE1VSLusnvHg2u3jewJBz3YzB9+oCw8DABeVqZGg94t9tyZFoHma8gWZQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.25.4.tgz", + "integrity": "sha512-XAg8pIQn5CzhOB8odIcAm42QsOfa98SBeKUdo4xa8OvX8LbMZqEtgeWE9P/Wxt7MlG2QqvjGths+nq48TrUiKw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-arm64/-/openbsd-arm64-0.25.4.tgz", + "integrity": "sha512-Ct2WcFEANlFDtp1nVAXSNBPDxyU+j7+tId//iHXU2f/lN5AmO4zLyhDcpR5Cz1r08mVxzt3Jpyt4PmXQ1O6+7A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.25.4.tgz", + "integrity": "sha512-xAGGhyOQ9Otm1Xu8NT1ifGLnA6M3sJxZ6ixylb+vIUVzvvd6GOALpwQrYrtlPouMqd/vSbgehz6HaVk4+7Afhw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.25.4.tgz", + "integrity": "sha512-Mw+tzy4pp6wZEK0+Lwr76pWLjrtjmJyUB23tHKqEDP74R3q95luY/bXqXZeYl4NYlvwOqoRKlInQialgCKy67Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.25.4.tgz", + "integrity": "sha512-AVUP428VQTSddguz9dO9ngb+E5aScyg7nOeJDrF1HPYu555gmza3bDGMPhmVXL8svDSoqPCsCPjb265yG/kLKQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.25.4.tgz", + "integrity": "sha512-i1sW+1i+oWvQzSgfRcxxG2k4I9n3O9NRqy8U+uugaT2Dy7kLO9Y7wI72haOahxceMX8hZAzgGou1FhndRldxRg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.25.4.tgz", + "integrity": "sha512-nOT2vZNw6hJ+z43oP1SPea/G/6AbN6X+bGNhNuq8NtRHy4wsMhw765IKLNmnjek7GvjWBYQ8Q5VBoYTFg9y1UQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=18" + } + }, + "node_modules/@formatjs/intl-localematcher": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.6.1.tgz", + "integrity": "sha512-ePEgLgVCqi2BBFnTMWPfIghu6FkbZnnBVhO2sSxvLfrdFw7wCHAHiDoM2h4NRgjbaY7+B7HgOLZGkK187pZTZg==", + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@img/sharp-darwin-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-arm64/-/sharp-darwin-arm64-0.34.1.tgz", + "integrity": "sha512-pn44xgBtgpEbZsu+lWf2KNb6OAf70X68k+yk69Ic2Xz11zHR/w24/U49XT7AeRwJ0Px+mhALhU5LPci1Aymk7A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-darwin-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-darwin-x64/-/sharp-darwin-x64-0.34.1.tgz", + "integrity": "sha512-VfuYgG2r8BpYiOUN+BfYeFo69nP/MIwAtSJ7/Zpxc5QF3KS22z8Pvg3FkrSFJBPNQ7mmcUcYQFBmEQp7eu1F8Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-darwin-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-libvips-darwin-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-arm64/-/sharp-libvips-darwin-arm64-1.1.0.tgz", + "integrity": "sha512-HZ/JUmPwrJSoM4DIQPv/BfNh9yrOA8tlBbqbLz4JZ5uew2+o22Ik+tHQJcih7QJuSa0zo5coHTfD5J8inqj9DA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-darwin-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-darwin-x64/-/sharp-libvips-darwin-x64-1.1.0.tgz", + "integrity": "sha512-Xzc2ToEmHN+hfvsl9wja0RlnXEgpKNmftriQp6XzY/RaSfwD9th+MSh0WQKzUreLKKINb3afirxW7A0fz2YWuQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm/-/sharp-libvips-linux-arm-1.1.0.tgz", + "integrity": "sha512-s8BAd0lwUIvYCJyRdFqvsj+BJIpDBSxs6ivrOPm/R7piTs5UIwY5OjXrP2bqXC9/moGsyRa37eYWYCOGVXxVrA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-arm64/-/sharp-libvips-linux-arm64-1.1.0.tgz", + "integrity": "sha512-IVfGJa7gjChDET1dK9SekxFFdflarnUB8PwW8aGwEoF3oAsSDuNUTYS+SKDOyOJxQyDC1aPFMuRYLoDInyV9Ew==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-ppc64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-ppc64/-/sharp-libvips-linux-ppc64-1.1.0.tgz", + "integrity": "sha512-tiXxFZFbhnkWE2LA8oQj7KYR+bWBkiV2nilRldT7bqoEZ4HiDOcePr9wVDAZPi/Id5fT1oY9iGnDq20cwUz8lQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-s390x": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-s390x/-/sharp-libvips-linux-s390x-1.1.0.tgz", + "integrity": "sha512-xukSwvhguw7COyzvmjydRb3x/09+21HykyapcZchiCUkTThEQEOMtBj9UhkaBRLuBrgLFzQ2wbxdeCCJW/jgJA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linux-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linux-x64/-/sharp-libvips-linux-x64-1.1.0.tgz", + "integrity": "sha512-yRj2+reB8iMg9W5sULM3S74jVS7zqSzHG3Ol/twnAAkAhnGQnpjj6e4ayUz7V+FpKypwgs82xbRdYtchTTUB+Q==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-arm64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-arm64/-/sharp-libvips-linuxmusl-arm64-1.1.0.tgz", + "integrity": "sha512-jYZdG+whg0MDK+q2COKbYidaqW/WTz0cc1E+tMAusiDygrM4ypmSCjOJPmFTvHHJ8j/6cAGyeDWZOsK06tP33w==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-libvips-linuxmusl-x64": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@img/sharp-libvips-linuxmusl-x64/-/sharp-libvips-linuxmusl-x64-1.1.0.tgz", + "integrity": "sha512-wK7SBdwrAiycjXdkPnGCPLjYb9lD4l6Ze2gSdAGVZrEL05AOUJESWU2lhlC+Ffn5/G+VKuSm6zzbQSzFX/P65A==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-linux-arm": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm/-/sharp-linux-arm-0.34.1.tgz", + "integrity": "sha512-anKiszvACti2sGy9CirTlNyk7BjjZPiML1jt2ZkTdcvpLU1YH6CXwRAZCA2UmRXnhiIftXQ7+Oh62Ji25W72jA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-arm64/-/sharp-linux-arm64-0.34.1.tgz", + "integrity": "sha512-kX2c+vbvaXC6vly1RDf/IWNXxrlxLNpBVWkdpRq5Ka7OOKj6nr66etKy2IENf6FtOgklkg9ZdGpEu9kwdlcwOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-s390x": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-s390x/-/sharp-linux-s390x-0.34.1.tgz", + "integrity": "sha512-7s0KX2tI9mZI2buRipKIw2X1ufdTeaRgwmRabt5bi9chYfhur+/C1OXg3TKg/eag1W+6CCWLVmSauV1owmRPxA==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-s390x": "1.1.0" + } + }, + "node_modules/@img/sharp-linux-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linux-x64/-/sharp-linux-x64-0.34.1.tgz", + "integrity": "sha512-wExv7SH9nmoBW3Wr2gvQopX1k8q2g5V5Iag8Zk6AVENsjwd+3adjwxtp3Dcu2QhOXr8W9NusBU6XcQUohBZ5MA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linux-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-arm64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-arm64/-/sharp-linuxmusl-arm64-0.34.1.tgz", + "integrity": "sha512-DfvyxzHxw4WGdPiTF0SOHnm11Xv4aQexvqhRDAoD00MzHekAj9a/jADXeXYCDFH/DzYruwHbXU7uz+H+nWmSOQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0" + } + }, + "node_modules/@img/sharp-linuxmusl-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-linuxmusl-x64/-/sharp-linuxmusl-x64-0.34.1.tgz", + "integrity": "sha512-pax/kTR407vNb9qaSIiWVnQplPcGU8LRIJpDT5o8PdAx5aAA7AS3X9PS8Isw1/WfqgQorPotjrZL3Pqh6C5EBg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-libvips-linuxmusl-x64": "1.1.0" + } + }, + "node_modules/@img/sharp-wasm32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-wasm32/-/sharp-wasm32-0.34.1.tgz", + "integrity": "sha512-YDybQnYrLQfEpzGOQe7OKcyLUCML4YOXl428gOOzBgN6Gw0rv8dpsJ7PqTHxBnXnwXr8S1mYFSLSa727tpz0xg==", + "cpu": [ + "wasm32" + ], + "optional": true, + "peer": true, + "dependencies": { + "@emnapi/runtime": "^1.4.0" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-ia32": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-ia32/-/sharp-win32-ia32-0.34.1.tgz", + "integrity": "sha512-WKf/NAZITnonBf3U1LfdjoMgNO5JYRSlhovhRhMxXVdvWYveM4kM3L8m35onYIdh75cOMCo1BexgVQcCDzyoWw==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@img/sharp-win32-x64": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/@img/sharp-win32-x64/-/sharp-win32-x64-0.34.1.tgz", + "integrity": "sha512-hw1iIAHpNE8q3uMIRCgGOeDoz9KtFNarFLQclLxr/LK1VBkj8nby18RjFvr6aP7USRYAjTZW6yisnBWMX571Tw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + } + }, + "node_modules/@mdx-js/mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-3.1.0.tgz", + "integrity": "sha512-/QxEhPAvGwbQmy1Px8F899L5Uc2KZ6JtXwlCgJmjSTBedwOZkByYcBG4GceIGPXRDsmfxhHazuS+hlOShRLeDw==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdx": "^2.0.0", + "collapse-white-space": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-util-scope": "^1.0.0", + "estree-walker": "^3.0.0", + "hast-util-to-jsx-runtime": "^2.0.0", + "markdown-extensions": "^2.0.0", + "recma-build-jsx": "^1.0.0", + "recma-jsx": "^1.0.0", + "recma-stringify": "^1.0.0", + "rehype-recma": "^1.0.0", + "remark-mdx": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-rehype": "^11.0.0", + "source-map": "^0.7.0", + "unified": "^11.0.0", + "unist-util-position-from-estree": "^2.0.0", + "unist-util-stringify-position": "^4.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@next/env": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/env/-/env-15.3.2.tgz", + "integrity": "sha512-xURk++7P7qR9JG1jJtLzPzf0qEvqCN0A/T3DXf8IPMKo9/6FfjxtEffRJIIew/bIL4T3C2jLLqBor8B/zVlx6g==", + "peer": true + }, + "node_modules/@next/swc-darwin-arm64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-arm64/-/swc-darwin-arm64-15.3.2.tgz", + "integrity": "sha512-2DR6kY/OGcokbnCsjHpNeQblqCZ85/1j6njYSkzRdpLn5At7OkSdmk7WyAmB9G0k25+VgqVZ/u356OSoQZ3z0g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-darwin-x64": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-darwin-x64/-/swc-darwin-x64-15.3.2.tgz", + "integrity": "sha512-ro/fdqaZWL6k1S/5CLv1I0DaZfDVJkWNaUU3un8Lg6m0YENWlDulmIWzV96Iou2wEYyEsZq51mwV8+XQXqMp3w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-gnu/-/swc-linux-arm64-gnu-15.3.2.tgz", + "integrity": "sha512-covwwtZYhlbRWK2HlYX9835qXum4xYZ3E2Mra1mdQ+0ICGoMiw1+nVAn4d9Bo7R3JqSmK1grMq/va+0cdh7bJA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-arm64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-arm64-musl/-/swc-linux-arm64-musl-15.3.2.tgz", + "integrity": "sha512-KQkMEillvlW5Qk5mtGA/3Yz0/tzpNlSw6/3/ttsV1lNtMuOHcGii3zVeXZyi4EJmmLDKYcTcByV2wVsOhDt/zg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-gnu": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-gnu/-/swc-linux-x64-gnu-15.3.2.tgz", + "integrity": "sha512-uRBo6THWei0chz+Y5j37qzx+BtoDRFIkDzZjlpCItBRXyMPIg079eIkOCl3aqr2tkxL4HFyJ4GHDes7W8HuAUg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-linux-x64-musl": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-linux-x64-musl/-/swc-linux-x64-musl-15.3.2.tgz", + "integrity": "sha512-+uxFlPuCNx/T9PdMClOqeE8USKzj8tVz37KflT3Kdbx/LOlZBRI2yxuIcmx1mPNK8DwSOMNCr4ureSet7eyC0w==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-arm64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-arm64-msvc/-/swc-win32-arm64-msvc-15.3.2.tgz", + "integrity": "sha512-LLTKmaI5cfD8dVzh5Vt7+OMo+AIOClEdIU/TSKbXXT2iScUTSxOGoBhfuv+FU8R9MLmrkIL1e2fBMkEEjYAtPQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@next/swc-win32-x64-msvc": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/@next/swc-win32-x64-msvc/-/swc-win32-x64-msvc-15.3.2.tgz", + "integrity": "sha512-aW5B8wOPioJ4mBdMDXkt5f3j8pUr9W8AnlX0Df35uRWNT1Y6RIybxjnSUe+PhM+M1bwgyY8PHLmXZC6zT1o5tA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">= 10" + } + }, + "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==", + "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==", + "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==", + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@orama/orama": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@orama/orama/-/orama-3.1.7.tgz", + "integrity": "sha512-6yB0117ZjsgNevZw3LP+bkrZa9mU/POPVaXgzMPOBbBc35w2P3R+1vMMhEfC06kYCpd5bf0jodBaTkYQW5TVeQ==", + "peer": true, + "engines": { + "node": ">= 20.0.0" + } + }, + "node_modules/@shikijs/core": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-3.4.2.tgz", + "integrity": "sha512-AG8vnSi1W2pbgR2B911EfGqtLE9c4hQBYkv/x7Z+Kt0VxhgQKcW7UNDVYsu9YxwV6u+OJrvdJrMq6DNWoBjihQ==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4", + "hast-util-to-html": "^9.0.5" + } + }, + "node_modules/@shikijs/engine-javascript": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-3.4.2.tgz", + "integrity": "sha512-1/adJbSMBOkpScCE/SB6XkjJU17ANln3Wky7lOmrnpl+zBdQ1qXUJg2GXTYVHRq+2j3hd1DesmElTXYDgtfSOQ==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2", + "oniguruma-to-es": "^4.3.3" + } + }, + "node_modules/@shikijs/engine-oniguruma": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-3.4.2.tgz", + "integrity": "sha512-zcZKMnNndgRa3ORja6Iemsr3DrLtkX3cAF7lTJkdMB6v9alhlBsX9uNiCpqofNrXOvpA3h6lHcLJxgCIhVOU5Q==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2" + } + }, + "node_modules/@shikijs/langs": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-3.4.2.tgz", + "integrity": "sha512-H6azIAM+OXD98yztIfs/KH5H4PU39t+SREhmM8LaNXyUrqj2mx+zVkr8MWYqjceSjDw9I1jawm1WdFqU806rMA==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/rehype": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/rehype/-/rehype-3.4.2.tgz", + "integrity": "sha512-atbsrT3UKs25OdKVbNoHyKO9ZP7KEBPlo1oanPGMkvUL0fLictpxMPz6vPE2YTeHhpwz7EMrA4K4FHRY8XAReg==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2", + "@types/hast": "^3.0.4", + "hast-util-to-string": "^3.0.1", + "shiki": "3.4.2", + "unified": "^11.0.5", + "unist-util-visit": "^5.0.0" + } + }, + "node_modules/@shikijs/themes": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-3.4.2.tgz", + "integrity": "sha512-qAEuAQh+brd8Jyej2UDDf+b4V2g1Rm8aBIdvt32XhDPrHvDkEnpb7Kzc9hSuHUxz0Iuflmq7elaDuQAP9bHIhg==", + "peer": true, + "dependencies": { + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/transformers": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/transformers/-/transformers-3.4.2.tgz", + "integrity": "sha512-I5baLVi/ynLEOZoWSAMlACHNnG+yw5HDmse0oe+GW6U1u+ULdEB3UHiVWaHoJSSONV7tlcVxuaMy74sREDkSvg==", + "peer": true, + "dependencies": { + "@shikijs/core": "3.4.2", + "@shikijs/types": "3.4.2" + } + }, + "node_modules/@shikijs/types": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-3.4.2.tgz", + "integrity": "sha512-zHC1l7L+eQlDXLnxvM9R91Efh2V4+rN3oMVS2swCBssbj2U/FBwybD1eeLaq8yl/iwT+zih8iUbTBCgGZOYlVg==", + "peer": true, + "dependencies": { + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/@shikijs/vscode-textmate": { + "version": "10.0.2", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.2.tgz", + "integrity": "sha512-83yeghZ2xxin3Nj8z1NMd/NCuca+gsYXswywDy5bHvwlWL8tpTQmzGeUuHd9FC3E/SBEMvzJRwWEOz5gGes9Qg==", + "peer": true + }, + "node_modules/@standard-schema/spec": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@standard-schema/spec/-/spec-1.0.0.tgz", + "integrity": "sha512-m2bOd0f2RT9k8QJx1JN85cZYyH1RqFBdlwtkSlf4tBDYLCiiZnv1fIIwacK6cqwXavOydf0NPToMQgpKq+dVlA==" + }, + "node_modules/@swc/counter": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.3.tgz", + "integrity": "sha512-e2BR4lsJkkRlKZ/qCHPw9ZaSxc0MVUd7gtbtaB7aMvHeJVYe8sOB8DBZkP2DtISHGSku9sCK6T6cnY0CtXrOCQ==", + "peer": true + }, + "node_modules/@swc/helpers": { + "version": "0.5.15", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.15.tgz", + "integrity": "sha512-JQ5TuMi45Owi4/BIMAJBoSQoOJu12oOk/gADqlcUL9JEdHB8vyjUSsxqeNXnmXHjYKMi2WcYtezGEEhqUI/E2g==", + "peer": true, + "dependencies": { + "tslib": "^2.8.0" + } + }, + "node_modules/@types/debug": { + "version": "4.1.12", + "resolved": "https://registry.npmjs.org/@types/debug/-/debug-4.1.12.tgz", + "integrity": "sha512-vIChWdVG3LG1SMxEvI/AK+FWJthlrqlTu7fbrlywTkkaONwk/UAGaULXRlf8vkzFBLVm0zkMdCquhL5aOjhXPQ==", + "dependencies": { + "@types/ms": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.7.tgz", + "integrity": "sha512-w28IoSUCJpidD/TGviZwwMJckNESJZXFu7NBZ5YJ4mEUnNraUn9Pm8HSZm/jDF1pDWYKspWE7oVphigUPRakIQ==" + }, + "node_modules/@types/estree-jsx": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.5.tgz", + "integrity": "sha512-52CcUVNFyfb1A2ALocQw/Dd1BQFNmSdkuC3BkZ6iqhdMfQz7JWOFRuJFloOzjk+6WijU56m9oKXFAXc7o3Towg==", + "dependencies": { + "@types/estree": "*" + } + }, + "node_modules/@types/hast": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/hast/-/hast-3.0.4.tgz", + "integrity": "sha512-WPs+bbQw5aCj+x6laNGWLH3wviHtoCv/P3+otBhbOhJgG8qtpdAMlTCxLtsTWA7LH1Oh/bFCHsBn0TPS5m30EQ==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdast": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/@types/mdast/-/mdast-4.0.4.tgz", + "integrity": "sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==", + "dependencies": { + "@types/unist": "*" + } + }, + "node_modules/@types/mdx": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.13.tgz", + "integrity": "sha512-+OWZQfAYyio6YkJb3HLxDrvnx6SWWDbC0zVPfBRzUk0/nqoDyf6dNxQi3eArPe8rJ473nobTMQ/8Zk+LxJ+Yuw==" + }, + "node_modules/@types/ms": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@types/ms/-/ms-2.1.0.tgz", + "integrity": "sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==" + }, + "node_modules/@types/unist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-3.0.3.tgz", + "integrity": "sha512-ko/gIFJRv177XgZsZcBwnqJN5x/Gien8qNOn0D5bQU/zAzVf9Zt3BlcUiLqhV9y4ARk0GbT3tnUiPNgnTXzc/Q==" + }, + "node_modules/@ungap/structured-clone": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.3.0.tgz", + "integrity": "sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==" + }, + "node_modules/acorn": { + "version": "8.14.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.14.1.tgz", + "integrity": "sha512-OvQ/2pUDKmgfCg++xsTX1wGxfTaszcHVcTctW4UJB4hibJx2HXxxO5UmVgyjMa+ZDsiaf5wWLXYpRWMmBI0QHg==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "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==" + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/astring": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/astring/-/astring-1.9.0.tgz", + "integrity": "sha512-LElXdjswlqjWrPpJFg1Fx4wpkOCxj1TDHlSV4PlaRxHGWko024xICaa97ZkMfs6DRKlCguiAI+rbXv5GWwXIkg==", + "bin": { + "astring": "bin/astring" + } + }, + "node_modules/async": { + "version": "3.2.6", + "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", + "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", + "dev": true + }, + "node_modules/bail": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/bail/-/bail-2.0.2.tgz", + "integrity": "sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/busboy": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", + "integrity": "sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==", + "peer": true, + "dependencies": { + "streamsearch": "^1.1.0" + }, + "engines": { + "node": ">=10.16.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001718", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001718.tgz", + "integrity": "sha512-AflseV1ahcSunK53NfEs9gFWgOEmzr0f+kaMFA4xiLZlr9Hzt7HxcSpIFcnNCUkz6R6dWKa54rUz3HUmI3nVcw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true + }, + "node_modules/ccount": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/ccount/-/ccount-2.0.1.tgz", + "integrity": "sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/character-entities/-/character-entities-2.0.2.tgz", + "integrity": "sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-html4": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/character-entities-html4/-/character-entities-html4-2.1.0.tgz", + "integrity": "sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-entities-legacy": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz", + "integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/character-reference-invalid": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz", + "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/chokidar": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-4.0.3.tgz", + "integrity": "sha512-Qgzu8kfBvo+cA4962jnP1KkS6Dop5NS6g7R5LFYJr4b8Ub94PPQXUksCw9PvXoeXPRRddRNC5C1JQUR2SMGtnA==", + "dependencies": { + "readdirp": "^4.0.1" + }, + "engines": { + "node": ">= 14.16.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/client-only": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/client-only/-/client-only-0.0.1.tgz", + "integrity": "sha512-IV3Ou0jSMzZrd3pZ48nLkT9DA7Ag1pnPzaiQhpW7c3RbcqqzvzzVu+L8gfqMp/8IM2MQtSiqaCxrrcfu8I8rMA==", + "peer": true + }, + "node_modules/collapse-white-space": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/collapse-white-space/-/collapse-white-space-2.1.0.tgz", + "integrity": "sha512-loKTxY1zCOuG4j9f6EPnuyyYkf58RnhhWTvRoZEokgB+WbdXehfjFviyOVYkqzEWz1Q5kRiZdBYS5SwxbQYwzw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/color": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/color/-/color-4.2.3.tgz", + "integrity": "sha512-1rXeuUUiGGrykh+CeBdu5Ie7OJwinCgQY0bc7GCRxy5xVHy+moaqkpL/jqQq0MtQOeYcrqEz4abc5f0KtU7W4A==", + "optional": true, + "peer": true, + "dependencies": { + "color-convert": "^2.0.1", + "color-string": "^1.9.0" + }, + "engines": { + "node": ">=12.5.0" + } + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "optional": true, + "peer": true + }, + "node_modules/color-string": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", + "optional": true, + "peer": true, + "dependencies": { + "color-name": "^1.0.0", + "simple-swizzle": "^0.2.2" + } + }, + "node_modules/comma-separated-tokens": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/comma-separated-tokens/-/comma-separated-tokens-2.0.3.tgz", + "integrity": "sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/commander": { + "version": "13.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", + "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", + "dev": true, + "engines": { + "node": ">=18" + } + }, + "node_modules/commondir": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", + "dev": true + }, + "node_modules/compute-scroll-into-view": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/compute-scroll-into-view/-/compute-scroll-into-view-3.1.1.tgz", + "integrity": "sha512-VRhuHOLoKYOy4UbilLbUzbYg93XLjv2PncJC50EuTWPA3gaja1UjBsUP/D/9/juV3vQFr6XBEzn9KCAHdUvOHw==", + "peer": true + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decode-named-character-reference": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/decode-named-character-reference/-/decode-named-character-reference-1.1.0.tgz", + "integrity": "sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==", + "dependencies": { + "character-entities": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dequal": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/detect-libc": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-2.0.4.tgz", + "integrity": "sha512-3UDv+G9CsCKO1WKMGw9fwq/SWJYbI0c5Y7LU1AXYoDdbhE2AHQ6N6Nb34sG8Fj7T5APy8qXDCKuuIHd1BR0tVA==", + "optional": true, + "peer": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/detect-node-es": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==", + "peer": true + }, + "node_modules/devlop": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/devlop/-/devlop-1.1.0.tgz", + "integrity": "sha512-RWmIqhcFf1lRYBvNmr7qTNuyCt/7/ns2jbpp1+PalgE/rDQcBT0fioSMUpJ93irlUhC5hrg4cYqe6U+0ImW0rA==", + "dependencies": { + "dequal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/email-addresses": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", + "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", + "dev": true + }, + "node_modules/esast-util-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/esast-util-from-estree/-/esast-util-from-estree-2.0.0.tgz", + "integrity": "sha512-4CyanoAudUSBAn5K13H4JhsMH6L9ZP7XbLVe/dKybkxMO7eDyLsT8UHl9TRNrU2Gr9nz+FovfSIjuXWJ81uVwQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esast-util-from-js": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/esast-util-from-js/-/esast-util-from-js-2.0.1.tgz", + "integrity": "sha512-8Ja+rNJ0Lt56Pcf3TAmpBZjmx8ZcK5Ts4cAzIOjsjevg9oSXJnl6SUQ2EevU8tv3h6ZLWmoKL5H4fgWvdvfETw==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "acorn": "^8.0.0", + "esast-util-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/esbuild": { + "version": "0.25.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.25.4.tgz", + "integrity": "sha512-8pgjLUcUjcgDg+2Q4NYXnPbo/vncAY4UmyaCm0jZevERqCHZIaWwdJHkf8XQtu4AxSKCdvrUbT0XUr1IdZzI8Q==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=18" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.25.4", + "@esbuild/android-arm": "0.25.4", + "@esbuild/android-arm64": "0.25.4", + "@esbuild/android-x64": "0.25.4", + "@esbuild/darwin-arm64": "0.25.4", + "@esbuild/darwin-x64": "0.25.4", + "@esbuild/freebsd-arm64": "0.25.4", + "@esbuild/freebsd-x64": "0.25.4", + "@esbuild/linux-arm": "0.25.4", + "@esbuild/linux-arm64": "0.25.4", + "@esbuild/linux-ia32": "0.25.4", + "@esbuild/linux-loong64": "0.25.4", + "@esbuild/linux-mips64el": "0.25.4", + "@esbuild/linux-ppc64": "0.25.4", + "@esbuild/linux-riscv64": "0.25.4", + "@esbuild/linux-s390x": "0.25.4", + "@esbuild/linux-x64": "0.25.4", + "@esbuild/netbsd-arm64": "0.25.4", + "@esbuild/netbsd-x64": "0.25.4", + "@esbuild/openbsd-arm64": "0.25.4", + "@esbuild/openbsd-x64": "0.25.4", + "@esbuild/sunos-x64": "0.25.4", + "@esbuild/win32-arm64": "0.25.4", + "@esbuild/win32-ia32": "0.25.4", + "@esbuild/win32-x64": "0.25.4" + } + }, + "node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "peer": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estree-util-attach-comments": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-3.0.0.tgz", + "integrity": "sha512-cKUwm/HUcTDsYh/9FgnuFqpfquUbwIqwKM26BVCGDPVgvaCl/nDCCjUfiLlx6lsEZ3Z4RFxNbOQ60pkaEwFxGw==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-build-jsx": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-3.0.1.tgz", + "integrity": "sha512-8U5eiL6BTrPxp/CHbs2yMgP8ftMhR5ww1eIKoWRMlqvltHF8fZn5LRDvTKuxD3DUn+shRbLGqXemcP51oFCsGQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "estree-walker": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-is-identifier-name": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-3.0.0.tgz", + "integrity": "sha512-hFtqIDZTIUZ9BXLb8y4pYGyk6+wekIivNVTcmvk8NoOh+VeRn5y6cEHzbURrWbfp1fIqdVipilzj+lfaadNZmg==", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-scope": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/estree-util-scope/-/estree-util-scope-1.0.0.tgz", + "integrity": "sha512-2CAASclonf+JFWBNJPndcOpA8EMJwa0Q8LUFJEKqXLW6+qBvbFZuF5gItbQOs/umBUkjviCSDCbBwU2cXbmrhQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-to-js": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-2.0.0.tgz", + "integrity": "sha512-WDF+xj5rRWmD5tj6bIqRi6CkLIXbbNQUcxQHzGysQzvHmdYG2G7p/Tf0J0gpxGgkeMZNTIjT/AoSvC9Xehcgdg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "astring": "^1.8.0", + "source-map": "^0.7.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-util-value-to-estree": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/estree-util-value-to-estree/-/estree-util-value-to-estree-3.4.0.tgz", + "integrity": "sha512-Zlp+gxis+gCfK12d3Srl2PdX2ybsEA8ZYy6vQGVQTNNYLEGRQQ56XB64bjemN8kxIKXP1nC9ip4Z+ILy9LGzvQ==", + "dependencies": { + "@types/estree": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/remcohaszing" + } + }, + "node_modules/estree-util-visit": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-2.0.0.tgz", + "integrity": "sha512-m5KgiH85xAhhW8Wta0vShLcUvOsh3LLPI2YVwcbio1l7E09NTLL1EyMZFM1OyWowoH0skScNbhOPl4kcBgzTww==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/estree-walker": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz", + "integrity": "sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==", + "dependencies": { + "@types/estree": "^1.0.0" + } + }, + "node_modules/extend": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==" + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "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==", + "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/fastq": { + "version": "1.19.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", + "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/filename-reserved-regex": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", + "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/filenamify": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", + "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", + "dev": true, + "dependencies": { + "filename-reserved-regex": "^2.0.0", + "strip-outer": "^1.0.1", + "trim-repeated": "^1.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-cache-dir": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", + "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "dev": true, + "dependencies": { + "commondir": "^1.0.1", + "make-dir": "^3.0.2", + "pkg-dir": "^4.1.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + } + }, + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/fs-extra": { + "version": "11.3.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", + "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fumadocs-core": { + "version": "15.3.3", + "resolved": "https://registry.npmjs.org/fumadocs-core/-/fumadocs-core-15.3.3.tgz", + "integrity": "sha512-3i547DisQ/k4v5UYECgTIi14be2TGrnomwT6AKOis+Nj0A8sUdaMEU6KgYT9GAOUeeC6A733pSm6Bi8aY91/IQ==", + "peer": true, + "dependencies": { + "@formatjs/intl-localematcher": "^0.6.1", + "@orama/orama": "^3.1.6", + "@shikijs/rehype": "^3.4.2", + "@shikijs/transformers": "^3.4.2", + "github-slugger": "^2.0.0", + "hast-util-to-estree": "^3.1.3", + "hast-util-to-jsx-runtime": "^2.3.6", + "image-size": "^2.0.2", + "negotiator": "^1.0.0", + "react-remove-scroll": "^2.6.3", + "remark": "^15.0.0", + "remark-gfm": "^4.0.1", + "scroll-into-view-if-needed": "^3.1.0", + "shiki": "^3.4.2", + "unist-util-visit": "^5.0.0" + }, + "peerDependencies": { + "@oramacloud/client": "1.x.x || 2.x.x", + "algoliasearch": "4.24.0", + "next": "14.x.x || 15.x.x", + "react": "18.x.x || 19.x.x", + "react-dom": "18.x.x || 19.x.x" + }, + "peerDependenciesMeta": { + "@oramacloud/client": { + "optional": true + }, + "algoliasearch": { + "optional": true + }, + "next": { + "optional": true + }, + "react": { + "optional": true + }, + "react-dom": { + "optional": true + } + } + }, + "node_modules/fumadocs-mdx": { + "version": "11.6.4", + "resolved": "https://registry.npmjs.org/fumadocs-mdx/-/fumadocs-mdx-11.6.4.tgz", + "integrity": "sha512-pGczNrR+w31JJ8/L9TfFFoe0dGNV43suz2YXyz1iD1yQ2j2VldLqYZ12UyRi7IsqTiVBFUSkRks1iYBRvNr/4w==", + "dependencies": { + "@mdx-js/mdx": "^3.1.0", + "@standard-schema/spec": "^1.0.0", + "chokidar": "^4.0.3", + "cross-spawn": "^7.0.6", + "esbuild": "^0.25.4", + "estree-util-value-to-estree": "^3.4.0", + "fast-glob": "^3.3.3", + "gray-matter": "^4.0.3", + "js-yaml": "^4.1.0", + "lru-cache": "^11.1.0", + "picocolors": "^1.1.1", + "unist-util-visit": "^5.0.0", + "zod": "^3.24.4" + }, + "bin": { + "fumadocs-mdx": "bin.js" + }, + "peerDependencies": { + "@fumadocs/mdx-remote": "^1.2.0", + "fumadocs-core": "^14.0.0 || ^15.0.0", + "next": "^15.3.0" + }, + "peerDependenciesMeta": { + "@fumadocs/mdx-remote": { + "optional": true + } + } + }, + "node_modules/get-nonce": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/gh-pages": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", + "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", + "dev": true, + "dependencies": { + "async": "^3.2.4", + "commander": "^13.0.0", + "email-addresses": "^5.0.0", + "filenamify": "^4.3.0", + "find-cache-dir": "^3.3.1", + "fs-extra": "^11.1.1", + "globby": "^11.1.0" + }, + "bin": { + "gh-pages": "bin/gh-pages.js", + "gh-pages-clean": "bin/gh-pages-clean.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/github-slugger": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/github-slugger/-/github-slugger-2.0.0.tgz", + "integrity": "sha512-IaOQ9puYtjrkq7Y0Ygl9KDZnrf/aiUJYUpVf89y8kyaxbRG7Y1SrX/jaumrv81vc61+kiMempujsM3Yw7w5qcw==", + "peer": true + }, + "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==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/gray-matter": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/gray-matter/-/gray-matter-4.0.3.tgz", + "integrity": "sha512-5v6yZd4JK3eMI3FqqCouswVqwugaA9r4dNZB1wwcmrD02QkV5H0y7XBQW8QwQqEaZY1pM9aqORSORhJRdNK44Q==", + "dependencies": { + "js-yaml": "^3.13.1", + "kind-of": "^6.0.2", + "section-matter": "^1.0.0", + "strip-bom-string": "^1.0.0" + }, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/gray-matter/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/gray-matter/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/hast-util-to-estree": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-3.1.3.tgz", + "integrity": "sha512-48+B/rJWAp0jamNbAAf9M7Uf//UVqAoMmgXhBdxTDJLGKY+LRnZ99qcG+Qjl5HfMpYNzS5v4EAwVEF34LeAj7w==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-attach-comments": "^3.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-html": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.5.tgz", + "integrity": "sha512-OguPdidb+fbHQSU4Q4ZiLKnzWo8Wwsf5bZfbvu7//a9oTYoqD/fWpe96NuHkoS9h0ccGOTe0C4NGXdtS0iObOw==", + "peer": true, + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-whitespace": "^3.0.0", + "html-void-elements": "^3.0.0", + "mdast-util-to-hast": "^13.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "stringify-entities": "^4.0.0", + "zwitch": "^2.0.4" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-jsx-runtime": { + "version": "2.3.6", + "resolved": "https://registry.npmjs.org/hast-util-to-jsx-runtime/-/hast-util-to-jsx-runtime-2.3.6.tgz", + "integrity": "sha512-zl6s8LwNyo1P9uw+XJGvZtdFF1GdAkOg8ujOw+4Pyb76874fLps4ueHXDhXWdk6YHQ6OgUtinliG7RsYvCbbBg==", + "dependencies": { + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "property-information": "^7.0.0", + "space-separated-tokens": "^2.0.0", + "style-to-js": "^1.0.0", + "unist-util-position": "^5.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "peer": true, + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/hast-util-whitespace": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-whitespace/-/hast-util-whitespace-3.0.0.tgz", + "integrity": "sha512-88JUN06ipLwsnv+dVn+OIYOvAuvBMy/Qoi6O7mQHxdPXpjy+Cd6xRkWwux7DKO+4sYILtLBRIKgsdpS2gQc7qw==", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/html-void-elements": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/html-void-elements/-/html-void-elements-3.0.0.tgz", + "integrity": "sha512-bEqo66MRXsUGxWHV5IP0PUiAWwoEjba4VCzg0LjFJBpchPaTfyfCKTG6bc5F8ucKec3q5y6qOdGyYTSBEvhCrg==", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/image-size": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-2.0.2.tgz", + "integrity": "sha512-IRqXKlaXwgSMAMtpNzZa1ZAe8m+Sa1770Dhk8VkSsP9LS+iHD62Zd8FQKs8fbPiagBE7BzoFX23cxFnwshpV6w==", + "peer": true, + "bin": { + "image-size": "bin/image-size.js" + }, + "engines": { + "node": ">=16.x" + } + }, + "node_modules/inline-style-parser": { + "version": "0.2.4", + "resolved": "https://registry.npmjs.org/inline-style-parser/-/inline-style-parser-0.2.4.tgz", + "integrity": "sha512-0aO8FkhNZlj/ZIbNi7Lxxr12obT7cL1moPfE4tg1LkX7LlLfC6DeX4l2ZEud1ukP9jNQyNnfzQVqwbwmAATY4Q==" + }, + "node_modules/is-alphabetical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz", + "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-alphanumerical": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz", + "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==", + "dependencies": { + "is-alphabetical": "^2.0.0", + "is-decimal": "^2.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-arrayish": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==", + "optional": true, + "peer": true + }, + "node_modules/is-decimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz", + "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-hexadecimal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz", + "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-4.1.0.tgz", + "integrity": "sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/longest-streak": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/longest-streak/-/longest-streak-3.1.0.tgz", + "integrity": "sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/lru-cache": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.1.0.tgz", + "integrity": "sha512-QIXZUBJUx+2zHUdQujWejBkcD9+cs94tLn0+YL8UrCh+D5sCXZ4c7LaEH48pNwRY3MLDgqUFyhlCyjJPf1WP0A==", + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "dependencies": { + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/markdown-extensions": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-2.0.0.tgz", + "integrity": "sha512-o5vL7aDWatOTX8LzaS1WMoaoxIiLRQJuIKKe2wAw6IeULDHaqbiqiggmx+pKvZDb1Sj+pE46Sn1T7lCqfFtg1Q==", + "engines": { + "node": ">=16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/markdown-table": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.4.tgz", + "integrity": "sha512-wiYz4+JrLyb/DqW2hkFJxP7Vd7JuTDm77fvbM8VfEQdmSMqcImWeeRbHwZjBjIFki/VaMK2BhFi7oUUZeM5bqw==", + "peer": true, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/mdast-util-find-and-replace": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-find-and-replace/-/mdast-util-find-and-replace-3.0.2.tgz", + "integrity": "sha512-Tmd1Vg/m3Xz43afeNxDIhWRtFZgM2VLyaf4vSTYwudTyeuTneoL3qtWMA5jeLyz/O1vDJmmV4QuScFCA2tBPwg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "escape-string-regexp": "^5.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-from-markdown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/mdast-util-from-markdown/-/mdast-util-from-markdown-2.0.2.tgz", + "integrity": "sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark": "^4.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-3.1.0.tgz", + "integrity": "sha512-0ulfdQOM3ysHhCJ1p06l0b0VKlhU0wuQs3thxZQagjcjPrlFRqY215uZGHHJan9GEAXd9MbfPjFJz+qMkVR6zQ==", + "peer": true, + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-gfm-autolink-literal": "^2.0.0", + "mdast-util-gfm-footnote": "^2.0.0", + "mdast-util-gfm-strikethrough": "^2.0.0", + "mdast-util-gfm-table": "^2.0.0", + "mdast-util-gfm-task-list-item": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-autolink-literal": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-autolink-literal/-/mdast-util-gfm-autolink-literal-2.0.1.tgz", + "integrity": "sha512-5HVP2MKaP6L+G6YaxPNjuL0BPrq9orG3TsrZ9YXbA3vDw/ACI4MEsnoDpn6ZNm7GnZgtAcONJyPhOP8tNJQavQ==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "ccount": "^2.0.0", + "devlop": "^1.0.0", + "mdast-util-find-and-replace": "^3.0.0", + "micromark-util-character": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-footnote/-/mdast-util-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-sqpDWlsHn7Ac9GNZQMeUzPQSMzR6Wv0WKRNvQRg0KqHh02fpTz69Qc1QSseNX29bhz1ROIyNyxExfawVKTm1GQ==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-strikethrough": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-strikethrough/-/mdast-util-gfm-strikethrough-2.0.0.tgz", + "integrity": "sha512-mKKb915TF+OC5ptj5bJ7WFRPdYtuHv0yTRxK2tJvi+BDqbkiG7h7u/9SI89nRAYcmap2xHQL9D+QG/6wSrTtXg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-table": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-table/-/mdast-util-gfm-table-2.0.0.tgz", + "integrity": "sha512-78UEvebzz/rJIxLvE7ZtDd/vIQ0RHv+3Mh5DR96p7cS7HsBhYIICDBCu8csTNWNO6tBWfqXPWekRuj2FNOGOZg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "markdown-table": "^3.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-gfm-task-list-item": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-gfm-task-list-item/-/mdast-util-gfm-task-list-item-2.0.0.tgz", + "integrity": "sha512-IrtvNvjxC1o06taBAVJznEnkiHxLFTzgonUdy8hzFVeDun0uTjxxrRGVaNFqkU1wJR3RBPEfsxmU6jDWPofrTQ==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-3.0.0.tgz", + "integrity": "sha512-JfbYLAW7XnYTTbUsmpu0kdBUVe+yKVJZBItEjwyYJiDJuZ9w4eeaqks4HQO+R7objWgS2ymV60GYpI14Ug554w==", + "dependencies": { + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-mdx-expression": "^2.0.0", + "mdast-util-mdx-jsx": "^3.0.0", + "mdast-util-mdxjs-esm": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-expression": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-2.0.1.tgz", + "integrity": "sha512-J6f+9hUp+ldTZqKRSg7Vw5V6MqjATc+3E4gf3CFNcuZNWD8XdyI6zQ8GqH7f8169MM6P7hMBRDVGnn7oHB9kXQ==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdx-jsx": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.2.0.tgz", + "integrity": "sha512-lj/z8v0r6ZtsN/cGNNtemmmfoLAFZnjMbNyLzBafjzikOM+glrjNHPlf6lQDOTccj9n5b0PPihEBbhneMyGs1Q==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "ccount": "^2.0.0", + "devlop": "^1.1.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0", + "parse-entities": "^4.0.0", + "stringify-entities": "^4.0.0", + "unist-util-stringify-position": "^4.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-mdxjs-esm": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-2.0.1.tgz", + "integrity": "sha512-EcmOpxsZ96CvlP03NghtH1EsLtr0n9Tm4lPUJUBccV9RwUOneqSycg19n5HGzCf+10LozMRSObtVr3ee1WoHtg==", + "dependencies": { + "@types/estree-jsx": "^1.0.0", + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "devlop": "^1.0.0", + "mdast-util-from-markdown": "^2.0.0", + "mdast-util-to-markdown": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-phrasing": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", + "dependencies": { + "@types/mdast": "^4.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-hast": { + "version": "13.2.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-hast/-/mdast-util-to-hast-13.2.0.tgz", + "integrity": "sha512-QGYKEuUsYT9ykKBCMOEDLsU5JRObWQusAolFMeko/tYPufNkRffBAQjIE+99jbA87xv6FgmjLtwjh9wBWajwAA==", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "@ungap/structured-clone": "^1.0.0", + "devlop": "^1.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "trim-lines": "^3.0.0", + "unist-util-position": "^5.0.0", + "unist-util-visit": "^5.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-markdown": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/mdast-util-to-markdown/-/mdast-util-to-markdown-2.1.2.tgz", + "integrity": "sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "@types/unist": "^3.0.0", + "longest-streak": "^3.0.0", + "mdast-util-phrasing": "^4.0.0", + "mdast-util-to-string": "^4.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-decode-string": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/mdast-util-to-string": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/mdast-util-to-string/-/mdast-util-to-string-4.0.0.tgz", + "integrity": "sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==", + "dependencies": { + "@types/mdast": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromark": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/micromark/-/micromark-4.0.2.tgz", + "integrity": "sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/debug": "^4.0.0", + "debug": "^4.0.0", + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-core-commonmark": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-core-commonmark/-/micromark-core-commonmark-2.0.3.tgz", + "integrity": "sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "decode-named-character-reference": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-destination": "^2.0.0", + "micromark-factory-label": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-factory-title": "^2.0.0", + "micromark-factory-whitespace": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-html-tag-name": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-subtokenize": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-gfm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-3.0.0.tgz", + "integrity": "sha512-vsKArQsicm7t0z2GugkCKtZehqUm31oeGBV/KVSorWSy8ZlNAv7ytjFhvaryUiCUJYqs+NoE6AFhpQvBTM6Q4w==", + "peer": true, + "dependencies": { + "micromark-extension-gfm-autolink-literal": "^2.0.0", + "micromark-extension-gfm-footnote": "^2.0.0", + "micromark-extension-gfm-strikethrough": "^2.0.0", + "micromark-extension-gfm-table": "^2.0.0", + "micromark-extension-gfm-tagfilter": "^2.0.0", + "micromark-extension-gfm-task-list-item": "^2.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-autolink-literal": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-autolink-literal/-/micromark-extension-gfm-autolink-literal-2.1.0.tgz", + "integrity": "sha512-oOg7knzhicgQ3t4QCjCWgTmfNhvQbDDnJeVu9v81r7NltNCVmhPy1fJRX27pISafdjL+SVc4d3l48Gb6pbRypw==", + "peer": true, + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-footnote": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-footnote/-/micromark-extension-gfm-footnote-2.1.0.tgz", + "integrity": "sha512-/yPhxI1ntnDNsiHtzLKYnE3vf9JZ6cAisqVDauhp4CEHxlb4uoOTxOCJ+9s51bIB8U1N1FJ1RXOKTIlD5B/gqw==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-normalize-identifier": "^2.0.0", + "micromark-util-sanitize-uri": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-strikethrough": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-strikethrough/-/micromark-extension-gfm-strikethrough-2.1.0.tgz", + "integrity": "sha512-ADVjpOOkjz1hhkZLlBiYA9cR2Anf8F4HqZUO6e5eDcPQd0Txw5fxLzzxnEkSkfnD0wziSGiv7sYhk/ktvbf1uw==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-classify-character": "^2.0.0", + "micromark-util-resolve-all": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-table": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-table/-/micromark-extension-gfm-table-2.1.1.tgz", + "integrity": "sha512-t2OU/dXXioARrC6yWfJ4hqB7rct14e8f7m0cbI5hUmDyyIlwv5vEtooptH8INkbLzOatzKuVbQmAYcbWoyz6Dg==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-tagfilter": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-tagfilter/-/micromark-extension-gfm-tagfilter-2.0.0.tgz", + "integrity": "sha512-xHlTOmuCSotIA8TW1mDIM6X2O1SiX5P9IuDtqGonFhEK0qgRI4yeC6vMxEV2dgyr2TiD+2PQ10o+cOhdVAcwfg==", + "peer": true, + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-gfm-task-list-item": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/micromark-extension-gfm-task-list-item/-/micromark-extension-gfm-task-list-item-2.1.0.tgz", + "integrity": "sha512-qIBZhqxqI6fjLDYFTBIa4eivDMnP+OZqsNwmQ3xNLE4Cxwc+zfQEfbs6tzAo2Hjq+bh6q5F+Z8/cksrLFYWQQw==", + "peer": true, + "dependencies": { + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-expression": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-3.0.1.tgz", + "integrity": "sha512-dD/ADLJ1AeMvSAKBwO22zG22N4ybhe7kFIZ3LsDI0GlsNr2A3KYxb0LdC1u5rj4Nw+CHKY0RVdnHX8vj8ejm4Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-extension-mdx-jsx": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-3.0.2.tgz", + "integrity": "sha512-e5+q1DjMh62LZAJOnDraSSbDMvGJ8x3cbjygy2qFEi7HCeUT4BDKCvMozPozcD6WmOt6sVvYDNBKhFSz3kjOVQ==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "estree-util-is-identifier-name": "^3.0.0", + "micromark-factory-mdx-expression": "^2.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdx-md": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-2.0.0.tgz", + "integrity": "sha512-EpAiszsB3blw4Rpba7xTOUptcFeBFi+6PY8VnJ2hhimH+vCQDirWgsMpz7w1XcZE7LVrSAUGb9VJpG9ghlYvYQ==", + "dependencies": { + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-3.0.0.tgz", + "integrity": "sha512-A873fJfhnJ2siZyUrJ31l34Uqwy4xIFmvPY1oj+Ean5PHcPBYzEsvqvWGaWcfEIr11O5Dlw3p2y0tZWpKHDejQ==", + "dependencies": { + "acorn": "^8.0.0", + "acorn-jsx": "^5.0.0", + "micromark-extension-mdx-expression": "^3.0.0", + "micromark-extension-mdx-jsx": "^3.0.0", + "micromark-extension-mdx-md": "^2.0.0", + "micromark-extension-mdxjs-esm": "^3.0.0", + "micromark-util-combine-extensions": "^2.0.0", + "micromark-util-types": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-extension-mdxjs-esm": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-3.0.0.tgz", + "integrity": "sha512-DJFl4ZqkErRpq/dAPyeWp15tGrcrrJho1hKK5uBS70BCtfrIFg81sqcTVu3Ta+KD1Tk5vAtBNElWxtAa+m8K9A==", + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-core-commonmark": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/micromark-factory-destination": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-2.0.1.tgz", + "integrity": "sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-label": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-label/-/micromark-factory-label-2.0.1.tgz", + "integrity": "sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-mdx-expression": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-2.0.3.tgz", + "integrity": "sha512-kQnEtA3vzucU2BkrIa8/VaSAsP+EJ3CKOvhMuJgOEGg9KDC6OAY6nSnNDVRiVNRqj7Y4SlSzcStaH/5jge8JdQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "devlop": "^1.0.0", + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-events-to-acorn": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unist-util-position-from-estree": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-factory-space": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-2.0.1.tgz", + "integrity": "sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-title": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-title/-/micromark-factory-title-2.0.1.tgz", + "integrity": "sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-factory-whitespace": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-factory-whitespace/-/micromark-factory-whitespace-2.0.1.tgz", + "integrity": "sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-factory-space": "^2.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-character": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/micromark-util-character/-/micromark-util-character-2.1.1.tgz", + "integrity": "sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-chunked": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-chunked/-/micromark-util-chunked-2.0.1.tgz", + "integrity": "sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-classify-character": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-classify-character/-/micromark-util-classify-character-2.0.1.tgz", + "integrity": "sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-combine-extensions": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-combine-extensions/-/micromark-util-combine-extensions-2.0.1.tgz", + "integrity": "sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, - "engines": { - "node": ">= 8" + "micromark-util-chunked": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "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, - "engines": { - "node": ">= 8" + "node_modules/micromark-util-decode-numeric-character-reference": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-decode-numeric-character-reference/-/micromark-util-decode-numeric-character-reference-2.0.2.tgz", + "integrity": "sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" } }, - "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, + "node_modules/micromark-util-decode-string": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-decode-string/-/micromark-util-decode-string-2.0.1.tgz", + "integrity": "sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, - "engines": { - "node": ">= 8" + "decode-named-character-reference": "^1.0.0", + "micromark-util-character": "^2.0.0", + "micromark-util-decode-numeric-character-reference": "^2.0.0", + "micromark-util-symbol": "^2.0.0" } }, - "node_modules/array-union": { + "node_modules/micromark-util-encode": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-2.0.1.tgz", + "integrity": "sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-events-to-acorn": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-2.0.3.tgz", + "integrity": "sha512-jmsiEIiZ1n7X1Rr5k8wVExBQCg5jy4UXVADItHmNk1zkwEVhBuIUKRu3fqv+hs4nxLISi2DQGlqIOGiFxgbfHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "@types/estree": "^1.0.0", + "@types/unist": "^3.0.0", + "devlop": "^1.0.0", + "estree-util-visit": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0", + "vfile-message": "^4.0.0" + } + }, + "node_modules/micromark-util-html-tag-name": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-2.0.1.tgz", + "integrity": "sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromark-util-normalize-identifier": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-normalize-identifier/-/micromark-util-normalize-identifier-2.0.1.tgz", + "integrity": "sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-resolve-all": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-resolve-all/-/micromark-util-resolve-all-2.0.1.tgz", + "integrity": "sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-types": "^2.0.0" + } + }, + "node_modules/micromark-util-sanitize-uri": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-sanitize-uri/-/micromark-util-sanitize-uri-2.0.1.tgz", + "integrity": "sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "micromark-util-character": "^2.0.0", + "micromark-util-encode": "^2.0.0", + "micromark-util-symbol": "^2.0.0" + } + }, + "node_modules/micromark-util-subtokenize": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" + "resolved": "https://registry.npmjs.org/micromark-util-subtokenize/-/micromark-util-subtokenize-2.1.0.tgz", + "integrity": "sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ], + "dependencies": { + "devlop": "^1.0.0", + "micromark-util-chunked": "^2.0.0", + "micromark-util-symbol": "^2.0.0", + "micromark-util-types": "^2.0.0" } }, - "node_modules/async": { - "version": "3.2.6", - "resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz", - "integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==", - "dev": true + "node_modules/micromark-util-symbol": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/micromark-util-symbol/-/micromark-util-symbol-2.0.1.tgz", + "integrity": "sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, + "node_modules/micromark-util-types": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/micromark-util-types/-/micromark-util-types-2.0.2.tgz", + "integrity": "sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==", + "funding": [ + { + "type": "GitHub Sponsors", + "url": "https://github.com/sponsors/unifiedjs" + }, + { + "type": "OpenCollective", + "url": "https://opencollective.com/unified" + } + ] + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", "dependencies": { - "fill-range": "^7.1.1" + "braces": "^3.0.3", + "picomatch": "^2.3.1" }, "engines": { - "node": ">=8" + "node": ">=8.6" } }, - "node_modules/commander": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-13.1.0.tgz", - "integrity": "sha512-/rFeCpNJQbhSZjGVwO9RFV3xPqbnERS8MmIQzCtD/zl6gpJuV/bMLuN92oG3F7d8oDEHHRrujSXNUr8fpjntKw==", - "dev": true, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/nanoid": { + "version": "3.3.11", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.11.tgz", + "integrity": "sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">=18" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "peer": true, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", - "dev": true, + "node_modules/next": { + "version": "15.3.2", + "resolved": "https://registry.npmjs.org/next/-/next-15.3.2.tgz", + "integrity": "sha512-CA3BatMyHkxZ48sgOCLdVHjFU36N7TF1HhqAHLFOkV6buwZnvMI84Cug8xD56B9mCuKrqXnLn94417GrZ/jjCQ==", + "peer": true, "dependencies": { - "path-type": "^4.0.0" + "@next/env": "15.3.2", + "@swc/counter": "0.1.3", + "@swc/helpers": "0.5.15", + "busboy": "1.6.0", + "caniuse-lite": "^1.0.30001579", + "postcss": "8.4.31", + "styled-jsx": "5.1.6" + }, + "bin": { + "next": "dist/bin/next" }, "engines": { - "node": ">=8" + "node": "^18.18.0 || ^19.8.0 || >= 20.0.0" + }, + "optionalDependencies": { + "@next/swc-darwin-arm64": "15.3.2", + "@next/swc-darwin-x64": "15.3.2", + "@next/swc-linux-arm64-gnu": "15.3.2", + "@next/swc-linux-arm64-musl": "15.3.2", + "@next/swc-linux-x64-gnu": "15.3.2", + "@next/swc-linux-x64-musl": "15.3.2", + "@next/swc-win32-arm64-msvc": "15.3.2", + "@next/swc-win32-x64-msvc": "15.3.2", + "sharp": "^0.34.1" + }, + "peerDependencies": { + "@opentelemetry/api": "^1.1.0", + "@playwright/test": "^1.41.2", + "babel-plugin-react-compiler": "*", + "react": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "react-dom": "^18.2.0 || 19.0.0-rc-de68d2f4-20241204 || ^19.0.0", + "sass": "^1.3.0" + }, + "peerDependenciesMeta": { + "@opentelemetry/api": { + "optional": true + }, + "@playwright/test": { + "optional": true + }, + "babel-plugin-react-compiler": { + "optional": true + }, + "sass": { + "optional": true + } } }, - "node_modules/email-addresses": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/email-addresses/-/email-addresses-5.0.0.tgz", - "integrity": "sha512-4OIPYlA6JXqtVn8zpHpGiI7vE6EQOAg16aGnDMIAlZVinnoZ8208tW1hAbjWydgN/4PLTT9q+O1K6AH/vALJGw==", - "dev": true + "node_modules/oniguruma-parser": { + "version": "0.12.1", + "resolved": "https://registry.npmjs.org/oniguruma-parser/-/oniguruma-parser-0.12.1.tgz", + "integrity": "sha512-8Unqkvk1RYc6yq2WBYRj4hdnsAxVze8i7iPfQr8e4uSP3tRv0rpZcbGUDvxfQQcdwHt/e9PrMvGCsa8OqG9X3w==", + "peer": true }, - "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==", + "node_modules/oniguruma-to-es": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-4.3.3.tgz", + "integrity": "sha512-rPiZhzC3wXwE59YQMRDodUwwT9FZ9nNBwQQfsd1wfdtlKEyCdRV0avrTcSZ5xlIvGRVPd/cx6ZN45ECmS39xvg==", + "peer": true, + "dependencies": { + "oniguruma-parser": "^0.12.1", + "regex": "^6.0.1", + "regex-recursion": "^6.0.2" + } + }, + "node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "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" + "p-try": "^2.0.0" }, "engines": { - "node": ">=8.6.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fastq": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.19.1.tgz", - "integrity": "sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/filename-reserved-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-2.0.0.tgz", - "integrity": "sha512-lc1bnsSr4L4Bdif8Xb/qrtokGbq5zlsms/CYH8PP+WtCkGNF65DPiQY8vG3SakEdRn8Dlnm+gW/qWKKjS5sZzQ==", + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "dev": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/filenamify": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-4.3.0.tgz", - "integrity": "sha512-hcFKyUG57yWGAzu1CMt/dPzYZuv+jAJUT85bL8mrXvNe6hWj6yEHEc4EdcgiA6Z3oi1/9wXJdZPXF2dZNgwgOg==", - "dev": true, + "node_modules/parse-entities": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.2.tgz", + "integrity": "sha512-GG2AQYWoLgL877gQIKeRPGO1xF9+eG1ujIb5soS5gPvLQ1y2o8FL90w2QWNdf9I361Mpp7726c+lj3U0qK1uGw==", "dependencies": { - "filename-reserved-regex": "^2.0.0", - "strip-outer": "^1.0.1", - "trim-repeated": "^1.0.0" + "@types/unist": "^2.0.0", + "character-entities-legacy": "^3.0.0", + "character-reference-invalid": "^2.0.0", + "decode-named-character-reference": "^1.0.0", + "is-alphanumerical": "^2.0.0", + "is-decimal": "^2.0.0", + "is-hexadecimal": "^2.0.0" }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/parse-entities/node_modules/@types/unist": { + "version": "2.0.11", + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.11.tgz", + "integrity": "sha512-CmBKiL6NNo/OqgmMn95Fk9Whlp2mtvIv+KNpQKN2F4SjvrEesubTRWGYSg+BnWZOnlCaSTU1sMpsBOzgbYhnsA==" + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, "engines": { "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { "node": ">=8" } }, - "node_modules/find-cache-dir": { - "version": "3.3.2", - "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-3.3.2.tgz", - "integrity": "sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==", + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true, - "dependencies": { - "commondir": "^1.0.1", - "make-dir": "^3.0.2", - "pkg-dir": "^4.1.0" - }, "engines": { "node": ">=8" + } + }, + "node_modules/picocolors": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.1.tgz", + "integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" }, "funding": { - "url": "https://github.com/avajs/find-cache-dir?sponsor=1" + "url": "https://github.com/sponsors/jonschlinkert" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/fs-extra": { - "version": "11.3.0", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.0.tgz", - "integrity": "sha512-Z4XaCL6dUDHfP/jT25jJKMmtxvuwbkrD1vNSMFlo9lNLY2c5FHYSQgHPRZUjAB26TpDEoW9HCOgplrdbaPV/ew==", - "dev": true, + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "peer": true, "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" }, "engines": { - "node": ">=14.14" + "node": "^10 || ^12 || >=14" } }, - "node_modules/gh-pages": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/gh-pages/-/gh-pages-6.3.0.tgz", - "integrity": "sha512-Ot5lU6jK0Eb+sszG8pciXdjMXdBJ5wODvgjR+imihTqsUWF2K6dJ9HST55lgqcs8wWcw6o6wAsUzfcYRhJPXbA==", - "dev": true, - "dependencies": { - "async": "^3.2.4", - "commander": "^13.0.0", - "email-addresses": "^5.0.0", - "filenamify": "^4.3.0", - "find-cache-dir": "^3.3.1", - "fs-extra": "^11.1.1", - "globby": "^11.1.0" - }, - "bin": { - "gh-pages": "bin/gh-pages.js", - "gh-pages-clean": "bin/gh-pages-clean.js" - }, + "node_modules/property-information": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/property-information/-/property-information-7.1.0.tgz", + "integrity": "sha512-TwEZ+X+yCJmYfL7TPUOcvBZ4QfoT5YenQiJuX//0th53DE6w0xxLEtfK3iyryQFddXuvkIk51EEgrJQ0WJkOmQ==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "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==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/react": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react/-/react-19.1.0.tgz", + "integrity": "sha512-FS+XFBNvn3GTAWq26joslQgWNoFu08F4kl0J4CgdNKADkdSGXQyTCnKteIAJy96Br6YbpEU1LSzV5dYtjMkMDg==", + "peer": true, "engines": { - "node": ">=10" + "node": ">=0.10.0" } }, - "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, + "node_modules/react-dom": { + "version": "19.1.0", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.0.tgz", + "integrity": "sha512-Xs1hdnE+DyKgeHJeJznQmYMIBG3TKIHJJT95Q58nHLSrElKlGQqDTR2HQ9fx5CN/Gk6Vh/kupBTDLU11/nDk/g==", + "peer": true, "dependencies": { - "is-glob": "^4.0.1" + "scheduler": "^0.26.0" }, - "engines": { - "node": ">= 6" + "peerDependencies": { + "react": "^19.1.0" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", - "dev": true, + "node_modules/react-remove-scroll": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.7.0.tgz", + "integrity": "sha512-sGsQtcjMqdQyijAHytfGEELB8FufGbfXIsvUTe+NLx1GDRJCXtCFLBLUI1eyZCKXXvbEU2C6gai0PZKoIE9Vbg==", + "peer": true, "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" + "react-remove-scroll-bar": "^2.3.7", + "react-style-singleton": "^2.2.3", + "tslib": "^2.1.0", + "use-callback-ref": "^1.3.3", + "use-sidecar": "^1.1.3" }, "engines": { "node": ">=10" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true - }, - "node_modules/ignore": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", - "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", - "dev": true, - "engines": { - "node": ">= 4" + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, + "node_modules/react-remove-scroll-bar": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.8.tgz", + "integrity": "sha512-9r+yi9+mgU33AKcj6IbT9oRCO78WriSj6t/cF8DWBZJ9aOGPOTEDvdUDz1FwKim7QXWwmHqtdHnRJfhAxEG46Q==", + "peer": true, + "dependencies": { + "react-style-singleton": "^2.2.2", + "tslib": "^2.0.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", - "dev": true, + "node_modules/react-style-singleton": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.3.tgz", + "integrity": "sha512-b6jSvxvVnyptAiLjbkWLE/lOnR4lfTtDAl+eUC7RZy+QQWc6wRzIV2CE6xBuMmDxc2qIihtDCZD5NPOFl7fRBQ==", + "peer": true, "dependencies": { - "is-extglob": "^2.1.1" + "get-nonce": "^1.0.0", + "tslib": "^2.0.0" }, "engines": { - "node": ">=0.10.0" + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true, + "node_modules/readdirp": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-4.1.2.tgz", + "integrity": "sha512-GDhwkLfywWL2s6vEjyhri+eXmfH6j1L7JE27WhqLeYzoh/A3DBaYGEj2H/HFZCn/kMfim73FXxEJTw06WtxQwg==", "engines": { - "node": ">=0.12.0" + "node": ">= 14.18.0" + }, + "funding": { + "type": "individual", + "url": "https://paulmillr.com/funding/" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dev": true, + "node_modules/recma-build-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-build-jsx/-/recma-build-jsx-1.0.0.tgz", + "integrity": "sha512-8GtdyqaBcDfva+GUKDr3nev3VpKAhup1+RvkMvUxURHpW7QyIvk9F5wz7Vzo06CEMSilw6uArgRqhpiUcWp8ew==", "dependencies": { - "universalify": "^2.0.0" + "@types/estree": "^1.0.0", + "estree-util-build-jsx": "^3.0.0", + "vfile": "^6.0.0" }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, + "node_modules/recma-jsx": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-jsx/-/recma-jsx-1.0.0.tgz", + "integrity": "sha512-5vwkv65qWwYxg+Atz95acp8DMu1JDSqdGkA2Of1j6rCreyFUE/gp15fC8MnGEuG1W68UKjM6x6+YTWIh7hZM/Q==", "dependencies": { - "p-locate": "^4.1.0" + "acorn-jsx": "^5.0.0", + "estree-util-to-js": "^2.0.0", + "recma-parse": "^1.0.0", + "recma-stringify": "^1.0.0", + "unified": "^11.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, + "node_modules/recma-parse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-parse/-/recma-parse-1.0.0.tgz", + "integrity": "sha512-OYLsIGBB5Y5wjnSnQW6t3Xg7q3fQ7FWbw/vcXtORTnyaSFscOtABg+7Pnz6YZ6c27fG1/aN8CjfwoUEUIdwqWQ==", "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" + "@types/estree": "^1.0.0", + "esast-util-from-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/make-dir/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" + "node_modules/recma-stringify": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/recma-stringify/-/recma-stringify-1.0.0.tgz", + "integrity": "sha512-cjwII1MdIIVloKvC9ErQ+OgAtwHBmcZ0Bg4ciz78FtbT8In39aAYbaA7zvxQ61xVMSPE8WxhLwLbhif4Js2C+g==", + "dependencies": { + "@types/estree": "^1.0.0", + "estree-util-to-js": "^2.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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, - "engines": { - "node": ">= 8" + "node_modules/regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-6.0.1.tgz", + "integrity": "sha512-uorlqlzAKjKQZ5P+kTJr3eeJGSVroLKoHmquUj4zHWuR+hEyNqlXsSKlYYF5F4NI6nl7tWCs0apKJ0lmfsXAPA==", + "peer": true, + "dependencies": { + "regex-utilities": "^2.3.0" } }, - "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, + "node_modules/regex-recursion": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-6.0.2.tgz", + "integrity": "sha512-0YCaSCq2VRIebiaUviZNs0cBz1kg5kVS2UKUfNIx8YVs1cN3AV7NTctO5FOKBA+UT2BPJIWZauYHPqJODG50cg==", + "peer": true, "dependencies": { - "braces": "^3.0.3", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=8.6" + "regex-utilities": "^2.3.0" } }, - "node_modules/p-limit": { + "node_modules/regex-utilities": { "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", + "peer": true }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, + "node_modules/rehype-recma": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/rehype-recma/-/rehype-recma-1.0.0.tgz", + "integrity": "sha512-lqA4rGUf1JmacCNWWZx0Wv1dHqMwxzsDWYMTowuplHF3xH0N/MmrZ/G3BDZnzAkRmxDadujCjaKM2hqYdCBOGw==", "dependencies": { - "p-limit": "^2.2.0" + "@types/estree": "^1.0.0", + "@types/hast": "^3.0.0", + "hast-util-to-estree": "^3.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" + "node_modules/remark": { + "version": "15.0.1", + "resolved": "https://registry.npmjs.org/remark/-/remark-15.0.1.tgz", + "integrity": "sha512-Eht5w30ruCXgFmxVUSlNWQ9iiimq07URKeFS3hNc8cUWy1llX4KDWfyEDZRycMc+znsN9Ux5/tJ/BFdgdOwA3A==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/remark-gfm": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-4.0.1.tgz", + "integrity": "sha512-1quofZ2RQ9EWdeN34S79+KExV1764+wCUGop5CPL1WGdD0ocPpu91lzPGbwWMECpEpd42kJGQwzRfyov9j4yNg==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-gfm": "^3.0.0", + "micromark-extension-gfm": "^3.0.0", + "remark-parse": "^11.0.0", + "remark-stringify": "^11.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, - "engines": { - "node": ">=8" + "node_modules/remark-mdx": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-3.1.0.tgz", + "integrity": "sha512-Ngl/H3YXyBV9RcRNdlYsZujAmhsxwzxpDzpDEhFBVAGthS4GDgnctpDjgFl/ULx5UEDzqtW1cyBSNKqYYrqLBA==", + "dependencies": { + "mdast-util-mdx": "^3.0.0", + "micromark-extension-mdxjs": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" + "node_modules/remark-parse": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-11.0.0.tgz", + "integrity": "sha512-FCxlKLNGknS5ba/1lmpYijMUzX2esxW5xQqjWxw2eHFfS2MSdaHVINFmhjo+qN1WhZhNimq0dZATN9pH0IDrpA==", + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-from-markdown": "^2.0.0", + "micromark-util-types": "^2.0.0", + "unified": "^11.0.0" }, "funding": { - "url": "https://github.com/sponsors/jonschlinkert" + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, + "node_modules/remark-rehype": { + "version": "11.1.2", + "resolved": "https://registry.npmjs.org/remark-rehype/-/remark-rehype-11.1.2.tgz", + "integrity": "sha512-Dh7l57ianaEoIpzbp0PC9UKAdCSVklD8E5Rpw7ETfbTl3FqcOOgq5q2LVDhgGCkaBv7p24JXikPdvhhmHvKMsw==", "dependencies": { - "find-up": "^4.0.0" + "@types/hast": "^3.0.0", + "@types/mdast": "^4.0.0", + "mdast-util-to-hast": "^13.0.0", + "unified": "^11.0.0", + "vfile": "^6.0.0" }, - "engines": { - "node": ">=8" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" } }, - "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" - } - ] + "node_modules/remark-stringify": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/remark-stringify/-/remark-stringify-11.0.0.tgz", + "integrity": "sha512-1OSmLd3awB/t8qdoEOMazZkNsfVTeY4fTsgzcQFdXNq8ToTN4ZGwrMnlda4K6smTFKD+GRV6O48i6Z4iKgPPpw==", + "peer": true, + "dependencies": { + "@types/mdast": "^4.0.0", + "mdast-util-to-markdown": "^2.0.0", + "unified": "^11.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } }, "node_modules/reusify": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.1.0.tgz", "integrity": "sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==", - "dev": true, "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -491,7 +3905,6 @@ "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, "funding": [ { "type": "github", @@ -510,6 +3923,132 @@ "queue-microtask": "^1.2.2" } }, + "node_modules/scheduler": { + "version": "0.26.0", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.26.0.tgz", + "integrity": "sha512-NlHwttCI/l5gCPR3D1nNXtWABUmBwvZpEQiD4IXSbIDq8BzLIK/7Ir5gTFSGZDUu37K5cMNp0hFtzO38sC7gWA==", + "peer": true + }, + "node_modules/scroll-into-view-if-needed": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/scroll-into-view-if-needed/-/scroll-into-view-if-needed-3.1.0.tgz", + "integrity": "sha512-49oNpRjWRvnU8NyGVmUaYG4jtTkNonFZI86MmGRDqBphEK2EXT9gdEUoQPZhuBM8yWHxCWbobltqYO5M4XrUvQ==", + "peer": true, + "dependencies": { + "compute-scroll-into-view": "^3.0.2" + } + }, + "node_modules/section-matter": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz", + "integrity": "sha512-vfD3pmTzGpufjScBh50YHKzEu2lxBWhVEHsNGoEXmCmn2hKGfeNLYMzCJpe8cD7gqX7TJluOVpBkAequ6dgMmA==", + "dependencies": { + "extend-shallow": "^2.0.1", + "kind-of": "^6.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/semver": { + "version": "7.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", + "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", + "optional": true, + "peer": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/sharp": { + "version": "0.34.1", + "resolved": "https://registry.npmjs.org/sharp/-/sharp-0.34.1.tgz", + "integrity": "sha512-1j0w61+eVxu7DawFJtnfYcvSv6qPFvfTaqzTQ2BLknVhHTwGS8sc63ZBF4rzkWMBVKybo4S5OBtDdZahh2A1xg==", + "hasInstallScript": true, + "optional": true, + "peer": true, + "dependencies": { + "color": "^4.2.3", + "detect-libc": "^2.0.3", + "semver": "^7.7.1" + }, + "engines": { + "node": "^18.17.0 || ^20.3.0 || >=21.0.0" + }, + "funding": { + "url": "https://opencollective.com/libvips" + }, + "optionalDependencies": { + "@img/sharp-darwin-arm64": "0.34.1", + "@img/sharp-darwin-x64": "0.34.1", + "@img/sharp-libvips-darwin-arm64": "1.1.0", + "@img/sharp-libvips-darwin-x64": "1.1.0", + "@img/sharp-libvips-linux-arm": "1.1.0", + "@img/sharp-libvips-linux-arm64": "1.1.0", + "@img/sharp-libvips-linux-ppc64": "1.1.0", + "@img/sharp-libvips-linux-s390x": "1.1.0", + "@img/sharp-libvips-linux-x64": "1.1.0", + "@img/sharp-libvips-linuxmusl-arm64": "1.1.0", + "@img/sharp-libvips-linuxmusl-x64": "1.1.0", + "@img/sharp-linux-arm": "0.34.1", + "@img/sharp-linux-arm64": "0.34.1", + "@img/sharp-linux-s390x": "0.34.1", + "@img/sharp-linux-x64": "0.34.1", + "@img/sharp-linuxmusl-arm64": "0.34.1", + "@img/sharp-linuxmusl-x64": "0.34.1", + "@img/sharp-wasm32": "0.34.1", + "@img/sharp-win32-ia32": "0.34.1", + "@img/sharp-win32-x64": "0.34.1" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shiki": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-3.4.2.tgz", + "integrity": "sha512-wuxzZzQG8kvZndD7nustrNFIKYJ1jJoWIPaBpVe2+KHSvtzMi4SBjOxrigs8qeqce/l3U0cwiC+VAkLKSunHQQ==", + "peer": true, + "dependencies": { + "@shikijs/core": "3.4.2", + "@shikijs/engine-javascript": "3.4.2", + "@shikijs/engine-oniguruma": "3.4.2", + "@shikijs/langs": "3.4.2", + "@shikijs/themes": "3.4.2", + "@shikijs/types": "3.4.2", + "@shikijs/vscode-textmate": "^10.0.2", + "@types/hast": "^3.0.4" + } + }, + "node_modules/simple-swizzle": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", + "optional": true, + "peer": true, + "dependencies": { + "is-arrayish": "^0.3.1" + } + }, "node_modules/slash": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", @@ -519,6 +4058,67 @@ "node": ">=8" } }, + "node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "engines": { + "node": ">= 8" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "peer": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/space-separated-tokens": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/space-separated-tokens/-/space-separated-tokens-2.0.2.tgz", + "integrity": "sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/streamsearch": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/streamsearch/-/streamsearch-1.1.0.tgz", + "integrity": "sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==", + "peer": true, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/stringify-entities": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/stringify-entities/-/stringify-entities-4.0.4.tgz", + "integrity": "sha512-IwfBptatlO+QCJUo19AqvrPNqlVMpW9YEL2LIVY+Rpv2qsjCGxaDLNRgeGsQWJhfItebuJhsGSLjaBbNSQ+ieg==", + "dependencies": { + "character-entities-html4": "^2.0.0", + "character-entities-legacy": "^3.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/strip-bom-string": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-bom-string/-/strip-bom-string-1.0.0.tgz", + "integrity": "sha512-uCC2VHvQRYu+lMh4My/sFNmF2klFymLX1wHJeXnbEJERpV/ZsVuonzerjfrGpIGF7LBVa1O7i9kjiWvJiFck8g==", + "engines": { + "node": ">=0.10.0" + } + }, "node_modules/strip-outer": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-1.0.1.tgz", @@ -540,11 +4140,49 @@ "node": ">=0.8.0" } }, + "node_modules/style-to-js": { + "version": "1.1.16", + "resolved": "https://registry.npmjs.org/style-to-js/-/style-to-js-1.1.16.tgz", + "integrity": "sha512-/Q6ld50hKYPH3d/r6nr117TZkHR0w0kGGIVfpG9N6D8NymRPM9RqCUv4pRpJ62E5DqOYx2AFpbZMyCPnjQCnOw==", + "dependencies": { + "style-to-object": "1.0.8" + } + }, + "node_modules/style-to-object": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.8.tgz", + "integrity": "sha512-xT47I/Eo0rwJmaXC4oilDGDWLohVhR6o/xAQcPQN8q6QBuZVL8qMYL85kLmST5cPjAorwvqIA4qXTRQoYHaL6g==", + "dependencies": { + "inline-style-parser": "0.2.4" + } + }, + "node_modules/styled-jsx": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/styled-jsx/-/styled-jsx-5.1.6.tgz", + "integrity": "sha512-qSVyDTeMotdvQYoHWLNGwRFJHC+i+ZvdBRYosOFgC+Wg1vx4frN2/RG/NA7SYqqvKNLf39P2LSRA2pu6n0XYZA==", + "peer": true, + "dependencies": { + "client-only": "0.0.1" + }, + "engines": { + "node": ">= 12.0.0" + }, + "peerDependencies": { + "react": ">= 16.8.0 || 17.x.x || ^18.0.0-0 || ^19.0.0-0" + }, + "peerDependenciesMeta": { + "@babel/core": { + "optional": true + }, + "babel-plugin-macros": { + "optional": true + } + } + }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, "dependencies": { "is-number": "^7.0.0" }, @@ -552,6 +4190,15 @@ "node": ">=8.0" } }, + "node_modules/trim-lines": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-lines/-/trim-lines-3.0.1.tgz", + "integrity": "sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/trim-repeated": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-1.0.0.tgz", @@ -573,6 +4220,114 @@ "node": ">=0.8.0" } }, + "node_modules/trough": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "peer": true + }, + "node_modules/unified": { + "version": "11.0.5", + "resolved": "https://registry.npmjs.org/unified/-/unified-11.0.5.tgz", + "integrity": "sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==", + "dependencies": { + "@types/unist": "^3.0.0", + "bail": "^2.0.0", + "devlop": "^1.0.0", + "extend": "^3.0.0", + "is-plain-obj": "^4.0.0", + "trough": "^2.0.0", + "vfile": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-is": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/unist-util-is/-/unist-util-is-6.0.0.tgz", + "integrity": "sha512-2qCTHimwdxLfz+YzdGfkqNlH0tLi9xjTnHddPmJwtIG9MGsdbutfTc4P+haPD7l7Cjxf/WZj+we5qfVPvvxfYw==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position/-/unist-util-position-5.0.0.tgz", + "integrity": "sha512-fucsC7HjXvkB5R3kTCO7kUjRdrS0BJt3M/FPxmHMBOm8JQi2BsHAHFsy27E0EolP8rp0NzXsJ+jNPyDWvOJZPA==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-position-from-estree": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-2.0.0.tgz", + "integrity": "sha512-KaFVRjoqLyF6YXCbVLNad/eS4+OfPQQn2yOd7zF/h5T/CSL2v8NpN6a5TPvtbXthAGw5nG+PuTtq+DdIZr+cRQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-stringify-position": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-4.0.0.tgz", + "integrity": "sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==", + "dependencies": { + "@types/unist": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/unist-util-visit/-/unist-util-visit-5.0.0.tgz", + "integrity": "sha512-MR04uvD+07cwl/yhVuVWAtw+3GOR/knlL55Nd/wAdblk27GCVt3lqpTivy/tkJcZoNPzTwS1Y+KMojlLDhoTzg==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0", + "unist-util-visit-parents": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/unist-util-visit-parents": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/unist-util-visit-parents/-/unist-util-visit-parents-6.0.1.tgz", + "integrity": "sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-is": "^6.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/universalify": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", @@ -581,6 +4336,106 @@ "engines": { "node": ">= 10.0.0" } + }, + "node_modules/use-callback-ref": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.3.tgz", + "integrity": "sha512-jQL3lRnocaFtu3V00JToYz/4QkNWswxijDaCVNZRiRTO3HQDLsdu1ZtmIUvV4yPp+rvWm5j0y0TG/S61cuijTg==", + "peer": true, + "dependencies": { + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/use-sidecar": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.3.tgz", + "integrity": "sha512-Fedw0aZvkhynoPYlA5WXrMCAMm+nSWdZt6lzJQ7Ok8S6Q+VsHmHpRWndVRJ8Be0ZbkfPc5LRYH+5XrzXcEeLRQ==", + "peer": true, + "dependencies": { + "detect-node-es": "^1.1.0", + "tslib": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "peerDependencies": { + "@types/react": "*", + "react": "^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0 || ^19.0.0-rc" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/vfile": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/vfile/-/vfile-6.0.3.tgz", + "integrity": "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==", + "dependencies": { + "@types/unist": "^3.0.0", + "vfile-message": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/vfile-message": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/vfile-message/-/vfile-message-4.0.2.tgz", + "integrity": "sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==", + "dependencies": { + "@types/unist": "^3.0.0", + "unist-util-stringify-position": "^4.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/zod": { + "version": "3.25.7", + "resolved": "https://registry.npmjs.org/zod/-/zod-3.25.7.tgz", + "integrity": "sha512-YGdT1cVRmKkOg6Sq7vY7IkxdphySKnXhaUmFI4r4FcuFVNgpCb9tZfNwXbT6BPjD5oz0nubFsoo9pIqKrDcCvg==", + "funding": { + "url": "https://github.com/sponsors/colinhacks" + } + }, + "node_modules/zwitch": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/zwitch/-/zwitch-2.0.4.tgz", + "integrity": "sha512-bXE4cR/kVZhKZX/RjPEflHaKVhUVl85noU3v6b8apfQEc1x4A+zBxjZ4lN8LqGd6WZ3dl98pY4o717VFmoPp+A==", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } } } } diff --git a/package.json b/package.json index 1b58964b..38b19483 100644 --- a/package.json +++ b/package.json @@ -1,5 +1,9 @@ { "devDependencies": { "gh-pages": "^6.3.0" + }, + "dependencies": { + "@types/mdx": "^2.0.13", + "fumadocs-mdx": "^11.6.4" } } From ce9fc5f07dd7a8b7a023b8c361e9936d372431aa Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:20:45 +0100 Subject: [PATCH 110/122] _meta --- docs-site/content/docs/_meta.json | 24 ++++++++++++++++++++++++ docs-site/lib/meta.ts | 4 +--- docs-site/lib/source.ts | 2 +- 3 files changed, 26 insertions(+), 4 deletions(-) create mode 100644 docs-site/content/docs/_meta.json diff --git a/docs-site/content/docs/_meta.json b/docs-site/content/docs/_meta.json new file mode 100644 index 00000000..13f6c56c --- /dev/null +++ b/docs-site/content/docs/_meta.json @@ -0,0 +1,24 @@ +{ + "home": { + "title": "Home" + }, + "getting-started": { + "title": "Getting Started" + }, + "related-projects": { + "title": "Related Projects" + }, + "about": { + "title": "About" + }, + "--": { + "title": "Documentation", + "type": "separator" + }, + "core": { + "title": "Core" + }, + "data": { + "title": "Data" + } +} \ No newline at end of file diff --git a/docs-site/lib/meta.ts b/docs-site/lib/meta.ts index 6e0cc3ea..166eab9c 100644 --- a/docs-site/lib/meta.ts +++ b/docs-site/lib/meta.ts @@ -1,5 +1,5 @@ export const docsMetadata = { - pages: [ + docs: [ 'home', 'getting-started', 'related-projects', @@ -8,7 +8,5 @@ export const docsMetadata = { title: 'Documentation', type: 'separator' }, - 'core', - 'data' ] }; \ No newline at end of file diff --git a/docs-site/lib/source.ts b/docs-site/lib/source.ts index 28a77668..9871c2fc 100644 --- a/docs-site/lib/source.ts +++ b/docs-site/lib/source.ts @@ -6,6 +6,6 @@ import { meta } from '@/.source'; // See https://fumadocs.vercel.app/docs/headless/source-api for more info export const source = loader({ // it assigns a URL to your pages - baseUrl: '/docs-site', + baseUrl: '/docs', source: createMDXSource(docs, meta), }); From d53881943874d6dacc5d2f35a5616ae93b71ffc0 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:24:59 +0100 Subject: [PATCH 111/122] updated sidebar --- docs-site/content/docs/{home.mdx => --home.mdx} | 0 .../content/docs/{getting-started.mdx => -getting-started.mdx} | 0 .../content/docs/{related-projects.mdx => -related-projects.mdx} | 0 docs-site/content/docs/{ => Documentation}/core/Levenshtein.mdx | 0 docs-site/content/docs/{ => Documentation}/core/highlight.mdx | 0 docs-site/content/docs/{ => Documentation}/core/yake.mdx | 0 docs-site/content/docs/{ => Documentation}/data/composedword.mdx | 0 docs-site/content/docs/{ => Documentation}/data/datacore.mdx | 0 docs-site/content/docs/{ => Documentation}/data/singleword.mdx | 0 docs-site/content/docs/{ => Documentation}/data/utils.mdx | 0 10 files changed, 0 insertions(+), 0 deletions(-) rename docs-site/content/docs/{home.mdx => --home.mdx} (100%) rename docs-site/content/docs/{getting-started.mdx => -getting-started.mdx} (100%) rename docs-site/content/docs/{related-projects.mdx => -related-projects.mdx} (100%) rename docs-site/content/docs/{ => Documentation}/core/Levenshtein.mdx (100%) rename docs-site/content/docs/{ => Documentation}/core/highlight.mdx (100%) rename docs-site/content/docs/{ => Documentation}/core/yake.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/composedword.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/datacore.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/singleword.mdx (100%) rename docs-site/content/docs/{ => Documentation}/data/utils.mdx (100%) diff --git a/docs-site/content/docs/home.mdx b/docs-site/content/docs/--home.mdx similarity index 100% rename from docs-site/content/docs/home.mdx rename to docs-site/content/docs/--home.mdx diff --git a/docs-site/content/docs/getting-started.mdx b/docs-site/content/docs/-getting-started.mdx similarity index 100% rename from docs-site/content/docs/getting-started.mdx rename to docs-site/content/docs/-getting-started.mdx diff --git a/docs-site/content/docs/related-projects.mdx b/docs-site/content/docs/-related-projects.mdx similarity index 100% rename from docs-site/content/docs/related-projects.mdx rename to docs-site/content/docs/-related-projects.mdx diff --git a/docs-site/content/docs/core/Levenshtein.mdx b/docs-site/content/docs/Documentation/core/Levenshtein.mdx similarity index 100% rename from docs-site/content/docs/core/Levenshtein.mdx rename to docs-site/content/docs/Documentation/core/Levenshtein.mdx diff --git a/docs-site/content/docs/core/highlight.mdx b/docs-site/content/docs/Documentation/core/highlight.mdx similarity index 100% rename from docs-site/content/docs/core/highlight.mdx rename to docs-site/content/docs/Documentation/core/highlight.mdx diff --git a/docs-site/content/docs/core/yake.mdx b/docs-site/content/docs/Documentation/core/yake.mdx similarity index 100% rename from docs-site/content/docs/core/yake.mdx rename to docs-site/content/docs/Documentation/core/yake.mdx diff --git a/docs-site/content/docs/data/composedword.mdx b/docs-site/content/docs/Documentation/data/composedword.mdx similarity index 100% rename from docs-site/content/docs/data/composedword.mdx rename to docs-site/content/docs/Documentation/data/composedword.mdx diff --git a/docs-site/content/docs/data/datacore.mdx b/docs-site/content/docs/Documentation/data/datacore.mdx similarity index 100% rename from docs-site/content/docs/data/datacore.mdx rename to docs-site/content/docs/Documentation/data/datacore.mdx diff --git a/docs-site/content/docs/data/singleword.mdx b/docs-site/content/docs/Documentation/data/singleword.mdx similarity index 100% rename from docs-site/content/docs/data/singleword.mdx rename to docs-site/content/docs/Documentation/data/singleword.mdx diff --git a/docs-site/content/docs/data/utils.mdx b/docs-site/content/docs/Documentation/data/utils.mdx similarity index 100% rename from docs-site/content/docs/data/utils.mdx rename to docs-site/content/docs/Documentation/data/utils.mdx From 9b99efe6d04f6828570f4b4d7fb4b911eb41c542 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:35:27 +0100 Subject: [PATCH 112/122] sidebar final config --- docs-site/content/docs/--home.mdx | 5 ++++- docs-site/lib/meta.ts | 12 ------------ docs-site/meta.ts | 14 -------------- 3 files changed, 4 insertions(+), 27 deletions(-) delete mode 100644 docs-site/lib/meta.ts delete mode 100644 docs-site/meta.ts diff --git a/docs-site/content/docs/--home.mdx b/docs-site/content/docs/--home.mdx index bb680788..475f23d6 100644 --- a/docs-site/content/docs/--home.mdx +++ b/docs-site/content/docs/--home.mdx @@ -1,4 +1,7 @@ -# Yet Another Keyword Extractor (YAKE!) +--- +title: # Yet Another Keyword Extractor (YAKE!) +icon: GitCompareArrows +--- > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. --- YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. diff --git a/docs-site/lib/meta.ts b/docs-site/lib/meta.ts deleted file mode 100644 index 166eab9c..00000000 --- a/docs-site/lib/meta.ts +++ /dev/null @@ -1,12 +0,0 @@ -export const docsMetadata = { - docs: [ - 'home', - 'getting-started', - 'related-projects', - 'about', - { - title: 'Documentation', - type: 'separator' - }, - ] -}; \ No newline at end of file diff --git a/docs-site/meta.ts b/docs-site/meta.ts deleted file mode 100644 index 6e0cc3ea..00000000 --- a/docs-site/meta.ts +++ /dev/null @@ -1,14 +0,0 @@ -export const docsMetadata = { - pages: [ - 'home', - 'getting-started', - 'related-projects', - 'about', - { - title: 'Documentation', - type: 'separator' - }, - 'core', - 'data' - ] -}; \ No newline at end of file From b96f10a0f0064edc903e2ffe2b0ae0b12b57ef8a Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:43:25 +0100 Subject: [PATCH 113/122] updated utils and homepage --- docs-site/content/docs/--home.mdx | 3 +- docs-site/content/docs/-getting-started.mdx | 11 +- docs-site/content/docs/-related-projects.mdx | 12 +- .../content/docs/Documentation/data/utils.mdx | 119 ++++++++++++++---- docs-site/content/docs/about.mdx | 12 +- 5 files changed, 129 insertions(+), 28 deletions(-) diff --git a/docs-site/content/docs/--home.mdx b/docs-site/content/docs/--home.mdx index 475f23d6..3247457d 100644 --- a/docs-site/content/docs/--home.mdx +++ b/docs-site/content/docs/--home.mdx @@ -1,5 +1,5 @@ --- -title: # Yet Another Keyword Extractor (YAKE!) +title: Yet Another Keyword Extractor (YAKE!) icon: GitCompareArrows --- > **Info:** Unsupervised Approach for Automatic Keyword Extraction using Text Features. @@ -87,7 +87,6 @@ When contributing to this repository, please first discuss the change you wish t If you are feeling nostalgic you can access the old site [here](http://yake.inesctec.pt/). --- -

        Back to top diff --git a/docs-site/content/docs/-getting-started.mdx b/docs-site/content/docs/-getting-started.mdx index 0900cc0b..bcdc0300 100644 --- a/docs-site/content/docs/-getting-started.mdx +++ b/docs-site/content/docs/-getting-started.mdx @@ -170,4 +170,13 @@ The lower the score, the more relevant the keyword is. ('conference in san', 0.12392066376108138) ('service', 0.12546743261462942) ('goldbloom', 0.14611408778815776) -``` \ No newline at end of file +``` +--- +

        +

        + Back to top +

        +

        + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

        +
        \ No newline at end of file diff --git a/docs-site/content/docs/-related-projects.mdx b/docs-site/content/docs/-related-projects.mdx index 8c396869..c43caf2b 100644 --- a/docs-site/content/docs/-related-projects.mdx +++ b/docs-site/content/docs/-related-projects.mdx @@ -23,4 +23,14 @@ Multi-algorithm automated subject indexing tool for libraries, archives and muse - [Portulan Clarin](https://portulanclarin.net/workbench/liaad-yake/) - Provides Sservices and data for researchers, innovators, students and language professionals Research Infrastructure for the Science and Technology of Language, belonging to the Portuguese National Roadmap of Research Infrastructures of Strategic Relevance, and part of the international research infrastructure CLARIN ERIC. It includes a demo of YAKE! among many other language technologies. Official [website](https://portulanclarin.net/). -- [Tell me stories](https://contamehistorias.pt/arquivopt) is a research project that allows users to automatically build news narratives based on news preserved by the [Portuguese Web Archive](https://arquivo.pt). \ No newline at end of file +- [Tell me stories](https://contamehistorias.pt/arquivopt) is a research project that allows users to automatically build news narratives based on news preserved by the [Portuguese Web Archive](https://arquivo.pt). + +--- +
        +

        + Back to top +

        +

        + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

        +
        \ No newline at end of file diff --git a/docs-site/content/docs/Documentation/data/utils.mdx b/docs-site/content/docs/Documentation/data/utils.mdx index 14ecff45..74e8df1c 100644 --- a/docs-site/content/docs/Documentation/data/utils.mdx +++ b/docs-site/content/docs/Documentation/data/utils.mdx @@ -9,12 +9,23 @@ The `utils` module provides essential text processing functions for YAKE (Yet An ## Module Overview ```python -"""Utility functions for text processing.""" +""" +Text processing utility module for YAKE keyword extraction. + +This module provides essential text preprocessing functions for the YAKE algorithm, +including text normalization, sentence segmentation, tokenization, and word +categorization. These utilities form the foundation for clean and consistent +text analysis throughout the keyword extraction pipeline. +""" import re from segtok.segmenter import split_multi from segtok.tokenizer import web_tokenizer, split_contractions +# Stopword weighting method for multi-word term scoring: +# - "bi": Use bi-directional weighting (default, considers term connections) +# - "h": Use direct term scores (treat stopwords like normal words) +# - "none": Ignore stopwords completely STOPWORD_WEIGHT = "bi" ``` @@ -30,15 +41,36 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def pre_filter(text): - """Pre-filter the text to normalize line breaks and spacing.""" + """ + Normalize text by standardizing line breaks and spacing. + + This function preprocesses raw text to ensure consistent handling of + paragraphs, line breaks, and whitespace. It preserves paragraph structure + by detecting capitalized line beginnings while normalizing other whitespace. + + Args: + text (str): The raw input text to be normalized + + Returns: + str: The normalized text with standardized whitespace and line breaks + """ + # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") + + # Split the text into lines parts = text.split("\n") buffer = "" + + # Process each line for part in parts: + # Determine separator: preserve paragraph breaks for lines starting with capital letters sep = " " if prog.match(part): sep = "\n\n" + + # Append the processed line to the buffer, replacing tabs with spaces buffer += sep + part.replace("\t", " ") + return buffer ``` @@ -51,14 +83,32 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def tokenize_sentences(text): - """Tokenize text into sentences and words.""" + """ + Split text into sentences and tokenize into words. + + This function performs two-level tokenization: first dividing the text into + sentences using segtok's sentence segmenter, then tokenizing each sentence + into individual words. It also handles contractions and filters out empty + or invalid tokens. + + Args: + text (str): The input text to be tokenized + + Returns: + list: A nested list structure where each inner list contains the tokens + for a single sentence in the original text + """ return [ + # Inner list: tokenize each sentence into words [ - w + w # Keep only valid word tokens for w in split_contractions(web_tokenizer(s)) + # Filter out standalone apostrophes and empty tokens if not (w.startswith("'") and len(w) > 1) and len(w) > 0 ] + # Outer list: iterate through sentences for s in list(split_multi(text)) + # Skip empty sentences if len(s.strip()) > 0 ] ``` @@ -72,31 +122,51 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def get_tag(word, i, exclude): - """Determine the tag of a word based on its characteristics.""" - - # Check if word is numeric + """ + Determine the linguistic tag of a word based on its characteristics. + + This function categorizes words into different types based on their + orthographic features (capitalization, digits, special characters). + These tags are used to identify proper nouns, acronyms, numbers, and + unusual token patterns, which affect keyword scoring and filtering. + + Args: + word (str): The word to classify + i (int): Position of the word within its sentence (0 = first word) + exclude (set): Set of characters to consider as punctuation/special chars + + Returns: + str: A single character tag representing the word type: + - "d": Digit or numeric value + - "u": Unusual word (mixed alphanumeric or special characters) + - "a": Acronym (all uppercase) + - "n": Proper noun (capitalized, not at start of sentence) + - "p": Plain word (default) + """ + # Check if word is numeric (with possible commas and a decimal point) if word.replace(",", "").isdigit() or word.replace(",", "").replace(".", "", 1).isdigit(): return "d" - # Use counting instead of list comprehensions for better performance + # Count character types for classification cdigit = sum(c.isdigit() for c in word) calpha = sum(c.isalpha() for c in word) cexclude = sum(c in exclude for c in word) - # Check for unusual combinations + # Classify unusual tokens: mixed alphanumeric, special chars, or multiple punctuation if (cdigit > 0 and calpha > 0) or (cdigit == 0 and calpha == 0) or cexclude > 1: return "u" - # Check for ALL CAPS (acronym) + # Identify acronyms (all uppercase words) if word.isupper() and len(word) > 0: return "a" - # Check for Proper noun (capitalized) + # Identify proper nouns (capitalized words not at sentence beginning) if len(word) > 1 and word[0].isupper() and i > 0: - # Optimized check for single uppercase letter + # Check that only the first letter is uppercase (not an all-caps word) if sum(c.isupper() for c in word) == 1: return "n" + # Default case: plain word return "p" ``` @@ -107,13 +177,13 @@ The `utils` module contains functions for text preprocessing, tokenization, and ### pre_filter -Normalizes text by handling line breaks and spacing to prepare for tokenization. +Normalizes text by handling line breaks and spacing to prepare for tokenization, preserving paragraph structure by detecting capitalized line beginnings. **Parameters:** -- `text` (str): The input text to normalize +- `text` (str): The raw input text to be normalized **Returns:** -- str: Normalized text with standardized spacing and line breaks +- str: Normalized text with standardized whitespace and line breaks **Example:** ```python @@ -127,7 +197,7 @@ print(normalized_text) ### tokenize_sentences -Splits text into sentences and then tokenizes each sentence into words, filtering out invalid tokens. +Performs two-level tokenization: first dividing the text into sentences, then tokenizing each sentence into words while handling contractions and filtering out invalid tokens. **Parameters:** - `text` (str): The input text to tokenize @@ -147,19 +217,19 @@ print(sentences) ### get_tag -Classifies words based on their characteristics, assigning a tag for each word type. +Categorizes words into different types based on their orthographic features (capitalization, digits, special characters), which affect keyword scoring and filtering. **Parameters:** - `word` (str): The word to classify -- `i` (int): The position of the word in its sentence -- `exclude` (set): Set of characters to exclude from regular words +- `i` (int): Position of the word within its sentence (0 = first word) +- `exclude` (set): Set of characters to consider as punctuation/special chars **Returns:** - str: A single character tag representing the word type: - - `"d"`: Digit/number - - `"u"`: Unusual combination (mixed alphanumeric or special characters) + - `"d"`: Digit or numeric value + - `"u"`: Unusual word (mixed alphanumeric or special characters) - `"a"`: Acronym (all uppercase) - - `"n"`: Proper noun (capitalized word not at the beginning of a sentence) + - `"n"`: Proper noun (capitalized, not at start of sentence) - `"p"`: Plain word (default) **Example:** @@ -179,7 +249,10 @@ print(get_tag("test@example", 0, exclude)) # Output: "u" (unusual) ## Module Constants -- `STOPWORD_WEIGHT` (str): Default weighting scheme for stopwords, set to "bi" +- `STOPWORD_WEIGHT` (str): Stopword weighting method for multi-word term scoring: + - `"bi"`: Use bi-directional weighting (default, considers term connections) + - `"h"`: Use direct term scores (treat stopwords like normal words) + - `"none"`: Ignore stopwords completely ## Usage in YAKE Pipeline diff --git a/docs-site/content/docs/about.mdx b/docs-site/content/docs/about.mdx index 7b013048..17e6cb75 100644 --- a/docs-site/content/docs/about.mdx +++ b/docs-site/content/docs/about.mdx @@ -23,4 +23,14 @@ This project was developed by LIAAD - Laboratory of Artificial Intelligence and ## Aknowledgements -Project "TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020" is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). \ No newline at end of file +Project "TEC4Growth - Pervasive Intelligence, Enhancers and Proofs of Concept with Industrial Impact/NORTE-01-0145-FEDER-000020" is financed by the North Portugal Regional Operational Programme (NORTE 2020), under the PORTUGAL 2020 Partnership Agreement, and through the European Regional Development Fund (ERDF). + +--- +
        +

        + Back to top +

        +

        + Copyright ©2018-{new Date().getFullYear()} INESC TEC. Distributed by an INESCTEC license. +

        +
        \ No newline at end of file From 31d32e6076cd412173cf70bb0c14b6cead0a88c8 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 15:50:34 +0100 Subject: [PATCH 114/122] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 11126cf4..54816784 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/gettingstarted#keyword-deduplication-methods) +Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/-getting-started#keyword-deduplication-methods) #### Usage (Python) @@ -122,7 +122,7 @@ custom_th = TextHighlighter( ## Where to Find YAKE! - 🌐 Online demo: [http://yake.inesctec.pt](http://yake.inesctec.pt) -- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs/home) +- 🔌 Documentation site: [https://tiagolv.github.io/yakerf/docs](https://tiagolv.github.io/yakerf/docs/--home) - 📦 Python package: [https://github.com/LIAAD/yake_demo](https://github.com/LIAAD/yake_demo) - 💻 Pypi: [https://pypi.org/project/yake/](https://pypi.org/project/yake/) From 807453aba4ae2ef187de4a73f7f08aab54604265 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 16:26:51 +0100 Subject: [PATCH 115/122] updated main class documentation --- .../docs/Documentation/core/Levenshtein.mdx | 77 +++-- .../docs/Documentation/core/highlight.mdx | 304 +++++++++++++++++- .../docs/Documentation/data/composedword.mdx | 113 ++----- .../docs/Documentation/data/datacore.mdx | 21 +- 4 files changed, 404 insertions(+), 111 deletions(-) diff --git a/docs-site/content/docs/Documentation/core/Levenshtein.mdx b/docs-site/content/docs/Documentation/core/Levenshtein.mdx index ddc2de76..a2b54887 100644 --- a/docs-site/content/docs/Documentation/core/Levenshtein.mdx +++ b/docs-site/content/docs/Documentation/core/Levenshtein.mdx @@ -10,7 +10,17 @@ The `Levenshtein` class provides utilities for calculating edit distances and si ```python class Levenshtein: - """Class for computing Levenshtein distance and similarity ratio.""" + """ + Class for computing Levenshtein distance and similarity ratio. + + This class provides static methods to calculate the edit distance between + strings (how many insertions, deletions, or substitutions are needed to + transform one string into another) and to determine a normalized similarity + ratio between them. + + These metrics are widely used in fuzzy string matching, spell checking, + and approximate text similarity measurements. + """ ``` The `Levenshtein` class offers methods to measure the difference between two strings and calculate their similarity. @@ -26,14 +36,20 @@ The `Levenshtein` class offers methods to measure the difference between two str ```python @staticmethod def __ratio(distance: float, str_length: int) -> float: - """Calculate the similarity ratio based on distance and string length. - + """ + Calculate the similarity ratio based on distance and string length. + + This method normalizes the Levenshtein distance into a similarity ratio + between 0 and 1, where 1 represents identical strings and 0 represents + completely different strings. + Args: distance (float): The Levenshtein distance between two strings. str_length (int): The length of the longer string. Returns: - float: The similarity ratio. + float: The similarity ratio, where higher values indicate greater similarity. + The range is [0.0, 1.0] where 1.0 means identical strings. """ return 1 - float(distance) / float(str_length) ``` @@ -48,14 +64,20 @@ The `Levenshtein` class offers methods to measure the difference between two str ```python @staticmethod def ratio(seq1: str, seq2: str) -> float: - """Compute the similarity ratio between two strings. - + """ + Compute the similarity ratio between two strings. + + This is the main method for determining string similarity. It calculates + the Levenshtein distance and then converts it to a ratio representing + how similar the strings are. + Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - float: The similarity ratio. + float: The similarity ratio between the two strings, ranging from 0.0 + (completely different) to 1.0 (identical). """ str_distance = Levenshtein.distance(seq1, seq2) str_length = max(len(seq1), len(seq2)) @@ -72,37 +94,52 @@ The `Levenshtein` class offers methods to measure the difference between two str ```python @staticmethod def distance(seq1: str, seq2: str) -> int: - """Calculate the Levenshtein distance between two strings. + """ + Calculate the Levenshtein distance between two strings. + + This method implements the core Levenshtein algorithm, which calculates + the minimum number of single-character edits (insertions, deletions, or + substitutions) required to change one string into another. + + The algorithm uses dynamic programming with a matrix approach to efficiently + compute the minimum edit distance. Args: - seq1 (str): The first string. - seq2 (str): The second string. + seq1 (str): The first string to compare. + seq2 (str): The second string to compare. Returns: - int: The Levenshtein distance. + int: The Levenshtein distance - the minimum number of edit operations + required to transform seq1 into seq2. """ + # Create a matrix of size (len(seq1)+1) x (len(seq2)+1) size_x = len(seq1) + 1 size_y = len(seq2) + 1 matrix = np.zeros((size_x, size_y)) + # Initialize the first row and column of the matrix for x in range(size_x): - matrix[x, 0] = x + matrix[x, 0] = x # Cost of deleting characters from seq1 for y in range(size_y): - matrix[0, y] = y + matrix[0, y] = y # Cost of inserting characters from seq2 + # Fill the matrix using dynamic programming approach for x in range(1, size_x): for y in range(1, size_y): + # Check if the characters at current positions match if seq1[x - 1] == seq2[y - 1]: - cost = 0 + cost = 0 # No cost for matching characters else: - cost = 1 + cost = 1 # Cost of 1 for substitution + # Calculate minimum cost among deletion, insertion, and substitution matrix[x, y] = min( - matrix[x - 1, y] + 1, # Deletion - matrix[x, y - 1] + 1, # Insertion - matrix[x - 1, y - 1] + cost, # Substitution + matrix[x - 1, y] + 1, # Deletion (remove from seq1) + matrix[x, y - 1] + 1, # Insertion (add from seq2) + matrix[x - 1, y - 1] + cost, # Substitution or match ) + # Return the bottom-right value of the matrix as the final distance return int(matrix[size_x - 1, size_y - 1]) ```
        diff --git a/docs-site/content/docs/Documentation/core/highlight.mdx b/docs-site/content/docs/Documentation/core/highlight.mdx index ae45ca1d..6328964e 100644 --- a/docs-site/content/docs/Documentation/core/highlight.mdx +++ b/docs-site/content/docs/Documentation/core/highlight.mdx @@ -11,7 +11,10 @@ The `TextHighlighter` module provides functionality to highlight specific keywor ```python """ Module for highlighting text based on keywords. -Provides functionality to highlight specific keywords in text. + +This module provides functionality to highlight specific keywords within text documents. +It handles both single word (one-gram) and multi-word (n-gram) keyword highlighting, +allowing for flexible text markup based on keyword extraction results. """ import re @@ -23,7 +26,7 @@ DEFAULT_HIGHLIGHT_PRE = "" DEFAULT_HIGHLIGHT_POST = "" ``` -## Constructor +## Data class ### NgramData @@ -36,7 +39,16 @@ DEFAULT_HIGHLIGHT_POST = "" ```python @dataclass class NgramData: - """Data structure to hold n-gram processing results.""" + """ + Data structure to hold n-gram processing results. + + This class stores the results of n-gram identification for highlighting, + including the list of words and how they are split within keywords. + + Attributes: + word_list: List of words that form the n-gram + split_kw_list: List of lists containing the split keywords + """ word_list: List[str] split_kw_list: List[List[str]] @@ -46,10 +58,10 @@ DEFAULT_HIGHLIGHT_POST = "" A data class to store n-gram processing results containing: -- `word_list`: List of extracted words -- `split_kw_list`: List of split keywords for processing +- `word_list`: List of extracted words that form the n-gram +- `split_kw_list`: List of lists containing the split keywords for processing -### TextHighlighter +## Constructor @@ -97,6 +109,9 @@ A data class to store n-gram processing results containing: def highlight(self, text, keywords): """ Highlights keywords in the given text. + + This is the main entry point for text highlighting. It processes the text + and adds highlight markers around identified keywords. Args: text: The original text to be processed. @@ -130,6 +145,9 @@ A data class to store n-gram processing results containing: def format_one_gram_text(self, text, relevant_words_array): """ Formats text for one-gram highlighting. + + Processes text to highlight individual words that match the keywords, + handling punctuation and maintaining the original text structure. Args: text: The text to process @@ -163,6 +181,9 @@ A data class to store n-gram processing results containing: def format_n_gram_text(self, text, relevant_words_array): """ Formats text for n-gram highlighting. + + Processes text to highlight multi-word phrases that match keywords, + maintaining proper context and handling overlapping keywords. Args: text: The text to process @@ -212,6 +233,9 @@ A data class to store n-gram processing results containing: def find_relevant_ngrams(self, position, text_tokens, relevant_words_array): """ Finds relevant n-grams in the text. + + Identifies potential keywords at the current position by looking ahead + for matches with the provided keywords. Args: position: Current position in text tokens @@ -240,6 +264,9 @@ A data class to store n-gram processing results containing: def process_ngrams(self, text_tokens, position, n_gram_word_list, context): """ Processes n-grams and updates the final text. + + Handles the replacing of n-grams with their highlighted versions, + distinguishing between single-word and multi-word keywords. Args: text_tokens: List of tokens from the text @@ -280,6 +307,9 @@ A data class to store n-gram processing results containing: def replace_token(self, text_tokens, position, n_gram_word_list): """ Replaces tokens in text with highlighted versions. + + Performs the actual replacement of keywords with their highlighted + versions, handling punctuation and maintaining text structure. Args: text_tokens: List of tokens from the text @@ -322,6 +352,9 @@ A data class to store n-gram processing results containing: def _find_more_relevant_helper(self, position, text_tokens, relevant_words_array): """ Helper method for finding relevant n-gram words. + + Checks all possible n-grams starting at the current position and + identifies matches with the provided keywords. Args: position: Current position in text tokens @@ -374,9 +407,11 @@ A data class to store n-gram processing results containing: ): """ Creates a context object for n-gram processing. + + Bundles all the necessary information for processing multi-word + ngrams into a single context dictionary. Args: - position: Current position in text tokens n_gram_word_list: List of n-gram words splited_n_gram_kw_list: List of split n-gram keywords relevant_words_array: Keywords to highlight @@ -394,6 +429,261 @@ A data class to store n-gram processing results containing: ``` + + + + _process_multi_word_ngrams_helper(text_tokens, position, ctx) + + + ```python + def _process_multi_word_ngrams_helper(self, text_tokens, position, ctx): + """ + Helper method for processing multi-word n-grams. + + Handles the complex logic of identifying and highlighting + multi-word phrases in the text. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + kw_list = [] + n_gram_word_list = ctx["n_gram_word_list"] + splited_n_gram_kw_list = ctx["splited_n_gram_kw_list"] + relevant_words_array = ctx["relevant_words_array"] + final_splited_text = ctx["final_splited_text"] + + splited_one = n_gram_word_list[0].split() + + for len_kw in range(len(splited_one)): + if position + len_kw < len(text_tokens): + self._update_kw_list( + position + len_kw, + text_tokens, + relevant_words_array, + { + "kw_list": kw_list, + "splited_n_gram_kw_list": splited_n_gram_kw_list, + }, + ) + + if not kw_list: + return position + 1, text_tokens[position] + + min_score_word = min( + kw_list, key=lambda x: relevant_words_array.index(x.lower()) + ) + + if kw_list.index(min_score_word) == 0: + term_list = [min_score_word] + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + else: + terms_ctx = { + "splited_n_gram_kw_list": splited_n_gram_kw_list, + "min_score_word": min_score_word, + "relevant_words_array": relevant_words_array, + "final_splited_text": final_splited_text, + } + position, new_expression = self._process_relevant_terms_helper( + text_tokens, position, terms_ctx + ) + + return position, new_expression + ``` + + + + + + _update_kw_list(position, text_tokens, relevant_words_array, kw_dict) + + + ```python + def _update_kw_list(self, position, text_tokens, relevant_words_array, kw_dict): + """ + Updates the keyword list and split n-gram keyword list. + + Identifies relevant keywords at a given position and updates + the provided lists with the findings. + + Args: + position: Current position in text tokens + text_tokens: List of tokens from the text + relevant_words_array: Keywords to highlight + kw_dict: Dictionary containing 'kw_list' and 'splited_n_gram_kw_list' + """ + ngram_result = self._find_more_relevant_helper( + position, text_tokens, relevant_words_array + ) + new_kw_list, new_split_list = ngram_result + kw_dict["kw_list"].extend(new_kw_list) + if new_split_list: + kw_dict["splited_n_gram_kw_list"].extend(new_split_list) + ``` + + + + + + _process_relevant_terms_helper(text_tokens, position, ctx) + + + ```python + def _process_relevant_terms_helper(self, text_tokens, position, ctx): + """ + Helper method for processing relevant terms. + + Handles the complex logic of determining which terms to highlight + when multiple options are available. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + splited_n_gram_kw_list = ctx["splited_n_gram_kw_list"] + min_score_word = ctx["min_score_word"] + relevant_words_array = ctx["relevant_words_array"] + final_splited_text = ctx["final_splited_text"] + + if not splited_n_gram_kw_list: + return position + 1, text_tokens[position] + + index_of_more_relevant = splited_n_gram_kw_list[0].index( + min_score_word.split()[0] + ) + temporal_kw = " ".join(splited_n_gram_kw_list[0][:index_of_more_relevant]) + + if temporal_kw.lower() in relevant_words_array: + try: + handle_ctx = { + "temporal_kw": temporal_kw, + "relevant_words_array": relevant_words_array, + "final_splited_text": final_splited_text, + } + return self._handle_temporal_keyword(text_tokens, position, handle_ctx) + except ValueError as e: + print(f"Error: {e}") + term_list = [temporal_kw] + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + else: + nonrelevant_ctx = { + "splited_n_gram_kw_list": splited_n_gram_kw_list, + "index_of_more_relevant": index_of_more_relevant, + "relevant_words_array": relevant_words_array, + } + position, new_expression = self._handle_nonrelevant_temporal_keyword( + text_tokens, position, nonrelevant_ctx + ) + + return position, new_expression + ``` + + + + + + _handle_temporal_keyword(text_tokens, position, ctx) + + + ```python + def _handle_temporal_keyword(self, text_tokens, position, ctx): + """ + Helper method for handling temporal keywords. + + Determines how to highlight keywords that may span across + multiple tokens or have temporal relationships. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + temporal_kw = ctx["temporal_kw"] + relevant_words_array = ctx["relevant_words_array"] + final_splited_text = ctx["final_splited_text"] + + if not final_splited_text: + term_list = [temporal_kw] + return self.replace_token(text_tokens, position, term_list) + + last_item = final_splited_text[-1] + combined_kw = f"{last_item} {temporal_kw}" + + if ( + combined_kw.lower() in relevant_words_array + and relevant_words_array.index(temporal_kw.lower()) + > relevant_words_array.index(combined_kw.lower()) + and not re.findall(self.highlight_pre, last_item) + ): + term_list = [combined_kw] + del final_splited_text[-1] + position -= 1 + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + else: + term_list = [temporal_kw] + position, new_expression = self.replace_token( + text_tokens, position, term_list + ) + + return position, new_expression + ``` + + + + + + _handle_nonrelevant_temporal_keyword(text_tokens, position, ctx) + + + ```python + def _handle_nonrelevant_temporal_keyword(self, text_tokens, position, ctx): + """ + Helper method for handling non-relevant temporal keywords. + + Processes keywords that are part of larger phrases but not + relevant on their own. + + Args: + text_tokens: List of tokens from the text + position: Current position in text tokens + ctx: Context dictionary with processing information + + Returns: + Tuple containing new position and new expression + """ + splited_n_gram_kw_list = ctx["splited_n_gram_kw_list"] + index_of_more_relevant = ctx["index_of_more_relevant"] + relevant_words_array = ctx["relevant_words_array"] + + if not splited_n_gram_kw_list: + return position + 1, text_tokens[position] + + for tmp_kw in splited_n_gram_kw_list[0][:index_of_more_relevant]: + if tmp_kw.lower() in relevant_words_array: + term_list = [tmp_kw] + return self.replace_token(text_tokens, position, term_list) + + return position + 1, text_tokens[position] + ``` + + ## Usage Example diff --git a/docs-site/content/docs/Documentation/data/composedword.mdx b/docs-site/content/docs/Documentation/data/composedword.mdx index 400d763b..cee48999 100644 --- a/docs-site/content/docs/Documentation/data/composedword.mdx +++ b/docs-site/content/docs/Documentation/data/composedword.mdx @@ -10,8 +10,17 @@ The `ComposedWord` class represents multi-word terms in YAKE (Yet Another Keywor ```python class ComposedWord: - def __init__(self, terms): - # Initialize a composed word from term tuples [(tag, word, term_obj)] + """ + Representation of a multi-word term in the document. + + This class stores and aggregates information about multi-word keyword candidates, + calculating combined scores from the properties of their constituent terms. + It tracks statistics like term frequency, integrity, and provides methods to + validate whether a phrase is likely to be a good keyword. + + Attributes: + See property accessors below for available attributes. + """ ``` The `ComposedWord` class stores and aggregates information about multi-word keyword candidates, calculating combined scores from the properties of their constituent terms. It tracks statistics like term frequency, integrity, and provides methods to validate whether a phrase is likely to be a good keyword. @@ -31,8 +40,8 @@ The `ComposedWord` class stores and aggregates information about multi-word keyw Args: terms (list): List of tuples (tag, word, term_obj) representing - the individual words in this phrase. Can be None to - initialize an invalid candidate. + the individual words in this phrase. Can be None to + initialize an invalid candidate. """ # If terms is None, initialize an invalid candidate if terms is None: @@ -82,7 +91,7 @@ The `ComposedWord` class stores and aggregates information about multi-word keyw **Example:** ```python -from yake.datarepresentation import ComposedWord +from yake.data import ComposedWord # Create a composed word from term tuples terms = [('n', 'natural', term_obj1), ('n', 'language', term_obj2)] @@ -194,7 +203,7 @@ invalid_composed = ComposedWord(None) # Check that at least one tag sequence has no unusual characters or digits for tag in self.tags: is_valid = is_valid or ("u" not in tag and "d" not in tag) - + # A valid keyword cannot start or end with a stopword return is_valid and not self.start_or_end_stopwords ``` @@ -249,11 +258,11 @@ invalid_composed = ComposedWord(None) for term in self.terms if (discart_stopword and not term.stopword) or not discart_stopword ] - + # Calculate aggregate statistics sum_f = sum(list_of_features) prod_f = np.prod(list_of_features) - + # Return the three aggregated values return (sum_f, prod_f, prod_f / (sum_f + 1)) ``` @@ -291,18 +300,18 @@ invalid_composed = ComposedWord(None) "features", ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] ) _stopword = params.get("_stopword", [True, False]) - + # Use defaults if not provided if features is None: features = ["wfreq", "wrel", "tf", "wcase", "wpos", "wspread"] if _stopword is None: _stopword = [True, False] - + # Initialize feature collection columns = [] features_cand = [] seen = set() - + # Add document identifier if provided if params.get("doc_id") is not None: columns.append("doc_id") @@ -345,7 +354,7 @@ invalid_composed = ComposedWord(None) columns.append("is_virtual") columns.append("is_virtual") features_cand.append(int(params.get("is_virtual", False))) - + # Add all requested features with different stopword handling for feature_name in features: for discart_stopword in _stopword: @@ -353,7 +362,7 @@ invalid_composed = ComposedWord(None) (f_sum, f_prod, f_sum_prod) = self.get_composed_feature( feature_name, discart_stopword=discart_stopword ) - + # Add sum feature columns.append( f"{'n' if discart_stopword else ''}s_sum_K{feature_name}" @@ -429,16 +438,16 @@ invalid_composed = ComposedWord(None) # Handle normal words directly sum_h += term_base.h prod_h *= term_base.h - + # Determine term frequency to use in scoring tf_used = 1.0 if features is None or "KPF" in features: tf_used = self.tf - + # For virtual candidates, use mean frequency of constituent terms if is_virtual: tf_used = np.mean([term_obj.tf for term_obj in self.terms]) - + # Calculate final score (lower is better) self.h = prod_h / ((sum_h + 1) * tf_used) ``` @@ -496,58 +505,12 @@ Candidates are considered valid if: 1. They contain no undefined ("u") or discarded ("d") POS tags 2. They do not start or end with stopwords -```python -def is_valid(self): - """ - Check if this candidate is a valid keyword phrase. - - A valid keyword phrase doesn't contain unusual characters or digits, - and doesn't start or end with stopwords. - - Returns: - bool: True if this is a valid keyword candidate, False otherwise - """ - is_valid = False - # Check that at least one tag sequence has no unusual characters or digits - for tag in self.tags: - is_valid = is_valid or ("u" not in tag and "d" not in tag) - - # A valid keyword cannot start or end with a stopword - return is_valid and not self.start_or_end_stopwords -``` - ### Feature Composition -When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms: - -```python -def get_composed_feature(self, feature_name, discart_stopword=True): - """ - Get composed features from constituent terms. - - Calculates combined metrics for the phrase based on individual term metrics. - - Args: - feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") - discart_stopword (bool): Whether to ignore stopwords in calculation - - Returns: - tuple: (sum, prod, prod_over_sum) of the feature values - """ - # Get feature values from each term, filtering stopwords if requested - list_of_features = [ - getattr(term, feature_name) - for term in self.terms - if (discart_stopword and not term.stopword) or not discart_stopword - ] - - # Calculate aggregate statistics - sum_f = sum(list_of_features) - prod_f = np.prod(list_of_features) - - # Return the three aggregated values - return (sum_f, prod_f, prod_f / (sum_f + 1)) -``` +When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms, calculating: +- Sum of feature values +- Product of feature values +- Product divided by sum+1 ### Score Calculation @@ -575,20 +538,12 @@ The `ComposedWord` class handles stopwords differently based on the `STOPWORD_WE ## Complete Usage Example ```python -from yake.datarepresentation import DataCore, ComposedWord -from yake.stopwordremover import StopwordRemover - -# Initialize stopwords -stopword_remover = StopwordRemover("en") -stopword_set = stopword_remover.get_stopword_set() +from yake.data import ComposedWord +from yake.data.utils import STOPWORD_WEIGHT -# Create DataCore instance -text = "Natural language processing is a field of artificial intelligence." -data = DataCore(text, stopword_set) - -# Get a candidate from the DataCore -candidate_string = "natural language processing" -composed_word = data.build_candidate(candidate_string) +# Create a sample composed word +terms = [("n", "natural", term_obj1), ("n", "language", term_obj2)] +composed_word = ComposedWord(terms) # Update the candidate's score composed_word.update_h() diff --git a/docs-site/content/docs/Documentation/data/datacore.mdx b/docs-site/content/docs/Documentation/data/datacore.mdx index 4c9fe476..4d19b898 100644 --- a/docs-site/content/docs/Documentation/data/datacore.mdx +++ b/docs-site/content/docs/Documentation/data/datacore.mdx @@ -10,8 +10,14 @@ The `DataCore` class is the foundation of YAKE (Yet Another Keyword Extractor), ```python class DataCore: - def __init__(self, text, stopword_set, config=None): - # Initialize the data core with text and configuration + """ + Core data representation for document analysis and keyword extraction. + + This class processes text documents to identify potential keywords based on + statistical features and contextual relationships between terms. It maintains + the document's structure, processes individual terms, and generates candidate + keywords. + """ ``` The `DataCore` class processes text documents to identify potential keywords based on statistical features and contextual relationships. @@ -98,8 +104,13 @@ The `DataCore` class processes text documents to identify potential keywords bas **Example:** ```python -from yake.datarepresentation import DataCore +from yake.data import DataCore import string +from yake.stopword_remover import StopwordRemover + +# Get stopwords +stopword_remover = StopwordRemover("en") +stopword_set = stopword_remover.get_stopword_set() # Initialize with default configuration data = DataCore("Sample text for analysis", stopword_set) @@ -668,8 +679,8 @@ ngram_frequencies = data.freq_ns ## Complete Usage Example ```python -from yake.datarepresentation import DataCore -from yake.stopwordremover import StopwordRemover +from yake.data import DataCore +from yake.stopword_remover import StopwordRemover # Initialize stopwords stopword_remover = StopwordRemover("en") From dac77812452ce47bff03055f5b1c4cec7e6bd2ad Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 20 May 2025 17:54:26 +0100 Subject: [PATCH 116/122] changed to uv --- .github/workflows/resultados.yml | 13 +-- Makefile | 24 ++--- .../content/docs/Documentation/core/yake.mdx | 33 ++++-- .../docs/Documentation/data/composedword.mdx | 51 +++++++--- .../docs/Documentation/data/datacore.mdx | 31 ++++-- .../content/docs/Documentation/data/utils.mdx | 46 ++++++--- pyproject.toml | 53 ++++++++++ requirements.txt | 28 ----- setup.cfg | 28 ----- setup.py | 96 ------------------ .../__pycache__/Levenshtein.cpython-310.pyc | Bin 2215 -> 4123 bytes yake/core/__pycache__/yake.cpython-310.pyc | Bin 8237 -> 9045 bytes yake/core/yake.py | 33 ++++-- .../__pycache__/composed_word.cpython-310.pyc | Bin 11292 -> 11664 bytes yake/data/__pycache__/core.cpython-310.pyc | Bin 15883 -> 16521 bytes yake/data/__pycache__/utils.cpython-310.pyc | Bin 4415 -> 4900 bytes yake/data/composed_word.py | 22 ++-- yake/data/core.py | 30 +++--- yake/data/utils.py | 25 +++-- 19 files changed, 260 insertions(+), 253 deletions(-) create mode 100644 pyproject.toml delete mode 100644 requirements.txt delete mode 100644 setup.cfg delete mode 100644 setup.py diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index dda897db..28e2acb9 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -9,7 +9,6 @@ on: - master workflow_dispatch: - jobs: test: runs-on: ubuntu-latest @@ -18,6 +17,9 @@ jobs: - name: Checkout code uses: actions/checkout@v4 + - name: Install uv + run: pip install uv + - name: Set up Python uses: actions/setup-python@v4 with: @@ -25,14 +27,13 @@ jobs: - name: Install dependencies run: | - python -m pip install --upgrade pip - pip install -r requirements.txt - pip install pytest + uv pip install . + uv pip install pytest - name: Run tests id: run-tests run: | - pytest -v tests/test_yake.py | tee test_output.log + uv pip run pytest -v tests/test_yake.py | tee test_output.log - name: Verify test results run: | @@ -49,4 +50,4 @@ jobs: uses: actions/upload-artifact@v4 with: name: test-logs - path: test_output.log + path: test_output.log \ No newline at end of file diff --git a/Makefile b/Makefile index 6e78d428..6a25f0ec 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,21 @@ install: - pip install --upgrade pip &&\ - pip install -r requirements.txt - # uv pip install -r requirements.txt + uv pip install --upgrade pip + uv pip install . test: - # python -m pytest --nbval *.ipynb - python -m pytest -vv --cov= test_*. - + uv pip install pytest + uv pip run pytest -vv --cov= test_*. format: - black . + uv pip install black + uv pip run black . lint: - ruff check --fix . - ruff check . + uv pip install ruff + uv pip run ruff check --fix . + uv pip run ruff check . deploy: - # no rules for now - -all: install lint test format + # no rules for now + +all: install lint test format \ No newline at end of file diff --git a/docs-site/content/docs/Documentation/core/yake.mdx b/docs-site/content/docs/Documentation/core/yake.mdx index 4188c551..2dc6cbb2 100644 --- a/docs-site/content/docs/Documentation/core/yake.mdx +++ b/docs-site/content/docs/Documentation/core/yake.mdx @@ -90,20 +90,33 @@ The `KeywordExtractor` class handles the configuration, preprocessing, and extra ```python def extract_keywords(self, text): """ - Extract keywords from text. + Extract keywords from the given text. - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords + This function implements the complete YAKE keyword extraction pipeline: + 1. Preprocesses the input text by normalizing whitespace + 2. Builds a data representation using DataCore, which: + - Tokenizes the text into sentences and words + - Identifies candidate n-grams (1 to n words) + - Creates a graph of term co-occurrences + 3. Extracts statistical features for single terms and n-grams + - For single terms: frequency, position, case, etc. + - For n-grams: combines features from constituent terms + 4. Filters candidates based on validity criteria (e.g., no stopwords at boundaries) + 5. Sorts candidates by their importance score (H), where lower is better + 6. Performs deduplication to remove similar candidates based on string similarity + 7. Returns the top k keywords with their scores + + The algorithm favors keywords that are statistically important but not common + stopwords, with scores reflecting their estimated relevance to the document. + Lower scores indicate more important keywords. + Args: - text (str): The input text to extract keywords from - + text: Input text + Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) + List of (keyword, score) tuples sorted by score (lower is better) + """ # Handle empty input if not text: diff --git a/docs-site/content/docs/Documentation/data/composedword.mdx b/docs-site/content/docs/Documentation/data/composedword.mdx index cee48999..870e913f 100644 --- a/docs-site/content/docs/Documentation/data/composedword.mdx +++ b/docs-site/content/docs/Documentation/data/composedword.mdx @@ -241,16 +241,21 @@ invalid_composed = ComposedWord(None) ```python def get_composed_feature(self, feature_name, discart_stopword=True): """ - Get composed features from constituent terms. - - Calculates combined metrics for the phrase based on individual term metrics. - + Get composed feature values for the n-gram. + + This function aggregates a specific feature across all terms in the n-gram. + It computes the sum, product, and ratio of the feature values, optionally + excluding stopwords from the calculation. + Args: - feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") - discart_stopword (bool): Whether to ignore stopwords in calculation - + feature_name: Name of feature to get (must be an attribute of the term objects) + discard_stopword: Whether to exclude stopwords from calculation (True by default) + Returns: - tuple: (sum, prod, prod_over_sum) of the feature values + Tuple of (sum, product, ratio) for the feature where: + - sum: Sum of the feature values across all relevant terms + - product: Product of the feature values across all relevant terms + - ratio: Product divided by (sum + 1), a measure of feature consistency """ # Get feature values from each term, filtering stopwords if requested list_of_features = [ @@ -507,10 +512,32 @@ Candidates are considered valid if: ### Feature Composition -When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms, calculating: -- Sum of feature values -- Product of feature values -- Product divided by sum+1 +When analyzing multi-word terms, the `ComposedWord` class composes features from its constituent terms: + +```python +def get_composed_feature(self, feature_name, discart_stopword=True): + """ + Get composed feature values for the n-gram. + """ + # Get feature values from each term, filtering stopwords if requested + list_of_features = [ + getattr(term, feature_name) + for term in self.terms + if (discart_stopword and not term.stopword) or not discart_stopword + ] + + # Calculate aggregate statistics + sum_f = sum(list_of_features) + prod_f = np.prod(list_of_features) + + # Return the three aggregated values: sum, product, and product/(sum+1) + return (sum_f, prod_f, prod_f / (sum_f + 1)) +``` + +For each feature, this method calculates: +- Sum of feature values across terms +- Product of feature values across terms +- A ratio metric: product/(sum+1) measuring feature consistency ### Score Calculation diff --git a/docs-site/content/docs/Documentation/data/datacore.mdx b/docs-site/content/docs/Documentation/data/datacore.mdx index 4d19b898..197a9c73 100644 --- a/docs-site/content/docs/Documentation/data/datacore.mdx +++ b/docs-site/content/docs/Documentation/data/datacore.mdx @@ -17,6 +17,9 @@ class DataCore: statistical features and contextual relationships between terms. It maintains the document's structure, processes individual terms, and generates candidate keywords. + + Attributes: + See property accessors below for available attributes. """ ``` @@ -402,8 +405,9 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Build a candidate ComposedWord from a string. - This method allows creating candidate keywords from external input - strings rather than from the document's own text. + This function processes a candidate string by tokenizing it, tagging each word, + and creating a ComposedWord object from the resulting terms. It's used to + convert external strings into the internal candidate representation. Args: candidate_string (str): String to convert to a keyword candidate @@ -451,10 +455,10 @@ data = DataCore("Sample text for analysis", stopword_set, config) ```python def build_single_terms_features(self, features=None): """ - Build statistical features for single terms. - - Calculates term frequency statistics and updates the scoring metrics - for each individual term. + Calculates and updates statistical features for all single terms in the text. + This includes term frequency statistics and other features specified in the + features parameter. Only non-stopword terms are considered for statistics + calculation. Args: features (list, optional): Specific features to calculate @@ -496,10 +500,11 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Build features for multi-word terms. - Updates the scoring metrics for valid candidate keywords. + Updates the features for all valid multi-word candidate terms (n-grams). + Only candidates that pass the validity check will have their features updated. Args: - features (list, optional): Specific features to calculate + features (list, optional): List of features to build. If None, all available features will be built. """ # Update only valid candidates (filter then apply update_h) list( @@ -582,7 +587,9 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Add a co-occurrence relationship between two terms. - Creates or updates an edge in the co-occurrence graph between terms. + Updates the co-occurrence graph by adding or incrementing an edge between + two terms. This information is used to calculate term relatedness and + importance in the text. Args: left_term (SingleWord): Source term in the relationship @@ -609,10 +616,12 @@ data = DataCore("Sample text for analysis", stopword_set, config) """ Add or update a composed word in the candidates collection. - Handles the registration and frequency counting of keyword candidates. + Adds a new candidate composed word (n-gram) to the candidates dictionary + or updates an existing one by incrementing its frequency. This is used to + track potential keyphrases in the text. Args: - cand (ComposedWord): The candidate keyword to add or update + cand (ComposedWord): ComposedWord instance to add or update in the candidates dictionary """ # Check if this candidate already exists if cand.unique_kw not in self.candidates: diff --git a/docs-site/content/docs/Documentation/data/utils.mdx b/docs-site/content/docs/Documentation/data/utils.mdx index 74e8df1c..8077eca2 100644 --- a/docs-site/content/docs/Documentation/data/utils.mdx +++ b/docs-site/content/docs/Documentation/data/utils.mdx @@ -41,18 +41,27 @@ The `utils` module contains functions for text preprocessing, tokenization, and ```python def pre_filter(text): - """ - Normalize text by standardizing line breaks and spacing. + """Pre-filter text before processing. + + This function prepares raw text for keyword extraction by normalizing its format. + It performs several transformations: - This function preprocesses raw text to ensure consistent handling of - paragraphs, line breaks, and whitespace. It preserves paragraph structure - by detecting capitalized line beginnings while normalizing other whitespace. + 1. Splits the text into parts based on newline characters + 2. Detects if a part starts with a capital letter (potentially a new paragraph) + 3. Adds appropriate spacing between parts: + - Double newlines for parts starting with capital letters (likely new paragraphs) + - Single spaces for other parts (likely continuing text) + 4. Replaces all tab characters with spaces for consistent formatting + This preprocessing helps maintain paragraph structure while normalizing + whitespace, which improves the accuracy of subsequent text analysis steps + like sentence boundary detection and keyword extraction. + Args: - text (str): The raw input text to be normalized - + text: Raw input text to be pre-filtered + Returns: - str: The normalized text with standardized whitespace and line breaks + Normalized text with consistent spacing and paragraph structure """ # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") @@ -177,22 +186,35 @@ The `utils` module contains functions for text preprocessing, tokenization, and ### pre_filter -Normalizes text by handling line breaks and spacing to prepare for tokenization, preserving paragraph structure by detecting capitalized line beginnings. +Pre-filters text before processing by normalizing its format. It maintains paragraph structure while standardizing spacing and line breaks to improve the accuracy of subsequent text analysis steps. **Parameters:** -- `text` (str): The raw input text to be normalized +- `text` (str): Raw input text to be pre-filtered **Returns:** -- str: Normalized text with standardized whitespace and line breaks +- str: Normalized text with consistent spacing and paragraph structure + +**How it works:** +1. Splits the text into parts based on newline characters +2. Detects if a part starts with a capital letter (potentially a new paragraph) +3. Adds appropriate spacing between parts: + - Double newlines for parts starting with capital letters (likely new paragraphs) + - Single spaces for other parts (likely continuing text) +4. Replaces all tab characters with spaces for consistent formatting **Example:** ```python -from yake.utils import pre_filter +from yake.data.utils import pre_filter raw_text = "This is line one.\nThis is line two.\tAnd this has a tab." normalized_text = pre_filter(raw_text) print(normalized_text) # Output: " This is line one. This is line two. And this has a tab." + +raw_text = "This is line one.\nAnother paragraph.\nThis continues." +normalized_text = pre_filter(raw_text) +print(normalized_text) +# Output: " This is line one.\n\nAnother paragraph. This continues." ``` ### tokenize_sentences diff --git a/pyproject.toml b/pyproject.toml new file mode 100644 index 00000000..f48e808c --- /dev/null +++ b/pyproject.toml @@ -0,0 +1,53 @@ +[build-system] +requires = ["hatchling"] +build-backend = "hatchling.build" + +[project] +name = "yake" +version = "0.6.0" +description = "Keyword extraction Python package" +readme = "README.md" +requires-python = ">=3.8" # Changed from >=3.7 to >=3.8 +license = {text = "LGPLv3"} +authors = [ + {name = "Tiago Vaente", email = "tiago.leando.valente@ubi.com"}, +] +dependencies = [ + "tabulate", + "segtok", + "networkx", + "numpy>=1.23.5", # This version requires Python >=3.8 + "click>=6.0", + "jellyfish", +] +classifiers = [ + "Development Status :: 3 - Alpha", + "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", + "Programming Language :: Python :: 3", + # Remove Python 3.5, 3.6, 3.7 classifiers + "Programming Language :: Python :: 3.8", + "Programming Language :: Python :: 3.9", + "Programming Language :: Python :: 3.10", + "Programming Language :: Python :: 3.11", + "Topic :: Scientific/Engineering :: Information Analysis", + "Topic :: Software Development :: Libraries", + "Topic :: Text Processing", + "Topic :: Text Processing :: Linguistic", +] + +[project.optional-dependencies] +dev = [ + "pytest", + "flake8", + "pytest-runner", # Added from setup_requirements +] + +[project.urls] +Documentation = "https://tiagolv.github.io/yakerf/docs/--home" +Source = "https://github.com/LIAAD/yake" + +[project.scripts] +yake = "yake.cli:keywords" + +[tool.hatch.build.targets.wheel] +packages = ["yake", "StopwordsList"] # Explicitly include these packages \ No newline at end of file diff --git a/requirements.txt b/requirements.txt deleted file mode 100644 index 80e8d12f..00000000 --- a/requirements.txt +++ /dev/null @@ -1,28 +0,0 @@ -#devops -black==22.3.0 -click==8.1.3 -pytest==7.1.3 -pytest-cov==4.0.0 -pylint==2.15.3 - -#web -fastapi==0.85.0 -uvicorn==0.18.3 - - -#docs-site -npm -nextra - -#basic libraries - -ruff==0.0.290 -nbval==0.10.0 -tabulate -pytest -flake8 -segtok -jellyfish -networkx -numpy -click \ No newline at end of file diff --git a/setup.cfg b/setup.cfg deleted file mode 100644 index 62c06d4d..00000000 --- a/setup.cfg +++ /dev/null @@ -1,28 +0,0 @@ -[bumpversion] -current_version = 0.4.8 -commit = True -tag = True - -[bumpversion:file:setup.py] -search = version='{current_version}' -replace = version='{new_version}' - -[bumpversion:file:yake/__init__.py] -search = __version__ = '{current_version}' -replace = __version__ = '{new_version}' - -[bdist_wheel] -universal = 1 - -[flake8] -exclude = docs - -[aliases] -test = pytest - -[metadata] -description-file = README.rst - -[egg_info] -tag_build = -tag_date = 0 diff --git a/setup.py b/setup.py deleted file mode 100644 index 586ffc64..00000000 --- a/setup.py +++ /dev/null @@ -1,96 +0,0 @@ -#!/usr/bin/env python -# -*- coding: utf-8 -*- - -"""The setup script.""" - -from setuptools import setup, find_packages - -README = """ -# Yet Another Keyword Extractor (Yake) - -Unsupervised Approach for Automatic Keyword Extraction using Text Features. - -YAKE! is a light-weight unsupervised automatic keyword extraction method which rests on text statistical features extracted from single documents to select the most important keywords of a text. Our system does not need to be trained on a particular set of documents, neither it depends on dictionaries, external-corpus, size of the text, language or domain. To demonstrate the merits and the significance of our proposal, we compare it against ten state-of-the-art unsupervised approaches (TF.IDF, KP-Miner, RAKE, TextRank, SingleRank, ExpandRank, TopicRank, TopicalPageRank, PositionRank and MultipartiteRank), and one supervised method (KEA). Experimental results carried out on top of twenty datasets (see Benchmark section below) show that our methods significantly outperform state-of-the-art methods under a number of collections of different sizes, languages or domains. In addition to the python package here described, we also make available a demo, an API and a mobile app. - -## Main Features - -* Unsupervised approach -* Corpus-Independent -* Domain and Language Independent -* Single-Document - -## Where can I find YAKE!? -YAKE! is available online [http://yake.inesctec.pt], as an open source Python package [https://github.com/LIAAD/yake] and on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake). - -## References -Please cite the following works when using YAKE - -In-depth journal paper at Information Sciences Journal - -Campos, R., Mangaravite, V., Pasquali, A., Jatowt, A., Jorge, A., Nunes, C. and Jatowt, A. (2020). YAKE! Keyword Extraction from Single Documents using Multiple Local Features. In Information Sciences Journal. Elsevier, Vol 509, pp 257-289. [pdf](https://doi.org/10.1016/j.ins.2019.09.013) - -ECIR'18 Best Short Paper - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). A Text Feature Based Automatic Keyword Extraction Method for Single Documents. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 684 - 691. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_63) - -Campos R., Mangaravite V., Pasquali A., Jorge A.M., Nunes C., and Jatowt A. (2018). YAKE! Collection-independent Automatic Keyword Extractor. In: Pasi G., Piwowarski B., Azzopardi L., Hanbury A. (eds). Advances in Information Retrieval. ECIR 2018 (Grenoble, France. March 26 – 29). Lecture Notes in Computer Science, vol 10772, pp. 806 - 810. [pdf](https://link.springer.com/chapter/10.1007/978-3-319-76941-7_80) - -## Awards -[ECIR'18](http://ecir2018.org) Best Short Paper -""" -requirements = [ - 'tabulate', - 'click>=6.0', - "numpy", - "segtok", - "networkx", - "jellyfish"] - -setup_requirements = [ - 'pytest-runner' -] - -test_requirements = [ - "pytest", - "flake8" -] - -setup( - name='yake', - version='0.4.8', - description="Keyword extraction Python package", - long_description=README, - long_description_content_type='text/markdown', - url='https://pypi.python.org/pypi/yake', - project_urls={ - 'Documentation': 'https://liaad.github.io/yake/', - 'Source': 'https://github.com/LIAAD/yake', - }, - packages=find_packages(include=['yake','StopwordsList']), - entry_points={ - 'console_scripts': [ - 'yake=yake.cli:keywords' - ] - }, - license="LGPLv3", - include_package_data=True, - install_requires=requirements, - zip_safe=False, - keywords='yake', -classifiers=[ - 'Development Status :: 3 - Alpha', - "License :: OSI Approved :: GNU General Public License v3 (GPLv3)", - 'Programming Language :: Python :: 3', - 'Programming Language :: Python :: 3.5', - 'Programming Language :: Python :: 3.6', - 'Programming Language :: Python :: 3.7', - 'Programming Language :: Python :: 3.8', - 'Topic :: Scientific/Engineering :: Information Analysis', - 'Topic :: Software Development :: Libraries', - 'Topic :: Text Processing', - 'Topic :: Text Processing :: Linguistic', - ], - test_suite='tests', - tests_require=test_requirements, - setup_requires=setup_requirements, -) diff --git a/yake/core/__pycache__/Levenshtein.cpython-310.pyc b/yake/core/__pycache__/Levenshtein.cpython-310.pyc index 2a6ba6955d3c843d61c5cdc9b70936ce160832f9..9132bea54e757b02403181a04f4132b2f610ccbf 100644 GIT binary patch literal 4123 zcmd5RLnOJTKI*=kUwYU-E>AX;hi8D4U6w4&nONGM+v`-|nnN*UFJ(1>I%AA?=f@wo5 z^qBq0Y_ye{ofIZ!9IBny!rK}SNN>*aLS;NnE~Q{P$&!@g=#{(AAv=$g2r`spOD$*1 z)M^wJ*#fIz4kIs2b+#3k2;4B4t!Q#l7#i@DW!ywD6gtPHm`;;S5dLu}J0g%>5z3zE$nLBsx}x`0=h{Es!OV{Ai#}dAb4Lv9 z%$=>79`@W7Lpw7N_u%l|@@~tw{2%0fhUbHnYhB-ZY3O3Dg^gj!m^bY=wjyj}Lm{%l zTr|NP2p^L~aIlFBfv{-eN7@+K3X96!R@%nh>>w`AVcmSil3Yt=c8Zk!2m(1zy-AgK_LxEsbo8mY1bt6mT_R-Qvb z9h|Yuw#*>4q#LUwa>|?|WYQIdm%yoPw!FMtRa)4%fyED*UdS|M2%_j2jqO1;d>63h zMS_JenGMD!gdK1k=9~&;zrt)efC;Cm%;zR9drF$6%A){bRz1}3;Qauvet<^!##?*W z)cV){FT8yZQ4{dLVWHK=2FnKi&V4tdft_%=WO0KzoG+Qv#py}1YN3uqY>YHmy-gz3 z%{H#P6^pgJ$}>mSt&a)gAQbkPDY;Pa4l$I2G1#mEw_SVGT2hN6GC;VI4=Zk}DdBr= z^S+wvx9iPx(OU6?Sz2&2dYe7H!H@NdO7%A5ZOLk!$_^018(Ge@te9C;rA0oMfQ4mD zkTmH)&!;vBZYXC}avI%qXJxn;bOw26JY53QNiLFzqH(SyJ~*ci$i^D(Kx*l#z~5Xl zWQs42#z%+j@%ZS=$|vI^qJO~lmO~n0-+`*UkzaP5`2rPUtSENB^;939|NLQ+`xICGx_%r$F$@s{2CQ+f}q{VaN#j4zyPA#^74w;(p z@!0{eI*}@d*RAcH_7#Qyxe+@i653T|en9$-YBz#>5S0QFQ>tG!| zr-bbDUvD7|QMV+_!+wp0H(B@x!=(1N#TBehA~Fu@aXf6fzG6CJ`wc#uQ*4s0GQHHb zKoZn4M-$kVK4WC+sL0R2(r~9CKBd$QR&G#*<7#Qd?3**)EnS8u0&jd@uf7c{@&P-5 z@*5D$5~V9(+EinccuN+ABQ`y0Z_*MfBd^)Bw|3Ph|5(^mdCXp_1>{4E12Xtb6&V8* z>LW-q_Z)m5+l)vtpazh))dyTNYD_fhDvDK$iZaajMHzw*%2%c>S8W1!)KPb7=@3mh z#HFVd^H?}pFuCRqt>{|sJwjLa&clVtscKUePT#sNX0tnwC~aGYagf%`9HT%y_G*(hHS9(Be1=} z^Nqrrm~9KDb+uhpyDxw?3ZEofW-MQ3C*XBt6OCw1<)bL(iburtRIq8vJTIul>WJQ| z$wnZ6(`BM;NroE7rh^yMVohAvvM7brcc3~-GqK8fhRPDP(OmHin$KPB&8ZYu$pzz7 zH*u8qfR3Eak|;smPgk{2!db00_tY->Wson*?xj?PCgMQG2N@-K8B&?jZ}Cn~fH%{fp9Hm7S;nFA<3}L}aP$_xMS_iDvk-p}*@7L%jIz;=3R8{7w*rd;XsP zs=xcc;NSZ%T|Q``Yh2OXC!@P%e>z3*$mz5kOsDR@EBeFf^mNJ7%?v65QAG5!`wQcc zrs)5gdX<`&(3BxGRrhIVE0RWO+anUR%zO_W{W6-q*YShlz8~!2eeg@)&VrK}=E^Q$ fw^-5tdbg`(gIZkKf5$2OJ2Jc_<&M|Cvlsp!<#wyB delta 244 zcmbQOuw0NYpO=@50SF4taAZ_+OyqN5s{(985kxv zv$#wy;FX@dgLTK`cWl+%oIriWOh7_}dvXbTHdEEj$#2<>fJ)3Kn{jGSHf6J(%*&O< zEe2A?1|)d6H#cz^GjdlwbWY4kF3m|SNuAulAvO6Kw<{2}U+X7A7VpAx0raF-E?>Our;}ChPKdi-YVb761|)3@nUHOcIPt QJV4Ah`8>ZTGm{WA0N{x;%K!iX diff --git a/yake/core/__pycache__/yake.cpython-310.pyc b/yake/core/__pycache__/yake.cpython-310.pyc index 8c5c5d27cc6c7f164e607d5f06e312208de086aa..c5d843e5708ed96a11a97095f7f149ae8bdcb3eb 100644 GIT binary patch delta 1222 zcmZWpy>1gh5XML}mK=mYLdL`ysBB@MWPT;nLcxwov-`WXcD#&BkI$kwtYhi<8|+?Cxl zUXaoz6^T5NYD)81I<}bzxdON!(6d}7ktIQqaDqGIaWL9qJ=i@?<^V^9Bj0$-}S$H4-YKxi*o#*tj2|LQW(qLX=1_U{d|55virlfPkS^ zeckho%RcQHMy+R!;w&aTfnt+VsQWq$b7RW6RnvojUK~3kLTAZ(Y1YY5Bs2j^4!tzd zhP>2-OPm$sHIoXZ6g$#pd7*Sj6T|Ow3|#am(^h)pdJtsc7rQX{um4Qq5OmYARDOO% z#AvTVfuIAX57ML?+a3lqlFI}?p0mu-7{ek$UNdAJNw=WTAZsH9bvT#?J?sI5>#Pic zgrl*}RU{0o-&p%7pm*B9qACm^FZ@zTLo&_qP9RQN+7Qb?otIs|5R9*ho-;~N&JJTM z#gDO{Y+x?(j5x}(1h$upg=h_@ddBcFm5DGHhMvi>&iMUXmq1sEy!6}uB%rs9@YHJS zp^c8{h!-n`bLrwW@sjMu!HU}gPZN01MI#(m(E&hZ^f`n4(YHh+O2!V mZtH99XYr@?5uYD!f2;j2UTq)O{+@o{Zr5r%r@z{-YySWYMw9LU delta 386 zcmY+9&q~8U5XMav53%V%y#yg0s$xSWSgV(U;2%)IoAw2kWYUHvyX)=-+mjFAai2q^ z^bLFi5Bd@wd;l+QYE$SOX5gFO%zX2C{d!(wj$^NwxaB*8_5DfBbt_&)`)*?uM@qN1 zx3sfS)noVaxg9{yXut(>!9tWWp?w?Xaa?po28IwMR0*R%Xaq45l?#NBWjt4;&=(_} z0Im#^L_{GBas0$Y1bw6^mbsGv9zu2_%(>al2&0^*Nw`d%25?X4u!JP0_-}*7pcpR? zNd3FE*HOhIO{s+6h28)mp~fA|RK?0479$V~mg%Ev>mW^}>cRyS6^g~i2uf(q-5-Js nnLuBkc`g0uO{@>STYoY6t^RI(X#peaXZj7EWo=IF#+~&C7p#3G diff --git a/yake/core/yake.py b/yake/core/yake.py index e926d2a4..1d655c3c 100644 --- a/yake/core/yake.py +++ b/yake/core/yake.py @@ -168,20 +168,33 @@ def seqm(self, cand1, cand2): def extract_keywords(self, text): """ - Extract keywords from text. + Extract keywords from the given text. - This method implements the complete YAKE keyword extraction pipeline: - 1. Text preprocessing - 2. Term extraction and feature computation - 3. Candidate keyword generation - 4. Scoring and deduplication - 5. Ranking and selection of top keywords + This function implements the complete YAKE keyword extraction pipeline: + 1. Preprocesses the input text by normalizing whitespace + 2. Builds a data representation using DataCore, which: + - Tokenizes the text into sentences and words + - Identifies candidate n-grams (1 to n words) + - Creates a graph of term co-occurrences + 3. Extracts statistical features for single terms and n-grams + - For single terms: frequency, position, case, etc. + - For n-grams: combines features from constituent terms + 4. Filters candidates based on validity criteria (e.g., no stopwords at boundaries) + 5. Sorts candidates by their importance score (H), where lower is better + 6. Performs deduplication to remove similar candidates based on string similarity + 7. Returns the top k keywords with their scores + + The algorithm favors keywords that are statistically important but not common + stopwords, with scores reflecting their estimated relevance to the document. + Lower scores indicate more important keywords. + Args: - text (str): The input text to extract keywords from - + text: Input text + Returns: - list: A list of tuples (keyword, score) sorted by score (lower is better) + List of (keyword, score) tuples sorted by score (lower is better) + """ # Handle empty input if not text: diff --git a/yake/data/__pycache__/composed_word.cpython-310.pyc b/yake/data/__pycache__/composed_word.cpython-310.pyc index 7ce1e8bc2bd9be404ee0b5740c0d6ee63e917748..76071d217b1a1c37e327960ff2fe3cfb0e24a848 100644 GIT binary patch delta 835 zcmbV~Ka12r7{)i8AO!9}@J}6~dC_7BwuS0+S(#NvcRO4g0^djJv57)Nm<)q^ZJ` z825vKE|KyDr@a=TN@_RB^9l^ALIW2A)sE-k8pL`X@2YJPL#ZUQ)Wkpp14W!4$VEFI zvc@1w594fB&~xGm%`M|11#M(`?N}=2xRoqg1xj*ibFV3;Vf|zGPL;r8QlNL})QyDH zH8d`)HZVtr0mK-^=MJ+Y@u@)0Um-O*>b-p|#x*61z4Y$hJb|Yfx@@ji32Qi)^Y2i@ z%@%C~3&t~L5#}pkxF9w+QCPpnW|eEz@*zy0!Qmr{fFMBTpQtBjPWIB?lN5kJ}Vr+y(r#ycUB5_^8(H;1SfTT>t}Gkxpe#MR?yVn SqtoDZlkFb`!HxR!0sRA>uo7(m delta 337 zcmXwzJxc>Y5QekFC+5Vj5C zAFz;X#7YanE;e?S{ss#x*RLsFhMAX#=kj=ZRHQ;7pD}|6HUFb`TkMu{_biji>%G#_ zd<>qXP(NlX`h2z0b0{2$2wezKN#U3;Nl-q*$d^1u7?^N@A`p=)#==c_019RJ*VmgH z?VcU+5TPC`+1P>p_fFmq!$YnTiJ%DZR7vhAsAFf?0c+w(Jh56}DbLam<;7iP$BIT1 zk}lK-M1dh4`e;Oq4S^U&WH|qo*w}!>11AZ%5)|e2ba}fPCt(XllHA|4X^he~$A)I* zvi2%h>`v#ZGgeGrtDg((DScU)%`vI3*WTGydba+YWjDItykL{`t+~%wO}E?57yl@9 AF8}}l diff --git a/yake/data/__pycache__/core.cpython-310.pyc b/yake/data/__pycache__/core.cpython-310.pyc index 9a3852b964e119e7fb32aa9edb68ea33981a82db..4ca9cd219746eda097e7a6a2c1c4c9a3e6de3f0b 100644 GIT binary patch delta 1374 zcmZuxJ!}+581)zd#yAe16frb>z^6cG(Xwk)L&5xtQJEux@EnLY*I?4I|G#8$i7+4sHozW4TryASTM z{bp)ve1xvg9@diSuQ&GBW=E$+!}-}O{Z_7pS4Kl-jX>wn0SCdgRFZoH=dIFhX!gLH zRn+R+_@sOdJa4z-J#vvi*H~E_hrvZ3gRsbbe9vLobTZ>m-k?KZnzvARXj#(%pCCw! zE>DY-9&N`pV8tJIkkfgZSV0P-*U);vJ9J9(bim7j(%uw6bW^?=a<`ZfI%*%*51-gP zHg}P+??Zax8T%zHocxy^2uEsf`dv0MQjJ;WsmN2(O(u|tJc}MU8b(^2SAqt&NLNm< z&@vWyN=!&)icqj8It3X|JR242SBZ*5MVd?cE*>QPcsoZedI9SP`i7jaLu8ksP%T9c zlyDVLH9O;$caV@8a7Cv*&_>stH(A`nfC;w<#6%^$ROs z(3-%shF(%Snz>3P<*EgjjmBEBG`_}F%A2&eN=Y%GiN$f>2wQVAVSV8O+Y0|JJYvto z&x=1!{7v%RB-LniVsr7#ce~g>VdLX<_D5)*y|(vy8J4hh_Je*8xRf#d0Z&7g=EOCyi zS?p-X@}w$$Bi!~X8YF(ZL7a5oi4}^TXwu(%*B9m8#bGHLP?}H)uOPkUl!eUr=qI&t z6?<7?dHidYT?zlsHp11V>E(C+I!aUaqZ`DVHWSxUGTXN2y+XqMr7tIrM6brktI5gD XH%m9!zLVo0jUOCaoID&>K7INYGG^B& delta 692 zcmZXSKWLLd7{+s{)-*{gwupb);Z=#PwQaObp=n|j#Yv0QKZ6v9^S(>+;g|2?-F=M} zMLKj4!9w3fQA-EGK?Ef@3Q~|RqJs_&QVHnb?%?SArA-CB?cnZte$Vs1cjwr>TOF#s zJszR+_)DxbdFfThKwtC`!+hVlJ7sB0$^q_qs%k)J$*t=bL2%!39d0FDle1N&9Rmfe z${=r8seSH&>sJCBhmB*bre6j$wirE{ed52T`Ur5zJrs2>p5U7;Th`+A}A1Qpe2DR4TkJJN!q$> zu%7CQo#LJdJZ`Z*xGx`6!YGEgBp9JWR-oY86=u^QRFPbiD4FBVxK2P8p&Y5DaCxK~ zSBK`=bDT^s;n{Q>{z_kAukrkm&+IMs9{t9aaog}>^yV5a4WHTbk4J-WhI_7qZ+gZy z#4@-ybAo-q>C7|s5nDzV5-XI~Bxy>~cA996CSrt fTuAH=F=B*~jMv1(G;8aR?~m_@jU+p9_4vvk;GynI diff --git a/yake/data/__pycache__/utils.cpython-310.pyc b/yake/data/__pycache__/utils.cpython-310.pyc index ddb2312bd5f7195c510c718bea4b7952ef3ffe26..4040721629d72721b73d9e756f29cf659f4daaab 100644 GIT binary patch delta 1026 zcmZuwF>4e-6u!+FFo(GWK@bFaq>w1dff^7}2!S*f#&EF`o7vfSx5LfNOlD@Y*%WSP zFI!sbACMGwDt21<7yK)}nceduxUgHyzVE&7``$NSw?5t*>h<+OkDl)zcJk9(pN93y z*0+AIcWiNYBBVzP9?w0bIMEitSk2M7=I093%%TI!%C>-h!wjoZ+YAU`8TUdfNGnj< z&Y2V!LQO$<2UIy{el!4jo_R26!-)fjXK0xO!YbDmQ3tml3*+bE2u_R)J$#OJJ69;L z!7xjQDRYxoEhPXgG3*sZyW7V zdBLQt=r8pRAU3tk{L99{wiGiYCXomE-x6^xk=Xf!u+%vapyh;}XtK(7-4}SSNs}tVoUq&$ zzc+$08X1A47d%U^7}yfJ(wEn?8{vXI-A1Y9bh)dSxo{L0>=F}ZXG%2%0-V9YWxu_2v$jI(z_1OlVX(V~TI4@|?73c}LB6WCL1X?k;Ofgvz zQ5u4#%|URH(x!+zM@V&{GG;5tVm3l(naci?<vvoQ18Q-E`U&`=*CeP z({N1|w+FKpHAd362y;mOQKyj-8+o=1UwXR8P~h@6b4#Zpm5XM6?MHI^^2sXiC&$hE y>veL}+*vD6p06fl^Lwb1^XA3IG^v`;8?TbL&CShO^16Am`KABh#@#=1JYa+X delta 480 zcmYk3ze@u#6vvwuf3>!Hij$&G5kV+!j)IGbqJq}REzLdeLThp)xmF8ug8zY89o-y? zbl1h*KS1!`a5Z-=_1=)-CEw5YeP3R-J~nEyS}hk`C5`3qaq+E|6!*SKp-=`_XHwnJ zHt!)Ayfx6g18u1Asq%S`ivZeOAT$-ymIl`c9Z_ccMM#uns5NR(v^&%q2`F@|5SSF2 zYlFf-=tPbYfV_sxFrtbEibkQX=i&8?-VM3I)B<Zak!d+=_=r)2F#my!%A*!@Lvb3+$+iPhWE~40sGd2HJ=-Z## z=Kf`vZw()Ixe0TtLq7-3qU9E8PbR;}++byjmB^ueC@19LsS=ajL8o#$L4^IBmow7+ hm#VwN_Pr&0?j4iJK6_W>-u`+m(y(mdy|g~N`Uji@rZ4~i diff --git a/yake/data/composed_word.py b/yake/data/composed_word.py index e90d4c2d..0ecabb85 100644 --- a/yake/data/composed_word.py +++ b/yake/data/composed_word.py @@ -169,16 +169,22 @@ def is_valid(self): def get_composed_feature(self, feature_name, discart_stopword=True): """ - Get composed features from constituent terms. - - Calculates combined metrics for the phrase based on individual term metrics. - + Get composed feature values for the n-gram. + + This function aggregates a specific feature across all terms in the n-gram. + It computes the sum, product, and ratio of the feature values, optionally + excluding stopwords from the calculation. + Args: - feature_name (str): Name of the feature to extract (e.g. "wfreq", "tf") - discart_stopword (bool): Whether to ignore stopwords in calculation - + feature_name: Name of feature to get (must be an attribute of the term objects) + discard_stopword: Whether to exclude stopwords from calculation (True by default) + Returns: - tuple: (sum, prod, prod_over_sum) of the feature values + Tuple of (sum, product, ratio) for the feature where: + - sum: Sum of the feature values across all relevant terms + - product: Product of the feature values across all relevant terms + - ratio: Product divided by (sum + 1), a measure of feature consistency + """ # Get feature values from each term, filtering stopwords if requested list_of_features = [ diff --git a/yake/data/core.py b/yake/data/core.py index d5aeec6f..9eb72f70 100644 --- a/yake/data/core.py +++ b/yake/data/core.py @@ -375,8 +375,9 @@ def build_candidate(self, candidate_string): """ Build a candidate ComposedWord from a string. - This method allows creating candidate keywords from external input - strings rather than from the document's own text. + This function processes a candidate string by tokenizing it, tagging each word, + and creating a ComposedWord object from the resulting terms. It's used to + convert external strings into the internal candidate representation. Args: candidate_string (str): String to convert to a keyword candidate @@ -415,10 +416,10 @@ def build_candidate(self, candidate_string): def build_single_terms_features(self, features=None): """ - Build statistical features for single terms. - - Calculates term frequency statistics and updates the scoring metrics - for each individual term. + Calculates and updates statistical features for all single terms in the text. + This includes term frequency statistics and other features specified in the + features parameter. Only non-stopword terms are considered for statistics + calculation. Args: features (list, optional): Specific features to calculate @@ -451,10 +452,11 @@ def build_mult_terms_features(self, features=None): """ Build features for multi-word terms. - Updates the scoring metrics for valid candidate keywords. + Updates the features for all valid multi-word candidate terms (n-grams). + Only candidates that pass the validity check will have their features updated. Args: - features (list, optional): Specific features to calculate + features (list, optional): List of features to build. If None, all available features will be built. """ # Update only valid candidates (filter then apply update_h) list( @@ -508,7 +510,7 @@ def get_term(self, str_word, save_non_seen=True): term_obj = SingleWord(unique_term, term_id, self.g) term_obj.stopword = isstopword - # Save the term to the collection if requested + # Save the term to the collection if requestedComposedWord instance to add or update in the candidates dictionary if save_non_seen: self.g.add_node(term_id) self.terms[unique_term] = term_obj @@ -519,7 +521,9 @@ def add_cooccur(self, left_term, right_term): """ Add a co-occurrence relationship between two terms. - Creates or updates an edge in the co-occurrence graph between terms. + Updates the co-occurrence graph by adding or incrementing an edge between + two terms. This information is used to calculate term relatedness and + importance in the text. Args: left_term (SingleWord): Source term in the relationship @@ -537,10 +541,12 @@ def add_or_update_composedword(self, cand): """ Add or update a composed word in the candidates collection. - Handles the registration and frequency counting of keyword candidates. + Adds a new candidate composed word (n-gram) to the candidates dictionary + or updates an existing one by incrementing its frequency. This is used to + track potential keyphrases in the text. Args: - cand (ComposedWord): The candidate keyword to add or update + cand (ComposedWord): ComposedWord instance to add or update in the candidates dictionary """ # Check if this candidate already exists if cand.unique_kw not in self.candidates: diff --git a/yake/data/utils.py b/yake/data/utils.py index 761b1b22..bcb08379 100644 --- a/yake/data/utils.py +++ b/yake/data/utils.py @@ -18,18 +18,27 @@ STOPWORD_WEIGHT = "bi" def pre_filter(text): - """ - Normalize text by standardizing line breaks and spacing. + """Pre-filter text before processing. + + This function prepares raw text for keyword extraction by normalizing its format. + It performs several transformations: - This function preprocesses raw text to ensure consistent handling of - paragraphs, line breaks, and whitespace. It preserves paragraph structure - by detecting capitalized line beginnings while normalizing other whitespace. + 1. Splits the text into parts based on newline characters + 2. Detects if a part starts with a capital letter (potentially a new paragraph) + 3. Adds appropriate spacing between parts: + - Double newlines for parts starting with capital letters (likely new paragraphs) + - Single spaces for other parts (likely continuing text) + 4. Replaces all tab characters with spaces for consistent formatting + This preprocessing helps maintain paragraph structure while normalizing + whitespace, which improves the accuracy of subsequent text analysis steps + like sentence boundary detection and keyword extraction. + Args: - text (str): The raw input text to be normalized - + text: Raw input text to be pre-filtered + Returns: - str: The normalized text with standardized whitespace and line breaks + Normalized text with consistent spacing and paragraph structure """ # Regular expression to detect lines starting with capital letters prog = re.compile("^(\\s*([A-Z]))") From a4f7027f67884da241f99b288776d49a5ae5dad6 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 22 May 2025 21:50:39 +0100 Subject: [PATCH 117/122] finishing touches --- .gitignore | 37 ++- .python-version | 1 + Makefile | 41 ++- README.md | 4 +- docs-site/content/docs/--home.mdx | 3 + docs-site/public/1YAKE.ipynb | 21 +- pyproject.toml | 8 +- uv.lock | 437 ++++++++++++++++++++++++++++++ 8 files changed, 522 insertions(+), 30 deletions(-) create mode 100644 .python-version create mode 100644 uv.lock diff --git a/.gitignore b/.gitignore index 2e295bc2..21c8b059 100644 --- a/.gitignore +++ b/.gitignore @@ -3,4 +3,39 @@ node_modules/ .npm # Don't ignore these files !.next/ -!out/ \ No newline at end of file +!out/ + +# Python +__pycache__/ +*.py[cod] +*.pyo +*.pyd +*.so + +# Virtual environments +.venv/ +venv/ +ENV/ +env/ +*.env + +# Hatch/uv/pytest +.uv/ +.uv.lock +.pytest_cache/ +.coverage +htmlcov/ +.cache/ +dist/ +build/ +*.egg-info/ + +# VSCode +.vscode/ + +# Logs +*.log + +# OS files +.DS_Store +Thumbs.db \ No newline at end of file diff --git a/.python-version b/.python-version new file mode 100644 index 00000000..c8cfe395 --- /dev/null +++ b/.python-version @@ -0,0 +1 @@ +3.10 diff --git a/Makefile b/Makefile index 6a25f0ec..03b45367 100644 --- a/Makefile +++ b/Makefile @@ -1,21 +1,36 @@ install: - uv pip install --upgrade pip - uv pip install . + uv pip install --upgrade pip + uv pip install -e . + +install-dev: + uv pip install --upgrade pip + uv pip install -e ".[dev]" test: - uv pip install pytest - uv pip run pytest -vv --cov= test_*. + uv run pytest -vv --cov=yake test_*.py -format: - uv pip install black - uv pip run black . +format: + uv run black . lint: - uv pip install ruff - uv pip run ruff check --fix . - uv pip run ruff check . + uv run ruff check --fix . + uv run ruff check . + uv run flake8 yake/ + +clean: + rm -rf build/ + rm -rf dist/ + rm -rf *.egg-info/ + find . -type d -name __pycache__ -delete + find . -type f -name "*.pyc" -delete + +build: + uv build deploy: - # no rules for now - -all: install lint test format \ No newline at end of file + uv build + uv publish + +all: install-dev lint test format + +.PHONY: install install-dev test format lint clean build deploy all \ No newline at end of file diff --git a/README.md b/README.md index 54816784..acd27348 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,13 @@ YAKE! is a lightweight unsupervised automatic keyword extraction method that use ## Quick Installation ```bash -pip install git+https://github.com/LIAAD/yake +uv pip install git+https://github.com/LIAAD/yake ``` or ```bash -pip install yake +uv pip install yake ``` ## Basic Usage diff --git a/docs-site/content/docs/--home.mdx b/docs-site/content/docs/--home.mdx index 3247457d..5bbadd9f 100644 --- a/docs-site/content/docs/--home.mdx +++ b/docs-site/content/docs/--home.mdx @@ -46,6 +46,9 @@ When contributing to this repository, please first discuss the change you wish t rncampos + + tiagolv + silvae86 diff --git a/docs-site/public/1YAKE.ipynb b/docs-site/public/1YAKE.ipynb index 614d977c..6dbc3f50 100644 --- a/docs-site/public/1YAKE.ipynb +++ b/docs-site/public/1YAKE.ipynb @@ -128,7 +128,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "YAKE! is available online [http://yake.inesctec.pt], on [Google Play](https://play.google.com/store/apps/details?id=com.yake.yake), as an open source Python package [https://github.com/LIAAD/yake] and as an [API](http://yake.inesctec.pt/apidocs/#/available_methods/post_yake_v2_extract_keywords)." + "YAKE! is available online [http://yake.inesctec.pt]and as an open source Python package [https://github.com/LIAAD/yake]." ] }, { @@ -156,7 +156,7 @@ "outputs": [], "source": [ "#!pip install git+http://github.com/LIAAD/yake\n", - "!pip install yake\n", + "uv pip install yake\n", "\n", "#no caso de já ter instalado o package previamente e quiser fazer um update\n", "#!pip install git+http://github.com/LIAAD/yake --upgrade" @@ -456,7 +456,7 @@ }, { "cell_type": "code", - "execution_count": 2, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -511,7 +511,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "o código seguinte é uma função alternativa de normalização dos dados. Aqui os valores ficam tammbém enquadrados entre [0,1] sendo que o upper bound não é necessáriamente 1 (pode ser um valor inferior a 1)." + "the following code is a normalizing fuction of the data. The results vary betweent [0,1] where the upper bound isn't necessarly 1 (it can be lower than 1)." ] }, { @@ -541,7 +541,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Posteriormente, podemos construir uma nuvem de palavras com recurso ao `matplotlib`. Se durante a instalação receber uma mensagem de erro a referir que necessita do Microsoft Visual C++ 14.0 (ou superior) deverá proceder à sua instalação. Veja como nesta [página web](https://www.scivision.dev/python-windows-visual-c-14-required/) ou neste [vídeo](https://www.youtube.com/watch?v=_keTL9ymGjw)." + "Later, its possible to build a word cloud using `matplotlib`. If, during installation, you receive an error message stating that Microsoft Visual C++ 14.0 (or higher) is required, you should proceed with its installation. See how to do it on this [web page](https://www.scivision.dev/python-windows-visual-c-14-required/) or in this [video](https://www.youtube.com/watch?v=_keTL9ymGjw)." ] }, { @@ -550,13 +550,13 @@ "metadata": {}, "outputs": [], "source": [ - "!pip install matplotlib\n", - "!pip install wordcloud" + "!uv pip install matplotlib\n", + "!uv pip install wordcloud" ] }, { "cell_type": "code", - "execution_count": 7, + "execution_count": null, "metadata": {}, "outputs": [ { @@ -596,7 +596,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "Suponha agora que necessita passar esta imagem a partir de uma API. Com vista a esse objetivo deverá converter a imagem em base64. O código abaixo permite guardar a imagem em buffer e mostra a sua conversão em base64." + "Now suppose you need to send this image through an API. To achieve this, you should convert the image to base64. The code below allows you to store the image in a buffer and shows its conversion to base64." ] }, { @@ -619,7 +619,7 @@ "cell_type": "markdown", "metadata": {}, "source": [ - "A partir dos b64 seria depois possível voltar a mostrar a imagem." + "From the base64 string, it would then be possible to display the image again." ] }, { @@ -759,7 +759,6 @@ "source": [ "- [INESC TEC technology used to create a database of keywords obtained from more than 100 million scientific articles](https://bip.inesctec.pt/en/noticias/inesc-tec-technology-used-to-create-a-database-of-keywords-obtained-from-more-than-100-million-scientific-articles/)\n", "- [This tool can extract keywords from texts in every language about any topic](https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276?returnurl=https://www.alphagalileo.org/en-gb/Item-Display/ItemId/216276)\n", - "- [Apps do YAKE! e Conta-me Histórias já estão disponíveis no Google Play](https://bip.inesctec.pt/noticias/apps-do-yake-e-conta-me-historias-ja-estao-disponiveis-no-google-play/)\n", "- [INESC TEC team wins another Best Paper Award](https://www.inesctec.pt/en/news/inesc-tec-team-wins-another-best-paper-award#about)" ] } diff --git a/pyproject.toml b/pyproject.toml index f48e808c..ee14e214 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -7,16 +7,18 @@ name = "yake" version = "0.6.0" description = "Keyword extraction Python package" readme = "README.md" -requires-python = ">=3.8" # Changed from >=3.7 to >=3.8 +requires-python = ">=3.10" license = {text = "LGPLv3"} authors = [ + {name = "Arian Pasquali", email = "arianpasquali@gmail.com"}, + {name = "Ricadro Campos", email = "ricardo.campos@ubi.pt"}, {name = "Tiago Vaente", email = "tiago.leando.valente@ubi.com"}, ] dependencies = [ "tabulate", "segtok", "networkx", - "numpy>=1.23.5", # This version requires Python >=3.8 + "numpy>=1.23.5", # This version requires Python >=3.8 "click>=6.0", "jellyfish", ] @@ -50,4 +52,4 @@ Source = "https://github.com/LIAAD/yake" yake = "yake.cli:keywords" [tool.hatch.build.targets.wheel] -packages = ["yake", "StopwordsList"] # Explicitly include these packages \ No newline at end of file +packages = ["yake", "StopwordsList"] # Explicitly include these packages diff --git a/uv.lock b/uv.lock new file mode 100644 index 00000000..6ce6984b --- /dev/null +++ b/uv.lock @@ -0,0 +1,437 @@ +version = 1 +revision = 2 +requires-python = ">=3.10" + +[[package]] +name = "click" +version = "8.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0b/9f/a65090624ecf468cdca03533906e7c69ed7588582240cfe7cc9e770b50eb/exceptiongroup-1.3.0.tar.gz", hash = "sha256:b241f5885f560bc56a59ee63ca4c6a8bfa46ae4ad651af316d4e81817bb9fd88", size = 29749, upload-time = "2025-05-10T17:42:51.123Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/36/f4/c6e662dade71f56cd2f3735141b265c3c79293c109549c1e6933b0651ffc/exceptiongroup-1.3.0-py3-none-any.whl", hash = "sha256:4d111e6e0c13d0644cad6ddaa7ed0261a0b36971f6d23e7ec9b4b9097da78a10", size = 16674, upload-time = "2025-05-10T17:42:49.33Z" }, +] + +[[package]] +name = "flake8" +version = "7.2.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "mccabe" }, + { name = "pycodestyle" }, + { name = "pyflakes" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/c4/5842fc9fc94584c455543540af62fd9900faade32511fab650e9891ec225/flake8-7.2.0.tar.gz", hash = "sha256:fa558ae3f6f7dbf2b4f22663e5343b6b6023620461f8d4ff2019ef4b5ee70426", size = 48177, upload-time = "2025-03-29T20:08:39.329Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/5c/0627be4c9976d56b1217cb5187b7504e7fd7d3503f8bfd312a04077bd4f7/flake8-7.2.0-py2.py3-none-any.whl", hash = "sha256:93b92ba5bdb60754a6da14fa3b93a9361fd00a59632ada61fd7b130436c40343", size = 57786, upload-time = "2025-03-29T20:08:37.902Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.1.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f2/97/ebf4da567aa6827c909642694d71c9fcf53e5b504f2d96afea02718862f3/iniconfig-2.1.0.tar.gz", hash = "sha256:3abbd2e30b36733fee78f9c7f7308f2d0050e88f0087fd25c2645f63c773e1c7", size = 4793, upload-time = "2025-03-19T20:09:59.721Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2c/e1/e6716421ea10d38022b952c159d5161ca1193197fb744506875fbb87ea7b/iniconfig-2.1.0-py3-none-any.whl", hash = "sha256:9deba5723312380e77435581c6bf4935c94cbfab9b1ed33ef8d238ea168eb760", size = 6050, upload-time = "2025-03-19T20:10:01.071Z" }, +] + +[[package]] +name = "jellyfish" +version = "1.2.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/7c/29/c0d39be806b5d5c201e9bf5265e43cf0e88bd63fb4e38edfc7a212ca38a7/jellyfish-1.2.0.tar.gz", hash = "sha256:5c7d73db4045dcc53b6efbfea21f3d3da432d3e052dc51827574d1a447fc23b4", size = 364693, upload-time = "2025-03-31T15:43:18.43Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0f/9c/1d3102a61776d44e8028af5a38a2638a6d4ad8ad719cf48a6bfe6b8ce894/jellyfish-1.2.0-cp310-cp310-macosx_10_12_x86_64.whl", hash = "sha256:50b6d2a123d3e0929cf136c6c26a6774338be7eb9d140a94223f56e3339b2f80", size = 328461, upload-time = "2025-03-31T15:41:38.783Z" }, + { url = "https://files.pythonhosted.org/packages/04/77/5a4d5367eaabff85977fb3f322616f24d29d70d567fc0ea4f927317e81bd/jellyfish-1.2.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:baa1e44244cba9da6d67a50d3076dd7567e3b91caa9887bb68e20f321e0d2500", size = 325248, upload-time = "2025-03-31T15:41:42.344Z" }, + { url = "https://files.pythonhosted.org/packages/51/3d/c27b3ee999063caba206cf2f21542fe19d85e2d4ebe739e76a02b621a084/jellyfish-1.2.0-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:65082288f76b3821e5cfeae6c2290621f9e8eff75e3fe2d90817dcd068c5bf36", size = 355959, upload-time = "2025-03-31T15:41:44.424Z" }, + { url = "https://files.pythonhosted.org/packages/51/de/874bb9fa8f1daf4723bdc9c8718951a4e0e1ca6361ff5c1a09b1ee76b55b/jellyfish-1.2.0-cp310-cp310-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:4309d536a5427c008bab096fd38cb2d44c7e475c494b23f2554cfdcf8a19f7fb", size = 363956, upload-time = "2025-03-31T15:41:45.834Z" }, + { url = "https://files.pythonhosted.org/packages/48/08/fc3fd641dc09754a6986f3f00e625fd1aac89b1f012a1d4087c53391de64/jellyfish-1.2.0-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fa0ac18693162b751bdd010a2c35136500a326b6a0bd0b18e6d973c524048ac7", size = 357026, upload-time = "2025-03-31T15:41:47.062Z" }, + { url = "https://files.pythonhosted.org/packages/7f/16/5466c0319a36f0b96f909e928e25f7ae311660903af57f382bf81a76bd45/jellyfish-1.2.0-cp310-cp310-musllinux_1_1_aarch64.whl", hash = "sha256:c19d70cfbfe4eb9c7c6a1df848cfa48f6e5166a3f23362a2c1d7a2e763674113", size = 533905, upload-time = "2025-03-31T15:41:48.188Z" }, + { url = "https://files.pythonhosted.org/packages/b3/70/0852e2b85b8114c564ad2d4d2d9e332feb84cef6719b7c197b74c0580a1c/jellyfish-1.2.0-cp310-cp310-musllinux_1_1_i686.whl", hash = "sha256:5616698941afc730aa6cc162a4686bda29aa8127d70bcb939321143b1170238a", size = 555397, upload-time = "2025-03-31T15:41:49.725Z" }, + { url = "https://files.pythonhosted.org/packages/39/f2/c54b7670ae67bb24fa87b34aa106385415a26a28c66731bbf4db520aea09/jellyfish-1.2.0-cp310-cp310-musllinux_1_1_x86_64.whl", hash = "sha256:b28ad8da20561f07ca4bf1297bd5519d8cd947b8b5593e00cc7ceb255b2a1d84", size = 527740, upload-time = "2025-03-31T15:41:51.875Z" }, + { url = "https://files.pythonhosted.org/packages/c7/bf/b0d88b6dab19789e5893064f83eb6a0b15498f46a887fcfa3a614f962d0a/jellyfish-1.2.0-cp310-cp310-win32.whl", hash = "sha256:6ec6db8301bf91de85ee5084a44f0b5d399cc030c86910730d5ae69f1e712438", size = 212500, upload-time = "2025-03-31T15:41:53.454Z" }, + { url = "https://files.pythonhosted.org/packages/c1/b9/a252acda71bd81314d43397f084eec6c2a58c69ca5afcb71ffe6941b6c66/jellyfish-1.2.0-cp310-cp310-win_amd64.whl", hash = "sha256:8ed2393f6d0c7e8ec53ab0627dc81e1613bc2e76a9c30332197d0a1df5e39356", size = 217140, upload-time = "2025-03-31T15:41:54.662Z" }, + { url = "https://files.pythonhosted.org/packages/30/eb/17ca88570c3ac4144101d614cddbccd1effc25f812cbc4ab8ad15b75730e/jellyfish-1.2.0-cp311-cp311-macosx_10_12_x86_64.whl", hash = "sha256:b4f8ff3cda0e00f6f62fe98ffce28bd7f21d1d55875470f8275a2fdbd84cfb6a", size = 328511, upload-time = "2025-03-31T15:41:55.791Z" }, + { url = "https://files.pythonhosted.org/packages/1e/9a/521cbf0b77e86b2b3cda2b42b1afaf3498d4cc16b4240c6ff5b8941d8966/jellyfish-1.2.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:792cb481816626396892bccf53643ccc55a7f7c2b129de61360d01044a539afd", size = 325221, upload-time = "2025-03-31T15:41:57.064Z" }, + { url = "https://files.pythonhosted.org/packages/74/a0/344f432fc8a730dd896446164ed0843e388ed676c632536f6d1b1746c0af/jellyfish-1.2.0-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:0ca2c84d3aaeea4bd7c9bdb174229789e69c7dd58916b47813f52db3a1b62495", size = 355848, upload-time = "2025-03-31T15:41:58.554Z" }, + { url = "https://files.pythonhosted.org/packages/9f/8c/0fadfebdab24b7095531828e2757753525fa835a415c2a6694de9dae2339/jellyfish-1.2.0-cp311-cp311-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3ebc962fd90b2dcb33eb308e70c3a356a931c4b10c76d8d9d63df1d5dac42be4", size = 364054, upload-time = "2025-03-31T15:41:59.654Z" }, + { url = "https://files.pythonhosted.org/packages/ba/2b/e6ce825f2ae5638b7c6f8dfa675051424fcb45960a2759b332fd6be6dcb2/jellyfish-1.2.0-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d0d765888bf186b75bf16b3d9a1b7f088f5f5ccbf62b414c25d92b404aad9c2a", size = 356926, upload-time = "2025-03-31T15:42:00.808Z" }, + { url = "https://files.pythonhosted.org/packages/45/4a/64e9f022df383651adb0b80a3473d31bf34f8ae79c9c27cea0a964ea008e/jellyfish-1.2.0-cp311-cp311-musllinux_1_1_aarch64.whl", hash = "sha256:85c5eca0d56241d07a0a89f2896bc7d1ec66ee72ffa801847c70f404b0214fad", size = 533845, upload-time = "2025-03-31T15:42:02.264Z" }, + { url = "https://files.pythonhosted.org/packages/0a/d6/11178c93e59fad2ac9d1dbc750bc4f8d637a5e780ae8b4fd53b3d740b599/jellyfish-1.2.0-cp311-cp311-musllinux_1_1_i686.whl", hash = "sha256:13d7d925760bd8c3fd8831fcc0ad5a32ceae82c66e8aa19df45082afe5c4be2a", size = 555528, upload-time = "2025-03-31T15:42:04.192Z" }, + { url = "https://files.pythonhosted.org/packages/e6/32/5be368336b901f792d137e1771e8446b102e6b6dbb5f82a2a92ef9467f0d/jellyfish-1.2.0-cp311-cp311-musllinux_1_1_x86_64.whl", hash = "sha256:ccc330b6104c87e22dbb22c2578abcf0e36d1346c1810eec3f67571089b36874", size = 527595, upload-time = "2025-03-31T15:42:05.361Z" }, + { url = "https://files.pythonhosted.org/packages/67/b2/6df2229e03f273f9b24cedea3174f5cb58b7d2856b8778913f4d44423f3d/jellyfish-1.2.0-cp311-cp311-win32.whl", hash = "sha256:75d131a51202e679b653507f99634bc13c4aa6a4afabe06a1c3d200f72e18b9b", size = 212604, upload-time = "2025-03-31T15:42:06.485Z" }, + { url = "https://files.pythonhosted.org/packages/9a/54/f1dca498a808e427374d3bd81832045f9cfbbecafbc7f49461a6425dfd0a/jellyfish-1.2.0-cp311-cp311-win_amd64.whl", hash = "sha256:63f58a0a7c9c0bb9a69562d2b9dd1a3f6729e94b0dcb6adf54b45b4da853eb94", size = 217095, upload-time = "2025-03-31T15:42:07.627Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d5/89424092e3d1e6948eb215fb1f58126fc8090989475f6cbc6545a0eae72c/jellyfish-1.2.0-cp312-cp312-macosx_10_12_x86_64.whl", hash = "sha256:088c9b7e7077802ce2254b876486ae3b49d81f4f07f6c692c612ba40e1a42177", size = 326154, upload-time = "2025-03-31T15:42:08.819Z" }, + { url = "https://files.pythonhosted.org/packages/91/af/881ef6fb6e2e534b7383c6ace369485e1c285dc70b9bab54e35796d4f1fd/jellyfish-1.2.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:393664438fbb98886f9c97675179d4b552b68c3d0099d4df3cdec6412deaeea0", size = 322983, upload-time = "2025-03-31T15:42:09.942Z" }, + { url = "https://files.pythonhosted.org/packages/1e/ee/d73ac46c3ad0f1d8b28de452b117080bab7d7a3565a05f1b34a5b6085f4e/jellyfish-1.2.0-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a54a83905596dd712948b6af7fccc2b28d37624bfc9eab4868518c3f8106c739", size = 355339, upload-time = "2025-03-31T15:42:11.04Z" }, + { url = "https://files.pythonhosted.org/packages/e4/1a/8952b21f9b52931c5997dc2d24b2a1660d76bb34aa69460b0d4e126501a9/jellyfish-1.2.0-cp312-cp312-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e2f68cdb689b59653fa70345c8fcb09bfee12d34c0f7ae223ce70fa5175cb2ee", size = 363903, upload-time = "2025-03-31T15:42:12.164Z" }, + { url = "https://files.pythonhosted.org/packages/25/df/bdeb876920dc26405e90a6abf014eff5a1892652a7875733ed0e91a0e424/jellyfish-1.2.0-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:019542af342973c537275b289c1e891fb2b62b011bfdb68c816da4527477b74d", size = 355931, upload-time = "2025-03-31T15:42:14.108Z" }, + { url = "https://files.pythonhosted.org/packages/dd/c3/cb05e3d092eb929d2043e4945d172f30781321d90b198a05316b8dfb97df/jellyfish-1.2.0-cp312-cp312-musllinux_1_1_aarch64.whl", hash = "sha256:079ec6fceb5336e7c2f99b43ee035f85b39022db897c70e736439ed1d4fc8462", size = 533430, upload-time = "2025-03-31T15:42:15.559Z" }, + { url = "https://files.pythonhosted.org/packages/34/a0/af60a3d7ec0d7f537dd32efb485ed7969c0d8b3856cd3cc7445fa7b0bc3d/jellyfish-1.2.0-cp312-cp312-musllinux_1_1_i686.whl", hash = "sha256:a5ddd20e6d87c7dc173717ffe0df0bba50aa0b0c51e3d57d6cce1706ea6a1167", size = 554656, upload-time = "2025-03-31T15:42:16.733Z" }, + { url = "https://files.pythonhosted.org/packages/8f/db/92026263a56dea6751d9935a4c41c78f5561aa49c6b20e068389b25e6bfb/jellyfish-1.2.0-cp312-cp312-musllinux_1_1_x86_64.whl", hash = "sha256:08a1a3f6adc033eb3735a8ba121188a5d3fdc6630eec6a946c30260c1ac680ac", size = 526659, upload-time = "2025-03-31T15:42:17.864Z" }, + { url = "https://files.pythonhosted.org/packages/e6/4e/c8c546a422090eb75c232454465aefb49e1030fad043a99a73ba12f80fee/jellyfish-1.2.0-cp312-cp312-win32.whl", hash = "sha256:65ec39cfed29e475df33c9d7fc70d76eb39ce6dfb7fedf19599caff497a9b3c7", size = 212397, upload-time = "2025-03-31T15:42:19.056Z" }, + { url = "https://files.pythonhosted.org/packages/90/6d/5770b7fb1767c12559aabe2bf5f629bee8d738dbe110301c14aa276d2c8a/jellyfish-1.2.0-cp312-cp312-win_amd64.whl", hash = "sha256:199baa59412723ef76126303fc236728b2613a4723fba83eede942c89e1dad1c", size = 216558, upload-time = "2025-03-31T15:42:20.173Z" }, + { url = "https://files.pythonhosted.org/packages/f0/4e/2f10011b5a80c56bb0f2775ee7283a3290fb9ec4e67c48c0342671a6d6e0/jellyfish-1.2.0-cp313-cp313-macosx_10_12_x86_64.whl", hash = "sha256:8b995bdf97d43cdca1e6bd5375f351bcb85c7f5e8760fe4a28c63eb0e6104075", size = 325372, upload-time = "2025-03-31T15:42:21.563Z" }, + { url = "https://files.pythonhosted.org/packages/f8/7e/e15034422abf21e28b43155d21f4e34ae7349fad6c682be12c739d79119b/jellyfish-1.2.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:559c1d6f17ba51639843b958a0d57ece5c4155e6b820c4acb3f3437437625ef3", size = 322333, upload-time = "2025-03-31T15:42:23.015Z" }, + { url = "https://files.pythonhosted.org/packages/0b/62/cdb56ed6641c5a23bb00c775ea54108423b40d2376bed186455cc39f4a0b/jellyfish-1.2.0-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e4439f4066ccc5dd6a7a15cb06941f5150bab646201e9e014a7d34d65cbe89fe", size = 354567, upload-time = "2025-03-31T15:42:24.22Z" }, + { url = "https://files.pythonhosted.org/packages/e0/97/47830ff857307936313e345010cf7626e7b3a233549cfc258c7342553de4/jellyfish-1.2.0-cp313-cp313-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:dbf866d2b967fd2d5380134fdcb47d4f113e24d659b46c38e55da80c215d2042", size = 363379, upload-time = "2025-03-31T15:42:25.407Z" }, + { url = "https://files.pythonhosted.org/packages/8e/95/4e3d5bac918aa7b0e1cebff39822add0844dbfc433870949dccc3df8aae3/jellyfish-1.2.0-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:d9290b82276bba1941ad0f98226f51b43aeef7bdedb927b9266516b4519b9012", size = 355215, upload-time = "2025-03-31T15:42:26.695Z" }, + { url = "https://files.pythonhosted.org/packages/6e/2f/1d7aa3b7dc3d7e6a7f9e832a98440d14641670394c11718f7584dab434b2/jellyfish-1.2.0-cp313-cp313-musllinux_1_1_aarch64.whl", hash = "sha256:052345ded2b00104a50acbab35c671efe06f40790202f6a2fc279ad645f31ab2", size = 532669, upload-time = "2025-03-31T15:42:27.806Z" }, + { url = "https://files.pythonhosted.org/packages/f6/0e/d527f9425e9462463e3b0ae748ec39ec5a2ebaa829725ca8c09f8753e364/jellyfish-1.2.0-cp313-cp313-musllinux_1_1_i686.whl", hash = "sha256:465dcf8b17162e3dae2cae0072b22ea9637e6ce8ddd8294181758437cd9c0673", size = 554223, upload-time = "2025-03-31T15:42:29.362Z" }, + { url = "https://files.pythonhosted.org/packages/04/71/533b48054f1ddab7d9b7ad3833a87963200c7aef7ce81e082379da6d1264/jellyfish-1.2.0-cp313-cp313-musllinux_1_1_x86_64.whl", hash = "sha256:ae5f2e3c5ef14cb5b86afe7ed4078e504f75dd61ca9d9560bef597f9d2237c63", size = 526103, upload-time = "2025-03-31T15:42:30.528Z" }, + { url = "https://files.pythonhosted.org/packages/f4/d7/6c5ce80088495b7bb002931d7d0a313143b45fa10e826f11aadd4a97ccdb/jellyfish-1.2.0-cp313-cp313-win32.whl", hash = "sha256:13ee212b6fa294a1b6306693a1553b760d876780e757b9f016010748fe811b4d", size = 212179, upload-time = "2025-03-31T15:42:31.628Z" }, + { url = "https://files.pythonhosted.org/packages/40/aa/332fd282668a353570bdad56d65f526bc28ab73da1a3dd99e670af687186/jellyfish-1.2.0-cp313-cp313-win_amd64.whl", hash = "sha256:c8089e918ddb1abae946e92d053f646a7f686d0d051ef69cdfaa28b37352bbdf", size = 216066, upload-time = "2025-03-31T15:42:32.75Z" }, + { url = "https://files.pythonhosted.org/packages/a3/a3/ac72cdab59f0eb52eecda5f739ef69fa61ed6d5f7b0129043219e9ce8b58/jellyfish-1.2.0-pp310-pypy310_pp73-macosx_10_12_x86_64.whl", hash = "sha256:3c0d9d4136341c34ed0fb3fb406801d7a2724a1fa4996577822bc5e5b27870b4", size = 330579, upload-time = "2025-03-31T15:42:46.677Z" }, + { url = "https://files.pythonhosted.org/packages/3d/77/9a7734d7afb5ee349be7a627821d2bf5e84f2469010c9628d4bb21c813ec/jellyfish-1.2.0-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:36e53729ac0bd387c8f7fd60c8727e6784113976058d8aa2f62398fcdfe209f1", size = 326878, upload-time = "2025-03-31T15:42:48.154Z" }, + { url = "https://files.pythonhosted.org/packages/ba/38/9d1d0c7288a35ed7a9bef87fab745df2740222bed67677c270bae65ce21f/jellyfish-1.2.0-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10b178b8351e90e463d937e53c8b5525627a0bb2ca6f7e49ac7452b0608a1020", size = 357373, upload-time = "2025-03-31T15:42:49.453Z" }, + { url = "https://files.pythonhosted.org/packages/93/90/987343f6e43757731fbd62e5e74cfa0c519ad07faef2ff9c31c45386a42c/jellyfish-1.2.0-pp310-pypy310_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:e79225fba34bb082d2f21fa5cd7dc015c856ff04b8340e98ce122ab71a445cad", size = 365456, upload-time = "2025-03-31T15:42:51.136Z" }, + { url = "https://files.pythonhosted.org/packages/6d/12/0834bedcbc107bc17582787d8cd6b6ef21b0290e2847212d1997ec3353bc/jellyfish-1.2.0-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:18a1ea2d395a4c9c00224b3abd57b73bd2cb4ca17fc6e2024c8433b31e1b1061", size = 358547, upload-time = "2025-03-31T15:42:52.478Z" }, + { url = "https://files.pythonhosted.org/packages/99/5a/5518f6f8c57c75fffba0163f06e3c0ce5df7ef6f40a1a0affb78de767881/jellyfish-1.2.0-pp310-pypy310_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:b27ff486175b9c8fecdc9147c7dde1d835675bd76df12c1521f378a2fab70493", size = 535731, upload-time = "2025-03-31T15:42:53.667Z" }, + { url = "https://files.pythonhosted.org/packages/25/87/21376b582989cc9103fea496690ce8651fc3587c0c9a546a99cced2d9d0f/jellyfish-1.2.0-pp310-pypy310_pp73-musllinux_1_1_i686.whl", hash = "sha256:4b6b1109174e6ae780f6c2b8454b2fcfc7efeb8fae767f757c481ccca16fb842", size = 557248, upload-time = "2025-03-31T15:42:54.862Z" }, + { url = "https://files.pythonhosted.org/packages/81/ff/8f6d536cb1afda322f989d294cbfb9fa22aa2493e0bbe8b62a35f87e7f0e/jellyfish-1.2.0-pp310-pypy310_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dfb4e76c2b6c3e94ea3778510c94609893ddc7172255838b3221eba1ec9aa5cc", size = 529209, upload-time = "2025-03-31T15:42:56.062Z" }, + { url = "https://files.pythonhosted.org/packages/1a/39/99494ab43d6127d7e2bd415c34b37e89fe16fb796a872b9c272558729ca0/jellyfish-1.2.0-pp311-pypy311_pp73-macosx_10_12_x86_64.whl", hash = "sha256:07384e33e5f9bfd3d1356cf73d94388af295ed8f196a1d9f09bc381c5ea79be8", size = 330535, upload-time = "2025-03-31T15:42:57.222Z" }, + { url = "https://files.pythonhosted.org/packages/eb/5f/7b3bcb94a3fef83b4119608e40ecc70a1dd97cebc7a0122847b85593b9f8/jellyfish-1.2.0-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:03754194fc2f5cf65136f2b5f2aeacf48a805ddf21f4ff9f1a6cffc67756d937", size = 326847, upload-time = "2025-03-31T15:42:58.338Z" }, + { url = "https://files.pythonhosted.org/packages/28/96/9aed3d95e50d41d2fa9fe64d88e4d87927cdd56a1a399cbd0d31cc2ef870/jellyfish-1.2.0-pp311-pypy311_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:57a0c408c588c4477bdcd82c0c1c33f08900aca5c2dfc9d5e78f2e0919294a68", size = 357277, upload-time = "2025-03-31T15:42:59.975Z" }, + { url = "https://files.pythonhosted.org/packages/4f/ac/e91fe4f5742902d4ce2b39c18553c2939c3d0b713b8aa5a43127e371cdc2/jellyfish-1.2.0-pp311-pypy311_pp73-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:72062c9772ff672535463954828e9921fb1bf1d63c66602db2956567e9e50aa8", size = 365524, upload-time = "2025-03-31T15:43:01.595Z" }, + { url = "https://files.pythonhosted.org/packages/e7/4e/a94fbc02e7f9781e354ddf8eab01cb9acdf437933cf83c7c7cb5a49f9a96/jellyfish-1.2.0-pp311-pypy311_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cb3b464faeb8e4f4f6f7987fbd3f5de759fc0d460bbe4768b446e3f1c003026a", size = 358459, upload-time = "2025-03-31T15:43:02.917Z" }, + { url = "https://files.pythonhosted.org/packages/5b/d7/05a8608e26f62c2ea2e33bba9670d39995231f307b12eb0692d6e091a607/jellyfish-1.2.0-pp311-pypy311_pp73-musllinux_1_1_aarch64.whl", hash = "sha256:33c5d80209b278807a770a463f39d0b6a3f95dacf9a64fd322ad4add63a52516", size = 535658, upload-time = "2025-03-31T15:43:04.039Z" }, + { url = "https://files.pythonhosted.org/packages/71/ac/bb1c3b58f7882b0c26e3f0cc2d2333fe5ed283f95ea0bc0e767cc31bf9d8/jellyfish-1.2.0-pp311-pypy311_pp73-musllinux_1_1_i686.whl", hash = "sha256:0787a5fef60aa838732f325064cc4401425e450023bb8fc8d3b2bd2ee75df57d", size = 557211, upload-time = "2025-03-31T15:43:05.268Z" }, + { url = "https://files.pythonhosted.org/packages/86/f2/28437297b00e64edb74a7c2dd05b50e905a5a8bb1ec72b519a70507a7762/jellyfish-1.2.0-pp311-pypy311_pp73-musllinux_1_1_x86_64.whl", hash = "sha256:dee4cc60f2b342f3f62784787f1ba811e505b9a8d8f68cc7505d496c563143b5", size = 529113, upload-time = "2025-03-31T15:43:06.478Z" }, +] + +[[package]] +name = "mccabe" +version = "0.7.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e7/ff/0ffefdcac38932a54d2b5eed4e0ba8a408f215002cd178ad1df0f2806ff8/mccabe-0.7.0.tar.gz", hash = "sha256:348e0240c33b60bbdf4e523192ef919f28cb2c3d7d5c7794f74009290f236325", size = 9658, upload-time = "2022-01-24T01:14:51.113Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/27/1a/1f68f9ba0c207934b35b86a8ca3aad8395a3d6dd7921c0686e23853ff5a9/mccabe-0.7.0-py2.py3-none-any.whl", hash = "sha256:6c2d30ab6be0e4a46919781807b4f0d834ebdd6c6e3dca0bda5a15f863427b6e", size = 7350, upload-time = "2022-01-24T01:14:49.62Z" }, +] + +[[package]] +name = "networkx" +version = "3.4.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/fd/1d/06475e1cd5264c0b870ea2cc6fdb3e37177c1e565c43f56ff17a10e3937f/networkx-3.4.2.tar.gz", hash = "sha256:307c3669428c5362aab27c8a1260aa8f47c4e91d3891f48be0141738d8d053e1", size = 2151368, upload-time = "2024-10-21T12:39:38.695Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b9/54/dd730b32ea14ea797530a4479b2ed46a6fb250f682a9cfb997e968bf0261/networkx-3.4.2-py3-none-any.whl", hash = "sha256:df5d4365b724cf81b8c6a7312509d0c22386097011ad1abe274afd5e9d3bbc5f", size = 1723263, upload-time = "2024-10-21T12:39:36.247Z" }, +] + +[[package]] +name = "numpy" +version = "2.2.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/76/21/7d2a95e4bba9dc13d043ee156a356c0a8f0c6309dff6b21b4d71a073b8a8/numpy-2.2.6.tar.gz", hash = "sha256:e29554e2bef54a90aa5cc07da6ce955accb83f21ab5de01a62c8478897b264fd", size = 20276440, upload-time = "2025-05-17T22:38:04.611Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/9a/3e/ed6db5be21ce87955c0cbd3009f2803f59fa08df21b5df06862e2d8e2bdd/numpy-2.2.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b412caa66f72040e6d268491a59f2c43bf03eb6c96dd8f0307829feb7fa2b6fb", size = 21165245, upload-time = "2025-05-17T21:27:58.555Z" }, + { url = "https://files.pythonhosted.org/packages/22/c2/4b9221495b2a132cc9d2eb862e21d42a009f5a60e45fc44b00118c174bff/numpy-2.2.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e41fd67c52b86603a91c1a505ebaef50b3314de0213461c7a6e99c9a3beff90", size = 14360048, upload-time = "2025-05-17T21:28:21.406Z" }, + { url = "https://files.pythonhosted.org/packages/fd/77/dc2fcfc66943c6410e2bf598062f5959372735ffda175b39906d54f02349/numpy-2.2.6-cp310-cp310-macosx_14_0_arm64.whl", hash = "sha256:37e990a01ae6ec7fe7fa1c26c55ecb672dd98b19c3d0e1d1f326fa13cb38d163", size = 5340542, upload-time = "2025-05-17T21:28:30.931Z" }, + { url = "https://files.pythonhosted.org/packages/7a/4f/1cb5fdc353a5f5cc7feb692db9b8ec2c3d6405453f982435efc52561df58/numpy-2.2.6-cp310-cp310-macosx_14_0_x86_64.whl", hash = "sha256:5a6429d4be8ca66d889b7cf70f536a397dc45ba6faeb5f8c5427935d9592e9cf", size = 6878301, upload-time = "2025-05-17T21:28:41.613Z" }, + { url = "https://files.pythonhosted.org/packages/eb/17/96a3acd228cec142fcb8723bd3cc39c2a474f7dcf0a5d16731980bcafa95/numpy-2.2.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:efd28d4e9cd7d7a8d39074a4d44c63eda73401580c5c76acda2ce969e0a38e83", size = 14297320, upload-time = "2025-05-17T21:29:02.78Z" }, + { url = "https://files.pythonhosted.org/packages/b4/63/3de6a34ad7ad6646ac7d2f55ebc6ad439dbbf9c4370017c50cf403fb19b5/numpy-2.2.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fc7b73d02efb0e18c000e9ad8b83480dfcd5dfd11065997ed4c6747470ae8915", size = 16801050, upload-time = "2025-05-17T21:29:27.675Z" }, + { url = "https://files.pythonhosted.org/packages/07/b6/89d837eddef52b3d0cec5c6ba0456c1bf1b9ef6a6672fc2b7873c3ec4e2e/numpy-2.2.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:74d4531beb257d2c3f4b261bfb0fc09e0f9ebb8842d82a7b4209415896adc680", size = 15807034, upload-time = "2025-05-17T21:29:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/01/c8/dc6ae86e3c61cfec1f178e5c9f7858584049b6093f843bca541f94120920/numpy-2.2.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8fc377d995680230e83241d8a96def29f204b5782f371c532579b4f20607a289", size = 18614185, upload-time = "2025-05-17T21:30:18.703Z" }, + { url = "https://files.pythonhosted.org/packages/5b/c5/0064b1b7e7c89137b471ccec1fd2282fceaae0ab3a9550f2568782d80357/numpy-2.2.6-cp310-cp310-win32.whl", hash = "sha256:b093dd74e50a8cba3e873868d9e93a85b78e0daf2e98c6797566ad8044e8363d", size = 6527149, upload-time = "2025-05-17T21:30:29.788Z" }, + { url = "https://files.pythonhosted.org/packages/a3/dd/4b822569d6b96c39d1215dbae0582fd99954dcbcf0c1a13c61783feaca3f/numpy-2.2.6-cp310-cp310-win_amd64.whl", hash = "sha256:f0fd6321b839904e15c46e0d257fdd101dd7f530fe03fd6359c1ea63738703f3", size = 12904620, upload-time = "2025-05-17T21:30:48.994Z" }, + { url = "https://files.pythonhosted.org/packages/da/a8/4f83e2aa666a9fbf56d6118faaaf5f1974d456b1823fda0a176eff722839/numpy-2.2.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:f9f1adb22318e121c5c69a09142811a201ef17ab257a1e66ca3025065b7f53ae", size = 21176963, upload-time = "2025-05-17T21:31:19.36Z" }, + { url = "https://files.pythonhosted.org/packages/b3/2b/64e1affc7972decb74c9e29e5649fac940514910960ba25cd9af4488b66c/numpy-2.2.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:c820a93b0255bc360f53eca31a0e676fd1101f673dda8da93454a12e23fc5f7a", size = 14406743, upload-time = "2025-05-17T21:31:41.087Z" }, + { url = "https://files.pythonhosted.org/packages/4a/9f/0121e375000b5e50ffdd8b25bf78d8e1a5aa4cca3f185d41265198c7b834/numpy-2.2.6-cp311-cp311-macosx_14_0_arm64.whl", hash = "sha256:3d70692235e759f260c3d837193090014aebdf026dfd167834bcba43e30c2a42", size = 5352616, upload-time = "2025-05-17T21:31:50.072Z" }, + { url = "https://files.pythonhosted.org/packages/31/0d/b48c405c91693635fbe2dcd7bc84a33a602add5f63286e024d3b6741411c/numpy-2.2.6-cp311-cp311-macosx_14_0_x86_64.whl", hash = "sha256:481b49095335f8eed42e39e8041327c05b0f6f4780488f61286ed3c01368d491", size = 6889579, upload-time = "2025-05-17T21:32:01.712Z" }, + { url = "https://files.pythonhosted.org/packages/52/b8/7f0554d49b565d0171eab6e99001846882000883998e7b7d9f0d98b1f934/numpy-2.2.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b64d8d4d17135e00c8e346e0a738deb17e754230d7e0810ac5012750bbd85a5a", size = 14312005, upload-time = "2025-05-17T21:32:23.332Z" }, + { url = "https://files.pythonhosted.org/packages/b3/dd/2238b898e51bd6d389b7389ffb20d7f4c10066d80351187ec8e303a5a475/numpy-2.2.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ba10f8411898fc418a521833e014a77d3ca01c15b0c6cdcce6a0d2897e6dbbdf", size = 16821570, upload-time = "2025-05-17T21:32:47.991Z" }, + { url = "https://files.pythonhosted.org/packages/83/6c/44d0325722cf644f191042bf47eedad61c1e6df2432ed65cbe28509d404e/numpy-2.2.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:bd48227a919f1bafbdda0583705e547892342c26fb127219d60a5c36882609d1", size = 15818548, upload-time = "2025-05-17T21:33:11.728Z" }, + { url = "https://files.pythonhosted.org/packages/ae/9d/81e8216030ce66be25279098789b665d49ff19eef08bfa8cb96d4957f422/numpy-2.2.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:9551a499bf125c1d4f9e250377c1ee2eddd02e01eac6644c080162c0c51778ab", size = 18620521, upload-time = "2025-05-17T21:33:39.139Z" }, + { url = "https://files.pythonhosted.org/packages/6a/fd/e19617b9530b031db51b0926eed5345ce8ddc669bb3bc0044b23e275ebe8/numpy-2.2.6-cp311-cp311-win32.whl", hash = "sha256:0678000bb9ac1475cd454c6b8c799206af8107e310843532b04d49649c717a47", size = 6525866, upload-time = "2025-05-17T21:33:50.273Z" }, + { url = "https://files.pythonhosted.org/packages/31/0a/f354fb7176b81747d870f7991dc763e157a934c717b67b58456bc63da3df/numpy-2.2.6-cp311-cp311-win_amd64.whl", hash = "sha256:e8213002e427c69c45a52bbd94163084025f533a55a59d6f9c5b820774ef3303", size = 12907455, upload-time = "2025-05-17T21:34:09.135Z" }, + { url = "https://files.pythonhosted.org/packages/82/5d/c00588b6cf18e1da539b45d3598d3557084990dcc4331960c15ee776ee41/numpy-2.2.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:41c5a21f4a04fa86436124d388f6ed60a9343a6f767fced1a8a71c3fbca038ff", size = 20875348, upload-time = "2025-05-17T21:34:39.648Z" }, + { url = "https://files.pythonhosted.org/packages/66/ee/560deadcdde6c2f90200450d5938f63a34b37e27ebff162810f716f6a230/numpy-2.2.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:de749064336d37e340f640b05f24e9e3dd678c57318c7289d222a8a2f543e90c", size = 14119362, upload-time = "2025-05-17T21:35:01.241Z" }, + { url = "https://files.pythonhosted.org/packages/3c/65/4baa99f1c53b30adf0acd9a5519078871ddde8d2339dc5a7fde80d9d87da/numpy-2.2.6-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:894b3a42502226a1cac872f840030665f33326fc3dac8e57c607905773cdcde3", size = 5084103, upload-time = "2025-05-17T21:35:10.622Z" }, + { url = "https://files.pythonhosted.org/packages/cc/89/e5a34c071a0570cc40c9a54eb472d113eea6d002e9ae12bb3a8407fb912e/numpy-2.2.6-cp312-cp312-macosx_14_0_x86_64.whl", hash = "sha256:71594f7c51a18e728451bb50cc60a3ce4e6538822731b2933209a1f3614e9282", size = 6625382, upload-time = "2025-05-17T21:35:21.414Z" }, + { url = "https://files.pythonhosted.org/packages/f8/35/8c80729f1ff76b3921d5c9487c7ac3de9b2a103b1cd05e905b3090513510/numpy-2.2.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f2618db89be1b4e05f7a1a847a9c1c0abd63e63a1607d892dd54668dd92faf87", size = 14018462, upload-time = "2025-05-17T21:35:42.174Z" }, + { url = "https://files.pythonhosted.org/packages/8c/3d/1e1db36cfd41f895d266b103df00ca5b3cbe965184df824dec5c08c6b803/numpy-2.2.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fd83c01228a688733f1ded5201c678f0c53ecc1006ffbc404db9f7a899ac6249", size = 16527618, upload-time = "2025-05-17T21:36:06.711Z" }, + { url = "https://files.pythonhosted.org/packages/61/c6/03ed30992602c85aa3cd95b9070a514f8b3c33e31124694438d88809ae36/numpy-2.2.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:37c0ca431f82cd5fa716eca9506aefcabc247fb27ba69c5062a6d3ade8cf8f49", size = 15505511, upload-time = "2025-05-17T21:36:29.965Z" }, + { url = "https://files.pythonhosted.org/packages/b7/25/5761d832a81df431e260719ec45de696414266613c9ee268394dd5ad8236/numpy-2.2.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:fe27749d33bb772c80dcd84ae7e8df2adc920ae8297400dabec45f0dedb3f6de", size = 18313783, upload-time = "2025-05-17T21:36:56.883Z" }, + { url = "https://files.pythonhosted.org/packages/57/0a/72d5a3527c5ebffcd47bde9162c39fae1f90138c961e5296491ce778e682/numpy-2.2.6-cp312-cp312-win32.whl", hash = "sha256:4eeaae00d789f66c7a25ac5f34b71a7035bb474e679f410e5e1a94deb24cf2d4", size = 6246506, upload-time = "2025-05-17T21:37:07.368Z" }, + { url = "https://files.pythonhosted.org/packages/36/fa/8c9210162ca1b88529ab76b41ba02d433fd54fecaf6feb70ef9f124683f1/numpy-2.2.6-cp312-cp312-win_amd64.whl", hash = "sha256:c1f9540be57940698ed329904db803cf7a402f3fc200bfe599334c9bd84a40b2", size = 12614190, upload-time = "2025-05-17T21:37:26.213Z" }, + { url = "https://files.pythonhosted.org/packages/f9/5c/6657823f4f594f72b5471f1db1ab12e26e890bb2e41897522d134d2a3e81/numpy-2.2.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:0811bb762109d9708cca4d0b13c4f67146e3c3b7cf8d34018c722adb2d957c84", size = 20867828, upload-time = "2025-05-17T21:37:56.699Z" }, + { url = "https://files.pythonhosted.org/packages/dc/9e/14520dc3dadf3c803473bd07e9b2bd1b69bc583cb2497b47000fed2fa92f/numpy-2.2.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:287cc3162b6f01463ccd86be154f284d0893d2b3ed7292439ea97eafa8170e0b", size = 14143006, upload-time = "2025-05-17T21:38:18.291Z" }, + { url = "https://files.pythonhosted.org/packages/4f/06/7e96c57d90bebdce9918412087fc22ca9851cceaf5567a45c1f404480e9e/numpy-2.2.6-cp313-cp313-macosx_14_0_arm64.whl", hash = "sha256:f1372f041402e37e5e633e586f62aa53de2eac8d98cbfb822806ce4bbefcb74d", size = 5076765, upload-time = "2025-05-17T21:38:27.319Z" }, + { url = "https://files.pythonhosted.org/packages/73/ed/63d920c23b4289fdac96ddbdd6132e9427790977d5457cd132f18e76eae0/numpy-2.2.6-cp313-cp313-macosx_14_0_x86_64.whl", hash = "sha256:55a4d33fa519660d69614a9fad433be87e5252f4b03850642f88993f7b2ca566", size = 6617736, upload-time = "2025-05-17T21:38:38.141Z" }, + { url = "https://files.pythonhosted.org/packages/85/c5/e19c8f99d83fd377ec8c7e0cf627a8049746da54afc24ef0a0cb73d5dfb5/numpy-2.2.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f92729c95468a2f4f15e9bb94c432a9229d0d50de67304399627a943201baa2f", size = 14010719, upload-time = "2025-05-17T21:38:58.433Z" }, + { url = "https://files.pythonhosted.org/packages/19/49/4df9123aafa7b539317bf6d342cb6d227e49f7a35b99c287a6109b13dd93/numpy-2.2.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:1bc23a79bfabc5d056d106f9befb8d50c31ced2fbc70eedb8155aec74a45798f", size = 16526072, upload-time = "2025-05-17T21:39:22.638Z" }, + { url = "https://files.pythonhosted.org/packages/b2/6c/04b5f47f4f32f7c2b0e7260442a8cbcf8168b0e1a41ff1495da42f42a14f/numpy-2.2.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e3143e4451880bed956e706a3220b4e5cf6172ef05fcc397f6f36a550b1dd868", size = 15503213, upload-time = "2025-05-17T21:39:45.865Z" }, + { url = "https://files.pythonhosted.org/packages/17/0a/5cd92e352c1307640d5b6fec1b2ffb06cd0dabe7d7b8227f97933d378422/numpy-2.2.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b4f13750ce79751586ae2eb824ba7e1e8dba64784086c98cdbbcc6a42112ce0d", size = 18316632, upload-time = "2025-05-17T21:40:13.331Z" }, + { url = "https://files.pythonhosted.org/packages/f0/3b/5cba2b1d88760ef86596ad0f3d484b1cbff7c115ae2429678465057c5155/numpy-2.2.6-cp313-cp313-win32.whl", hash = "sha256:5beb72339d9d4fa36522fc63802f469b13cdbe4fdab4a288f0c441b74272ebfd", size = 6244532, upload-time = "2025-05-17T21:43:46.099Z" }, + { url = "https://files.pythonhosted.org/packages/cb/3b/d58c12eafcb298d4e6d0d40216866ab15f59e55d148a5658bb3132311fcf/numpy-2.2.6-cp313-cp313-win_amd64.whl", hash = "sha256:b0544343a702fa80c95ad5d3d608ea3599dd54d4632df855e4c8d24eb6ecfa1c", size = 12610885, upload-time = "2025-05-17T21:44:05.145Z" }, + { url = "https://files.pythonhosted.org/packages/6b/9e/4bf918b818e516322db999ac25d00c75788ddfd2d2ade4fa66f1f38097e1/numpy-2.2.6-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:0bca768cd85ae743b2affdc762d617eddf3bcf8724435498a1e80132d04879e6", size = 20963467, upload-time = "2025-05-17T21:40:44Z" }, + { url = "https://files.pythonhosted.org/packages/61/66/d2de6b291507517ff2e438e13ff7b1e2cdbdb7cb40b3ed475377aece69f9/numpy-2.2.6-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:fc0c5673685c508a142ca65209b4e79ed6740a4ed6b2267dbba90f34b0b3cfda", size = 14225144, upload-time = "2025-05-17T21:41:05.695Z" }, + { url = "https://files.pythonhosted.org/packages/e4/25/480387655407ead912e28ba3a820bc69af9adf13bcbe40b299d454ec011f/numpy-2.2.6-cp313-cp313t-macosx_14_0_arm64.whl", hash = "sha256:5bd4fc3ac8926b3819797a7c0e2631eb889b4118a9898c84f585a54d475b7e40", size = 5200217, upload-time = "2025-05-17T21:41:15.903Z" }, + { url = "https://files.pythonhosted.org/packages/aa/4a/6e313b5108f53dcbf3aca0c0f3e9c92f4c10ce57a0a721851f9785872895/numpy-2.2.6-cp313-cp313t-macosx_14_0_x86_64.whl", hash = "sha256:fee4236c876c4e8369388054d02d0e9bb84821feb1a64dd59e137e6511a551f8", size = 6712014, upload-time = "2025-05-17T21:41:27.321Z" }, + { url = "https://files.pythonhosted.org/packages/b7/30/172c2d5c4be71fdf476e9de553443cf8e25feddbe185e0bd88b096915bcc/numpy-2.2.6-cp313-cp313t-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:e1dda9c7e08dc141e0247a5b8f49cf05984955246a327d4c48bda16821947b2f", size = 14077935, upload-time = "2025-05-17T21:41:49.738Z" }, + { url = "https://files.pythonhosted.org/packages/12/fb/9e743f8d4e4d3c710902cf87af3512082ae3d43b945d5d16563f26ec251d/numpy-2.2.6-cp313-cp313t-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f447e6acb680fd307f40d3da4852208af94afdfab89cf850986c3ca00562f4fa", size = 16600122, upload-time = "2025-05-17T21:42:14.046Z" }, + { url = "https://files.pythonhosted.org/packages/12/75/ee20da0e58d3a66f204f38916757e01e33a9737d0b22373b3eb5a27358f9/numpy-2.2.6-cp313-cp313t-musllinux_1_2_aarch64.whl", hash = "sha256:389d771b1623ec92636b0786bc4ae56abafad4a4c513d36a55dce14bd9ce8571", size = 15586143, upload-time = "2025-05-17T21:42:37.464Z" }, + { url = "https://files.pythonhosted.org/packages/76/95/bef5b37f29fc5e739947e9ce5179ad402875633308504a52d188302319c8/numpy-2.2.6-cp313-cp313t-musllinux_1_2_x86_64.whl", hash = "sha256:8e9ace4a37db23421249ed236fdcdd457d671e25146786dfc96835cd951aa7c1", size = 18385260, upload-time = "2025-05-17T21:43:05.189Z" }, + { url = "https://files.pythonhosted.org/packages/09/04/f2f83279d287407cf36a7a8053a5abe7be3622a4363337338f2585e4afda/numpy-2.2.6-cp313-cp313t-win32.whl", hash = "sha256:038613e9fb8c72b0a41f025a7e4c3f0b7a1b5d768ece4796b674c8f3fe13efff", size = 6377225, upload-time = "2025-05-17T21:43:16.254Z" }, + { url = "https://files.pythonhosted.org/packages/67/0e/35082d13c09c02c011cf21570543d202ad929d961c02a147493cb0c2bdf5/numpy-2.2.6-cp313-cp313t-win_amd64.whl", hash = "sha256:6031dd6dfecc0cf9f668681a37648373bddd6421fff6c66ec1624eed0180ee06", size = 12771374, upload-time = "2025-05-17T21:43:35.479Z" }, + { url = "https://files.pythonhosted.org/packages/9e/3b/d94a75f4dbf1ef5d321523ecac21ef23a3cd2ac8b78ae2aac40873590229/numpy-2.2.6-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:0b605b275d7bd0c640cad4e5d30fa701a8d59302e127e5f79138ad62762c3e3d", size = 21040391, upload-time = "2025-05-17T21:44:35.948Z" }, + { url = "https://files.pythonhosted.org/packages/17/f4/09b2fa1b58f0fb4f7c7963a1649c64c4d315752240377ed74d9cd878f7b5/numpy-2.2.6-pp310-pypy310_pp73-macosx_14_0_x86_64.whl", hash = "sha256:7befc596a7dc9da8a337f79802ee8adb30a552a94f792b9c9d18c840055907db", size = 6786754, upload-time = "2025-05-17T21:44:47.446Z" }, + { url = "https://files.pythonhosted.org/packages/af/30/feba75f143bdc868a1cc3f44ccfa6c4b9ec522b36458e738cd00f67b573f/numpy-2.2.6-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ce47521a4754c8f4593837384bd3424880629f718d87c5d44f8ed763edd63543", size = 16643476, upload-time = "2025-05-17T21:45:11.871Z" }, + { url = "https://files.pythonhosted.org/packages/37/48/ac2a9584402fb6c0cd5b5d1a91dcf176b15760130dd386bbafdbfe3640bf/numpy-2.2.6-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:d042d24c90c41b54fd506da306759e06e568864df8ec17ccc17e9e884634fd00", size = 12812666, upload-time = "2025-05-17T21:45:31.426Z" }, +] + +[[package]] +name = "packaging" +version = "25.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/a1/d4/1fc4078c65507b51b96ca8f8c3ba19e6a61c8253c72794544580a7b6c24d/packaging-25.0.tar.gz", hash = "sha256:d443872c98d677bf60f6a1f2f8c1cb748e8fe762d2bf9d3148b5599295b0fc4f", size = 165727, upload-time = "2025-04-19T11:48:59.673Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/20/12/38679034af332785aac8774540895e234f4d07f7545804097de4b666afd8/packaging-25.0-py3-none-any.whl", hash = "sha256:29572ef2b1f17581046b3a2227d5c611fb25ec70ca1ba8554b24b0e69331a484", size = 66469, upload-time = "2025-04-19T11:48:57.875Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "pycodestyle" +version = "2.13.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/04/6e/1f4a62078e4d95d82367f24e685aef3a672abfd27d1a868068fed4ed2254/pycodestyle-2.13.0.tar.gz", hash = "sha256:c8415bf09abe81d9c7f872502a6eee881fbe85d8763dd5b9924bb0a01d67efae", size = 39312, upload-time = "2025-03-29T17:33:30.669Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/be/b00116df1bfb3e0bb5b45e29d604799f7b91dd861637e4d448b4e09e6a3e/pycodestyle-2.13.0-py2.py3-none-any.whl", hash = "sha256:35863c5974a271c7a726ed228a14a4f6daf49df369d8c50cd9a6f58a5e143ba9", size = 31424, upload-time = "2025-03-29T17:33:29.405Z" }, +] + +[[package]] +name = "pyflakes" +version = "3.3.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/af/cc/1df338bd7ed1fa7c317081dcf29bf2f01266603b301e6858856d346a12b3/pyflakes-3.3.2.tar.gz", hash = "sha256:6dfd61d87b97fba5dcfaaf781171ac16be16453be6d816147989e7f6e6a9576b", size = 64175, upload-time = "2025-03-31T13:21:20.34Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/15/40/b293a4fa769f3b02ab9e387c707c4cbdc34f073f945de0386107d4e669e6/pyflakes-3.3.2-py2.py3-none-any.whl", hash = "sha256:5039c8339cbb1944045f4ee5466908906180f13cc99cc9949348d10f82a5c32a", size = 63164, upload-time = "2025-03-31T13:21:18.503Z" }, +] + +[[package]] +name = "pytest" +version = "8.3.5" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/ae/3c/c9d525a414d506893f0cd8a8d0de7706446213181570cdbd766691164e40/pytest-8.3.5.tar.gz", hash = "sha256:f4efe70cc14e511565ac476b57c279e12a855b11f48f212af1080ef2263d3845", size = 1450891, upload-time = "2025-03-02T12:54:54.503Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/30/3d/64ad57c803f1fa1e963a7946b6e0fea4a70df53c1a7fed304586539c2bac/pytest-8.3.5-py3-none-any.whl", hash = "sha256:c69214aa47deac29fad6c2a4f590b9c4a9fdb16a403176fe154b79c0b4d4d820", size = 343634, upload-time = "2025-03-02T12:54:52.069Z" }, +] + +[[package]] +name = "pytest-runner" +version = "6.0.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/7d/60976d532519c3a0b41e06a59ad60949e2be1af937cf02738fec91bfd808/pytest-runner-6.0.1.tar.gz", hash = "sha256:70d4739585a7008f37bf4933c013fdb327b8878a5a69fcbb3316c88882f0f49b", size = 16056, upload-time = "2023-12-04T01:03:30.835Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/23/2b/73982c02d28538b6a1182c0a2faf764ca6a76a6dbe89a69288184051a67b/pytest_runner-6.0.1-py3-none-any.whl", hash = "sha256:ea326ed6f6613992746062362efab70212089a4209c08d67177b3df1c52cd9f2", size = 7186, upload-time = "2023-12-04T01:03:28.706Z" }, +] + +[[package]] +name = "regex" +version = "2024.11.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/8e/5f/bd69653fbfb76cf8604468d3b4ec4c403197144c7bfe0e6a5fc9e02a07cb/regex-2024.11.6.tar.gz", hash = "sha256:7ab159b063c52a0333c884e4679f8d7a85112ee3078fe3d9004b2dd875585519", size = 399494, upload-time = "2024-11-06T20:12:31.635Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/95/3c/4651f6b130c6842a8f3df82461a8950f923925db8b6961063e82744bddcc/regex-2024.11.6-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:ff590880083d60acc0433f9c3f713c51f7ac6ebb9adf889c79a261ecf541aa91", size = 482674, upload-time = "2024-11-06T20:08:57.575Z" }, + { url = "https://files.pythonhosted.org/packages/15/51/9f35d12da8434b489c7b7bffc205c474a0a9432a889457026e9bc06a297a/regex-2024.11.6-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:658f90550f38270639e83ce492f27d2c8d2cd63805c65a13a14d36ca126753f0", size = 287684, upload-time = "2024-11-06T20:08:59.787Z" }, + { url = "https://files.pythonhosted.org/packages/bd/18/b731f5510d1b8fb63c6b6d3484bfa9a59b84cc578ac8b5172970e05ae07c/regex-2024.11.6-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:164d8b7b3b4bcb2068b97428060b2a53be050085ef94eca7f240e7947f1b080e", size = 284589, upload-time = "2024-11-06T20:09:01.896Z" }, + { url = "https://files.pythonhosted.org/packages/78/a2/6dd36e16341ab95e4c6073426561b9bfdeb1a9c9b63ab1b579c2e96cb105/regex-2024.11.6-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:d3660c82f209655a06b587d55e723f0b813d3a7db2e32e5e7dc64ac2a9e86fde", size = 782511, upload-time = "2024-11-06T20:09:04.062Z" }, + { url = "https://files.pythonhosted.org/packages/1b/2b/323e72d5d2fd8de0d9baa443e1ed70363ed7e7b2fb526f5950c5cb99c364/regex-2024.11.6-cp310-cp310-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:d22326fcdef5e08c154280b71163ced384b428343ae16a5ab2b3354aed12436e", size = 821149, upload-time = "2024-11-06T20:09:06.237Z" }, + { url = "https://files.pythonhosted.org/packages/90/30/63373b9ea468fbef8a907fd273e5c329b8c9535fee36fc8dba5fecac475d/regex-2024.11.6-cp310-cp310-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:f1ac758ef6aebfc8943560194e9fd0fa18bcb34d89fd8bd2af18183afd8da3a2", size = 809707, upload-time = "2024-11-06T20:09:07.715Z" }, + { url = "https://files.pythonhosted.org/packages/f2/98/26d3830875b53071f1f0ae6d547f1d98e964dd29ad35cbf94439120bb67a/regex-2024.11.6-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:997d6a487ff00807ba810e0f8332c18b4eb8d29463cfb7c820dc4b6e7562d0cf", size = 781702, upload-time = "2024-11-06T20:09:10.101Z" }, + { url = "https://files.pythonhosted.org/packages/87/55/eb2a068334274db86208ab9d5599ffa63631b9f0f67ed70ea7c82a69bbc8/regex-2024.11.6-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:02a02d2bb04fec86ad61f3ea7f49c015a0681bf76abb9857f945d26159d2968c", size = 771976, upload-time = "2024-11-06T20:09:11.566Z" }, + { url = "https://files.pythonhosted.org/packages/74/c0/be707bcfe98254d8f9d2cff55d216e946f4ea48ad2fd8cf1428f8c5332ba/regex-2024.11.6-cp310-cp310-manylinux_2_5_x86_64.manylinux1_x86_64.manylinux_2_12_x86_64.manylinux2010_x86_64.whl", hash = "sha256:f02f93b92358ee3f78660e43b4b0091229260c5d5c408d17d60bf26b6c900e86", size = 697397, upload-time = "2024-11-06T20:09:13.119Z" }, + { url = "https://files.pythonhosted.org/packages/49/dc/bb45572ceb49e0f6509f7596e4ba7031f6819ecb26bc7610979af5a77f45/regex-2024.11.6-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:06eb1be98df10e81ebaded73fcd51989dcf534e3c753466e4b60c4697a003b67", size = 768726, upload-time = "2024-11-06T20:09:14.85Z" }, + { url = "https://files.pythonhosted.org/packages/5a/db/f43fd75dc4c0c2d96d0881967897926942e935d700863666f3c844a72ce6/regex-2024.11.6-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:040df6fe1a5504eb0f04f048e6d09cd7c7110fef851d7c567a6b6e09942feb7d", size = 775098, upload-time = "2024-11-06T20:09:16.504Z" }, + { url = "https://files.pythonhosted.org/packages/99/d7/f94154db29ab5a89d69ff893159b19ada89e76b915c1293e98603d39838c/regex-2024.11.6-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:fdabbfc59f2c6edba2a6622c647b716e34e8e3867e0ab975412c5c2f79b82da2", size = 839325, upload-time = "2024-11-06T20:09:18.698Z" }, + { url = "https://files.pythonhosted.org/packages/f7/17/3cbfab1f23356fbbf07708220ab438a7efa1e0f34195bf857433f79f1788/regex-2024.11.6-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8447d2d39b5abe381419319f942de20b7ecd60ce86f16a23b0698f22e1b70008", size = 843277, upload-time = "2024-11-06T20:09:21.725Z" }, + { url = "https://files.pythonhosted.org/packages/7e/f2/48b393b51900456155de3ad001900f94298965e1cad1c772b87f9cfea011/regex-2024.11.6-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:da8f5fc57d1933de22a9e23eec290a0d8a5927a5370d24bda9a6abe50683fe62", size = 773197, upload-time = "2024-11-06T20:09:24.092Z" }, + { url = "https://files.pythonhosted.org/packages/45/3f/ef9589aba93e084cd3f8471fded352826dcae8489b650d0b9b27bc5bba8a/regex-2024.11.6-cp310-cp310-win32.whl", hash = "sha256:b489578720afb782f6ccf2840920f3a32e31ba28a4b162e13900c3e6bd3f930e", size = 261714, upload-time = "2024-11-06T20:09:26.36Z" }, + { url = "https://files.pythonhosted.org/packages/42/7e/5f1b92c8468290c465fd50c5318da64319133231415a8aa6ea5ab995a815/regex-2024.11.6-cp310-cp310-win_amd64.whl", hash = "sha256:5071b2093e793357c9d8b2929dfc13ac5f0a6c650559503bb81189d0a3814519", size = 274042, upload-time = "2024-11-06T20:09:28.762Z" }, + { url = "https://files.pythonhosted.org/packages/58/58/7e4d9493a66c88a7da6d205768119f51af0f684fe7be7bac8328e217a52c/regex-2024.11.6-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5478c6962ad548b54a591778e93cd7c456a7a29f8eca9c49e4f9a806dcc5d638", size = 482669, upload-time = "2024-11-06T20:09:31.064Z" }, + { url = "https://files.pythonhosted.org/packages/34/4c/8f8e631fcdc2ff978609eaeef1d6994bf2f028b59d9ac67640ed051f1218/regex-2024.11.6-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:2c89a8cc122b25ce6945f0423dc1352cb9593c68abd19223eebbd4e56612c5b7", size = 287684, upload-time = "2024-11-06T20:09:32.915Z" }, + { url = "https://files.pythonhosted.org/packages/c5/1b/f0e4d13e6adf866ce9b069e191f303a30ab1277e037037a365c3aad5cc9c/regex-2024.11.6-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:94d87b689cdd831934fa3ce16cc15cd65748e6d689f5d2b8f4f4df2065c9fa20", size = 284589, upload-time = "2024-11-06T20:09:35.504Z" }, + { url = "https://files.pythonhosted.org/packages/25/4d/ab21047f446693887f25510887e6820b93f791992994f6498b0318904d4a/regex-2024.11.6-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:1062b39a0a2b75a9c694f7a08e7183a80c63c0d62b301418ffd9c35f55aaa114", size = 792121, upload-time = "2024-11-06T20:09:37.701Z" }, + { url = "https://files.pythonhosted.org/packages/45/ee/c867e15cd894985cb32b731d89576c41a4642a57850c162490ea34b78c3b/regex-2024.11.6-cp311-cp311-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:167ed4852351d8a750da48712c3930b031f6efdaa0f22fa1933716bfcd6bf4a3", size = 831275, upload-time = "2024-11-06T20:09:40.371Z" }, + { url = "https://files.pythonhosted.org/packages/b3/12/b0f480726cf1c60f6536fa5e1c95275a77624f3ac8fdccf79e6727499e28/regex-2024.11.6-cp311-cp311-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:2d548dafee61f06ebdb584080621f3e0c23fff312f0de1afc776e2a2ba99a74f", size = 818257, upload-time = "2024-11-06T20:09:43.059Z" }, + { url = "https://files.pythonhosted.org/packages/bf/ce/0d0e61429f603bac433910d99ef1a02ce45a8967ffbe3cbee48599e62d88/regex-2024.11.6-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:f2a19f302cd1ce5dd01a9099aaa19cae6173306d1302a43b627f62e21cf18ac0", size = 792727, upload-time = "2024-11-06T20:09:48.19Z" }, + { url = "https://files.pythonhosted.org/packages/e4/c1/243c83c53d4a419c1556f43777ccb552bccdf79d08fda3980e4e77dd9137/regex-2024.11.6-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:bec9931dfb61ddd8ef2ebc05646293812cb6b16b60cf7c9511a832b6f1854b55", size = 780667, upload-time = "2024-11-06T20:09:49.828Z" }, + { url = "https://files.pythonhosted.org/packages/c5/f4/75eb0dd4ce4b37f04928987f1d22547ddaf6c4bae697623c1b05da67a8aa/regex-2024.11.6-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:9714398225f299aa85267fd222f7142fcb5c769e73d7733344efc46f2ef5cf89", size = 776963, upload-time = "2024-11-06T20:09:51.819Z" }, + { url = "https://files.pythonhosted.org/packages/16/5d/95c568574e630e141a69ff8a254c2f188b4398e813c40d49228c9bbd9875/regex-2024.11.6-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:202eb32e89f60fc147a41e55cb086db2a3f8cb82f9a9a88440dcfc5d37faae8d", size = 784700, upload-time = "2024-11-06T20:09:53.982Z" }, + { url = "https://files.pythonhosted.org/packages/8e/b5/f8495c7917f15cc6fee1e7f395e324ec3e00ab3c665a7dc9d27562fd5290/regex-2024.11.6-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:4181b814e56078e9b00427ca358ec44333765f5ca1b45597ec7446d3a1ef6e34", size = 848592, upload-time = "2024-11-06T20:09:56.222Z" }, + { url = "https://files.pythonhosted.org/packages/1c/80/6dd7118e8cb212c3c60b191b932dc57db93fb2e36fb9e0e92f72a5909af9/regex-2024.11.6-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:068376da5a7e4da51968ce4c122a7cd31afaaec4fccc7856c92f63876e57b51d", size = 852929, upload-time = "2024-11-06T20:09:58.642Z" }, + { url = "https://files.pythonhosted.org/packages/11/9b/5a05d2040297d2d254baf95eeeb6df83554e5e1df03bc1a6687fc4ba1f66/regex-2024.11.6-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:ac10f2c4184420d881a3475fb2c6f4d95d53a8d50209a2500723d831036f7c45", size = 781213, upload-time = "2024-11-06T20:10:00.867Z" }, + { url = "https://files.pythonhosted.org/packages/26/b7/b14e2440156ab39e0177506c08c18accaf2b8932e39fb092074de733d868/regex-2024.11.6-cp311-cp311-win32.whl", hash = "sha256:c36f9b6f5f8649bb251a5f3f66564438977b7ef8386a52460ae77e6070d309d9", size = 261734, upload-time = "2024-11-06T20:10:03.361Z" }, + { url = "https://files.pythonhosted.org/packages/80/32/763a6cc01d21fb3819227a1cc3f60fd251c13c37c27a73b8ff4315433a8e/regex-2024.11.6-cp311-cp311-win_amd64.whl", hash = "sha256:02e28184be537f0e75c1f9b2f8847dc51e08e6e171c6bde130b2687e0c33cf60", size = 274052, upload-time = "2024-11-06T20:10:05.179Z" }, + { url = "https://files.pythonhosted.org/packages/ba/30/9a87ce8336b172cc232a0db89a3af97929d06c11ceaa19d97d84fa90a8f8/regex-2024.11.6-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:52fb28f528778f184f870b7cf8f225f5eef0a8f6e3778529bdd40c7b3920796a", size = 483781, upload-time = "2024-11-06T20:10:07.07Z" }, + { url = "https://files.pythonhosted.org/packages/01/e8/00008ad4ff4be8b1844786ba6636035f7ef926db5686e4c0f98093612add/regex-2024.11.6-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:fdd6028445d2460f33136c55eeb1f601ab06d74cb3347132e1c24250187500d9", size = 288455, upload-time = "2024-11-06T20:10:09.117Z" }, + { url = "https://files.pythonhosted.org/packages/60/85/cebcc0aff603ea0a201667b203f13ba75d9fc8668fab917ac5b2de3967bc/regex-2024.11.6-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:805e6b60c54bf766b251e94526ebad60b7de0c70f70a4e6210ee2891acb70bf2", size = 284759, upload-time = "2024-11-06T20:10:11.155Z" }, + { url = "https://files.pythonhosted.org/packages/94/2b/701a4b0585cb05472a4da28ee28fdfe155f3638f5e1ec92306d924e5faf0/regex-2024.11.6-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:b85c2530be953a890eaffde05485238f07029600e8f098cdf1848d414a8b45e4", size = 794976, upload-time = "2024-11-06T20:10:13.24Z" }, + { url = "https://files.pythonhosted.org/packages/4b/bf/fa87e563bf5fee75db8915f7352e1887b1249126a1be4813837f5dbec965/regex-2024.11.6-cp312-cp312-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:bb26437975da7dc36b7efad18aa9dd4ea569d2357ae6b783bf1118dabd9ea577", size = 833077, upload-time = "2024-11-06T20:10:15.37Z" }, + { url = "https://files.pythonhosted.org/packages/a1/56/7295e6bad94b047f4d0834e4779491b81216583c00c288252ef625c01d23/regex-2024.11.6-cp312-cp312-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:abfa5080c374a76a251ba60683242bc17eeb2c9818d0d30117b4486be10c59d3", size = 823160, upload-time = "2024-11-06T20:10:19.027Z" }, + { url = "https://files.pythonhosted.org/packages/fb/13/e3b075031a738c9598c51cfbc4c7879e26729c53aa9cca59211c44235314/regex-2024.11.6-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:70b7fa6606c2881c1db9479b0eaa11ed5dfa11c8d60a474ff0e095099f39d98e", size = 796896, upload-time = "2024-11-06T20:10:21.85Z" }, + { url = "https://files.pythonhosted.org/packages/24/56/0b3f1b66d592be6efec23a795b37732682520b47c53da5a32c33ed7d84e3/regex-2024.11.6-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0c32f75920cf99fe6b6c539c399a4a128452eaf1af27f39bce8909c9a3fd8cbe", size = 783997, upload-time = "2024-11-06T20:10:24.329Z" }, + { url = "https://files.pythonhosted.org/packages/f9/a1/eb378dada8b91c0e4c5f08ffb56f25fcae47bf52ad18f9b2f33b83e6d498/regex-2024.11.6-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:982e6d21414e78e1f51cf595d7f321dcd14de1f2881c5dc6a6e23bbbbd68435e", size = 781725, upload-time = "2024-11-06T20:10:28.067Z" }, + { url = "https://files.pythonhosted.org/packages/83/f2/033e7dec0cfd6dda93390089864732a3409246ffe8b042e9554afa9bff4e/regex-2024.11.6-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:a7c2155f790e2fb448faed6dd241386719802296ec588a8b9051c1f5c481bc29", size = 789481, upload-time = "2024-11-06T20:10:31.612Z" }, + { url = "https://files.pythonhosted.org/packages/83/23/15d4552ea28990a74e7696780c438aadd73a20318c47e527b47a4a5a596d/regex-2024.11.6-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:149f5008d286636e48cd0b1dd65018548944e495b0265b45e1bffecce1ef7f39", size = 852896, upload-time = "2024-11-06T20:10:34.054Z" }, + { url = "https://files.pythonhosted.org/packages/e3/39/ed4416bc90deedbfdada2568b2cb0bc1fdb98efe11f5378d9892b2a88f8f/regex-2024.11.6-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:e5364a4502efca094731680e80009632ad6624084aff9a23ce8c8c6820de3e51", size = 860138, upload-time = "2024-11-06T20:10:36.142Z" }, + { url = "https://files.pythonhosted.org/packages/93/2d/dd56bb76bd8e95bbce684326302f287455b56242a4f9c61f1bc76e28360e/regex-2024.11.6-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:0a86e7eeca091c09e021db8eb72d54751e527fa47b8d5787caf96d9831bd02ad", size = 787692, upload-time = "2024-11-06T20:10:38.394Z" }, + { url = "https://files.pythonhosted.org/packages/0b/55/31877a249ab7a5156758246b9c59539abbeba22461b7d8adc9e8475ff73e/regex-2024.11.6-cp312-cp312-win32.whl", hash = "sha256:32f9a4c643baad4efa81d549c2aadefaeba12249b2adc5af541759237eee1c54", size = 262135, upload-time = "2024-11-06T20:10:40.367Z" }, + { url = "https://files.pythonhosted.org/packages/38/ec/ad2d7de49a600cdb8dd78434a1aeffe28b9d6fc42eb36afab4a27ad23384/regex-2024.11.6-cp312-cp312-win_amd64.whl", hash = "sha256:a93c194e2df18f7d264092dc8539b8ffb86b45b899ab976aa15d48214138e81b", size = 273567, upload-time = "2024-11-06T20:10:43.467Z" }, + { url = "https://files.pythonhosted.org/packages/90/73/bcb0e36614601016552fa9344544a3a2ae1809dc1401b100eab02e772e1f/regex-2024.11.6-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:a6ba92c0bcdf96cbf43a12c717eae4bc98325ca3730f6b130ffa2e3c3c723d84", size = 483525, upload-time = "2024-11-06T20:10:45.19Z" }, + { url = "https://files.pythonhosted.org/packages/0f/3f/f1a082a46b31e25291d830b369b6b0c5576a6f7fb89d3053a354c24b8a83/regex-2024.11.6-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:525eab0b789891ac3be914d36893bdf972d483fe66551f79d3e27146191a37d4", size = 288324, upload-time = "2024-11-06T20:10:47.177Z" }, + { url = "https://files.pythonhosted.org/packages/09/c9/4e68181a4a652fb3ef5099e077faf4fd2a694ea6e0f806a7737aff9e758a/regex-2024.11.6-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:086a27a0b4ca227941700e0b31425e7a28ef1ae8e5e05a33826e17e47fbfdba0", size = 284617, upload-time = "2024-11-06T20:10:49.312Z" }, + { url = "https://files.pythonhosted.org/packages/fc/fd/37868b75eaf63843165f1d2122ca6cb94bfc0271e4428cf58c0616786dce/regex-2024.11.6-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:bde01f35767c4a7899b7eb6e823b125a64de314a8ee9791367c9a34d56af18d0", size = 795023, upload-time = "2024-11-06T20:10:51.102Z" }, + { url = "https://files.pythonhosted.org/packages/c4/7c/d4cd9c528502a3dedb5c13c146e7a7a539a3853dc20209c8e75d9ba9d1b2/regex-2024.11.6-cp313-cp313-manylinux_2_17_ppc64le.manylinux2014_ppc64le.whl", hash = "sha256:b583904576650166b3d920d2bcce13971f6f9e9a396c673187f49811b2769dc7", size = 833072, upload-time = "2024-11-06T20:10:52.926Z" }, + { url = "https://files.pythonhosted.org/packages/4f/db/46f563a08f969159c5a0f0e722260568425363bea43bb7ae370becb66a67/regex-2024.11.6-cp313-cp313-manylinux_2_17_s390x.manylinux2014_s390x.whl", hash = "sha256:1c4de13f06a0d54fa0d5ab1b7138bfa0d883220965a29616e3ea61b35d5f5fc7", size = 823130, upload-time = "2024-11-06T20:10:54.828Z" }, + { url = "https://files.pythonhosted.org/packages/db/60/1eeca2074f5b87df394fccaa432ae3fc06c9c9bfa97c5051aed70e6e00c2/regex-2024.11.6-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3cde6e9f2580eb1665965ce9bf17ff4952f34f5b126beb509fee8f4e994f143c", size = 796857, upload-time = "2024-11-06T20:10:56.634Z" }, + { url = "https://files.pythonhosted.org/packages/10/db/ac718a08fcee981554d2f7bb8402f1faa7e868c1345c16ab1ebec54b0d7b/regex-2024.11.6-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d7f453dca13f40a02b79636a339c5b62b670141e63efd511d3f8f73fba162b3", size = 784006, upload-time = "2024-11-06T20:10:59.369Z" }, + { url = "https://files.pythonhosted.org/packages/c2/41/7da3fe70216cea93144bf12da2b87367590bcf07db97604edeea55dac9ad/regex-2024.11.6-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:59dfe1ed21aea057a65c6b586afd2a945de04fc7db3de0a6e3ed5397ad491b07", size = 781650, upload-time = "2024-11-06T20:11:02.042Z" }, + { url = "https://files.pythonhosted.org/packages/a7/d5/880921ee4eec393a4752e6ab9f0fe28009435417c3102fc413f3fe81c4e5/regex-2024.11.6-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:b97c1e0bd37c5cd7902e65f410779d39eeda155800b65fc4d04cc432efa9bc6e", size = 789545, upload-time = "2024-11-06T20:11:03.933Z" }, + { url = "https://files.pythonhosted.org/packages/dc/96/53770115e507081122beca8899ab7f5ae28ae790bfcc82b5e38976df6a77/regex-2024.11.6-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:f9d1e379028e0fc2ae3654bac3cbbef81bf3fd571272a42d56c24007979bafb6", size = 853045, upload-time = "2024-11-06T20:11:06.497Z" }, + { url = "https://files.pythonhosted.org/packages/31/d3/1372add5251cc2d44b451bd94f43b2ec78e15a6e82bff6a290ef9fd8f00a/regex-2024.11.6-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:13291b39131e2d002a7940fb176e120bec5145f3aeb7621be6534e46251912c4", size = 860182, upload-time = "2024-11-06T20:11:09.06Z" }, + { url = "https://files.pythonhosted.org/packages/ed/e3/c446a64984ea9f69982ba1a69d4658d5014bc7a0ea468a07e1a1265db6e2/regex-2024.11.6-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4f51f88c126370dcec4908576c5a627220da6c09d0bff31cfa89f2523843316d", size = 787733, upload-time = "2024-11-06T20:11:11.256Z" }, + { url = "https://files.pythonhosted.org/packages/2b/f1/e40c8373e3480e4f29f2692bd21b3e05f296d3afebc7e5dcf21b9756ca1c/regex-2024.11.6-cp313-cp313-win32.whl", hash = "sha256:63b13cfd72e9601125027202cad74995ab26921d8cd935c25f09c630436348ff", size = 262122, upload-time = "2024-11-06T20:11:13.161Z" }, + { url = "https://files.pythonhosted.org/packages/45/94/bc295babb3062a731f52621cdc992d123111282e291abaf23faa413443ea/regex-2024.11.6-cp313-cp313-win_amd64.whl", hash = "sha256:2b3361af3198667e99927da8b84c1b010752fa4b1115ee30beaa332cabc3ef1a", size = 273545, upload-time = "2024-11-06T20:11:15Z" }, +] + +[[package]] +name = "segtok" +version = "1.5.11" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "regex" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/0c/8a/1ae8e3deb805831933b63d58851ab41ff2472099e15511fc62039421ad70/segtok-1.5.11.tar.gz", hash = "sha256:8ab2dd44245bcbfec25b575dc4618473bbdf2af8c2649698cd5a370f42f3db23", size = 25244, upload-time = "2021-12-15T21:56:14.555Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/dd/60/d384dbae5d4756e33f1750fa3472303de2c827011907a64e213e114d0556/segtok-1.5.11-py3-none-any.whl", hash = "sha256:910616b76198c3141b2772df530270d3b706e42ae69a5b30ef115c7bd5d1501a", size = 24332, upload-time = "2021-12-15T21:56:12.508Z" }, +] + +[[package]] +name = "tabulate" +version = "0.9.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/ec/fe/802052aecb21e3797b8f7902564ab6ea0d60ff8ca23952079064155d1ae1/tabulate-0.9.0.tar.gz", hash = "sha256:0095b12bf5966de529c0feb1fa08671671b3368eec77d7ef7ab114be2c068b3c", size = 81090, upload-time = "2022-10-06T17:21:48.54Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/40/44/4a5f08c96eb108af5cb50b41f76142f0afa346dfa99d5296fe7202a11854/tabulate-0.9.0-py3-none-any.whl", hash = "sha256:024ca478df22e9340661486f85298cff5f6dcdba14f3813e8830015b9ed1948f", size = 35252, upload-time = "2022-10-06T17:21:44.262Z" }, +] + +[[package]] +name = "tomli" +version = "2.2.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/18/87/302344fed471e44a87289cf4967697d07e532f2421fdaf868a303cbae4ff/tomli-2.2.1.tar.gz", hash = "sha256:cd45e1dc79c835ce60f7404ec8119f2eb06d38b1deba146f07ced3bbc44505ff", size = 17175, upload-time = "2024-11-27T22:38:36.873Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/43/ca/75707e6efa2b37c77dadb324ae7d9571cb424e61ea73fad7c56c2d14527f/tomli-2.2.1-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:678e4fa69e4575eb77d103de3df8a895e1591b48e740211bd1067378c69e8249", size = 131077, upload-time = "2024-11-27T22:37:54.956Z" }, + { url = "https://files.pythonhosted.org/packages/c7/16/51ae563a8615d472fdbffc43a3f3d46588c264ac4f024f63f01283becfbb/tomli-2.2.1-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:023aa114dd824ade0100497eb2318602af309e5a55595f76b626d6d9f3b7b0a6", size = 123429, upload-time = "2024-11-27T22:37:56.698Z" }, + { url = "https://files.pythonhosted.org/packages/f1/dd/4f6cd1e7b160041db83c694abc78e100473c15d54620083dbd5aae7b990e/tomli-2.2.1-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:ece47d672db52ac607a3d9599a9d48dcb2f2f735c6c2d1f34130085bb12b112a", size = 226067, upload-time = "2024-11-27T22:37:57.63Z" }, + { url = "https://files.pythonhosted.org/packages/a9/6b/c54ede5dc70d648cc6361eaf429304b02f2871a345bbdd51e993d6cdf550/tomli-2.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:6972ca9c9cc9f0acaa56a8ca1ff51e7af152a9f87fb64623e31d5c83700080ee", size = 236030, upload-time = "2024-11-27T22:37:59.344Z" }, + { url = "https://files.pythonhosted.org/packages/1f/47/999514fa49cfaf7a92c805a86c3c43f4215621855d151b61c602abb38091/tomli-2.2.1-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:c954d2250168d28797dd4e3ac5cf812a406cd5a92674ee4c8f123c889786aa8e", size = 240898, upload-time = "2024-11-27T22:38:00.429Z" }, + { url = "https://files.pythonhosted.org/packages/73/41/0a01279a7ae09ee1573b423318e7934674ce06eb33f50936655071d81a24/tomli-2.2.1-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:8dd28b3e155b80f4d54beb40a441d366adcfe740969820caf156c019fb5c7ec4", size = 229894, upload-time = "2024-11-27T22:38:02.094Z" }, + { url = "https://files.pythonhosted.org/packages/55/18/5d8bc5b0a0362311ce4d18830a5d28943667599a60d20118074ea1b01bb7/tomli-2.2.1-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:e59e304978767a54663af13c07b3d1af22ddee3bb2fb0618ca1593e4f593a106", size = 245319, upload-time = "2024-11-27T22:38:03.206Z" }, + { url = "https://files.pythonhosted.org/packages/92/a3/7ade0576d17f3cdf5ff44d61390d4b3febb8a9fc2b480c75c47ea048c646/tomli-2.2.1-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:33580bccab0338d00994d7f16f4c4ec25b776af3ffaac1ed74e0b3fc95e885a8", size = 238273, upload-time = "2024-11-27T22:38:04.217Z" }, + { url = "https://files.pythonhosted.org/packages/72/6f/fa64ef058ac1446a1e51110c375339b3ec6be245af9d14c87c4a6412dd32/tomli-2.2.1-cp311-cp311-win32.whl", hash = "sha256:465af0e0875402f1d226519c9904f37254b3045fc5084697cefb9bdde1ff99ff", size = 98310, upload-time = "2024-11-27T22:38:05.908Z" }, + { url = "https://files.pythonhosted.org/packages/6a/1c/4a2dcde4a51b81be3530565e92eda625d94dafb46dbeb15069df4caffc34/tomli-2.2.1-cp311-cp311-win_amd64.whl", hash = "sha256:2d0f2fdd22b02c6d81637a3c95f8cd77f995846af7414c5c4b8d0545afa1bc4b", size = 108309, upload-time = "2024-11-27T22:38:06.812Z" }, + { url = "https://files.pythonhosted.org/packages/52/e1/f8af4c2fcde17500422858155aeb0d7e93477a0d59a98e56cbfe75070fd0/tomli-2.2.1-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:4a8f6e44de52d5e6c657c9fe83b562f5f4256d8ebbfe4ff922c495620a7f6cea", size = 132762, upload-time = "2024-11-27T22:38:07.731Z" }, + { url = "https://files.pythonhosted.org/packages/03/b8/152c68bb84fc00396b83e7bbddd5ec0bd3dd409db4195e2a9b3e398ad2e3/tomli-2.2.1-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8d57ca8095a641b8237d5b079147646153d22552f1c637fd3ba7f4b0b29167a8", size = 123453, upload-time = "2024-11-27T22:38:09.384Z" }, + { url = "https://files.pythonhosted.org/packages/c8/d6/fc9267af9166f79ac528ff7e8c55c8181ded34eb4b0e93daa767b8841573/tomli-2.2.1-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4e340144ad7ae1533cb897d406382b4b6fede8890a03738ff1683af800d54192", size = 233486, upload-time = "2024-11-27T22:38:10.329Z" }, + { url = "https://files.pythonhosted.org/packages/5c/51/51c3f2884d7bab89af25f678447ea7d297b53b5a3b5730a7cb2ef6069f07/tomli-2.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:db2b95f9de79181805df90bedc5a5ab4c165e6ec3fe99f970d0e302f384ad222", size = 242349, upload-time = "2024-11-27T22:38:11.443Z" }, + { url = "https://files.pythonhosted.org/packages/ab/df/bfa89627d13a5cc22402e441e8a931ef2108403db390ff3345c05253935e/tomli-2.2.1-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:40741994320b232529c802f8bc86da4e1aa9f413db394617b9a256ae0f9a7f77", size = 252159, upload-time = "2024-11-27T22:38:13.099Z" }, + { url = "https://files.pythonhosted.org/packages/9e/6e/fa2b916dced65763a5168c6ccb91066f7639bdc88b48adda990db10c8c0b/tomli-2.2.1-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:400e720fe168c0f8521520190686ef8ef033fb19fc493da09779e592861b78c6", size = 237243, upload-time = "2024-11-27T22:38:14.766Z" }, + { url = "https://files.pythonhosted.org/packages/b4/04/885d3b1f650e1153cbb93a6a9782c58a972b94ea4483ae4ac5cedd5e4a09/tomli-2.2.1-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:02abe224de6ae62c19f090f68da4e27b10af2b93213d36cf44e6e1c5abd19fdd", size = 259645, upload-time = "2024-11-27T22:38:15.843Z" }, + { url = "https://files.pythonhosted.org/packages/9c/de/6b432d66e986e501586da298e28ebeefd3edc2c780f3ad73d22566034239/tomli-2.2.1-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b82ebccc8c8a36f2094e969560a1b836758481f3dc360ce9a3277c65f374285e", size = 244584, upload-time = "2024-11-27T22:38:17.645Z" }, + { url = "https://files.pythonhosted.org/packages/1c/9a/47c0449b98e6e7d1be6cbac02f93dd79003234ddc4aaab6ba07a9a7482e2/tomli-2.2.1-cp312-cp312-win32.whl", hash = "sha256:889f80ef92701b9dbb224e49ec87c645ce5df3fa2cc548664eb8a25e03127a98", size = 98875, upload-time = "2024-11-27T22:38:19.159Z" }, + { url = "https://files.pythonhosted.org/packages/ef/60/9b9638f081c6f1261e2688bd487625cd1e660d0a85bd469e91d8db969734/tomli-2.2.1-cp312-cp312-win_amd64.whl", hash = "sha256:7fc04e92e1d624a4a63c76474610238576942d6b8950a2d7f908a340494e67e4", size = 109418, upload-time = "2024-11-27T22:38:20.064Z" }, + { url = "https://files.pythonhosted.org/packages/04/90/2ee5f2e0362cb8a0b6499dc44f4d7d48f8fff06d28ba46e6f1eaa61a1388/tomli-2.2.1-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f4039b9cbc3048b2416cc57ab3bda989a6fcf9b36cf8937f01a6e731b64f80d7", size = 132708, upload-time = "2024-11-27T22:38:21.659Z" }, + { url = "https://files.pythonhosted.org/packages/c0/ec/46b4108816de6b385141f082ba99e315501ccd0a2ea23db4a100dd3990ea/tomli-2.2.1-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:286f0ca2ffeeb5b9bd4fcc8d6c330534323ec51b2f52da063b11c502da16f30c", size = 123582, upload-time = "2024-11-27T22:38:22.693Z" }, + { url = "https://files.pythonhosted.org/packages/a0/bd/b470466d0137b37b68d24556c38a0cc819e8febe392d5b199dcd7f578365/tomli-2.2.1-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:a92ef1a44547e894e2a17d24e7557a5e85a9e1d0048b0b5e7541f76c5032cb13", size = 232543, upload-time = "2024-11-27T22:38:24.367Z" }, + { url = "https://files.pythonhosted.org/packages/d9/e5/82e80ff3b751373f7cead2815bcbe2d51c895b3c990686741a8e56ec42ab/tomli-2.2.1-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9316dc65bed1684c9a98ee68759ceaed29d229e985297003e494aa825ebb0281", size = 241691, upload-time = "2024-11-27T22:38:26.081Z" }, + { url = "https://files.pythonhosted.org/packages/05/7e/2a110bc2713557d6a1bfb06af23dd01e7dde52b6ee7dadc589868f9abfac/tomli-2.2.1-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:e85e99945e688e32d5a35c1ff38ed0b3f41f43fad8df0bdf79f72b2ba7bc5272", size = 251170, upload-time = "2024-11-27T22:38:27.921Z" }, + { url = "https://files.pythonhosted.org/packages/64/7b/22d713946efe00e0adbcdfd6d1aa119ae03fd0b60ebed51ebb3fa9f5a2e5/tomli-2.2.1-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ac065718db92ca818f8d6141b5f66369833d4a80a9d74435a268c52bdfa73140", size = 236530, upload-time = "2024-11-27T22:38:29.591Z" }, + { url = "https://files.pythonhosted.org/packages/38/31/3a76f67da4b0cf37b742ca76beaf819dca0ebef26d78fc794a576e08accf/tomli-2.2.1-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:d920f33822747519673ee656a4b6ac33e382eca9d331c87770faa3eef562aeb2", size = 258666, upload-time = "2024-11-27T22:38:30.639Z" }, + { url = "https://files.pythonhosted.org/packages/07/10/5af1293da642aded87e8a988753945d0cf7e00a9452d3911dd3bb354c9e2/tomli-2.2.1-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:a198f10c4d1b1375d7687bc25294306e551bf1abfa4eace6650070a5c1ae2744", size = 243954, upload-time = "2024-11-27T22:38:31.702Z" }, + { url = "https://files.pythonhosted.org/packages/5b/b9/1ed31d167be802da0fc95020d04cd27b7d7065cc6fbefdd2f9186f60d7bd/tomli-2.2.1-cp313-cp313-win32.whl", hash = "sha256:d3f5614314d758649ab2ab3a62d4f2004c825922f9e370b29416484086b264ec", size = 98724, upload-time = "2024-11-27T22:38:32.837Z" }, + { url = "https://files.pythonhosted.org/packages/c7/32/b0963458706accd9afcfeb867c0f9175a741bf7b19cd424230714d722198/tomli-2.2.1-cp313-cp313-win_amd64.whl", hash = "sha256:a38aa0308e754b0e3c67e344754dff64999ff9b513e691d0e786265c93583c69", size = 109383, upload-time = "2024-11-27T22:38:34.455Z" }, + { url = "https://files.pythonhosted.org/packages/6e/c2/61d3e0f47e2b74ef40a68b9e6ad5984f6241a942f7cd3bbfbdbd03861ea9/tomli-2.2.1-py3-none-any.whl", hash = "sha256:cb55c73c5f4408779d0cf3eef9f762b9c9f147a77de7b258bef0a5628adc85cc", size = 14257, upload-time = "2024-11-27T22:38:35.385Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.13.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f6/37/23083fcd6e35492953e8d2aaaa68b860eb422b34627b13f2ce3eb6106061/typing_extensions-4.13.2.tar.gz", hash = "sha256:e6c81219bd689f51865d9e372991c540bda33a0379d5573cddb9a3a23f7caaef", size = 106967, upload-time = "2025-04-10T14:19:05.416Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8b/54/b1ae86c0973cc6f0210b53d508ca3641fb6d0c56823f288d108bc7ab3cc8/typing_extensions-4.13.2-py3-none-any.whl", hash = "sha256:a439e7c04b49fec3e5d3e2beaa21755cadbbdc391694e28ccdd36ca4a1408f8c", size = 45806, upload-time = "2025-04-10T14:19:03.967Z" }, +] + +[[package]] +name = "yake" +version = "0.6.0" +source = { editable = "." } +dependencies = [ + { name = "click" }, + { name = "jellyfish" }, + { name = "networkx" }, + { name = "numpy" }, + { name = "segtok" }, + { name = "tabulate" }, +] + +[package.optional-dependencies] +dev = [ + { name = "flake8" }, + { name = "pytest" }, + { name = "pytest-runner" }, +] + +[package.metadata] +requires-dist = [ + { name = "click", specifier = ">=6.0" }, + { name = "flake8", marker = "extra == 'dev'" }, + { name = "jellyfish" }, + { name = "networkx" }, + { name = "numpy", specifier = ">=1.23.5" }, + { name = "pytest", marker = "extra == 'dev'" }, + { name = "pytest-runner", marker = "extra == 'dev'" }, + { name = "segtok" }, + { name = "tabulate" }, +] +provides-extras = ["dev"] From 2e2fa6ccb77f409c048d29e06dbb7bbe9fb220fd Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 22 May 2025 22:04:27 +0100 Subject: [PATCH 118/122] updated workflows for uv --- .github/workflows/format.yml | 16 ++++++++++------ .github/workflows/install.yml | 16 +++++++++++----- .github/workflows/lint.yml | 17 +++++++++++++---- .github/workflows/resultados.yml | 10 +++++----- .github/workflows/test.yml | 14 ++++++++++---- 5 files changed, 49 insertions(+), 24 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index c7b970f4..60f4319a 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -1,7 +1,5 @@ name: Format -on: [push] - on: push: branches: [ "master" ] @@ -13,8 +11,14 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies + run: uv pip install -e ".[dev]" - name: format - run: make format \ No newline at end of file + run: uv run black . \ No newline at end of file diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml index 09bbc4b9..bf395d7a 100644 --- a/.github/workflows/install.yml +++ b/.github/workflows/install.yml @@ -1,15 +1,21 @@ name: Install on: push: - branches: [ "main" ] + branches: [ "master" ] pull_request: - branches: [ "main" ] + branches: [ "master" ] workflow_dispatch: jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install \ No newline at end of file + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install package + run: uv pip install -e . \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index d7f85529..9cec4cea 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -10,8 +10,17 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies + run: uv pip install -e ".[dev]" - name: lint - run: make lint \ No newline at end of file + run: | + uv run ruff check --fix . + uv run ruff check . + uv run flake8 yake/ \ No newline at end of file diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index 28e2acb9..8db4b825 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -17,23 +17,23 @@ jobs: - name: Checkout code uses: actions/checkout@v4 - - name: Install uv - run: pip install uv - - name: Set up Python uses: actions/setup-python@v4 with: python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies run: | - uv pip install . + uv pip install -e ".[dev]" uv pip install pytest - name: Run tests id: run-tests run: | - uv pip run pytest -v tests/test_yake.py | tee test_output.log + uv run pytest -v tests/test_yake.py | tee test_output.log - name: Verify test results run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index c02da66b..91a8fe86 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -10,8 +10,14 @@ jobs: build: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 - - name: install packages - run: make install + - uses: actions/checkout@v4 + - name: Set up Python + uses: actions/setup-python@v4 + with: + python-version: '3.10' + - name: Install uv + run: pip install uv + - name: Install dependencies + run: uv pip install -e ".[dev]" - name: test - run: make test \ No newline at end of file + run: uv run pytest -vv --cov=yake tests/ \ No newline at end of file From 2e463b852a58c7db0f6552aa8bcd8d67a616441a Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 22 May 2025 22:11:01 +0100 Subject: [PATCH 119/122] v envs for workflows --- .github/workflows/format.yml | 2 ++ .github/workflows/install.yml | 2 ++ .github/workflows/lint.yml | 2 ++ .github/workflows/resultados.yml | 3 +++ .github/workflows/test.yml | 2 ++ 5 files changed, 11 insertions(+) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 60f4319a..0eafe4d4 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -18,6 +18,8 @@ jobs: python-version: '3.10' - name: Install uv run: pip install uv + - name: Create virtual environment + run: uv venv - name: Install dependencies run: uv pip install -e ".[dev]" - name: format diff --git a/.github/workflows/install.yml b/.github/workflows/install.yml index bf395d7a..d43be627 100644 --- a/.github/workflows/install.yml +++ b/.github/workflows/install.yml @@ -17,5 +17,7 @@ jobs: python-version: '3.10' - name: Install uv run: pip install uv + - name: Create virtual environment + run: uv venv - name: Install package run: uv pip install -e . \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 9cec4cea..5ad024c6 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -17,6 +17,8 @@ jobs: python-version: '3.10' - name: Install uv run: pip install uv + - name: Create virtual environment + run: uv venv - name: Install dependencies run: uv pip install -e ".[dev]" - name: lint diff --git a/.github/workflows/resultados.yml b/.github/workflows/resultados.yml index 8db4b825..a118e005 100644 --- a/.github/workflows/resultados.yml +++ b/.github/workflows/resultados.yml @@ -24,6 +24,9 @@ jobs: - name: Install uv run: pip install uv + + - name: Create virtual environment + run: uv venv - name: Install dependencies run: | diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 91a8fe86..e79c6fd1 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -17,6 +17,8 @@ jobs: python-version: '3.10' - name: Install uv run: pip install uv + - name: Create virtual environment + run: uv venv - name: Install dependencies run: uv pip install -e ".[dev]" - name: test From 97e02622292e26cb2e8c838a678dc9856e646b80 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 22 May 2025 22:16:32 +0100 Subject: [PATCH 120/122] Update README.md Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com> --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index acd27348..a3d65146 100644 --- a/README.md +++ b/README.md @@ -46,7 +46,7 @@ Options: --help Show this message and exit. ``` -Dont know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/-getting-started#keyword-deduplication-methods) +Don't know which Deduplication function to use, see more [here](https://tiagolv.github.io/yakerf/docs/-getting-started#keyword-deduplication-methods) #### Usage (Python) From 6f03cfeff87c1e87295b87dc1233875f5e3509a0 Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Thu, 22 May 2025 22:17:44 +0100 Subject: [PATCH 121/122] updated workflows --- .github/workflows/format.yml | 6 ++++-- .github/workflows/lint.yml | 4 +++- .github/workflows/test.yml | 4 +++- 3 files changed, 10 insertions(+), 4 deletions(-) diff --git a/.github/workflows/format.yml b/.github/workflows/format.yml index 0eafe4d4..eabb7330 100644 --- a/.github/workflows/format.yml +++ b/.github/workflows/format.yml @@ -21,6 +21,8 @@ jobs: - name: Create virtual environment run: uv venv - name: Install dependencies - run: uv pip install -e ".[dev]" + run: | + uv pip install -e ".[dev]" + uv pip install black - name: format - run: uv run black . \ No newline at end of file + run: uv run black --check . \ No newline at end of file diff --git a/.github/workflows/lint.yml b/.github/workflows/lint.yml index 5ad024c6..a067ad41 100644 --- a/.github/workflows/lint.yml +++ b/.github/workflows/lint.yml @@ -20,7 +20,9 @@ jobs: - name: Create virtual environment run: uv venv - name: Install dependencies - run: uv pip install -e ".[dev]" + run: | + uv pip install -e ".[dev]" + uv pip install ruff flake8 - name: lint run: | uv run ruff check --fix . diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index e79c6fd1..fc70d18f 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -20,6 +20,8 @@ jobs: - name: Create virtual environment run: uv venv - name: Install dependencies - run: uv pip install -e ".[dev]" + run: | + uv pip install -e ".[dev]" + uv pip install pytest pytest-cov - name: test run: uv run pytest -vv --cov=yake tests/ \ No newline at end of file From a00da1f7abb843d9f9789abc8e312c734ad878ad Mon Sep 17 00:00:00 2001 From: Tiago Valente <95642257+tiagolv@users.noreply.github.com> Date: Tue, 27 May 2025 14:55:15 +0100 Subject: [PATCH 122/122] final formatting for pull request --- README.md | 4 +- docs-site/public/1YAKE.ipynb | 2 +- tests/test_yake.py | 169 +++++++++++++++++++++++++---------- yake/__init__.py | 1 - yake/core/Levenshtein.py | 22 ++--- yake/core/highlight.py | 36 ++++---- yake/core/yake.py | 44 ++++----- yake/data/__init__.py | 2 +- yake/data/composed_word.py | 37 ++++---- yake/data/core.py | 98 ++++++++++---------- yake/data/single_word.py | 63 ++++++------- yake/data/utils.py | 30 ++++--- 12 files changed, 296 insertions(+), 212 deletions(-) diff --git a/README.md b/README.md index a3d65146..e91b7a9d 100644 --- a/README.md +++ b/README.md @@ -14,13 +14,13 @@ YAKE! is a lightweight unsupervised automatic keyword extraction method that use ## Quick Installation ```bash -uv pip install git+https://github.com/LIAAD/yake +pip install git+https://github.com/LIAAD/yake ``` or ```bash -uv pip install yake +pip install yake ``` ## Basic Usage diff --git a/docs-site/public/1YAKE.ipynb b/docs-site/public/1YAKE.ipynb index 6dbc3f50..555fd8e5 100644 --- a/docs-site/public/1YAKE.ipynb +++ b/docs-site/public/1YAKE.ipynb @@ -156,7 +156,7 @@ "outputs": [], "source": [ "#!pip install git+http://github.com/LIAAD/yake\n", - "uv pip install yake\n", + "!uv pip install yake\n", "\n", "#no caso de já ter instalado o package previamente e quiser fazer um update\n", "#!pip install git+http://github.com/LIAAD/yake --upgrade" diff --git a/tests/test_yake.py b/tests/test_yake.py index d724b992..d05b77b7 100644 --- a/tests/test_yake.py +++ b/tests/test_yake.py @@ -9,6 +9,7 @@ import yake from yake.core.highlight import TextHighlighter + def test_phraseless_example(): text_content = "- not yet" @@ -17,6 +18,7 @@ def test_phraseless_example(): result = pyake.extract_keywords(text_content) assert len(result) == 0 + def test_null_and_blank_example(): pyake = yake.KeywordExtractor() @@ -26,60 +28,79 @@ def test_null_and_blank_example(): result = pyake.extract_keywords(None) assert len(result) == 0 + def test_n3_EN(): - text_content = ''' - Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner''' + text_content = """ + Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner""" - pyake = yake.KeywordExtractor(lan="en",n=3) + pyake = yake.KeywordExtractor(lan="en", n=3) result = pyake.extract_keywords(text_content) print(result) - res = [('Google', 0.02509259635302287), ('Kaggle', 0.027297150442917317), - ('CEO Anthony Goldbloom', 0.04834891465259988), ('data science', 0.05499112888517541), - ('acquiring data science', 0.06029572445726576), ('Google Cloud Platform', 0.07461585862381104), - ('data', 0.07999958986489127), ('San Francisco', 0.0913829662674319), - ('Anthony Goldbloom declined', 0.09740885820462175), ('science', 0.09834167930168546), - ('science community Kaggle', 0.1014394718805728), ('machine learning', 0.10754988562466912), - ('Google Cloud', 0.1136787749431024), ('Google is acquiring', 0.114683257931042), - ('acquiring Kaggle', 0.12012386507741751), ('Anthony Goldbloom', 0.1213027418574554), - ('platform', 0.12404419723925647), ('co-founder CEO Anthony', 0.12411964553586782), - ('CEO Anthony', 0.12462950727635251), ('service', 0.1316357590449064)] + res = [ + ("Google", 0.02509259635302287), + ("Kaggle", 0.027297150442917317), + ("CEO Anthony Goldbloom", 0.04834891465259988), + ("data science", 0.05499112888517541), + ("acquiring data science", 0.06029572445726576), + ("Google Cloud Platform", 0.07461585862381104), + ("data", 0.07999958986489127), + ("San Francisco", 0.0913829662674319), + ("Anthony Goldbloom declined", 0.09740885820462175), + ("science", 0.09834167930168546), + ("science community Kaggle", 0.1014394718805728), + ("machine learning", 0.10754988562466912), + ("Google Cloud", 0.1136787749431024), + ("Google is acquiring", 0.114683257931042), + ("acquiring Kaggle", 0.12012386507741751), + ("Anthony Goldbloom", 0.1213027418574554), + ("platform", 0.12404419723925647), + ("co-founder CEO Anthony", 0.12411964553586782), + ("CEO Anthony", 0.12462950727635251), + ("service", 0.1316357590449064), + ] assert result == res keywords = [kw[0] for kw in result] th = TextHighlighter(max_ngram_size=3) textHighlighted = th.highlight(text_content, keywords) print(textHighlighted) - assert textHighlighted == "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner" + assert ( + textHighlighted + == "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague , but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner" + ) + def test_n3_PT(): - text_content = ''' + text_content = """ "Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui. A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto. - ''' + """ - pyake = yake.KeywordExtractor(lan="pt",n=3) + pyake = yake.KeywordExtractor(lan="pt", n=3) result = pyake.extract_keywords(text_content) - res = [('Conta-me Histórias', 0.006225012963810038), - ('LIAAD do INESC', 0.01899063587015275), - ('INESC TEC', 0.01995432290332246), - ('Conta-me', 0.04513273690417472), - ('Histórias', 0.04513273690417472), - ('Prémio Arquivo.pt', 0.05749361520927859), - ('LIAAD', 0.07738867367929901), - ('INESC', 0.07738867367929901), - ('TEC', 0.08109398065524037), - ('Xutos inspiram projeto', 0.08720742489353424), - ('inspiram projeto premiado', 0.08720742489353424), - ('Adam Jatwot docente', 0.09407053486771558), - ('Arquivo.pt', 0.10261392141666957), - ('Alípio Jorge', 0.12190479662535166), - ('Ciências da Universidade', 0.12368384021490342), - ('Ricardo Campos investigador', 0.12789997272332762), - ('Politécnico de Tomar', 0.13323587141127738), - ('Arian Pasquali', 0.13323587141127738), - ('Vitor Mangaravite', 0.13323587141127738), - ('preservados da Web', 0.13596322680882506)] + res = [ + ("Conta-me Histórias", 0.006225012963810038), + ("LIAAD do INESC", 0.01899063587015275), + ("INESC TEC", 0.01995432290332246), + ("Conta-me", 0.04513273690417472), + ("Histórias", 0.04513273690417472), + ("Prémio Arquivo.pt", 0.05749361520927859), + ("LIAAD", 0.07738867367929901), + ("INESC", 0.07738867367929901), + ("TEC", 0.08109398065524037), + ("Xutos inspiram projeto", 0.08720742489353424), + ("inspiram projeto premiado", 0.08720742489353424), + ("Adam Jatwot docente", 0.09407053486771558), + ("Arquivo.pt", 0.10261392141666957), + ("Alípio Jorge", 0.12190479662535166), + ("Ciências da Universidade", 0.12368384021490342), + ("Ricardo Campos investigador", 0.12789997272332762), + ("Politécnico de Tomar", 0.13323587141127738), + ("Arian Pasquali", 0.13323587141127738), + ("Vitor Mangaravite", 0.13323587141127738), + ("preservados da Web", 0.13596322680882506), + ] assert result == res keywords = [kw[0] for kw in result] @@ -87,16 +108,41 @@ def test_n3_PT(): textHighlighted = th.highlight(text_content, keywords) print(textHighlighted) - assert textHighlighted == '"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui. A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.' + assert ( + textHighlighted + == '"Conta-me Histórias." Xutos inspiram projeto premiado. A plataforma "Conta-me Histórias" foi distinguida com o Prémio Arquivo.pt, atribuído a trabalhos inovadores de investigação ou aplicação de recursos preservados da Web, através dos serviços de pesquisa e acesso disponibilizados publicamente pelo Arquivo.pt . Nesta plataforma em desenvolvimento, o utilizador pode pesquisar sobre qualquer tema e ainda executar alguns exemplos predefinidos. Como forma de garantir a pluralidade e diversidade de fontes de informação, esta são utilizadas 24 fontes de notícias eletrónicas, incluindo a TSF. Uma versão experimental (beta) do "Conta-me Histórias" está disponível aqui. A plataforma foi desenvolvida por Ricardo Campos investigador do LIAAD do INESC TEC e docente do Instituto Politécnico de Tomar, Arian Pasquali e Vitor Mangaravite, também investigadores do LIAAD do INESC TEC, Alípio Jorge, coordenador do LIAAD do INESC TEC e docente na Faculdade de Ciências da Universidade do Porto, e Adam Jatwot docente da Universidade de Kyoto.' + ) + def test_n1_EN(): - text_content = ''' - Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner''' + text_content = """ + Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner""" - pyake = yake.KeywordExtractor(lan="en",n=1) + pyake = yake.KeywordExtractor(lan="en", n=1) result = pyake.extract_keywords(text_content) print(result) - res = [('Google', 0.02509259635302287), ('Kaggle', 0.027297150442917317), ('data', 0.07999958986489127), ('science', 0.09834167930168546), ('platform', 0.12404419723925647), ('service', 0.1316357590449064), ('acquiring', 0.15110282570329972), ('learning', 0.1620911439042445), ('Goldbloom', 0.1624845364505264), ('machine', 0.16721860165903407), ('competition', 0.1826862004451857), ('Cloud', 0.1849060668345104), ('community', 0.202661778267609), ('Ventures', 0.2258881919825325), ('declined', 0.2872980816826787), ('San', 0.2893636939471809), ('Francisco', 0.2893636939471809), ('early', 0.2946076840223411), ('acquisition', 0.2991070691689808), ('scientists', 0.3046548516998034)] + res = [ + ("Google", 0.02509259635302287), + ("Kaggle", 0.027297150442917317), + ("data", 0.07999958986489127), + ("science", 0.09834167930168546), + ("platform", 0.12404419723925647), + ("service", 0.1316357590449064), + ("acquiring", 0.15110282570329972), + ("learning", 0.1620911439042445), + ("Goldbloom", 0.1624845364505264), + ("machine", 0.16721860165903407), + ("competition", 0.1826862004451857), + ("Cloud", 0.1849060668345104), + ("community", 0.202661778267609), + ("Ventures", 0.2258881919825325), + ("declined", 0.2872980816826787), + ("San", 0.2893636939471809), + ("Francisco", 0.2893636939471809), + ("early", 0.2946076840223411), + ("acquisition", 0.2991070691689808), + ("scientists", 0.3046548516998034), + ] assert result == res keywords = [kw[0] for kw in result] @@ -104,16 +150,41 @@ def test_n1_EN(): textHighlighted = th.highlight(text_content, keywords) print(textHighlighted) - assert textHighlighted == "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner" + assert ( + textHighlighted + == "Google is acquiring data science community Kaggle. Sources tell us that Google is acquiring Kaggle, a platform that hosts data science and machine learning competitions. Details about the transaction remain somewhat vague, but given that Google is hosting its Cloud Next conference in San Francisco this week, the official announcement could come as early as tomorrow. Reached by phone, Kaggle co-founder CEO Anthony Goldbloom declined to deny that the acquisition is happening. Google itself declined 'to comment on rumors'. Kaggle, which has about half a million data scientists on its platform, was founded by Goldbloom and Ben Hamner in 2010. The service got an early start and even though it has a few competitors like DrivenData, TopCoder and HackerRank, it has managed to stay well ahead of them by focusing on its specific niche. The service is basically the de facto home for running data science and machine learning competitions. With Kaggle, Google is buying one of the largest and most active communities for data scientists - and with that, it will get increased mindshare in this community, too (though it already has plenty of that thanks to Tensorflow and other projects). Kaggle has a bit of a history with Google, too, but that's pretty recent. Earlier this month, Google and Kaggle teamed up to host a $100,000 machine learning competition around classifying YouTube videos. That competition had some deep integrations with the Google Cloud Platform, too. Our understanding is that Google will keep the service running - likely under its current name. While the acquisition is probably more about Kaggle's community than technology, Kaggle did build some interesting tools for hosting its competition and 'kernels', too. On Kaggle, kernels are basically the source code for analyzing data sets and developers can share this code on the platform (the company previously called them 'scripts'). Like similar competition-centric sites, Kaggle also runs a job board, too. It's unclear what Google will do with that part of the service. According to Crunchbase, Kaggle raised $12.5 million (though PitchBook says it's $12.75) since its launch in 2010. Investors in Kaggle include Index Ventures, SV Angel, Max Levchin, Naval Ravikant, Google chief economist Hal Varian, Khosla Ventures and Yuri Milner" + ) + def test_n1_EL(): - text_content = ''' - Ανώτατος διοικητής του ρωσικού στρατού φέρεται να σκοτώθηκε κοντά στο Χάρκοβο, σύμφωνα με την υπηρεσία πληροφοριών του υπουργείου Άμυνας της Ουκρανίας. Σύμφωνα με δήλωση του υπουργείου Άμυνας της Ουκρανίας, πρόκειται για τον Vitaly Gerasimov, υποστράτηγο και υποδιοικητή από την Κεντρική Στρατιωτική Περιφέρεια της Ρωσίας.''' + text_content = """ + Ανώτατος διοικητής του ρωσικού στρατού φέρεται να σκοτώθηκε κοντά στο Χάρκοβο, σύμφωνα με την υπηρεσία πληροφοριών του υπουργείου Άμυνας της Ουκρανίας. Σύμφωνα με δήλωση του υπουργείου Άμυνας της Ουκρανίας, πρόκειται για τον Vitaly Gerasimov, υποστράτηγο και υποδιοικητή από την Κεντρική Στρατιωτική Περιφέρεια της Ρωσίας.""" pyake = yake.KeywordExtractor(lan="el", n=1) result = pyake.extract_keywords(text_content) print(result) - res = [('Ουκρανίας', 0.04685829498124156), ('Χάρκοβο', 0.0630891548728466), ('Άμυνας', 0.06395408991254226), ('σύμφωνα', 0.07419311338418161), ('υπουργείου', 0.1069960715371627), ('Ανώτατος', 0.12696931063105557), ('διοικητής', 0.18516501832552387), ('ρωσικού', 0.18516501832552387), ('στρατού', 0.18516501832552387), ('φέρεται', 0.18516501832552387), ('σκοτώθηκε', 0.18516501832552387), ('κοντά', 0.18516501832552387), ('υπηρεσία', 0.18516501832552387), ('πληροφοριών', 0.18516501832552387), ('Gerasimov', 0.1895400421770795), ('Ρωσίας', 0.1895400421770795), ('Vitaly', 0.24366598777562623), ('Κεντρική', 0.24366598777562623), ('Στρατιωτική', 0.24366598777562623), ('Περιφέρεια', 0.24366598777562623)] + res = [ + ("Ουκρανίας", 0.04685829498124156), + ("Χάρκοβο", 0.0630891548728466), + ("Άμυνας", 0.06395408991254226), + ("σύμφωνα", 0.07419311338418161), + ("υπουργείου", 0.1069960715371627), + ("Ανώτατος", 0.12696931063105557), + ("διοικητής", 0.18516501832552387), + ("ρωσικού", 0.18516501832552387), + ("στρατού", 0.18516501832552387), + ("φέρεται", 0.18516501832552387), + ("σκοτώθηκε", 0.18516501832552387), + ("κοντά", 0.18516501832552387), + ("υπηρεσία", 0.18516501832552387), + ("πληροφοριών", 0.18516501832552387), + ("Gerasimov", 0.1895400421770795), + ("Ρωσίας", 0.1895400421770795), + ("Vitaly", 0.24366598777562623), + ("Κεντρική", 0.24366598777562623), + ("Στρατιωτική", 0.24366598777562623), + ("Περιφέρεια", 0.24366598777562623), + ] assert result == res keywords = [kw[0] for kw in result] @@ -121,7 +192,11 @@ def test_n1_EL(): textHighlighted = th.highlight(text_content, keywords) print(textHighlighted) - assert textHighlighted == "Ανώτατος διοικητής του ρωσικού στρατού φέρεται να σκοτώθηκε κοντά στο Χάρκοβο, σύμφωνα με την υπηρεσία πληροφοριών του υπουργείου Άμυνας της Ουκρανίας. Σύμφωνα με δήλωση του υπουργείου Άμυνας της Ουκρανίας, πρόκειται για τον Vitaly Gerasimov, υποστράτηγο και υποδιοικητή από την Κεντρική Στρατιωτική Περιφέρεια της Ρωσίας." + assert ( + textHighlighted + == "Ανώτατος διοικητής του ρωσικού στρατού φέρεται να σκοτώθηκε κοντά στο Χάρκοβο, σύμφωνα με την υπηρεσία πληροφοριών του υπουργείου Άμυνας της Ουκρανίας. Σύμφωνα με δήλωση του υπουργείου Άμυνας της Ουκρανίας, πρόκειται για τον Vitaly Gerasimov, υποστράτηγο και υποδιοικητή από την Κεντρική Στρατιωτική Περιφέρεια της Ρωσίας." + ) + test_phraseless_example() test_null_and_blank_example() diff --git a/yake/__init__.py b/yake/__init__.py index 237be329..ac340e90 100644 --- a/yake/__init__.py +++ b/yake/__init__.py @@ -7,4 +7,3 @@ __version__ = "0.4.8" from yake.core.yake import KeywordExtractor as KeywordExtractor - diff --git a/yake/core/Levenshtein.py b/yake/core/Levenshtein.py index c2f82a8f..5618ab4f 100644 --- a/yake/core/Levenshtein.py +++ b/yake/core/Levenshtein.py @@ -13,12 +13,12 @@ class Levenshtein: """ Class for computing Levenshtein distance and similarity ratio. - + This class provides static methods to calculate the edit distance between strings (how many insertions, deletions, or substitutions are needed to transform one string into another) and to determine a normalized similarity ratio between them. - + These metrics are widely used in fuzzy string matching, spell checking, and approximate text similarity measurements. """ @@ -27,11 +27,11 @@ class Levenshtein: def __ratio(distance: float, str_length: int) -> float: """ Calculate the similarity ratio based on distance and string length. - + This method normalizes the Levenshtein distance into a similarity ratio between 0 and 1, where 1 represents identical strings and 0 represents completely different strings. - + Args: distance (float): The Levenshtein distance between two strings. str_length (int): The length of the longer string. @@ -46,11 +46,11 @@ def __ratio(distance: float, str_length: int) -> float: def ratio(seq1: str, seq2: str) -> float: """ Compute the similarity ratio between two strings. - + This is the main method for determining string similarity. It calculates the Levenshtein distance and then converts it to a ratio representing how similar the strings are. - + Args: seq1 (str): The first string to compare. seq2 (str): The second string to compare. @@ -67,11 +67,11 @@ def ratio(seq1: str, seq2: str) -> float: def distance(seq1: str, seq2: str) -> int: """ Calculate the Levenshtein distance between two strings. - + This method implements the core Levenshtein algorithm, which calculates the minimum number of single-character edits (insertions, deletions, or substitutions) required to change one string into another. - + The algorithm uses dynamic programming with a matrix approach to efficiently compute the minimum edit distance. @@ -105,10 +105,10 @@ def distance(seq1: str, seq2: str) -> int: # Calculate minimum cost among deletion, insertion, and substitution matrix[x, y] = min( - matrix[x - 1, y] + 1, # Deletion (remove from seq1) - matrix[x, y - 1] + 1, # Insertion (add from seq2) + matrix[x - 1, y] + 1, # Deletion (remove from seq1) + matrix[x, y - 1] + 1, # Insertion (add from seq2) matrix[x - 1, y - 1] + cost, # Substitution or match ) # Return the bottom-right value of the matrix as the final distance - return int(matrix[size_x - 1, size_y - 1]) \ No newline at end of file + return int(matrix[size_x - 1, size_y - 1]) diff --git a/yake/core/highlight.py b/yake/core/highlight.py index cddb899e..d1c68ce0 100644 --- a/yake/core/highlight.py +++ b/yake/core/highlight.py @@ -19,10 +19,10 @@ class NgramData: """ Data structure to hold n-gram processing results. - + This class stores the results of n-gram identification for highlighting, including the list of words and how they are split within keywords. - + Attributes: word_list: List of words that form the n-gram split_kw_list: List of lists containing the split keywords @@ -35,12 +35,12 @@ class NgramData: class TextHighlighter: """ Class for highlighting keywords in text. - + This class provides functionality to highlight keywords in text using pre-defined markers. It supports one-gram and n-gram highlighting, handling various text patterns and maintaining proper context while applying highlights. - + Attributes: See property accessors below for available attributes. """ @@ -66,7 +66,7 @@ def __init__( def highlight(self, text, keywords): """ Highlights keywords in the given text. - + This is the main entry point for text highlighting. It processes the text and adds highlight markers around identified keywords. @@ -93,7 +93,7 @@ def highlight(self, text, keywords): def format_one_gram_text(self, text, relevant_words_array): """ Formats text for one-gram highlighting. - + Processes text to highlight individual words that match the keywords, handling punctuation and maintaining the original text structure. @@ -120,7 +120,7 @@ def format_one_gram_text(self, text, relevant_words_array): def format_n_gram_text(self, text, relevant_words_array): """ Formats text for n-gram highlighting. - + Processes text to highlight multi-word phrases that match keywords, maintaining proper context and handling overlapping keywords. @@ -163,7 +163,7 @@ def format_n_gram_text(self, text, relevant_words_array): def find_relevant_ngrams(self, position, text_tokens, relevant_words_array): """ Finds relevant n-grams in the text. - + Identifies potential keywords at the current position by looking ahead for matches with the provided keywords. @@ -185,7 +185,7 @@ def find_relevant_ngrams(self, position, text_tokens, relevant_words_array): def _find_more_relevant_helper(self, position, text_tokens, relevant_words_array): """ Helper method for finding relevant n-gram words. - + Checks all possible n-grams starting at the current position and identifies matches with the provided keywords. @@ -225,7 +225,7 @@ def _find_more_relevant_helper(self, position, text_tokens, relevant_words_array def process_ngrams(self, text_tokens, position, n_gram_word_list, context): """ Processes n-grams and updates the final text. - + Handles the replacing of n-grams with their highlighted versions, distinguishing between single-word and multi-word keywords. @@ -265,7 +265,7 @@ def _create_ngram_context( ): """ Creates a context object for n-gram processing. - + Bundles all the necessary information for processing multi-word ngrams into a single context dictionary. @@ -288,7 +288,7 @@ def _create_ngram_context( def _process_multi_word_ngrams_helper(self, text_tokens, position, ctx): """ Helper method for processing multi-word n-grams. - + Handles the complex logic of identifying and highlighting multi-word phrases in the text. @@ -348,7 +348,7 @@ def _process_multi_word_ngrams_helper(self, text_tokens, position, ctx): def _update_kw_list(self, position, text_tokens, relevant_words_array, kw_dict): """ Updates the keyword list and split n-gram keyword list. - + Identifies relevant keywords at a given position and updates the provided lists with the findings. @@ -369,7 +369,7 @@ def _update_kw_list(self, position, text_tokens, relevant_words_array, kw_dict): def _process_relevant_terms_helper(self, text_tokens, position, ctx): """ Helper method for processing relevant terms. - + Handles the complex logic of determining which terms to highlight when multiple options are available. @@ -423,7 +423,7 @@ def _process_relevant_terms_helper(self, text_tokens, position, ctx): def _handle_temporal_keyword(self, text_tokens, position, ctx): """ Helper method for handling temporal keywords. - + Determines how to highlight keywords that may span across multiple tokens or have temporal relationships. @@ -469,7 +469,7 @@ def _handle_temporal_keyword(self, text_tokens, position, ctx): def _handle_nonrelevant_temporal_keyword(self, text_tokens, position, ctx): """ Helper method for handling non-relevant temporal keywords. - + Processes keywords that are part of larger phrases but not relevant on their own. @@ -498,7 +498,7 @@ def _handle_nonrelevant_temporal_keyword(self, text_tokens, position, ctx): def replace_token(self, text_tokens, position, n_gram_word_list): """ Replaces tokens in text with highlighted versions. - + Performs the actual replacement of keywords with their highlighted versions, handling punctuation and maintaining text structure. @@ -525,4 +525,4 @@ def replace_token(self, text_tokens, position, n_gram_word_list): f"{self.highlight_pre}{n_gram_word_list[0]}{self.highlight_post}", ) - return position + num_tokens, new_expression \ No newline at end of file + return position + num_tokens, new_expression diff --git a/yake/core/yake.py b/yake/core/yake.py index 1d655c3c..300e983c 100644 --- a/yake/core/yake.py +++ b/yake/core/yake.py @@ -16,12 +16,12 @@ class KeywordExtractor: """ Main entry point for YAKE keyword extraction. - + This class handles the configuration, preprocessing, and extraction of keywords from text documents using statistical features without relying on dictionaries or external corpora. It integrates components for text processing, candidate generation, feature extraction, and keyword ranking. - + Attributes: See initialization parameters for configurable attributes. """ @@ -29,7 +29,7 @@ class KeywordExtractor: def __init__(self, **kwargs): """ Initialize the KeywordExtractor with configuration parameters. - + Args: **kwargs: Configuration parameters including: lan (str): Language for stopwords (default: "en") @@ -59,14 +59,14 @@ def __init__(self, **kwargs): def _load_stopwords(self, stopwords): """ Load stopwords from file or use provided set. - + This method handles the loading of language-specific stopwords from the appropriate resource file, falling back to a language-agnostic list if the specific language is not available. - + Args: stopwords (set, optional): Custom set of stopwords to use - + Returns: set: A set of stopwords for filtering non-content words """ @@ -99,13 +99,13 @@ def _load_stopwords(self, stopwords): def _get_dedup_function(self, func_name): """ Retrieve the appropriate deduplication function. - + Maps the requested string similarity function name to the corresponding method implementation for keyword deduplication. - + Args: func_name (str): Name of the deduplication function to use - + Returns: function: Reference to the selected string similarity function """ @@ -120,14 +120,14 @@ def _get_dedup_function(self, func_name): def jaro(self, cand1, cand2): """ Calculate Jaro similarity between two strings. - + A string metric measuring edit distance between two sequences, with higher values indicating greater similarity. - + Args: cand1 (str): First string to compare cand2 (str): Second string to compare - + Returns: float: Similarity score between 0.0 (different) and 1.0 (identical) """ @@ -136,14 +136,14 @@ def jaro(self, cand1, cand2): def levs(self, cand1, cand2): """ Calculate normalized Levenshtein similarity between two strings. - + Computes the Levenshtein distance and normalizes it by the length of the longer string, returning a similarity score. - + Args: cand1 (str): First string to compare cand2 (str): Second string to compare - + Returns: float: Similarity score between 0.0 (different) and 1.0 (identical) """ @@ -152,15 +152,15 @@ def levs(self, cand1, cand2): def seqm(self, cand1, cand2): """ Calculate sequence matcher ratio between two strings. - + Uses the Levenshtein ratio which measures the similarity between two strings based on the minimum number of operations required to transform one string into the other. - + Args: cand1 (str): First string to compare cand2 (str): Second string to compare - + Returns: float: Similarity score between 0.0 (different) and 1.0 (identical) """ @@ -169,9 +169,9 @@ def seqm(self, cand1, cand2): def extract_keywords(self, text): """ Extract keywords from the given text. - + This function implements the complete YAKE keyword extraction pipeline: - + 1. Preprocesses the input text by normalizing whitespace 2. Builds a data representation using DataCore, which: - Tokenizes the text into sentences and words @@ -184,7 +184,7 @@ def extract_keywords(self, text): 5. Sorts candidates by their importance score (H), where lower is better 6. Performs deduplication to remove similar candidates based on string similarity 7. Returns the top k keywords with their scores - + The algorithm favors keywords that are statistically important but not common stopwords, with scores reflecting their estimated relevance to the document. Lower scores indicate more important keywords. @@ -194,7 +194,7 @@ def extract_keywords(self, text): Returns: List of (keyword, score) tuples sorted by score (lower is better) - + """ # Handle empty input if not text: diff --git a/yake/data/__init__.py b/yake/data/__init__.py index 5a4c9563..4cd1eff8 100644 --- a/yake/data/__init__.py +++ b/yake/data/__init__.py @@ -4,4 +4,4 @@ from .single_word import SingleWord from .composed_word import ComposedWord -__all__ = ['DataCore', 'SingleWord', 'ComposedWord'] +__all__ = ["DataCore", "SingleWord", "ComposedWord"] diff --git a/yake/data/composed_word.py b/yake/data/composed_word.py index 0ecabb85..3862fe47 100644 --- a/yake/data/composed_word.py +++ b/yake/data/composed_word.py @@ -11,15 +11,16 @@ import jellyfish from .utils import STOPWORD_WEIGHT + class ComposedWord: """ Representation of a multi-word term in the document. - + This class stores and aggregates information about multi-word keyword candidates, calculating combined scores from the properties of their constituent terms. It tracks statistics like term frequency, integrity, and provides methods to validate whether a phrase is likely to be a good keyword. - + Attributes: See property accessors below for available attributes. """ @@ -27,7 +28,7 @@ class ComposedWord: def __init__(self, terms): """ Initialize a ComposedWord object representing a multi-word term. - + Args: terms (list): List of tuples (tag, word, term_obj) representing the individual words in this phrase. Can be None to @@ -104,7 +105,7 @@ def tf(self): def tf(self, value): """ Set the term frequency value. - + Args: value (float): The new term frequency value """ @@ -124,7 +125,7 @@ def h(self): def h(self, value): """ Set the final relevance score of this phrase. - + Args: value (float): The new score value """ @@ -138,10 +139,10 @@ def start_or_end_stopwords(self): def uptade_cand(self, cand): """ Update this candidate with data from another candidate. - + Merges tag information from another candidate representing the same keyword phrase. - + Args: cand (ComposedWord): Another instance of the same keyword to merge with """ @@ -152,10 +153,10 @@ def uptade_cand(self, cand): def is_valid(self): """ Check if this candidate is a valid keyword phrase. - + A valid keyword phrase doesn't contain unusual characters or digits, and doesn't start or end with stopwords. - + Returns: bool: True if this is a valid keyword candidate, False otherwise """ @@ -172,7 +173,7 @@ def get_composed_feature(self, feature_name, discart_stopword=True): Get composed feature values for the n-gram. This function aggregates a specific feature across all terms in the n-gram. - It computes the sum, product, and ratio of the feature values, optionally + It computes the sum, product, and ratio of the feature values, optionally excluding stopwords from the calculation. Args: @@ -184,7 +185,7 @@ def get_composed_feature(self, feature_name, discart_stopword=True): - sum: Sum of the feature values across all relevant terms - product: Product of the feature values across all relevant terms - ratio: Product divided by (sum + 1), a measure of feature consistency - + """ # Get feature values from each term, filtering stopwords if requested list_of_features = [ @@ -203,10 +204,10 @@ def get_composed_feature(self, feature_name, discart_stopword=True): def build_features(self, params): """ Build features for machine learning or evaluation. - + Generates feature vectors that can be used for model training, evaluation, or visualization of keyword properties. - + Args: params (dict): Parameters for feature generation including: - features (list): Features to include @@ -216,7 +217,7 @@ def build_features(self, params): - rel (bool): Whether to include relevance feature - rel_approx (bool): Whether to include approximate relevance - is_virtual (bool): Whether this is a virtual candidate - + Returns: tuple: (features_list, column_names, matched_gold_standards) """ @@ -311,11 +312,11 @@ def build_features(self, params): def update_h(self, features=None, is_virtual=False): """ Update the term's score based on its constituent terms. - + Calculates a combined relevance score for the multi-word term by aggregating scores of its constituent words, with special handling for stopwords to improve keyword quality. - + Args: features (list, optional): Specific features to use for scoring is_virtual (bool): Whether this is a virtual candidate not in text @@ -381,10 +382,10 @@ def update_h(self, features=None, is_virtual=False): def update_h_old(self, features=None, is_virtual=False): """ Legacy method for updating the term's score. - + Preserved for backward compatibility but uses a slightly different approach to calculate scores. - + Args: features (list, optional): Specific features to use for scoring is_virtual (bool): Whether this is a virtual candidate not in text diff --git a/yake/data/core.py b/yake/data/core.py index 9eb72f70..b145e10a 100644 --- a/yake/data/core.py +++ b/yake/data/core.py @@ -16,15 +16,16 @@ from .single_word import SingleWord from .composed_word import ComposedWord + class DataCore: """ Core data representation for document analysis and keyword extraction. - - This class processes text documents to identify potential keywords based on - statistical features and contextual relationships between terms. It maintains - the document's structure, processes individual terms, and generates candidate + + This class processes text documents to identify potential keywords based on + statistical features and contextual relationships between terms. It maintains + the document's structure, processes individual terms, and generates candidate keywords. - + Attributes: See property accessors below for available attributes. """ @@ -32,7 +33,7 @@ class DataCore: def __init__(self, text, stopword_set, config=None): """ Initialize the data core with text and configuration. - + Args: text (str): The input text to analyze for keyword extraction stopword_set (set): A set of stopwords to filter out non-content words @@ -56,28 +57,25 @@ def __init__(self, text, stopword_set, config=None): self._state = { # Configuration settings "config": { - "exclude": exclude, # Punctuation and other characters to exclude + "exclude": exclude, # Punctuation and other characters to exclude "tags_to_discard": tags_to_discard, # POS tags to ignore during analysis - "stopword_set": stopword_set # Set of stopwords for filtering + "stopword_set": stopword_set, # Set of stopwords for filtering }, - # Text corpus statistics "text_stats": { "number_of_sentences": 0, # Total count of sentences - "number_of_words": 0 # Total count of processed words + "number_of_words": 0, # Total count of processed words }, - # Core data collections for analysis "collections": { - "terms": {}, # Dictionary mapping terms to SingleWord objects - "candidates": {}, # Dictionary mapping unique keywords to ComposedWord objects - "sentences_obj": [], # Nested list of processed sentence objects - "sentences_str": [], # List of raw sentence strings - "freq_ns": {} # Frequency distribution of n-grams by length + "terms": {}, # Dictionary mapping terms to SingleWord objects + "candidates": {}, # Dictionary mapping unique keywords to ComposedWord objects + "sentences_obj": [], # Nested list of processed sentence objects + "sentences_str": [], # List of raw sentence strings + "freq_ns": {}, # Frequency distribution of n-grams by length }, - # Graph for term co-occurrence analysis - "g": nx.DiGraph() # Directed graph where nodes are terms and edges represent co-occurrences + "g": nx.DiGraph(), # Directed graph where nodes are terms and edges represent co-occurrences } # Initialize n-gram frequencies with zero counts for each length 1 to n @@ -166,10 +164,10 @@ def freq_ns(self): def _build(self, text, windows_size, n): """ Build the core data structures from the input text. - - This method handles the initial processing of text, including + + This method handles the initial processing of text, including pre-filtering, sentence segmentation, and word tokenization. - + Args: text (str): The input text to process windows_size (int): Size of word window for co-occurrence analysis @@ -198,22 +196,24 @@ def _build(self, text, windows_size, n): def _process_sentence(self, sentence, sentence_id, pos_text, context): """ Process a single sentence from the document. - + Handles the tokenization of a sentence, identifies words and punctuation, and processes each meaningful word. - + Args: sentence (list): List of word tokens in the sentence sentence_id (int): Unique identifier for this sentence pos_text (int): Current global position in the text context (dict): Processing context with configuration parameters - + Returns: int: Updated global position counter """ # Initialize lists to store processed sentence components sentence_obj_aux = [] # Blocks of words within the sentence - block_of_word_obj = [] # Current block of continuous words (separated by punctuation) + block_of_word_obj = ( + [] + ) # Current block of continuous words (separated by punctuation) # Extend the context with sentence information for word processing processing_context = context.copy() @@ -251,16 +251,16 @@ def _process_sentence(self, sentence, sentence_id, pos_text, context): def _process_word(self, word, pos_text, context, word_context): """ Process a single word within a sentence. - + Creates or retrieves the term object, updates its occurrences, analyzes co-occurrences with nearby words, and generates candidate keywords. - + Args: word (str): The word to process pos_text (int): Current global position in the text context (dict): Processing context with configuration parameters word_context (dict): Word-specific context information - + Returns: int: Updated global position counter """ @@ -298,10 +298,10 @@ def _process_word(self, word, pos_text, context, word_context): def _update_cooccurrence(self, block_of_word_obj, term_obj, windows_size): """ Update co-occurrence information between terms. - + Records relationships between the current term and previous terms within the specified window size. - + Args: block_of_word_obj (list): Current block of words term_obj (SingleWord): Term object for the current word @@ -321,10 +321,10 @@ def _update_cooccurrence(self, block_of_word_obj, term_obj, windows_size): def _generate_candidates(self, term, term_obj, block_of_word_obj, n): """ Generate keyword candidates from terms. - + Creates single-term candidates and multi-term candidates up to length n, combining the current term with previous terms. - + Args: term (tuple): Current term as (tag, word) tuple term_obj (SingleWord): Term object for the current word @@ -339,7 +339,9 @@ def _generate_candidates(self, term, term_obj, block_of_word_obj, n): # Calculate window of previous words to consider for multi-term candidates word_windows = list( range(max(0, len(block_of_word_obj) - (n - 1)), len(block_of_word_obj)) - )[::-1] # Reverse to build phrases from right to left + )[ + ::-1 + ] # Reverse to build phrases from right to left # Generate multi-term candidates with increasing length for w in word_windows: @@ -359,11 +361,11 @@ def _generate_candidates(self, term, term_obj, block_of_word_obj, n): def get_tag(self, word, i): """ Get the part-of-speech tag for a word. - + Args: word (str): The word to tag i (int): Position of the word in its sentence - + Returns: str: Single character tag representing the word type ("d" for digit, "u" for unusual, "a" for acronym, @@ -374,14 +376,14 @@ def get_tag(self, word, i): def build_candidate(self, candidate_string): """ Build a candidate ComposedWord from a string. - + This function processes a candidate string by tokenizing it, tagging each word, and creating a ComposedWord object from the resulting terms. It's used to convert external strings into the internal candidate representation. - + Args: candidate_string (str): String to convert to a keyword candidate - + Returns: ComposedWord: A composed word object representing the candidate """ @@ -420,7 +422,7 @@ def build_single_terms_features(self, features=None): This includes term frequency statistics and other features specified in the features parameter. Only non-stopword terms are considered for statistics calculation. - + Args: features (list, optional): Specific features to calculate """ @@ -451,10 +453,10 @@ def build_single_terms_features(self, features=None): def build_mult_terms_features(self, features=None): """ Build features for multi-word terms. - + Updates the features for all valid multi-word candidate terms (n-grams). Only candidates that pass the validity check will have their features updated. - + Args: features (list, optional): List of features to build. If None, all available features will be built. """ @@ -469,13 +471,13 @@ def build_mult_terms_features(self, features=None): def get_term(self, str_word, save_non_seen=True): """ Get or create a term object for a word. - + Handles word normalization, stopword checking, and term object creation. - + Args: str_word (str): The word to get a term object for save_non_seen (bool, optional): Whether to save new terms to the collection - + Returns: SingleWord: Term object representing this word """ @@ -520,11 +522,11 @@ def get_term(self, str_word, save_non_seen=True): def add_cooccur(self, left_term, right_term): """ Add a co-occurrence relationship between two terms. - + Updates the co-occurrence graph by adding or incrementing an edge between two terms. This information is used to calculate term relatedness and importance in the text. - + Args: left_term (SingleWord): Source term in the relationship right_term (SingleWord): Target term in the relationship @@ -540,11 +542,11 @@ def add_cooccur(self, left_term, right_term): def add_or_update_composedword(self, cand): """ Add or update a composed word in the candidates collection. - + Adds a new candidate composed word (n-gram) to the candidates dictionary or updates an existing one by incrementing its frequency. This is used to track potential keyphrases in the text. - + Args: cand (ComposedWord): ComposedWord instance to add or update in the candidates dictionary """ diff --git a/yake/data/single_word.py b/yake/data/single_word.py index c64e6cce..68cbd7ee 100644 --- a/yake/data/single_word.py +++ b/yake/data/single_word.py @@ -10,15 +10,16 @@ import math import numpy as np + class SingleWord: """ Representation of a single word term in the document. - + This class stores and calculates statistical features for individual terms, including frequency, position, spread, and relationship metrics. These features are used to calculate a relevance score that indicates the word's importance in the document. - + Attributes: See property accessors below for available attributes. """ @@ -26,7 +27,7 @@ class SingleWord: def __init__(self, unique, idx, graph): """ Initialize a SingleWord term object. - + Args: unique (str): The unique normalized term this object represents idx (int): Unique identifier for the term in the document @@ -41,18 +42,18 @@ def __init__(self, unique, idx, graph): "stopword": False, "h": 0.0, # Final Score # Term frequency statistics - "tf": 0.0, # Term frequency - "tf_a": 0.0, # Term Frequency for uppercase words - "tf_n": 0.0, # Term Frequency for proper nouns + "tf": 0.0, # Term frequency + "tf_a": 0.0, # Term Frequency for uppercase words + "tf_n": 0.0, # Term Frequency for proper nouns # Word characteristic metrics - "wfreq": 0.0, # Word frequency - "wcase": 0.0, # Word case metric - "wrel": 1.0, # Word relevance metric - "wpos": 1.0, # Word position metric - "wspread": 0.0, # Word spread across document - "pl": 0.0, # Probability left - "pr": 0.0, # Probability right - "pagerank": 1.0, # PageRank score + "wfreq": 0.0, # Word frequency + "wcase": 0.0, # Word case metric + "wrel": 1.0, # Word relevance metric + "wpos": 1.0, # Word position metric + "wspread": 0.0, # Word spread across document + "pl": 0.0, # Probability left + "pr": 0.0, # Probability right + "pagerank": 1.0, # PageRank score # Ocurrence tracking "occurs": {}, # Sentence Occurrences } @@ -61,10 +62,10 @@ def __init__(self, unique, idx, graph): def __getitem__(self, key): """ Access attributes dictionary-style with obj['key']. - + Args: key (str): The attribute key to access - + Returns: Any: The value associated with the key """ @@ -73,7 +74,7 @@ def __getitem__(self, key): def __setitem__(self, key, value): """ Set attributes dictionary-style with obj['key'] = value. - + Args: key (str): The attribute key to set value (Any): The value to associate with the key @@ -83,11 +84,11 @@ def __setitem__(self, key, value): def get(self, key, default=None): """ Get with default, mimicking dict.get(). - + Args: key (str): The attribute key to access default (Any, optional): The default value if key doesn't exist - + Returns: Any: The value associated with the key or the default value """ @@ -108,7 +109,7 @@ def stopword(self): def stopword(self, value): """ Set whether this term is a stopword. - + Args: value (bool): True if the term is a stopword, False otherwise """ @@ -123,7 +124,7 @@ def h(self): def h(self, value): """ Set the final relevance score of this term. - + Args: value (float): The new score value """ @@ -138,7 +139,7 @@ def tf(self): def tf(self, value): """ Set the term frequency value. - + Args: value (float): The new term frequency value """ @@ -153,10 +154,10 @@ def occurs(self): def get_metric(self, name): """ Get the value of any word metric. - + Args: name (str): The name of the metric to retrieve - + Returns: float: The value of the requested metric """ @@ -165,7 +166,7 @@ def get_metric(self, name): def set_metric(self, name, value): """ Set the value of any word metric. - + Args: name (str): The name of the metric to set value (float): The new value for the metric @@ -175,10 +176,10 @@ def set_metric(self, name, value): def get_graph_metrics(self): """ Calculate all graph-based metrics at once. - + Analyzes the term's connections in the co-occurrence graph to compute various relationship metrics that measure its contextual importance. - + Returns: dict: Dictionary containing the calculated graph metrics: - wdr: Word different right (number of outgoing edges) @@ -203,10 +204,10 @@ def get_graph_metrics(self): def update_h(self, stats, features=None): """ Update the word's score based on statistics. - + Calculates all the statistical features that determine the word's relevance score, using document-level statistics for normalization. - + Args: stats (dict): Document statistics including: - max_tf (float): Maximum term frequency in the document @@ -262,11 +263,11 @@ def update_h(self, stats, features=None): def add_occur(self, tag, sent_id, pos_sent, pos_text): """ Add occurrence information for this term. - + Records where in the document this term appears, tracking sentence ID, position within sentence, global position in text, and updates term frequency counters. - + Args: tag (str): Part-of-speech tag for this occurrence ('a' for acronym, 'n' for proper noun, etc.) sent_id (int): Sentence ID where the term appears diff --git a/yake/data/utils.py b/yake/data/utils.py index bcb08379..79f0d488 100644 --- a/yake/data/utils.py +++ b/yake/data/utils.py @@ -17,19 +17,20 @@ # - "none": Ignore stopwords completely STOPWORD_WEIGHT = "bi" + def pre_filter(text): """Pre-filter text before processing. - + This function prepares raw text for keyword extraction by normalizing its format. It performs several transformations: - + 1. Splits the text into parts based on newline characters 2. Detects if a part starts with a capital letter (potentially a new paragraph) 3. Adds appropriate spacing between parts: - Double newlines for parts starting with capital letters (likely new paragraphs) - Single spaces for other parts (likely continuing text) 4. Replaces all tab characters with spaces for consistent formatting - + This preprocessing helps maintain paragraph structure while normalizing whitespace, which improves the accuracy of subsequent text analysis steps like sentence boundary detection and keyword extraction. @@ -59,18 +60,19 @@ def pre_filter(text): return buffer + def tokenize_sentences(text): """ Split text into sentences and tokenize into words. - + This function performs two-level tokenization: first dividing the text into sentences using segtok's sentence segmenter, then tokenizing each sentence into individual words. It also handles contractions and filters out empty or invalid tokens. - + Args: text (str): The input text to be tokenized - + Returns: list: A nested list structure where each inner list contains the tokens for a single sentence in the original text @@ -89,20 +91,21 @@ def tokenize_sentences(text): if len(s.strip()) > 0 ] + def get_tag(word, i, exclude): """ Determine the linguistic tag of a word based on its characteristics. - - This function categorizes words into different types based on their + + This function categorizes words into different types based on their orthographic features (capitalization, digits, special characters). - These tags are used to identify proper nouns, acronyms, numbers, and + These tags are used to identify proper nouns, acronyms, numbers, and unusual token patterns, which affect keyword scoring and filtering. - + Args: word (str): The word to classify i (int): Position of the word within its sentence (0 = first word) exclude (set): Set of characters to consider as punctuation/special chars - + Returns: str: A single character tag representing the word type: - "d": Digit or numeric value @@ -112,7 +115,10 @@ def get_tag(word, i, exclude): - "p": Plain word (default) """ # Check if word is numeric (with possible commas and a decimal point) - if word.replace(",", "").isdigit() or word.replace(",", "").replace(".", "", 1).isdigit(): + if ( + word.replace(",", "").isdigit() + or word.replace(",", "").replace(".", "", 1).isdigit() + ): return "d" # Count character types for classification
    YAKE!