scriptconv 0.0.3a21__tar.gz → 0.0.3a22__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/PKG-INFO +1 -1
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/ar.py +50 -29
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/version.py +1 -1
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/PKG-INFO +1 -1
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/LICENSE +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/README.md +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/pyproject.toml +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/requirements.txt +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/__main__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/cangjie.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/conventions.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/data/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/data/cangjie5_tc.tsv.gz +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/graph.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/notation.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/bw2ipa.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/aspiration.csv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/assimilation.csv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/double_coda.csv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/neutralization.csv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/tensification.csv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/espeak.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/frontend.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/levantine_g2p.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/normalize.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/phoneme_inventory.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/zh_num.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/LICENSE.md +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/rulebook.txt +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/LICENSE.md +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/__init__.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/phonetise_buckwalter.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/symbols.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/tokenization.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/num2words.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/unicode_symbol2label.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/base.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/en.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/enums.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/eu.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/fa.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/gl.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/he.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/ja.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/ko.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/mul.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/mwl.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/o2ipa.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/pt.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/registry.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/shami.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/vi.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/zh.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/py.typed +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/readings.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/scripts.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/translit.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/SOURCES.txt +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/dependency_links.txt +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/requires.txt +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv.egg-info/top_level.txt +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/setup.cfg +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_arpa_stress.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_cangjie.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_cli.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_conventions.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_errors_policy.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_examples.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_graph.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_notation.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_phonemizers_base.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_phonemizers_cjk_ar.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_readings.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_readings_zh.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_scripts.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_scripts_stressonnx_compat.py +0 -0
- {scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/tests/test_translit.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scriptconv
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3a22
|
|
4
4
|
Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
|
|
@@ -4,44 +4,65 @@ from scriptconv.phonemizers.enums import Alphabet
|
|
|
4
4
|
from scriptconv.phonemizers.base import BasePhonemizer
|
|
5
5
|
|
|
6
6
|
|
|
7
|
+
# Module-level indirection for the mantoq backend: resolved lazily on first
|
|
8
|
+
# construction, kept as module globals so tests and callers can patch them.
|
|
9
|
+
mantoq = None # the g2p callable
|
|
10
|
+
from scriptconv.notation import mantoq_to_ipa # noqa: E402 (patchable name)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def _load_mantoq_g2p():
|
|
14
|
+
try:
|
|
15
|
+
# an externally-installed upstream mantoq wins
|
|
16
|
+
import mantoq as _pkg
|
|
17
|
+
except ImportError:
|
|
18
|
+
# quarantined vendored copy under its OWN license (the phonetisation
|
|
19
|
+
# core is CC BY-NC 4.0 — see _vendored/mantoq/LICENSE.md); using it
|
|
20
|
+
# is an explicit opt-in by requesting this phonemizer
|
|
21
|
+
from scriptconv.phonemizers import _vendored
|
|
22
|
+
from scriptconv.phonemizers._vendored import mantoq as _pkg
|
|
23
|
+
return _pkg.g2p
|
|
24
|
+
|
|
25
|
+
|
|
7
26
|
class MantoqPhonemizer(BasePhonemizer):
|
|
8
|
-
"""Arabic phonemizer
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
27
|
+
"""Arabic phonemizer backed by mantoq (Halabi Arabic-Phonetiser pipeline).
|
|
28
|
+
|
|
29
|
+
Distributed under its own license from the quarantined vendored copy —
|
|
30
|
+
the phonetisation core is CC BY-NC 4.0, non-commercial — unless an
|
|
31
|
+
externally-installed ``mantoq`` package is present. Never selected
|
|
32
|
+
automatically; :class:`ArbtokPhonemizer` is the Arabic default.
|
|
33
|
+
|
|
34
|
+
Historical contract, preserved for models in the wild: the default
|
|
35
|
+
``alphabet=Alphabet.BUCKWALTER`` returns the raw mantoq inventory (its
|
|
36
|
+
long-standing, if imprecise, label — ``Alphabet.MANTOQ`` is the accurate
|
|
37
|
+
alias); ``Alphabet.IPA`` converts via
|
|
38
|
+
:func:`scriptconv.notation.mantoq_to_ipa`.
|
|
18
39
|
"""
|
|
19
40
|
|
|
20
|
-
def __init__(self, alphabet: Alphabet = Alphabet.
|
|
21
|
-
if alphabet not in (Alphabet.IPA, Alphabet.MANTOQ):
|
|
22
|
-
raise ValueError("
|
|
41
|
+
def __init__(self, alphabet: Alphabet = Alphabet.BUCKWALTER):
|
|
42
|
+
if alphabet not in (Alphabet.IPA, Alphabet.BUCKWALTER, Alphabet.MANTOQ):
|
|
43
|
+
raise ValueError("unsupported alphabet")
|
|
23
44
|
super().__init__(alphabet)
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
except ImportError:
|
|
28
|
-
# quarantined vendored copy under its OWN license (the
|
|
29
|
-
# phonetisation core is CC BY-NC 4.0 — see
|
|
30
|
-
# _vendored/mantoq/LICENSE.md); using it is an explicit opt-in
|
|
31
|
-
# by requesting this phonemizer
|
|
32
|
-
from scriptconv.phonemizers._vendored import mantoq
|
|
33
|
-
self._g2p = mantoq.g2p
|
|
45
|
+
global mantoq
|
|
46
|
+
if mantoq is None:
|
|
47
|
+
mantoq = _load_mantoq_g2p()
|
|
34
48
|
|
|
35
49
|
@classmethod
|
|
36
50
|
def get_lang(cls, target_lang: str) -> str:
|
|
37
51
|
return cls.match_lang(target_lang, ["ar"])
|
|
38
52
|
|
|
39
|
-
def phonemize_string(self, text: str, lang: str) -> str:
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
53
|
+
def phonemize_string(self, text: str, lang: str = "ar") -> str:
|
|
54
|
+
"""Phonemize Arabic text via mantoq's G2P.
|
|
55
|
+
|
|
56
|
+
Tokens are joined and the ``_+_`` word separator becomes a space —
|
|
57
|
+
the byte-exact historical behavior; IPA output converts the joined
|
|
58
|
+
string with :func:`mantoq_to_ipa`.
|
|
59
|
+
"""
|
|
60
|
+
lang = self.get_lang(lang)
|
|
61
|
+
normalized_text, phonemes = mantoq(text)
|
|
62
|
+
phonemes = "".join(phonemes).replace("_+_", " ")
|
|
63
|
+
if self.alphabet == Alphabet.IPA:
|
|
64
|
+
return mantoq_to_ipa(phonemes)
|
|
65
|
+
return phonemes
|
|
45
66
|
|
|
46
67
|
|
|
47
68
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scriptconv
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3a22
|
|
4
4
|
Summary: Zero-dependency script & phoneme-notation core — ISO-15924 detection & metadata, IPA↔ARPABET/X-SAMPA/Lexique/Kirshenbaum/Cotovía/RFE, Buckwalter↔Arabic, Hangul→jamo, kana
|
|
5
5
|
License: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/TigreGotico/scriptconv
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/hangul2ipa.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/hanja.tsv
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/ipa.csv
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/ko_tables/yale.csv
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/__init__.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/codeswitch.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/diacritize.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/dialectal.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/english_g2p.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/espeak.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/frontend.py
RENAMED
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_thirdparty/shami/normalize.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/LICENSE.md
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/__init__.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/kog2p/rulebook.txt
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/LICENSE.md
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/__init__.py
RENAMED
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/buck/symbols.py
RENAMED
|
File without changes
|
|
File without changes
|
{scriptconv-0.0.3a21 → scriptconv-0.0.3a22}/scriptconv/phonemizers/_vendored/mantoq/num2words.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|