langtable 0.0.65__tar.gz → 0.0.67__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.
- {langtable-0.0.65 → langtable-0.0.67}/ChangeLog +22 -0
- {langtable-0.0.65 → langtable-0.0.67}/MANIFEST.in +3 -0
- {langtable-0.0.65 → langtable-0.0.67}/Makefile +19 -6
- {langtable-0.0.65 → langtable-0.0.67}/PKG-INFO +25 -28
- {langtable-0.0.65 → langtable-0.0.67}/README +21 -17
- langtable-0.0.67/README.html +226 -0
- langtable-0.0.67/README.md +72 -0
- langtable-0.0.67/langtable/data/languages.xml.gz +0 -0
- langtable-0.0.67/langtable/data/territories.xml.gz +0 -0
- langtable-0.0.67/langtable/data/timezoneidparts.xml.gz +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/langtable.py +285 -278
- {langtable-0.0.65 → langtable-0.0.67}/langtable.egg-info/PKG-INFO +25 -28
- {langtable-0.0.65 → langtable-0.0.67}/langtable.egg-info/SOURCES.txt +3 -0
- {langtable-0.0.65 → langtable-0.0.67}/main.py +14 -9
- {langtable-0.0.65 → langtable-0.0.67}/setup.py +3 -2
- {langtable-0.0.65 → langtable-0.0.67}/test_cases.py +8 -7
- langtable-0.0.67/tools/list-missing-from-cldr +42 -0
- langtable-0.0.65/langtable/data/languages.xml.gz +0 -0
- langtable-0.0.65/langtable/data/territories.xml.gz +0 -0
- langtable-0.0.65/langtable/data/timezoneidparts.xml.gz +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/COPYING +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/__init__.py +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/data/keyboards.xml.gz +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/data/timezones.xml.gz +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/schemas/keyboards.rng +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/schemas/languages.rng +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/schemas/territories.rng +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/schemas/timezoneidparts.rng +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable/schemas/timezones.rng +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable.egg-info/dependency_links.txt +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable.egg-info/not-zip-safe +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/langtable.egg-info/top_level.txt +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/setup.cfg +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/tools/compare_with_glib_source.py +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/tools/list-missing-regions-and-languages.sh +0 -0
- {langtable-0.0.65 → langtable-0.0.67}/unicode-license.txt +0 -0
|
@@ -1,3 +1,25 @@
|
|
|
1
|
+
2024-06-11 Mike FABIAN <mfabian@redhat.com>
|
|
2
|
+
|
|
3
|
+
* Add tool to check which languages, scripts, and territories available in CLDR are missing in langtable
|
|
4
|
+
* Add all missing scripts and languages: yrl, xnr, wbp, vmw, vec, trw, trv, skr, sdh, quc, pis, pcm, myv, mus, moh, mic, mhn, ltg, lmo, lld, kxv, kpe, kgp, ken, kcg, kaj, jbo, gaa, frr, csw, cic, cho, ceb, cch, cad, bss, blt, Tavt blo, bgn, bgc, rhg, Rohg hnj, Hmnp Shaw, Dsrt bew, bal, arn, apc, ann, scn
|
|
5
|
+
* Drop Python < 3 support (using pyupgrade --py3-plus langtable.py)
|
|
6
|
+
* Fix some ruff and pylint warnings
|
|
7
|
+
|
|
8
|
+
2024-05-07 Mike FABIAN <mfabian@redhat.com>
|
|
9
|
+
|
|
10
|
+
* Fix syntax error in a keyboard layout name for th
|
|
11
|
+
(Resolves: https://github.com/mike-fabian/langtable/issues/21xs)
|
|
12
|
+
* Add mdf
|
|
13
|
+
* Use “in(eng)” keyboard layout instead of “us” for BD to get AltGr enabled
|
|
14
|
+
* Get translation changes from CLDR
|
|
15
|
+
* Add option to include changed translations as well to the script getting translations from CLDR
|
|
16
|
+
* Add reference to the the PyPI package to the README.md.
|
|
17
|
+
And add a README.html and README generated from the README.md.
|
|
18
|
+
* Make test outputs somewhat more verbose, even when all tests pass
|
|
19
|
+
(Resolves: https://github.com/mike-fabian/langtable/pull/20).
|
|
20
|
+
Thanks to Sebastian <seb128@ubuntu.com> for the pull request.
|
|
21
|
+
* Fix Makefile twine-upload target for new authentification
|
|
22
|
+
|
|
1
23
|
2024-02-08 Mike FABIAN <mfabian@redhat.com>
|
|
2
24
|
|
|
3
25
|
* Add wuu, tok, glk, gbm, ssy
|
|
@@ -9,13 +9,13 @@ gzip: langtable/data/keyboards.xml.gz langtable/data/languages.xml.gz langtable/
|
|
|
9
9
|
|
|
10
10
|
.PHONY: test
|
|
11
11
|
test: gzip
|
|
12
|
-
|
|
12
|
+
python3 langtable/langtable.py
|
|
13
13
|
python3 test_cases.py
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
14
|
+
xmllint --noout --relaxng langtable/schemas/keyboards.rng langtable/data/keyboards.xml.gz
|
|
15
|
+
xmllint --noout --relaxng langtable/schemas/languages.rng langtable/data/languages.xml.gz
|
|
16
|
+
xmllint --noout --relaxng langtable/schemas/territories.rng langtable/data/territories.xml.gz
|
|
17
|
+
xmllint --noout --relaxng langtable/schemas/timezones.rng langtable/data/timezones.xml.gz
|
|
18
|
+
xmllint --noout --relaxng langtable/schemas/timezoneidparts.rng langtable/data/timezoneidparts.xml.gz
|
|
19
19
|
|
|
20
20
|
.PHONY: check
|
|
21
21
|
check: test
|
|
@@ -30,6 +30,10 @@ install: dist
|
|
|
30
30
|
DISTUTILS_DEBUG=$(DEBUG) python3 ./setup.py install --prefix=$(DESTDIR)
|
|
31
31
|
# DISTUTILS_DEBUG=$(DEBUG) python3 ./setup.py install_data --install-dir=$(DATADIR)
|
|
32
32
|
|
|
33
|
+
.PHONY: twine-check
|
|
34
|
+
twine-check: dist
|
|
35
|
+
twine check dist/*
|
|
36
|
+
|
|
33
37
|
# check it here: https://test.pypi.org/manage/project/langtable/releases/
|
|
34
38
|
.PHONY: twine-upload-test
|
|
35
39
|
twine-upload-test: dist
|
|
@@ -48,6 +52,9 @@ pip-install-test:
|
|
|
48
52
|
pip-install:
|
|
49
53
|
(cd /tmp; python3 -m pip install --user --ignore-installed --no-cache-dir --no-deps langtable)
|
|
50
54
|
|
|
55
|
+
.PHONY: pip-uninstall
|
|
56
|
+
pip uninstall langtable
|
|
57
|
+
|
|
51
58
|
.PHONY: clean
|
|
52
59
|
clean:
|
|
53
60
|
git clean -dxf
|
|
@@ -76,3 +83,9 @@ review: mockbuild
|
|
|
76
83
|
|
|
77
84
|
rnc: schemas/keyboards.rnc schemas/languages.rnc schemas/territories.rnc schemas/timezones.rnc schemas/timezoneidparts.rnc
|
|
78
85
|
cp schemas/*.rnc data/
|
|
86
|
+
|
|
87
|
+
README: README.html
|
|
88
|
+
w3m -cols 78 -o display_borders=1 -o display_link_number=1 $< > $@
|
|
89
|
+
|
|
90
|
+
README.html: README.md
|
|
91
|
+
pandoc -f gfm -t html --standalone --self-contained --metadata pagetitle="langtable README" $< > $@
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: langtable
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.67
|
|
4
4
|
Summary: guess reasonable defaults for locale, keyboard, territory, ...
|
|
5
5
|
Home-page: https://github.com/mike-fabian/langtable
|
|
6
6
|
Author: Mike FABIAN
|
|
@@ -13,55 +13,52 @@ Classifier: License :: OSI Approved :: GNU General Public License v3 or later (G
|
|
|
13
13
|
Classifier: Operating System :: POSIX :: Linux
|
|
14
14
|
Classifier: Programming Language :: Python
|
|
15
15
|
Classifier: Topic :: System :: Installation/Setup
|
|
16
|
+
Description-Content-Type: text/markdown
|
|
16
17
|
License-File: COPYING
|
|
17
18
|
|
|
18
|
-
|
|
19
|
-
langtable
|
|
20
|
-
======================================================================
|
|
19
|
+
# langtable
|
|
21
20
|
|
|
22
|
-
|
|
23
|
-
=======================
|
|
21
|
+
[](https://badge.fury.io/py/langtable)
|
|
24
22
|
|
|
25
|
-
|
|
26
|
-
territory, …, if part of that information is already known. For
|
|
27
|
-
example, guess the territory and the keyboard layout if the language
|
|
28
|
-
is known or guess the language and keyboard layout if the territory is
|
|
29
|
-
already known.
|
|
23
|
+
Guessing reasonable defaults for locale, keyboard layout, territory, and language.
|
|
30
24
|
|
|
31
|
-
|
|
32
|
-
|
|
25
|
+
## Purpose of this package
|
|
26
|
+
_langtable_ is used to guess reasonable defaults for locale, keyboard, territory, …, if part of that information is already known. For example, guess the territory and the keyboard layout if the language is known or guess the language and keyboard layout if the territory is already known.
|
|
27
|
+
|
|
28
|
+
## License
|
|
33
29
|
|
|
34
30
|
GPLv3+, see the included file “COPYING”.
|
|
35
31
|
|
|
36
|
-
Translations for languages and territory names are from CLDR which is
|
|
37
|
-
governed by the Unicode Terms of Use, see the included file
|
|
38
|
-
“unicode-license.txt”. The short name for this Unicode license is
|
|
39
|
-
“MIT”. See:
|
|
32
|
+
Translations for languages and territory names are from CLDR which is governed by the Unicode Terms of Use, see the included file “unicode-license.txt”. The short name for this Unicode license is “MIT”. See:
|
|
40
33
|
|
|
41
34
|
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
|
|
42
35
|
|
|
43
|
-
Installation
|
|
44
|
-
============
|
|
36
|
+
## Installation
|
|
45
37
|
|
|
46
38
|
To install langtable, run
|
|
47
39
|
|
|
40
|
+
```
|
|
48
41
|
make install DESTDIR=/usr
|
|
42
|
+
```
|
|
49
43
|
|
|
50
44
|
To create a distribution tarball run
|
|
51
|
-
|
|
45
|
+
```
|
|
52
46
|
make dist
|
|
53
|
-
|
|
47
|
+
```
|
|
54
48
|
To run the test cases in the source directory:
|
|
49
|
+
```
|
|
50
|
+
make check
|
|
51
|
+
```
|
|
55
52
|
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
How to use it
|
|
59
|
-
=============
|
|
53
|
+
## How to use it
|
|
60
54
|
|
|
55
|
+
```
|
|
61
56
|
import langtable
|
|
57
|
+
```
|
|
62
58
|
|
|
63
59
|
Functions in the public API:
|
|
64
60
|
|
|
61
|
+
```
|
|
65
62
|
parse_locale()
|
|
66
63
|
list_locales()
|
|
67
64
|
list_keyboards()
|
|
@@ -86,8 +83,8 @@ Functions in the public API:
|
|
|
86
83
|
list_all_scripts()
|
|
87
84
|
list_all_input_methods()
|
|
88
85
|
list_all_console_fonts()
|
|
86
|
+
```
|
|
89
87
|
|
|
90
|
-
Some examples to show the usage are found in the documentation
|
|
91
|
-
of the public functions in langtable.py.
|
|
88
|
+
Some examples to show the usage are found in the documentation of the public functions in `langtable.py`.
|
|
92
89
|
|
|
93
|
-
|
|
90
|
+
Some more examples are in the test cases in the file `test_cases.py`.
|
|
@@ -1,30 +1,29 @@
|
|
|
1
|
-
======================================================================
|
|
2
1
|
langtable
|
|
3
|
-
|
|
2
|
+
|
|
3
|
+
[1]PyPI version
|
|
4
|
+
|
|
5
|
+
Guessing reasonable defaults for locale, keyboard layout, territory, and
|
|
6
|
+
language.
|
|
4
7
|
|
|
5
8
|
Purpose of this package
|
|
6
|
-
=======================
|
|
7
9
|
|
|
8
10
|
langtable is used to guess reasonable defaults for locale, keyboard,
|
|
9
|
-
territory, …, if part of that information is already known. For
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
already known.
|
|
11
|
+
territory, …, if part of that information is already known. For example,
|
|
12
|
+
guess the territory and the keyboard layout if the language is known or guess
|
|
13
|
+
the language and keyboard layout if the territory is already known.
|
|
13
14
|
|
|
14
15
|
License
|
|
15
|
-
=======
|
|
16
16
|
|
|
17
17
|
GPLv3+, see the included file “COPYING”.
|
|
18
18
|
|
|
19
19
|
Translations for languages and territory names are from CLDR which is
|
|
20
20
|
governed by the Unicode Terms of Use, see the included file
|
|
21
|
-
“unicode-license.txt”. The short name for this Unicode license is
|
|
22
|
-
“MIT”. See:
|
|
21
|
+
“unicode-license.txt”. The short name for this Unicode license is “MIT”. See:
|
|
23
22
|
|
|
24
|
-
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#
|
|
23
|
+
[2]https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#
|
|
24
|
+
Modern_Style_without_sublicense_.28Unicode.29
|
|
25
25
|
|
|
26
26
|
Installation
|
|
27
|
-
============
|
|
28
27
|
|
|
29
28
|
To install langtable, run
|
|
30
29
|
|
|
@@ -36,10 +35,9 @@ To create a distribution tarball run
|
|
|
36
35
|
|
|
37
36
|
To run the test cases in the source directory:
|
|
38
37
|
|
|
39
|
-
make
|
|
38
|
+
make check
|
|
40
39
|
|
|
41
40
|
How to use it
|
|
42
|
-
=============
|
|
43
41
|
|
|
44
42
|
import langtable
|
|
45
43
|
|
|
@@ -70,7 +68,13 @@ Functions in the public API:
|
|
|
70
68
|
list_all_input_methods()
|
|
71
69
|
list_all_console_fonts()
|
|
72
70
|
|
|
73
|
-
Some examples to show the usage are found in the documentation
|
|
74
|
-
|
|
71
|
+
Some examples to show the usage are found in the documentation of the public
|
|
72
|
+
functions in langtable.py.
|
|
73
|
+
|
|
74
|
+
Some more examples are in the test cases in the file test_cases.py.
|
|
75
|
+
|
|
76
|
+
|
|
77
|
+
References:
|
|
75
78
|
|
|
76
|
-
|
|
79
|
+
[1] https://badge.fury.io/py/langtable
|
|
80
|
+
[2] https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
|
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html xmlns="http://www.w3.org/1999/xhtml" lang xml:lang>
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="utf-8" />
|
|
5
|
+
<meta name="generator" content="pandoc" />
|
|
6
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0, user-scalable=yes" />
|
|
7
|
+
<title>langtable README</title>
|
|
8
|
+
<style>
|
|
9
|
+
html {
|
|
10
|
+
color: #1a1a1a;
|
|
11
|
+
background-color: #fdfdfd;
|
|
12
|
+
}
|
|
13
|
+
body {
|
|
14
|
+
margin: 0 auto;
|
|
15
|
+
max-width: 36em;
|
|
16
|
+
padding-left: 50px;
|
|
17
|
+
padding-right: 50px;
|
|
18
|
+
padding-top: 50px;
|
|
19
|
+
padding-bottom: 50px;
|
|
20
|
+
hyphens: auto;
|
|
21
|
+
overflow-wrap: break-word;
|
|
22
|
+
text-rendering: optimizeLegibility;
|
|
23
|
+
font-kerning: normal;
|
|
24
|
+
}
|
|
25
|
+
@media (max-width: 600px) {
|
|
26
|
+
body {
|
|
27
|
+
font-size: 0.9em;
|
|
28
|
+
padding: 12px;
|
|
29
|
+
}
|
|
30
|
+
h1 {
|
|
31
|
+
font-size: 1.8em;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
@media print {
|
|
35
|
+
html {
|
|
36
|
+
background-color: white;
|
|
37
|
+
}
|
|
38
|
+
body {
|
|
39
|
+
background-color: transparent;
|
|
40
|
+
color: black;
|
|
41
|
+
font-size: 12pt;
|
|
42
|
+
}
|
|
43
|
+
p, h2, h3 {
|
|
44
|
+
orphans: 3;
|
|
45
|
+
widows: 3;
|
|
46
|
+
}
|
|
47
|
+
h2, h3, h4 {
|
|
48
|
+
page-break-after: avoid;
|
|
49
|
+
}
|
|
50
|
+
}
|
|
51
|
+
p {
|
|
52
|
+
margin: 1em 0;
|
|
53
|
+
}
|
|
54
|
+
a {
|
|
55
|
+
color: #1a1a1a;
|
|
56
|
+
}
|
|
57
|
+
a:visited {
|
|
58
|
+
color: #1a1a1a;
|
|
59
|
+
}
|
|
60
|
+
img {
|
|
61
|
+
max-width: 100%;
|
|
62
|
+
}
|
|
63
|
+
h1, h2, h3, h4, h5, h6 {
|
|
64
|
+
margin-top: 1.4em;
|
|
65
|
+
}
|
|
66
|
+
h5, h6 {
|
|
67
|
+
font-size: 1em;
|
|
68
|
+
font-style: italic;
|
|
69
|
+
}
|
|
70
|
+
h6 {
|
|
71
|
+
font-weight: normal;
|
|
72
|
+
}
|
|
73
|
+
ol, ul {
|
|
74
|
+
padding-left: 1.7em;
|
|
75
|
+
margin-top: 1em;
|
|
76
|
+
}
|
|
77
|
+
li > ol, li > ul {
|
|
78
|
+
margin-top: 0;
|
|
79
|
+
}
|
|
80
|
+
blockquote {
|
|
81
|
+
margin: 1em 0 1em 1.7em;
|
|
82
|
+
padding-left: 1em;
|
|
83
|
+
border-left: 2px solid #e6e6e6;
|
|
84
|
+
color: #606060;
|
|
85
|
+
}
|
|
86
|
+
code {
|
|
87
|
+
font-family: Menlo, Monaco, Consolas, 'Lucida Console', monospace;
|
|
88
|
+
font-size: 85%;
|
|
89
|
+
margin: 0;
|
|
90
|
+
hyphens: manual;
|
|
91
|
+
}
|
|
92
|
+
pre {
|
|
93
|
+
margin: 1em 0;
|
|
94
|
+
overflow: auto;
|
|
95
|
+
}
|
|
96
|
+
pre code {
|
|
97
|
+
padding: 0;
|
|
98
|
+
overflow: visible;
|
|
99
|
+
overflow-wrap: normal;
|
|
100
|
+
}
|
|
101
|
+
.sourceCode {
|
|
102
|
+
background-color: transparent;
|
|
103
|
+
overflow: visible;
|
|
104
|
+
}
|
|
105
|
+
hr {
|
|
106
|
+
background-color: #1a1a1a;
|
|
107
|
+
border: none;
|
|
108
|
+
height: 1px;
|
|
109
|
+
margin: 1em 0;
|
|
110
|
+
}
|
|
111
|
+
table {
|
|
112
|
+
margin: 1em 0;
|
|
113
|
+
border-collapse: collapse;
|
|
114
|
+
width: 100%;
|
|
115
|
+
overflow-x: auto;
|
|
116
|
+
display: block;
|
|
117
|
+
font-variant-numeric: lining-nums tabular-nums;
|
|
118
|
+
}
|
|
119
|
+
table caption {
|
|
120
|
+
margin-bottom: 0.75em;
|
|
121
|
+
}
|
|
122
|
+
tbody {
|
|
123
|
+
margin-top: 0.5em;
|
|
124
|
+
border-top: 1px solid #1a1a1a;
|
|
125
|
+
border-bottom: 1px solid #1a1a1a;
|
|
126
|
+
}
|
|
127
|
+
th {
|
|
128
|
+
border-top: 1px solid #1a1a1a;
|
|
129
|
+
padding: 0.25em 0.5em 0.25em 0.5em;
|
|
130
|
+
}
|
|
131
|
+
td {
|
|
132
|
+
padding: 0.125em 0.5em 0.25em 0.5em;
|
|
133
|
+
}
|
|
134
|
+
header {
|
|
135
|
+
margin-bottom: 4em;
|
|
136
|
+
text-align: center;
|
|
137
|
+
}
|
|
138
|
+
#TOC li {
|
|
139
|
+
list-style: none;
|
|
140
|
+
}
|
|
141
|
+
#TOC ul {
|
|
142
|
+
padding-left: 1.3em;
|
|
143
|
+
}
|
|
144
|
+
#TOC > ul {
|
|
145
|
+
padding-left: 0;
|
|
146
|
+
}
|
|
147
|
+
#TOC a:not(:hover) {
|
|
148
|
+
text-decoration: none;
|
|
149
|
+
}
|
|
150
|
+
code{white-space: pre-wrap;}
|
|
151
|
+
span.smallcaps{font-variant: small-caps;}
|
|
152
|
+
div.columns{display: flex; gap: min(4vw, 1.5em);}
|
|
153
|
+
div.column{flex: auto; overflow-x: auto;}
|
|
154
|
+
div.hanging-indent{margin-left: 1.5em; text-indent: -1.5em;}
|
|
155
|
+
|
|
156
|
+
ul.task-list[class]{list-style: none;}
|
|
157
|
+
ul.task-list li input[type="checkbox"] {
|
|
158
|
+
font-size: inherit;
|
|
159
|
+
width: 0.8em;
|
|
160
|
+
margin: 0 0.8em 0.2em -1.6em;
|
|
161
|
+
vertical-align: middle;
|
|
162
|
+
}
|
|
163
|
+
.display.math{display: block; text-align: center; margin: 0.5rem auto;}
|
|
164
|
+
</style>
|
|
165
|
+
<!--[if lt IE 9]>
|
|
166
|
+
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script>
|
|
167
|
+
<![endif]-->
|
|
168
|
+
</head>
|
|
169
|
+
<body>
|
|
170
|
+
<h1 id="langtable">langtable</h1>
|
|
171
|
+
<p><a href="https://badge.fury.io/py/langtable"><img src="data:image/svg+xml;base64,PHN2ZwogIHdpZHRoPSIxMzIiCiAgaGVpZ2h0PSIyMCIKICB2aWV3Qm94PSIwIDAgMTMyIDIwIgogIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyI+CiAgPGRlZnM+CiAgICA8bGluZWFyR3JhZGllbnQKICAgICAgaWQ9ImEiCiAgICAgIHgxPSIwIgogICAgICB5MT0iMCIKICAgICAgeDI9IjAiCiAgICAgIHkyPSIxIj4KICAgICAgPHN0b3AKICAgICAgICBvZmZzZXQ9IjAiCiAgICAgICAgc3RvcC1jb2xvcj0iI2JiYmJiYiIKICAgICAgICBzdG9wLW9wYWNpdHk9IjAuMSIvPgogICAgICA8c3RvcAogICAgICAgIG9mZnNldD0iMSIKICAgICAgICBzdG9wLWNvbG9yPSIjMDAwMDAwIgogICAgICAgIHN0b3Atb3BhY2l0eT0iMC4xIi8+CiAgICA8L2xpbmVhckdyYWRpZW50PgogIDwvZGVmcz4KICA8cGF0aAogICAgZmlsbD0iIzU1NTU1NSIKICAgIHN0cm9rZT0ibm9uZSIKICAgIGQ9Ik0gMyAwIEwgMTI5IDAgQyAxMzAuNjU2ODYgMCAxMzIgMS4zNDMxNDU3IDEzMiAzIEwgMTMyIDE3IEMgMTMyIDE4LjY1Njg1NSAxMzAuNjU2ODYgMjAgMTI5IDIwIEwgMyAyMCBDIDEuMzQzMTQ1NyAyMCAwIDE4LjY1Njg1NSAwIDE3IEwgMCAzIEMgLTAgMS4zNDMxNDU3IDEuMzQzMTQ1NyAwIDMgMCBaIi8+CiAgPHBhdGgKICAgIGZpbGw9IiM0NGNjMTEiCiAgICBzdHJva2U9Im5vbmUiCiAgICBkPSJNIDg5IDAgTCAxMjkgMCBDIDEzMC42NTY4NiAwIDEzMiAxLjM0MzE0NTcgMTMyIDMgTCAxMzIgMTcgQyAxMzIgMTguNjU2ODU1IDEzMC42NTY4NiAyMCAxMjkgMjAgTCA4OSAyMCBDIDg3LjM0MzE1IDIwIDg2IDE4LjY1Njg1NSA4NiAxNyBMIDg2IDMgQyA4NiAxLjM0MzE0NTcgODcuMzQzMTUgMCA4OSAwIFoiLz4KICA8cGF0aAogICAgZmlsbD0iIzQ0Y2MxMSIKICAgIHN0cm9rZT0ibm9uZSIKICAgIGQ9Ik0gODYgMCBMIDk5IDAgTCA5OSAyMCBMIDg2IDIwIFoiLz4KICA8cGF0aAogICAgZmlsbD0idXJsKCNhKSIKICAgIHN0cm9rZT0ibm9uZSIKICAgIGQ9Ik0gMyAwIEwgMTI5IDAgQyAxMzAuNjU2ODYgMCAxMzIgMS4zNDMxNDU3IDEzMiAzIEwgMTMyIDE3IEMgMTMyIDE4LjY1Njg1NSAxMzAuNjU2ODYgMjAgMTI5IDIwIEwgMyAyMCBDIDEuMzQzMTQ1NyAyMCAwIDE4LjY1Njg1NSAwIDE3IEwgMCAzIEMgLTAgMS4zNDMxNDU3IDEuMzQzMTQ1NyAwIDMgMCBaIi8+CiAgPGc+CiAgICA8ZwogICAgICBpZD0idEJhY2siPgogICAgICA8cGF0aAogICAgICAgIGZpbGw9IiMwMTAxMDEiCiAgICAgICAgZmlsbC1vcGFjaXR5PSIwLjMiCiAgICAgICAgc3Ryb2tlPSIjMDEwMTAxIgogICAgICAgIHN0cm9rZS1vcGFjaXR5PSIwLjA5ODAzOTIyIgogICAgICAgIHN0cm9rZS13aWR0aD0iMC4zIgogICAgICAgIGQ9Ik0gNy45OTI2NzYgMTQuMDk3NjU2IEwgNy45OTI2NzYgMTcuMjg4MDg2IEwgNi45OTkwMjM0IDE3LjI4ODA4NiBMIDYuOTk5MDIzNCA4Ljk4NDM3NSBMIDcuOTkyNjc2IDguOTg0Mzc1IEwgNy45OTI2NzYgOS44OTc0NjEgUSA4LjMwNDE5OSA5LjM2MDM1MiA4Ljc3OTU0MSA5LjA5OTg1MzUgUSA5LjI1NDg4MyA4LjgzOTM1NSA5LjkxNTUyNyA4LjgzOTM1NSBRIDExLjAxMTIzIDguODM5MzU1IDExLjY5NjA0NSA5LjcwOTQ3MyBRIDEyLjM4MDg1OCAxMC41Nzk1OSAxMi4zODA4NTggMTEuOTk3NTU5IFEgMTIuMzgwODU4IDEzLjQxNTUyNyAxMS42OTYwNDUgMTQuMjg1NjQ1IFEgMTEuMDExMjMgMTUuMTU1NzYyIDkuOTE1NTI3IDE1LjE1NTc2MiBRIDkuMjU0ODgzIDE1LjE1NTc2MiA4Ljc3OTU0MSAxNC44OTUyNjQgUSA4LjMwNDE5OSAxNC42MzQ3NjYgNy45OTI2NzYgMTQuMDk3NjU2IFogTSAxMS4zNTQ5Nzk1IDExLjk5NzU1OSBRIDExLjM1NDk3OTUgMTAuOTA3MjI3IDEwLjkwNjQ5NSAxMC4yODY4NjUgUSAxMC40NTgwMDggOS42NjY1MDQgOS42NzM4MjggOS42NjY1MDQgUSA4Ljg4OTY0OCA5LjY2NjUwNCA4LjQ0MTE2MiAxMC4yODY4NjUgUSA3Ljk5MjY3NiAxMC45MDcyMjcgNy45OTI2NzYgMTEuOTk3NTU5IFEgNy45OTI2NzYgMTMuMDg3ODkyIDguNDQxMTYyIDEzLjcwODI1MiBRIDguODg5NjQ4IDE0LjMyODYxMyA5LjY3MzgyOCAxNC4zMjg2MTMgUSAxMC40NTgwMDggMTQuMzI4NjEzIDEwLjkwNjQ5NSAxMy43MDgyNTIgUSAxMS4zNTQ5Nzk1IDEzLjA4Nzg5MiAxMS4zNTQ5Nzk1IDExLjk5NzU1OSBaIE0gMTYuNTIxOTczIDE1LjU1ODU5NCBRIDE2LjEwMzAyNyAxNi42MzI4MTMgMTUuNzA1NTY2IDE2Ljk2MDQ1IFEgMTUuMzA4MTA0NSAxNy4yODgwODYgMTQuNjQyMDkgMTcuMjg4MDg2IEwgMTMuODUyNTM5IDE3LjI4ODA4NiBMIDEzLjg1MjUzOSAxNi40NjA5MzggTCAxNC40MzI2MTcgMTYuNDYwOTM4IFEgMTQuODQwODIgMTYuNDYwOTM4IDE1LjA2NjQwNiAxNi4yNjc1NzggUSAxNS4yOTE5OTIgMTYuMDc0MjE5IDE1LjU2NTkxNyAxNS4zNTQ0OTIgTCAxNS43NDMxNjQgMTQuOTAzMzIgTCAxMy4zMTAwNTkgOC45ODQzNzUgTCAxNC4zNTc0MjIgOC45ODQzNzUgTCAxNi4yMzczMDUgMTMuNjg5NDUzIEwgMTguMTE3MTg4IDguOTg0Mzc1IEwgMTkuMTY0NTUgOC45ODQzNzUgTCAxNi41MjE5NzMgMTUuNTU4NTk0IFogTSAyMS40ODQ4NjMgMTQuMDk3NjU2IEwgMjEuNDg0ODYzIDE3LjI4ODA4NiBMIDIwLjQ5MTIxIDE3LjI4ODA4NiBMIDIwLjQ5MTIxIDguOTg0Mzc1IEwgMjEuNDg0ODYzIDguOTg0Mzc1IEwgMjEuNDg0ODYzIDkuODk3NDYxIFEgMjEuNzk2Mzg5IDkuMzYwMzUyIDIyLjI3MTcyOSA5LjA5OTg1MzUgUSAyMi43NDcwNyA4LjgzOTM1NSAyMy40MDc3MTcgOC44MzkzNTUgUSAyNC41MDM0MTggOC44MzkzNTUgMjUuMTg4MjMyIDkuNzA5NDczIFEgMjUuODczMDQ3IDEwLjU3OTU5IDI1Ljg3MzA0NyAxMS45OTc1NTkgUSAyNS44NzMwNDcgMTMuNDE1NTI3IDI1LjE4ODIzMiAxNC4yODU2NDUgUSAyNC41MDM0MTggMTUuMTU1NzYyIDIzLjQwNzcxNyAxNS4xNTU3NjIgUSAyMi43NDcwNyAxNS4xNTU3NjIgMjIuMjcxNzI5IDE0Ljg5NTI2NCBRIDIxLjc5NjM4OSAxNC42MzQ3NjYgMjEuNDg0ODYzIDE0LjA5NzY1NiBaIE0gMjQuODQ3MTY4IDExLjk5NzU1OSBRIDI0Ljg0NzE2OCAxMC45MDcyMjcgMjQuMzk4NjgyIDEwLjI4Njg2NSBRIDIzLjk1MDE5NSA5LjY2NjUwNCAyMy4xNjYwMTYgOS42NjY1MDQgUSAyMi4zODE4MzYgOS42NjY1MDQgMjEuOTMzMzUgMTAuMjg2ODY1IFEgMjEuNDg0ODYzIDEwLjkwNzIyNyAyMS40ODQ4NjMgMTEuOTk3NTU5IFEgMjEuNDg0ODYzIDEzLjA4Nzg5MiAyMS45MzMzNSAxMy43MDgyNTIgUSAyMi4zODE4MzYgMTQuMzI4NjEzIDIzLjE2NjAxNiAxNC4zMjg2MTMgUSAyMy45NTAxOTUgMTQuMzI4NjEzIDI0LjM5ODY4MiAxMy43MDgyNTIgUSAyNC44NDcxNjggMTMuMDg3ODkyIDI0Ljg0NzE2OCAxMS45OTc1NTkgWiBNIDI3LjUxMTIyOSA4Ljk4NDM3NSBMIDI4LjQ5OTUxMiA4Ljk4NDM3NSBMIDI4LjQ5OTUxMiAxNSBMIDI3LjUxMTIyOSAxNSBMIDI3LjUxMTIyOSA4Ljk4NDM3NSBaIE0gMjcuNTExMjI5IDYuNjQyNTc4IEwgMjguNDk5NTEyIDYuNjQyNTc4IEwgMjguNDk5NTEyIDcuODk0MDQzIEwgMjcuNTExMjI5IDcuODk0MDQzIEwgMjcuNTExMjI5IDYuNjQyNTc4IFogTSAzNS4wMjAwMiAxNC4wOTc2NTYgTCAzNS4wMjAwMiAxNy4yODgwODYgTCAzNC4wMjYzNjcgMTcuMjg4MDg2IEwgMzQuMDI2MzY3IDguOTg0Mzc1IEwgMzUuMDIwMDIgOC45ODQzNzUgTCAzNS4wMjAwMiA5Ljg5NzQ2MSBRIDM1LjMzMTU0MyA5LjM2MDM1MiAzNS44MDY4ODUgOS4wOTk4NTM1IFEgMzYuMjgyMjI3IDguODM5MzU1IDM2Ljk0Mjg3IDguODM5MzU1IFEgMzguMDM4NTc0IDguODM5MzU1IDM4LjcyMzM5IDkuNzA5NDczIFEgMzkuNDA4MjAzIDEwLjU3OTU5IDM5LjQwODIwMyAxMS45OTc1NTkgUSAzOS40MDgyMDMgMTMuNDE1NTI3IDM4LjcyMzM5IDE0LjI4NTY0NSBRIDM4LjAzODU3NCAxNS4xNTU3NjIgMzYuOTQyODcgMTUuMTU1NzYyIFEgMzYuMjgyMjI3IDE1LjE1NTc2MiAzNS44MDY4ODUgMTQuODk1MjY0IFEgMzUuMzMxNTQzIDE0LjYzNDc2NiAzNS4wMjAwMiAxNC4wOTc2NTYgWiBNIDM4LjM4MjMyNCAxMS45OTc1NTkgUSAzOC4zODIzMjQgMTAuOTA3MjI3IDM3LjkzMzgzOCAxMC4yODY4NjUgUSAzNy40ODUzNSA5LjY2NjUwNCAzNi43MDExNyA5LjY2NjUwNCBRIDM1LjkxNjk5MiA5LjY2NjUwNCAzNS40Njg1MDYgMTAuMjg2ODY1IFEgMzUuMDIwMDIgMTAuOTA3MjI3IDM1LjAyMDAyIDExLjk5NzU1OSBRIDM1LjAyMDAyIDEzLjA4Nzg5MiAzNS40Njg1MDYgMTMuNzA4MjUyIFEgMzUuOTE2OTkyIDE0LjMyODYxMyAzNi43MDExNyAxNC4zMjg2MTMgUSAzNy40ODUzNSAxNC4zMjg2MTMgMzcuOTMzODM4IDEzLjcwODI1MiBRIDM4LjM4MjMyNCAxMy4wODc4OTIgMzguMzgyMzI0IDExLjk5NzU1OSBaIE0gNDMuNzgwMjczIDExLjk3NjA3NCBRIDQyLjU4MjUyIDExLjk3NjA3NCA0Mi4xMjA2MDUgMTIuMjQ5OTk5IFEgNDEuNjU4NjkgMTIuNTIzOTI2IDQxLjY1ODY5IDEzLjE4NDU3MSBRIDQxLjY1ODY5IDEzLjcxMDkzNzUgNDIuMDA1MTI3IDE0LjAxOTc3NiBRIDQyLjM1MTU2MyAxNC4zMjg2MTMgNDIuOTQ3NzU0IDE0LjMyODYxMyBRIDQzLjc2OTUzNSAxNC4zMjg2MTMgNDQuMjY2MzU3IDEzLjc0NTg1IFEgNDQuNzYzMTg0IDEzLjE2MzA4NiA0NC43NjMxODQgMTIuMTk2Mjg5IEwgNDQuNzYzMTg0IDExLjk3NjA3NCBMIDQzLjc4MDI3MyAxMS45NzYwNzQgWiBNIDQ1Ljc1MTQ2NSAxMS41Njc4NzEgTCA0NS43NTE0NjUgMTUgTCA0NC43NjMxODQgMTUgTCA0NC43NjMxODQgMTQuMDg2OTE1IFEgNDQuNDI0ODA1IDE0LjYzNDc2NiA0My45MTk5MiAxNC44OTUyNjQgUSA0My40MTUwNCAxNS4xNTU3NjIgNDIuNjg0NTcgMTUuMTU1NzYyIFEgNDEuNzYwNzQyIDE1LjE1NTc2MiA0MS4yMTU1NzYgMTQuNjM3NDUxIFEgNDAuNjcwNDEgMTQuMTE5MTQyIDQwLjY3MDQxIDEzLjI0OTAyNCBRIDQwLjY3MDQxIDEyLjIzMzg4NyA0MS4zNDk4NTQgMTEuNzE4MjYyIFEgNDIuMDI5Mjk3IDExLjIwMjYzNyA0My4zNzc0NDUgMTEuMjAyNjM3IEwgNDQuNzYzMTg0IDExLjIwMjYzNyBMIDQ0Ljc2MzE4NCAxMS4xMDU5NTcgUSA0NC43NjMxODQgMTAuNDIzODI4IDQ0LjMxNDY5NyAxMC4wNTA1MzcgUSA0My44NjYyMSA5LjY3NzI0NiA0My4wNTUxNzYgOS42NzcyNDYgUSA0Mi41Mzk1NSA5LjY3NzI0NiA0Mi4wNTA3OCA5LjgwMDc4MSBRIDQxLjU2MjAxIDkuOTI0MzE2IDQxLjExMDg0IDEwLjE3MTM4NyBMIDQxLjExMDg0IDkuMjU4MzAxIFEgNDEuNjUzMzIgOS4wNDg4MjggNDIuMTYzNTc0IDguOTQ0MDkyIFEgNDIuNjczODMgOC44MzkzNTUgNDMuMTU3MjI3IDguODM5MzU1IFEgNDQuNDYyNDAyIDguODM5MzU1IDQ1LjEwNjkzNCA5LjUxNjExMyBRIDQ1Ljc1MTQ2NSAxMC4xOTI4NzEgNDUuNzUxNDY1IDExLjU2Nzg3MSBaIE0gNTIuMTE2MjA3IDkuMjE1MzMyIEwgNTIuMTE2MjA3IDEwLjEzOTE2IFEgNTEuNjk3MjY2IDkuOTA4MjAzIDUxLjI3NTYzIDkuNzkyNzI1IFEgNTAuODU0MDA0IDkuNjc3MjQ2IDUwLjQyNDMxNiA5LjY3NzI0NiBRIDQ5LjQ2Mjg5IDkuNjc3MjQ2IDQ4LjkzMTE1MiAxMC4yODY4NjUgUSA0OC4zOTk0MTggMTAuODk2NDgzIDQ4LjM5OTQxOCAxMS45OTc1NTkgUSA0OC4zOTk0MTggMTMuMDk4NjMzIDQ4LjkzMTE1MiAxMy43MDgyNTIgUSA0OS40NjI4OSAxNC4zMTc4NzEgNTAuNDI0MzE2IDE0LjMxNzg3MSBRIDUwLjg1NDAwNCAxNC4zMTc4NzEgNTEuMjc1NjMgMTQuMjAyMzkzIFEgNTEuNjk3MjY2IDE0LjA4NjkxNSA1Mi4xMTYyMDcgMTMuODU1OTU2IEwgNTIuMTE2MjA3IDE0Ljc2OTA0MyBRIDUxLjcwMjYzNyAxNC45NjI0MDIgNTEuMjU5NTIgMTUuMDU5MDgyIFEgNTAuODE2NDA2IDE1LjE1NTc2MiA1MC4zMTY4OSAxNS4xNTU3NjIgUSA0OC45NTgwMDggMTUuMTU1NzYyIDQ4LjE1NzcxNSAxNC4zMDE3NTggUSA0Ny4zNTc0MTggMTMuNDQ3NzU0IDQ3LjM1NzQxOCAxMS45OTc1NTkgUSA0Ny4zNTc0MTggMTAuNTI1ODc5IDQ4LjE2NTc3IDkuNjgyNjE3IFEgNDguOTc0MTIgOC44MzkzNTUgNTAuMzgxMzQ4IDguODM5MzU1IFEgNTAuODM3ODk0IDguODM5MzU1IDUxLjI3Mjk1IDguOTMzMzUgUSA1MS43MDgwMDggOS4wMjczNDQgNTIuMTE2MjA3IDkuMjE1MzMyIFogTSA1My43OTczNjcgNi42NDI1NzggTCA1NC43OTEwMTYgNi42NDI1NzggTCA1NC43OTEwMTYgMTEuNTc4NjE0IEwgNTcuNzM5NzQ2IDguOTg0Mzc1IEwgNTkuMDAxOTUzIDguOTg0Mzc1IEwgNTUuODExNTIzIDExLjc5ODgyNyBMIDU5LjEzNjIzIDE1IEwgNTcuODQ3MTY4IDE1IEwgNTQuNzkxMDE2IDEyLjA2MjAxMiBMIDU0Ljc5MTAxNiAxNSBMIDUzLjc5NzM2NyAxNSBMIDUzLjc5NzM2NyA2LjY0MjU3OCBaIE0gNjIuNzQ1NjA1IDExLjk3NjA3NCBRIDYxLjU0Nzg1IDExLjk3NjA3NCA2MS4wODU5MzggMTIuMjQ5OTk5IFEgNjAuNjI0MDI3IDEyLjUyMzkyNiA2MC42MjQwMjcgMTMuMTg0NTcxIFEgNjAuNjI0MDI3IDEzLjcxMDkzNzUgNjAuOTcwNDYgMTQuMDE5Nzc2IFEgNjEuMzE2ODk1IDE0LjMyODYxMyA2MS45MTMwOSAxNC4zMjg2MTMgUSA2Mi43MzQ4NjMgMTQuMzI4NjEzIDYzLjIzMTY5IDEzLjc0NTg1IFEgNjMuNzI4NTE2IDEzLjE2MzA4NiA2My43Mjg1MTYgMTIuMTk2Mjg5IEwgNjMuNzI4NTE2IDExLjk3NjA3NCBMIDYyLjc0NTYwNSAxMS45NzYwNzQgWiBNIDY0LjcxNjggMTEuNTY3ODcxIEwgNjQuNzE2OCAxNSBMIDYzLjcyODUxNiAxNSBMIDYzLjcyODUxNiAxNC4wODY5MTUgUSA2My4zOTAxMzcgMTQuNjM0NzY2IDYyLjg4NTI1NCAxNC44OTUyNjQgUSA2Mi4zODAzNyAxNS4xNTU3NjIgNjEuNjQ5OTA2IDE1LjE1NTc2MiBRIDYwLjcyNjA3NCAxNS4xNTU3NjIgNjAuMTgwOTEgMTQuNjM3NDUxIFEgNTkuNjM1NzQyIDE0LjExOTE0MiA1OS42MzU3NDIgMTMuMjQ5MDI0IFEgNTkuNjM1NzQyIDEyLjIzMzg4NyA2MC4zMTUxODYgMTEuNzE4MjYyIFEgNjAuOTk0NjI1IDExLjIwMjYzNyA2Mi4zNDI3NzMgMTEuMjAyNjM3IEwgNjMuNzI4NTE2IDExLjIwMjYzNyBMIDYzLjcyODUxNiAxMS4xMDU5NTcgUSA2My43Mjg1MTYgMTAuNDIzODI4IDYzLjI4MDAzIDEwLjA1MDUzNyBRIDYyLjgzMTU0MyA5LjY3NzI0NiA2Mi4wMjA1MDQgOS42NzcyNDYgUSA2MS41MDQ4OCA5LjY3NzI0NiA2MS4wMTYxMTcgOS44MDA3ODEgUSA2MC41MjczNDQgOS45MjQzMTYgNjAuMDc2MTcgMTAuMTcxMzg3IEwgNjAuMDc2MTcgOS4yNTgzMDEgUSA2MC42MTg2NTYgOS4wNDg4MjggNjEuMTI4OTEgOC45NDQwOTIgUSA2MS42MzkxNTYgOC44MzkzNTUgNjIuMTIyNTYgOC44MzkzNTUgUSA2My40Mjc3MzQgOC44MzkzNTUgNjQuMDcyMjY2IDkuNTE2MTEzIFEgNjQuNzE2OCAxMC4xOTI4NzEgNjQuNzE2OCAxMS41Njc4NzEgWiBNIDcwLjcxMDk0IDExLjkyMjM2MyBRIDcwLjcxMDk0IDEwLjg0ODE0NSA3MC4yNjc4MiAxMC4yNTczMjQgUSA2OS44MjQ3MSA5LjY2NjUwNCA2OS4wMjQ0MTQgOS42NjY1MDQgUSA2OC4yMjk0OSA5LjY2NjUwNCA2Ny43ODYzOCAxMC4yNTczMjQgUSA2Ny4zNDMyNiAxMC44NDgxNDUgNjcuMzQzMjYgMTEuOTIyMzYzIFEgNjcuMzQzMjYgMTIuOTkxMjEyIDY3Ljc4NjM4IDEzLjU4MjAzMSBRIDY4LjIyOTQ5IDE0LjE3Mjg1MiA2OS4wMjQ0MTQgMTQuMTcyODUyIFEgNjkuODI0NzEgMTQuMTcyODUyIDcwLjI2NzgyIDEzLjU4MjAzMSBRIDcwLjcxMDk0IDEyLjk5MTIxMiA3MC43MTA5NCAxMS45MjIzNjMgWiBNIDcxLjY5OTIyIDE0LjI1MzQxOCBRIDcxLjY5OTIyIDE1Ljc4OTU1MiA3MS4wMTcwOSAxNi41Mzg4MTggUSA3MC4zMzQ5NiAxNy4yODgwODYgNjguOTI3NzM0IDE3LjI4ODA4NiBRIDY4LjQwNjc0IDE3LjI4ODA4NiA2Ny45NDQ4MjQgMTcuMjEwMjA1IFEgNjcuNDgyOTEgMTcuMTMyMzI0IDY3LjA0Nzg1IDE2Ljk3MTE5MSBMIDY3LjA0Nzg1IDE2LjAwOTc2NiBRIDY3LjQ4MjkxIDE2LjI0NjA5NCA2Ny45MDcyMyAxNi4zNTg4ODcgUSA2OC4zMzE1NCAxNi40NzE2OCA2OC43NzE5NyAxNi40NzE2OCBRIDY5Ljc0NDE0IDE2LjQ3MTY4IDcwLjIyNzU0IDE1Ljk2NDExMSBRIDcwLjcxMDk0IDE1LjQ1NjU0MyA3MC43MTA5NCAxNC40MzA2NjQgTCA3MC43MTA5NCAxMy45NDE4OTUgUSA3MC40MDQ3ODUgMTQuNDczNjMzIDY5LjkyNjc2IDE0LjczNjgxNiBRIDY5LjQ0ODczIDE1IDY4Ljc4MjcxNSAxNSBRIDY3LjY3NjI3IDE1IDY2Ljk5OTUxIDE0LjE1NjczOCBRIDY2LjMyMjc1NCAxMy4zMTM0Nzc1IDY2LjMyMjc1NCAxMS45MjIzNjMgUSA2Ni4zMjI3NTQgMTAuNTI1ODc5IDY2Ljk5OTUxIDkuNjgyNjE3IFEgNjcuNjc2MjcgOC44MzkzNTUgNjguNzgyNzE1IDguODM5MzU1IFEgNjkuNDQ4NzMgOC44MzkzNTUgNjkuOTI2NzYgOS4xMDI1MzkgUSA3MC40MDQ3ODUgOS4zNjU3MjMgNzAuNzEwOTQgOS44OTc0NjEgTCA3MC43MTA5NCA4Ljk4NDM3NSBMIDcxLjY5OTIyIDguOTg0Mzc1IEwgNzEuNjk5MjIgMTQuMjUzNDE4IFogTSA3OC44ODAzNyAxMS43NDUxMTcgTCA3OC44ODAzNyAxMi4yMjg1MTYgTCA3NC4zMzY0MjYgMTIuMjI4NTE2IFEgNzQuNDAwODggMTMuMjQ5MDI0IDc0Ljk1MTQxNiAxMy43ODM0NDcgUSA3NS41MDE5NSAxNC4zMTc4NzEgNzYuNDg0ODYgMTQuMzE3ODcxIFEgNzcuMDU0MiAxNC4zMTc4NzEgNzcuNTg4NjIgMTQuMTc4MjIyIFEgNzguMTIzMDUgMTQuMDM4NTc0IDc4LjY0OTQxNCAxMy43NTkyNzYgTCA3OC42NDk0MTQgMTQuNjkzODQ3IFEgNzguMTE3Njc2IDE0LjkxOTQzMyA3Ny41NTkwOCAxNS4wMzc1OTggUSA3Ny4wMDA0OSAxNS4xNTU3NjIgNzYuNDI1NzggMTUuMTU1NzYyIFEgNzQuOTg2MzMgMTUuMTU1NzYyIDc0LjE0NTc1IDE0LjMxNzg3MSBRIDczLjMwNTE3NiAxMy40Nzk5OCA3My4zMDUxNzYgMTIuMDUxMjcgUSA3My4zMDUxNzYgMTAuNTc0MjE5IDc0LjEwMjc4IDkuNzA2Nzg3IFEgNzQuOTAwMzkgOC44MzkzNTUgNzYuMjUzOTEgOC44MzkzNTUgUSA3Ny40Njc3NyA4LjgzOTM1NSA3OC4xNzQwNyA5LjYyMDg1IFEgNzguODgwMzcgMTAuNDAyMzQ0IDc4Ljg4MDM3IDExLjc0NTExNyBaIE0gNzcuODkyMDkgMTEuNDU1MDc4IFEgNzcuODgxMzUgMTAuNjQ0MDQzIDc3LjQzODIzIDEwLjE2MDY0NSBRIDc2Ljk5NTEyIDkuNjc3MjQ2IDc2LjI2NDY1IDkuNjc3MjQ2IFEgNzUuNDM3NSA5LjY3NzI0NiA3NC45NDA2NzQgMTAuMTQ0NTMxIFEgNzQuNDQzODUgMTAuNjExODE2IDc0LjM2ODY1IDExLjQ2MDQ0OSBMIDc3Ljg5MjA5IDExLjQ1NTA3OCBaIi8+CiAgICA8L2c+CiAgICA8ZwogICAgICBpZD0idFRleHQiPgogICAgICA8cGF0aAogICAgICAgIGZpbGw9IiNmZmZmZmYiCiAgICAgICAgc3Ryb2tlPSIjZmZmZmZmIgogICAgICAgIHN0cm9rZS13aWR0aD0iMC4zIgogICAgICAgIGQ9Ik0gNy45OTI2NzYgMTMuMDk3NjU2IEwgNy45OTI2NzYgMTYuMjg4MDg2IEwgNi45OTkwMjM0IDE2LjI4ODA4NiBMIDYuOTk5MDIzNCA3Ljk4NDM3NSBMIDcuOTkyNjc2IDcuOTg0Mzc1IEwgNy45OTI2NzYgOC44OTc0NjEgUSA4LjMwNDE5OSA4LjM2MDM1MiA4Ljc3OTU0MSA4LjA5OTg1MzUgUSA5LjI1NDg4MyA3LjgzOTM1NTUgOS45MTU1MjcgNy44MzkzNTU1IFEgMTEuMDExMjMgNy44MzkzNTU1IDExLjY5NjA0NSA4LjcwOTQ3MyBRIDEyLjM4MDg1OCA5LjU3OTU5IDEyLjM4MDg1OCAxMC45OTc1NTkgUSAxMi4zODA4NTggMTIuNDE1NTI3IDExLjY5NjA0NSAxMy4yODU2NDUgUSAxMS4wMTEyMyAxNC4xNTU3NjIgOS45MTU1MjcgMTQuMTU1NzYyIFEgOS4yNTQ4ODMgMTQuMTU1NzYyIDguNzc5NTQxIDEzLjg5NTI2NCBRIDguMzA0MTk5IDEzLjYzNDc2NiA3Ljk5MjY3NiAxMy4wOTc2NTYgWiBNIDExLjM1NDk3OTUgMTAuOTk3NTU5IFEgMTEuMzU0OTc5NSA5LjkwNzIyNyAxMC45MDY0OTUgOS4yODY4NjUgUSAxMC40NTgwMDggOC42NjY1MDQgOS42NzM4MjggOC42NjY1MDQgUSA4Ljg4OTY0OCA4LjY2NjUwNCA4LjQ0MTE2MiA5LjI4Njg2NSBRIDcuOTkyNjc2IDkuOTA3MjI3IDcuOTkyNjc2IDEwLjk5NzU1OSBRIDcuOTkyNjc2IDEyLjA4Nzg5MiA4LjQ0MTE2MiAxMi43MDgyNTIgUSA4Ljg4OTY0OCAxMy4zMjg2MTMgOS42NzM4MjggMTMuMzI4NjEzIFEgMTAuNDU4MDA4IDEzLjMyODYxMyAxMC45MDY0OTUgMTIuNzA4MjUyIFEgMTEuMzU0OTc5NSAxMi4wODc4OTIgMTEuMzU0OTc5NSAxMC45OTc1NTkgWiBNIDE2LjUyMTk3MyAxNC41NTg1OTQgUSAxNi4xMDMwMjcgMTUuNjMyODEyNSAxNS43MDU1NjYgMTUuOTYwNDQ5IFEgMTUuMzA4MTA0NSAxNi4yODgwODYgMTQuNjQyMDkgMTYuMjg4MDg2IEwgMTMuODUyNTM5IDE2LjI4ODA4NiBMIDEzLjg1MjUzOSAxNS40NjA5MzcgTCAxNC40MzI2MTcgMTUuNDYwOTM3IFEgMTQuODQwODIgMTUuNDYwOTM3IDE1LjA2NjQwNiAxNS4yNjc1NzcgUSAxNS4yOTE5OTIgMTUuMDc0MjE4IDE1LjU2NTkxNyAxNC4zNTQ0OTIgTCAxNS43NDMxNjQgMTMuOTAzMzIgTCAxMy4zMTAwNTkgNy45ODQzNzUgTCAxNC4zNTc0MjIgNy45ODQzNzUgTCAxNi4yMzczMDUgMTIuNjg5NDUzIEwgMTguMTE3MTg4IDcuOTg0Mzc1IEwgMTkuMTY0NTUgNy45ODQzNzUgTCAxNi41MjE5NzMgMTQuNTU4NTk0IFogTSAyMS40ODQ4NjMgMTMuMDk3NjU2IEwgMjEuNDg0ODYzIDE2LjI4ODA4NiBMIDIwLjQ5MTIxIDE2LjI4ODA4NiBMIDIwLjQ5MTIxIDcuOTg0Mzc1IEwgMjEuNDg0ODYzIDcuOTg0Mzc1IEwgMjEuNDg0ODYzIDguODk3NDYxIFEgMjEuNzk2Mzg5IDguMzYwMzUyIDIyLjI3MTcyOSA4LjA5OTg1MzUgUSAyMi43NDcwNyA3LjgzOTM1NTUgMjMuNDA3NzE3IDcuODM5MzU1NSBRIDI0LjUwMzQxOCA3LjgzOTM1NTUgMjUuMTg4MjMyIDguNzA5NDczIFEgMjUuODczMDQ3IDkuNTc5NTkgMjUuODczMDQ3IDEwLjk5NzU1OSBRIDI1Ljg3MzA0NyAxMi40MTU1MjcgMjUuMTg4MjMyIDEzLjI4NTY0NSBRIDI0LjUwMzQxOCAxNC4xNTU3NjIgMjMuNDA3NzE3IDE0LjE1NTc2MiBRIDIyLjc0NzA3IDE0LjE1NTc2MiAyMi4yNzE3MjkgMTMuODk1MjY0IFEgMjEuNzk2Mzg5IDEzLjYzNDc2NiAyMS40ODQ4NjMgMTMuMDk3NjU2IFogTSAyNC44NDcxNjggMTAuOTk3NTU5IFEgMjQuODQ3MTY4IDkuOTA3MjI3IDI0LjM5ODY4MiA5LjI4Njg2NSBRIDIzLjk1MDE5NSA4LjY2NjUwNCAyMy4xNjYwMTYgOC42NjY1MDQgUSAyMi4zODE4MzYgOC42NjY1MDQgMjEuOTMzMzUgOS4yODY4NjUgUSAyMS40ODQ4NjMgOS45MDcyMjcgMjEuNDg0ODYzIDEwLjk5NzU1OSBRIDIxLjQ4NDg2MyAxMi4wODc4OTIgMjEuOTMzMzUgMTIuNzA4MjUyIFEgMjIuMzgxODM2IDEzLjMyODYxMyAyMy4xNjYwMTYgMTMuMzI4NjEzIFEgMjMuOTUwMTk1IDEzLjMyODYxMyAyNC4zOTg2ODIgMTIuNzA4MjUyIFEgMjQuODQ3MTY4IDEyLjA4Nzg5MiAyNC44NDcxNjggMTAuOTk3NTU5IFogTSAyNy41MTEyMjkgNy45ODQzNzUgTCAyOC40OTk1MTIgNy45ODQzNzUgTCAyOC40OTk1MTIgMTQgTCAyNy41MTEyMjkgMTQgTCAyNy41MTEyMjkgNy45ODQzNzUgWiBNIDI3LjUxMTIyOSA1LjY0MjU3OCBMIDI4LjQ5OTUxMiA1LjY0MjU3OCBMIDI4LjQ5OTUxMiA2Ljg5NDA0MyBMIDI3LjUxMTIyOSA2Ljg5NDA0MyBMIDI3LjUxMTIyOSA1LjY0MjU3OCBaIE0gMzUuMDIwMDIgMTMuMDk3NjU2IEwgMzUuMDIwMDIgMTYuMjg4MDg2IEwgMzQuMDI2MzY3IDE2LjI4ODA4NiBMIDM0LjAyNjM2NyA3Ljk4NDM3NSBMIDM1LjAyMDAyIDcuOTg0Mzc1IEwgMzUuMDIwMDIgOC44OTc0NjEgUSAzNS4zMzE1NDMgOC4zNjAzNTIgMzUuODA2ODg1IDguMDk5ODUzNSBRIDM2LjI4MjIyNyA3LjgzOTM1NTUgMzYuOTQyODcgNy44MzkzNTU1IFEgMzguMDM4NTc0IDcuODM5MzU1NSAzOC43MjMzOSA4LjcwOTQ3MyBRIDM5LjQwODIwMyA5LjU3OTU5IDM5LjQwODIwMyAxMC45OTc1NTkgUSAzOS40MDgyMDMgMTIuNDE1NTI3IDM4LjcyMzM5IDEzLjI4NTY0NSBRIDM4LjAzODU3NCAxNC4xNTU3NjIgMzYuOTQyODcgMTQuMTU1NzYyIFEgMzYuMjgyMjI3IDE0LjE1NTc2MiAzNS44MDY4ODUgMTMuODk1MjY0IFEgMzUuMzMxNTQzIDEzLjYzNDc2NiAzNS4wMjAwMiAxMy4wOTc2NTYgWiBNIDM4LjM4MjMyNCAxMC45OTc1NTkgUSAzOC4zODIzMjQgOS45MDcyMjcgMzcuOTMzODM4IDkuMjg2ODY1IFEgMzcuNDg1MzUgOC42NjY1MDQgMzYuNzAxMTcgOC42NjY1MDQgUSAzNS45MTY5OTIgOC42NjY1MDQgMzUuNDY4NTA2IDkuMjg2ODY1IFEgMzUuMDIwMDIgOS45MDcyMjcgMzUuMDIwMDIgMTAuOTk3NTU5IFEgMzUuMDIwMDIgMTIuMDg3ODkyIDM1LjQ2ODUwNiAxMi43MDgyNTIgUSAzNS45MTY5OTIgMTMuMzI4NjEzIDM2LjcwMTE3IDEzLjMyODYxMyBRIDM3LjQ4NTM1IDEzLjMyODYxMyAzNy45MzM4MzggMTIuNzA4MjUyIFEgMzguMzgyMzI0IDEyLjA4Nzg5MiAzOC4zODIzMjQgMTAuOTk3NTU5IFogTSA0My43ODAyNzMgMTAuOTc2MDc0IFEgNDIuNTgyNTIgMTAuOTc2MDc0IDQyLjEyMDYwNSAxMS4yNDk5OTkgUSA0MS42NTg2OSAxMS41MjM5MjYgNDEuNjU4NjkgMTIuMTg0NTcxIFEgNDEuNjU4NjkgMTIuNzEwOTM3NSA0Mi4wMDUxMjcgMTMuMDE5Nzc2IFEgNDIuMzUxNTYzIDEzLjMyODYxMyA0Mi45NDc3NTQgMTMuMzI4NjEzIFEgNDMuNzY5NTM1IDEzLjMyODYxMyA0NC4yNjYzNTcgMTIuNzQ1ODUgUSA0NC43NjMxODQgMTIuMTYzMDg2IDQ0Ljc2MzE4NCAxMS4xOTYyODkgTCA0NC43NjMxODQgMTAuOTc2MDc0IEwgNDMuNzgwMjczIDEwLjk3NjA3NCBaIE0gNDUuNzUxNDY1IDEwLjU2Nzg3MSBMIDQ1Ljc1MTQ2NSAxNCBMIDQ0Ljc2MzE4NCAxNCBMIDQ0Ljc2MzE4NCAxMy4wODY5MTUgUSA0NC40MjQ4MDUgMTMuNjM0NzY2IDQzLjkxOTkyIDEzLjg5NTI2NCBRIDQzLjQxNTA0IDE0LjE1NTc2MiA0Mi42ODQ1NyAxNC4xNTU3NjIgUSA0MS43NjA3NDIgMTQuMTU1NzYyIDQxLjIxNTU3NiAxMy42Mzc0NTEgUSA0MC42NzA0MSAxMy4xMTkxNDIgNDAuNjcwNDEgMTIuMjQ5MDI0IFEgNDAuNjcwNDEgMTEuMjMzODg3IDQxLjM0OTg1NCAxMC43MTgyNjIgUSA0Mi4wMjkyOTcgMTAuMjAyNjM3IDQzLjM3NzQ0NSAxMC4yMDI2MzcgTCA0NC43NjMxODQgMTAuMjAyNjM3IEwgNDQuNzYzMTg0IDEwLjEwNTk1NyBRIDQ0Ljc2MzE4NCA5LjQyMzgyOCA0NC4zMTQ2OTcgOS4wNTA1MzcgUSA0My44NjYyMSA4LjY3NzI0NiA0My4wNTUxNzYgOC42NzcyNDYgUSA0Mi41Mzk1NSA4LjY3NzI0NiA0Mi4wNTA3OCA4LjgwMDc4MSBRIDQxLjU2MjAxIDguOTI0MzE2IDQxLjExMDg0IDkuMTcxMzg3IEwgNDEuMTEwODQgOC4yNTgzMDEgUSA0MS42NTMzMiA4LjA0ODgyOCA0Mi4xNjM1NzQgNy45NDQwOTEzIFEgNDIuNjczODMgNy44MzkzNTU1IDQzLjE1NzIyNyA3LjgzOTM1NTUgUSA0NC40NjI0MDIgNy44MzkzNTU1IDQ1LjEwNjkzNCA4LjUxNjExMyBRIDQ1Ljc1MTQ2NSA5LjE5Mjg3MSA0NS43NTE0NjUgMTAuNTY3ODcxIFogTSA1Mi4xMTYyMDcgOC4yMTUzMzIgTCA1Mi4xMTYyMDcgOS4xMzkxNiBRIDUxLjY5NzI2NiA4LjkwODIwMyA1MS4yNzU2MyA4Ljc5MjcyNSBRIDUwLjg1NDAwNCA4LjY3NzI0NiA1MC40MjQzMTYgOC42NzcyNDYgUSA0OS40NjI4OSA4LjY3NzI0NiA0OC45MzExNTIgOS4yODY4NjUgUSA0OC4zOTk0MTggOS44OTY0ODQgNDguMzk5NDE4IDEwLjk5NzU1OSBRIDQ4LjM5OTQxOCAxMi4wOTg2MzMgNDguOTMxMTUyIDEyLjcwODI1MiBRIDQ5LjQ2Mjg5IDEzLjMxNzg3MSA1MC40MjQzMTYgMTMuMzE3ODcxIFEgNTAuODU0MDA0IDEzLjMxNzg3MSA1MS4yNzU2MyAxMy4yMDIzOTMgUSA1MS42OTcyNjYgMTMuMDg2OTE1IDUyLjExNjIwNyAxMi44NTU5NTYgTCA1Mi4xMTYyMDcgMTMuNzY5MDQzIFEgNTEuNzAyNjM3IDEzLjk2MjQwMiA1MS4yNTk1MiAxNC4wNTkwODIgUSA1MC44MTY0MDYgMTQuMTU1NzYyIDUwLjMxNjg5IDE0LjE1NTc2MiBRIDQ4Ljk1ODAwOCAxNC4xNTU3NjIgNDguMTU3NzE1IDEzLjMwMTc1OCBRIDQ3LjM1NzQxOCAxMi40NDc3NTQgNDcuMzU3NDE4IDEwLjk5NzU1OSBRIDQ3LjM1NzQxOCA5LjUyNTg3OSA0OC4xNjU3NyA4LjY4MjYxNyBRIDQ4Ljk3NDEyIDcuODM5MzU1NSA1MC4zODEzNDggNy44MzkzNTU1IFEgNTAuODM3ODk0IDcuODM5MzU1NSA1MS4yNzI5NSA3LjkzMzM0OTYgUSA1MS43MDgwMDggOC4wMjczNDQgNTIuMTE2MjA3IDguMjE1MzMyIFogTSA1My43OTczNjcgNS42NDI1NzggTCA1NC43OTEwMTYgNS42NDI1NzggTCA1NC43OTEwMTYgMTAuNTc4NjEzIEwgNTcuNzM5NzQ2IDcuOTg0Mzc1IEwgNTkuMDAxOTUzIDcuOTg0Mzc1IEwgNTUuODExNTIzIDEwLjc5ODgyNyBMIDU5LjEzNjIzIDE0IEwgNTcuODQ3MTY4IDE0IEwgNTQuNzkxMDE2IDExLjA2MjAxMiBMIDU0Ljc5MTAxNiAxNCBMIDUzLjc5NzM2NyAxNCBMIDUzLjc5NzM2NyA1LjY0MjU3OCBaIE0gNjIuNzQ1NjA1IDEwLjk3NjA3NCBRIDYxLjU0Nzg1IDEwLjk3NjA3NCA2MS4wODU5MzggMTEuMjQ5OTk5IFEgNjAuNjI0MDI3IDExLjUyMzkyNiA2MC42MjQwMjcgMTIuMTg0NTcxIFEgNjAuNjI0MDI3IDEyLjcxMDkzNzUgNjAuOTcwNDYgMTMuMDE5Nzc2IFEgNjEuMzE2ODk1IDEzLjMyODYxMyA2MS45MTMwOSAxMy4zMjg2MTMgUSA2Mi43MzQ4NjMgMTMuMzI4NjEzIDYzLjIzMTY5IDEyLjc0NTg1IFEgNjMuNzI4NTE2IDEyLjE2MzA4NiA2My43Mjg1MTYgMTEuMTk2Mjg5IEwgNjMuNzI4NTE2IDEwLjk3NjA3NCBMIDYyLjc0NTYwNSAxMC45NzYwNzQgWiBNIDY0LjcxNjggMTAuNTY3ODcxIEwgNjQuNzE2OCAxNCBMIDYzLjcyODUxNiAxNCBMIDYzLjcyODUxNiAxMy4wODY5MTUgUSA2My4zOTAxMzcgMTMuNjM0NzY2IDYyLjg4NTI1NCAxMy44OTUyNjQgUSA2Mi4zODAzNyAxNC4xNTU3NjIgNjEuNjQ5OTA2IDE0LjE1NTc2MiBRIDYwLjcyNjA3NCAxNC4xNTU3NjIgNjAuMTgwOTEgMTMuNjM3NDUxIFEgNTkuNjM1NzQyIDEzLjExOTE0MiA1OS42MzU3NDIgMTIuMjQ5MDI0IFEgNTkuNjM1NzQyIDExLjIzMzg4NyA2MC4zMTUxODYgMTAuNzE4MjYyIFEgNjAuOTk0NjI1IDEwLjIwMjYzNyA2Mi4zNDI3NzMgMTAuMjAyNjM3IEwgNjMuNzI4NTE2IDEwLjIwMjYzNyBMIDYzLjcyODUxNiAxMC4xMDU5NTcgUSA2My43Mjg1MTYgOS40MjM4MjggNjMuMjgwMDMgOS4wNTA1MzcgUSA2Mi44MzE1NDMgOC42NzcyNDYgNjIuMDIwNTA0IDguNjc3MjQ2IFEgNjEuNTA0ODggOC42NzcyNDYgNjEuMDE2MTE3IDguODAwNzgxIFEgNjAuNTI3MzQ0IDguOTI0MzE2IDYwLjA3NjE3IDkuMTcxMzg3IEwgNjAuMDc2MTcgOC4yNTgzMDEgUSA2MC42MTg2NTYgOC4wNDg4MjggNjEuMTI4OTEgNy45NDQwOTEzIFEgNjEuNjM5MTU2IDcuODM5MzU1NSA2Mi4xMjI1NiA3LjgzOTM1NTUgUSA2My40Mjc3MzQgNy44MzkzNTU1IDY0LjA3MjI2NiA4LjUxNjExMyBRIDY0LjcxNjggOS4xOTI4NzEgNjQuNzE2OCAxMC41Njc4NzEgWiBNIDcwLjcxMDk0IDEwLjkyMjM2MyBRIDcwLjcxMDk0IDkuODQ4MTQ1IDcwLjI2NzgyIDkuMjU3MzI0IFEgNjkuODI0NzEgOC42NjY1MDQgNjkuMDI0NDE0IDguNjY2NTA0IFEgNjguMjI5NDkgOC42NjY1MDQgNjcuNzg2MzggOS4yNTczMjQgUSA2Ny4zNDMyNiA5Ljg0ODE0NSA2Ny4zNDMyNiAxMC45MjIzNjMgUSA2Ny4zNDMyNiAxMS45OTEyMTIgNjcuNzg2MzggMTIuNTgyMDMxIFEgNjguMjI5NDkgMTMuMTcyODUyIDY5LjAyNDQxNCAxMy4xNzI4NTIgUSA2OS44MjQ3MSAxMy4xNzI4NTIgNzAuMjY3ODIgMTIuNTgyMDMxIFEgNzAuNzEwOTQgMTEuOTkxMjEyIDcwLjcxMDk0IDEwLjkyMjM2MyBaIE0gNzEuNjk5MjIgMTMuMjUzNDE4IFEgNzEuNjk5MjIgMTQuNzg5NTUyIDcxLjAxNzA5IDE1LjUzODgxOCBRIDcwLjMzNDk2IDE2LjI4ODA4NiA2OC45Mjc3MzQgMTYuMjg4MDg2IFEgNjguNDA2NzQgMTYuMjg4MDg2IDY3Ljk0NDgyNCAxNi4yMTAyMDUgUSA2Ny40ODI5MSAxNi4xMzIzMjQgNjcuMDQ3ODUgMTUuOTcxMTkxIEwgNjcuMDQ3ODUgMTUuMDA5NzY1IFEgNjcuNDgyOTEgMTUuMjQ2MDk0IDY3LjkwNzIzIDE1LjM1ODg4NyBRIDY4LjMzMTU0IDE1LjQ3MTY4IDY4Ljc3MTk3IDE1LjQ3MTY4IFEgNjkuNzQ0MTQgMTUuNDcxNjggNzAuMjI3NTQgMTQuOTY0MTExIFEgNzAuNzEwOTQgMTQuNDU2NTQzIDcwLjcxMDk0IDEzLjQzMDY2NCBMIDcwLjcxMDk0IDEyLjk0MTg5NSBRIDcwLjQwNDc4NSAxMy40NzM2MzMgNjkuOTI2NzYgMTMuNzM2ODE2IFEgNjkuNDQ4NzMgMTQgNjguNzgyNzE1IDE0IFEgNjcuNjc2MjcgMTQgNjYuOTk5NTEgMTMuMTU2NzM4IFEgNjYuMzIyNzU0IDEyLjMxMzQ3NzUgNjYuMzIyNzU0IDEwLjkyMjM2MyBRIDY2LjMyMjc1NCA5LjUyNTg3OSA2Ni45OTk1MSA4LjY4MjYxNyBRIDY3LjY3NjI3IDcuODM5MzU1NSA2OC43ODI3MTUgNy44MzkzNTU1IFEgNjkuNDQ4NzMgNy44MzkzNTU1IDY5LjkyNjc2IDguMTAyNTM5IFEgNzAuNDA0Nzg1IDguMzY1NzIzIDcwLjcxMDk0IDguODk3NDYxIEwgNzAuNzEwOTQgNy45ODQzNzUgTCA3MS42OTkyMiA3Ljk4NDM3NSBMIDcxLjY5OTIyIDEzLjI1MzQxOCBaIE0gNzguODgwMzcgMTAuNzQ1MTE3IEwgNzguODgwMzcgMTEuMjI4NTE2IEwgNzQuMzM2NDI2IDExLjIyODUxNiBRIDc0LjQwMDg4IDEyLjI0OTAyNCA3NC45NTE0MTYgMTIuNzgzNDQ3IFEgNzUuNTAxOTUgMTMuMzE3ODcxIDc2LjQ4NDg2IDEzLjMxNzg3MSBRIDc3LjA1NDIgMTMuMzE3ODcxIDc3LjU4ODYyIDEzLjE3ODIyMiBRIDc4LjEyMzA1IDEzLjAzODU3NCA3OC42NDk0MTQgMTIuNzU5Mjc2IEwgNzguNjQ5NDE0IDEzLjY5Mzg0NyBRIDc4LjExNzY3NiAxMy45MTk0MzMgNzcuNTU5MDggMTQuMDM3NTk4IFEgNzcuMDAwNDkgMTQuMTU1NzYyIDc2LjQyNTc4IDE0LjE1NTc2MiBRIDc0Ljk4NjMzIDE0LjE1NTc2MiA3NC4xNDU3NSAxMy4zMTc4NzEgUSA3My4zMDUxNzYgMTIuNDc5OTggNzMuMzA1MTc2IDExLjA1MTI3IFEgNzMuMzA1MTc2IDkuNTc0MjE5IDc0LjEwMjc4IDguNzA2Nzg3IFEgNzQuOTAwMzkgNy44MzkzNTU1IDc2LjI1MzkxIDcuODM5MzU1NSBRIDc3LjQ2Nzc3IDcuODM5MzU1NSA3OC4xNzQwNyA4LjYyMDg1IFEgNzguODgwMzcgOS40MDIzNDQgNzguODgwMzcgMTAuNzQ1MTE3IFogTSA3Ny44OTIwOSAxMC40NTUwNzggUSA3Ny44ODEzNSA5LjY0NDA0MyA3Ny40MzgyMyA5LjE2MDY0NSBRIDc2Ljk5NTEyIDguNjc3MjQ2IDc2LjI2NDY1IDguNjc3MjQ2IFEgNzUuNDM3NSA4LjY3NzI0NiA3NC45NDA2NzQgOS4xNDQ1MzEgUSA3NC40NDM4NSA5LjYxMTgxNiA3NC4zNjg2NSAxMC40NjA0NDkgTCA3Ny44OTIwOSAxMC40NTUwNzggWiIvPgogICAgPC9nPgogIDwvZz4KICA8Zz4KICAgIDxnCiAgICAgIGlkPSJ2QmFjayI+CiAgICAgIDxwYXRoCiAgICAgICAgZmlsbD0iIzAxMDEwMSIKICAgICAgICBmaWxsLW9wYWNpdHk9IjAuMyIKICAgICAgICBzdHJva2U9IiMwMTAxMDEiCiAgICAgICAgc3Ryb2tlLW9wYWNpdHk9IjAuMDk4MDM5MjIiCiAgICAgICAgc3Ryb2tlLXdpZHRoPSIwLjMiCiAgICAgICAgZD0iTSA5NC40OTY1OCA3LjY5NTMxMjUgUSA5My42NTg3IDcuNjk1MzEyNSA5My4yMzcwNiA4LjUxOTc3NSBRIDkyLjgxNTQzIDkuMzQ0MjM4IDkyLjgxNTQzIDEwLjk5ODUzNiBRIDkyLjgxNTQzIDEyLjY0NzQ2MSA5My4yMzcwNiAxMy40NzE5MjMgUSA5My42NTg3IDE0LjI5NjM4NyA5NC40OTY1OCAxNC4yOTYzODcgUSA5NS4zMzk4NSAxNC4yOTYzODcgOTUuNzYxNDggMTMuNDcxOTIzIFEgOTYuMTgzMSAxMi42NDc0NjEgOTYuMTgzMSAxMC45OTg1MzYgUSA5Ni4xODMxIDkuMzQ0MjM4IDk1Ljc2MTQ4IDguNTE5Nzc1IFEgOTUuMzM5ODUgNy42OTUzMTI1IDk0LjQ5NjU4IDcuNjk1MzEyNSBaIE0gOTQuNDk2NTggNi44MzU5Mzc1IFEgOTUuODQ0NzM0IDYuODM1OTM3NSA5Ni41NTY0MDQgNy45MDIwOTk2IFEgOTcuMjY4MDc0IDguOTY4MjYyIDk3LjI2ODA3NCAxMC45OTg1MzYgUSA5Ny4yNjgwNzQgMTMuMDIzNDM4IDk2LjU1NjQwNCAxNC4wODk2IFEgOTUuODQ0NzM0IDE1LjE1NTc2MiA5NC40OTY1OCAxNS4xNTU3NjIgUSA5My4xNDg0NCAxNS4xNTU3NjIgOTIuNDM2NzcgMTQuMDg5NiBRIDkxLjcyNTEgMTMuMDIzNDM4IDkxLjcyNTEgMTAuOTk4NTM2IFEgOTEuNzI1MSA4Ljk2ODI2MiA5Mi40MzY3NyA3LjkwMjA5OTYgUSA5My4xNDg0NCA2LjgzNTkzNzUgOTQuNDk2NTggNi44MzU5Mzc1IFogTSA5OS4xNzQ4MSAxMy42MzU3NDMgTCAxMDAuMzA4MSAxMy42MzU3NDMgTCAxMDAuMzA4MSAxNSBMIDk5LjE3NDgxIDE1IEwgOTkuMTc0ODEgMTMuNjM1NzQzIFogTSAxMDQuOTkxNzEgNy42OTUzMTI1IFEgMTA0LjE1MzgxIDcuNjk1MzEyNSAxMDMuNzMyMTcgOC41MTk3NzUgUSAxMDMuMzEwNTU1IDkuMzQ0MjM4IDEwMy4zMTA1NTUgMTAuOTk4NTM2IFEgMTAzLjMxMDU1NSAxMi42NDc0NjEgMTAzLjczMjE3IDEzLjQ3MTkyMyBRIDEwNC4xNTM4MSAxNC4yOTYzODcgMTA0Ljk5MTcxIDE0LjI5NjM4NyBRIDEwNS44MzQ5NSAxNC4yOTYzODcgMTA2LjI1NjU5IDEzLjQ3MTkyMyBRIDEwNi42NzgyMiAxMi42NDc0NjEgMTA2LjY3ODIyIDEwLjk5ODUzNiBRIDEwNi42NzgyMiA5LjM0NDIzOCAxMDYuMjU2NTkgOC41MTk3NzUgUSAxMDUuODM0OTUgNy42OTUzMTI1IDEwNC45OTE3MSA3LjY5NTMxMjUgWiBNIDEwNC45OTE3MSA2LjgzNTkzNzUgUSAxMDYuMzM5ODQgNi44MzU5Mzc1IDEwNy4wNTE1MDYgNy45MDIwOTk2IFEgMTA3Ljc2MzE3NiA4Ljk2ODI2MiAxMDcuNzYzMTc2IDEwLjk5ODUzNiBRIDEwNy43NjMxNzYgMTMuMDIzNDM4IDEwNy4wNTE1MDYgMTQuMDg5NiBRIDEwNi4zMzk4NCAxNS4xNTU3NjIgMTA0Ljk5MTcxIDE1LjE1NTc2MiBRIDEwMy42NDM1NTUgMTUuMTU1NzYyIDEwMi45MzE4ODUgMTQuMDg5NiBRIDEwMi4yMjAyMTUgMTMuMDIzNDM4IDEwMi4yMjAyMTUgMTAuOTk4NTM2IFEgMTAyLjIyMDIxNSA4Ljk2ODI2MiAxMDIuOTMxODg1IDcuOTAyMDk5NiBRIDEwMy42NDM1NTUgNi44MzU5Mzc1IDEwNC45OTE3MSA2LjgzNTkzNzUgWiBNIDEwOS42Njk5MiAxMy42MzU3NDMgTCAxMTAuODAzMjIgMTMuNjM1NzQzIEwgMTEwLjgwMzIyIDE1IEwgMTA5LjY2OTkyIDE1IEwgMTA5LjY2OTkyIDEzLjYzNTc0MyBaIE0gMTE1LjYyMTA4NiAxMC41NTgxMDUgUSAxMTQuODkwNjMgMTAuNTU4MTA1IDExNC40NjM2MiAxMS4wNTc2MTYgUSAxMTQuMDM2NjIgMTEuNTU3MTI5IDExNC4wMzY2MiAxMi40MjcyNDYgUSAxMTQuMDM2NjIgMTMuMjkxOTkyIDExNC40NjM2MiAxMy43OTQxOSBRIDExNC44OTA2MyAxNC4yOTYzODcgMTE1LjYyMTA4NiAxNC4yOTYzODcgUSAxMTYuMzUxNTYgMTQuMjk2Mzg3IDExNi43Nzg1NjQgMTMuNzk0MTkgUSAxMTcuMjA1NTcgMTMuMjkxOTkyIDExNy4yMDU1NyAxMi40MjcyNDYgUSAxMTcuMjA1NTcgMTEuNTU3MTI5IDExNi43Nzg1NjQgMTEuMDU3NjE2IFEgMTE2LjM1MTU2IDEwLjU1ODEwNSAxMTUuNjIxMDg2IDEwLjU1ODEwNSBaIE0gMTE3Ljc3NDkgNy4xNTgyMDI2IEwgMTE3Ljc3NDkgOC4xNDY0ODQgUSAxMTcuMzY2NyA3Ljk1MzEyNSAxMTYuOTUwNDQgNy44NTEwNzM3IFEgMTE2LjUzNDE4IDcuNzQ5MDIzNCAxMTYuMTI1OTcgNy43NDkwMjM0IFEgMTE1LjA1MTc2IDcuNzQ5MDIzNCAxMTQuNDg1MTEgOC40NzQxMjEgUSAxMTMuOTE4NDYgOS4xOTkyMTkgMTEzLjgzNzkgMTAuNjY1NTI3IFEgMTE0LjE1NDc4NSAxMC4xOTgyNDIgMTE0LjYzMjgyIDkuOTQ4NDg2IFEgMTE1LjExMDg0IDkuNjk4NzMgMTE1LjY4NTU1IDkuNjk4NzMgUSAxMTYuODk0MDQgOS42OTg3MyAxMTcuNTk0OTcgMTAuNDMxODg1IFEgMTE4LjI5NTkgMTEuMTY1MDM5IDExOC4yOTU5IDEyLjQyNzI0NiBRIDExOC4yOTU5IDEzLjY2MjU5NyAxMTcuNTY1NDMgMTQuNDA5MTggUSAxMTYuODM0OTYgMTUuMTU1NzYyIDExNS42MjEwODYgMTUuMTU1NzYyIFEgMTE0LjIyOTk5IDE1LjE1NTc2MiAxMTMuNDk0MTQgMTQuMDg5NiBRIDExMi43NTgzIDEzLjAyMzQzOCAxMTIuNzU4MyAxMC45OTg1MzYgUSAxMTIuNzU4MyA5LjA5NzE2OCAxMTMuNjYwNjQ1IDcuOTY2NTUyNyBRIDExNC41NjI5OSA2LjgzNTkzNzUgMTE2LjA4MzAxIDYuODM1OTM3NSBRIDExNi40OTEyMSA2LjgzNTkzNzUgMTE2LjkwNzQ3IDYuOTE2NTA0IFEgMTE3LjMyMzc0IDYuOTk3MDcwMyAxMTcuNzc0OSA3LjE1ODIwMjYgWiBNIDEyMC4xNzU3OCA2Ljk4MDk1NyBMIDEyNC40MzUwNiA2Ljk4MDk1NyBMIDEyNC40MzUwNiA3Ljg5NDA0MyBMIDEyMS4xNjk0MjYgNy44OTQwNDMgTCAxMjEuMTY5NDI2IDkuODU5ODYzIFEgMTIxLjQwNTc1NCA5Ljc3OTI5NyAxMjEuNjQyMDkgOS43MzkwMTQgUSAxMjEuODc4NDIgOS42OTg3MyAxMjIuMTE0NzQ2IDkuNjk4NzMgUSAxMjMuNDU3NTEgOS42OTg3MyAxMjQuMjQxNjkgMTAuNDM0NTcgUSAxMjUuMDI1ODcgMTEuMTcwNDEgMTI1LjAyNTg3IDEyLjQyNzI0NiBRIDEyNS4wMjU4NyAxMy43MjE2OCAxMjQuMjIwMjE1IDE0LjQzODcyMiBRIDEyMy40MTQ1NSAxNS4xNTU3NjIgMTIxLjk0ODI0IDE1LjE1NTc2MiBRIDEyMS40NDMzNiAxNS4xNTU3NjIgMTIwLjkxOTY4IDE1LjA2OTgyNCBRIDEyMC4zOTU5OSAxNC45ODM4ODYgMTE5LjgzNzQgMTQuODEyMDEyIEwgMTE5LjgzNzQgMTMuNzIxNjggUSAxMjAuMzIwOCAxMy45ODQ4NjIgMTIwLjgzNjQyNiAxNC4xMTM3NjkgUSAxMjEuMzUyMDUgMTQuMjQyNjc1IDEyMS45MjY3NiAxNC4yNDI2NzUgUSAxMjIuODU1OTYgMTQuMjQyNjc1IDEyMy4zOTg0NCAxMy43NTM5MDYgUSAxMjMuOTQwOTIgMTMuMjY1MTM3IDEyMy45NDA5MiAxMi40MjcyNDYgUSAxMjMuOTQwOTIgMTEuNTg5MzU1IDEyMy4zOTg0NCAxMS4xMDA1ODYgUSAxMjIuODU1OTYgMTAuNjExODE2IDEyMS45MjY3NiAxMC42MTE4MTYgUSAxMjEuNDkxNyAxMC42MTE4MTYgMTIxLjA1OTMyNiAxMC43MDg0OTYgUSAxMjAuNjI2OTUgMTAuODA1MTc3IDEyMC4xNzU3OCAxMS4wMDkyNzcgTCAxMjAuMTc1NzggNi45ODA5NTcgWiIvPgogICAgPC9nPgogICAgPGcKICAgICAgaWQ9InZUZXh0Ij4KICAgICAgPHBhdGgKICAgICAgICBmaWxsPSIjZmZmZmZmIgogICAgICAgIHN0cm9rZT0iI2ZmZmZmZiIKICAgICAgICBzdHJva2Utd2lkdGg9IjAuMyIKICAgICAgICBkPSJNIDk0LjQ5NjU4IDYuNjk1MzEyNSBRIDkzLjY1ODcgNi42OTUzMTI1IDkzLjIzNzA2IDcuNTE5Nzc1NCBRIDkyLjgxNTQzIDguMzQ0MjM4IDkyLjgxNTQzIDkuOTk4NTM1IFEgOTIuODE1NDMgMTEuNjQ3NDYxIDkzLjIzNzA2IDEyLjQ3MTkyMyBRIDkzLjY1ODcgMTMuMjk2Mzg3IDk0LjQ5NjU4IDEzLjI5NjM4NyBRIDk1LjMzOTg1IDEzLjI5NjM4NyA5NS43NjE0OCAxMi40NzE5MjMgUSA5Ni4xODMxIDExLjY0NzQ2MSA5Ni4xODMxIDkuOTk4NTM1IFEgOTYuMTgzMSA4LjM0NDIzOCA5NS43NjE0OCA3LjUxOTc3NTQgUSA5NS4zMzk4NSA2LjY5NTMxMjUgOTQuNDk2NTggNi42OTUzMTI1IFogTSA5NC40OTY1OCA1LjgzNTkzNzUgUSA5NS44NDQ3MzQgNS44MzU5Mzc1IDk2LjU1NjQwNCA2LjkwMjA5OTYgUSA5Ny4yNjgwNzQgNy45NjgyNjE3IDk3LjI2ODA3NCA5Ljk5ODUzNSBRIDk3LjI2ODA3NCAxMi4wMjM0MzggOTYuNTU2NDA0IDEzLjA4OTYgUSA5NS44NDQ3MzQgMTQuMTU1NzYyIDk0LjQ5NjU4IDE0LjE1NTc2MiBRIDkzLjE0ODQ0IDE0LjE1NTc2MiA5Mi40MzY3NyAxMy4wODk2IFEgOTEuNzI1MSAxMi4wMjM0MzggOTEuNzI1MSA5Ljk5ODUzNSBRIDkxLjcyNTEgNy45NjgyNjE3IDkyLjQzNjc3IDYuOTAyMDk5NiBRIDkzLjE0ODQ0IDUuODM1OTM3NSA5NC40OTY1OCA1LjgzNTkzNzUgWiBNIDk5LjE3NDgxIDEyLjYzNTc0MyBMIDEwMC4zMDgxIDEyLjYzNTc0MyBMIDEwMC4zMDgxIDE0IEwgOTkuMTc0ODEgMTQgTCA5OS4xNzQ4MSAxMi42MzU3NDMgWiBNIDEwNC45OTE3MSA2LjY5NTMxMjUgUSAxMDQuMTUzODEgNi42OTUzMTI1IDEwMy43MzIxNyA3LjUxOTc3NTQgUSAxMDMuMzEwNTU1IDguMzQ0MjM4IDEwMy4zMTA1NTUgOS45OTg1MzUgUSAxMDMuMzEwNTU1IDExLjY0NzQ2MSAxMDMuNzMyMTcgMTIuNDcxOTIzIFEgMTA0LjE1MzgxIDEzLjI5NjM4NyAxMDQuOTkxNzEgMTMuMjk2Mzg3IFEgMTA1LjgzNDk1IDEzLjI5NjM4NyAxMDYuMjU2NTkgMTIuNDcxOTIzIFEgMTA2LjY3ODIyIDExLjY0NzQ2MSAxMDYuNjc4MjIgOS45OTg1MzUgUSAxMDYuNjc4MjIgOC4zNDQyMzggMTA2LjI1NjU5IDcuNTE5Nzc1NCBRIDEwNS44MzQ5NSA2LjY5NTMxMjUgMTA0Ljk5MTcxIDYuNjk1MzEyNSBaIE0gMTA0Ljk5MTcxIDUuODM1OTM3NSBRIDEwNi4zMzk4NCA1LjgzNTkzNzUgMTA3LjA1MTUwNiA2LjkwMjA5OTYgUSAxMDcuNzYzMTc2IDcuOTY4MjYxNyAxMDcuNzYzMTc2IDkuOTk4NTM1IFEgMTA3Ljc2MzE3NiAxMi4wMjM0MzggMTA3LjA1MTUwNiAxMy4wODk2IFEgMTA2LjMzOTg0IDE0LjE1NTc2MiAxMDQuOTkxNzEgMTQuMTU1NzYyIFEgMTAzLjY0MzU1NSAxNC4xNTU3NjIgMTAyLjkzMTg4NSAxMy4wODk2IFEgMTAyLjIyMDIxNSAxMi4wMjM0MzggMTAyLjIyMDIxNSA5Ljk5ODUzNSBRIDEwMi4yMjAyMTUgNy45NjgyNjE3IDEwMi45MzE4ODUgNi45MDIwOTk2IFEgMTAzLjY0MzU1NSA1LjgzNTkzNzUgMTA0Ljk5MTcxIDUuODM1OTM3NSBaIE0gMTA5LjY2OTkyIDEyLjYzNTc0MyBMIDExMC44MDMyMiAxMi42MzU3NDMgTCAxMTAuODAzMjIgMTQgTCAxMDkuNjY5OTIgMTQgTCAxMDkuNjY5OTIgMTIuNjM1NzQzIFogTSAxMTUuNjIxMDg2IDkuNTU4MTA1IFEgMTE0Ljg5MDYzIDkuNTU4MTA1IDExNC40NjM2MiAxMC4wNTc2MTcgUSAxMTQuMDM2NjIgMTAuNTU3MTI5IDExNC4wMzY2MiAxMS40MjcyNDYgUSAxMTQuMDM2NjIgMTIuMjkxOTkyIDExNC40NjM2MiAxMi43OTQxOSBRIDExNC44OTA2MyAxMy4yOTYzODcgMTE1LjYyMTA4NiAxMy4yOTYzODcgUSAxMTYuMzUxNTYgMTMuMjk2Mzg3IDExNi43Nzg1NjQgMTIuNzk0MTkgUSAxMTcuMjA1NTcgMTIuMjkxOTkyIDExNy4yMDU1NyAxMS40MjcyNDYgUSAxMTcuMjA1NTcgMTAuNTU3MTI5IDExNi43Nzg1NjQgMTAuMDU3NjE3IFEgMTE2LjM1MTU2IDkuNTU4MTA1IDExNS42MjEwODYgOS41NTgxMDUgWiBNIDExNy43NzQ5IDYuMTU4MjAyNiBMIDExNy43NzQ5IDcuMTQ2NDg0NCBRIDExNy4zNjY3IDYuOTUzMTI1IDExNi45NTA0NCA2Ljg1MTA3MzcgUSAxMTYuNTM0MTggNi43NDkwMjM0IDExNi4xMjU5NyA2Ljc0OTAyMzQgUSAxMTUuMDUxNzYgNi43NDkwMjM0IDExNC40ODUxMSA3LjQ3NDEyMSBRIDExMy45MTg0NiA4LjE5OTIxOSAxMTMuODM3OSA5LjY2NTUyNyBRIDExNC4xNTQ3ODUgOS4xOTgyNDIgMTE0LjYzMjgyIDguOTQ4NDg2IFEgMTE1LjExMDg0IDguNjk4NzMgMTE1LjY4NTU1IDguNjk4NzMgUSAxMTYuODk0MDQgOC42OTg3MyAxMTcuNTk0OTcgOS40MzE4ODUgUSAxMTguMjk1OSAxMC4xNjUwMzkgMTE4LjI5NTkgMTEuNDI3MjQ2IFEgMTE4LjI5NTkgMTIuNjYyNTk3IDExNy41NjU0MyAxMy40MDkxOCBRIDExNi44MzQ5NiAxNC4xNTU3NjIgMTE1LjYyMTA4NiAxNC4xNTU3NjIgUSAxMTQuMjI5OTkgMTQuMTU1NzYyIDExMy40OTQxNCAxMy4wODk2IFEgMTEyLjc1ODMgMTIuMDIzNDM4IDExMi43NTgzIDkuOTk4NTM1IFEgMTEyLjc1ODMgOC4wOTcxNjggMTEzLjY2MDY0NSA2Ljk2NjU1MjcgUSAxMTQuNTYyOTkgNS44MzU5Mzc1IDExNi4wODMwMSA1LjgzNTkzNzUgUSAxMTYuNDkxMjEgNS44MzU5Mzc1IDExNi45MDc0NyA1LjkxNjUwNCBRIDExNy4zMjM3NCA1Ljk5NzA3MDMgMTE3Ljc3NDkgNi4xNTgyMDI2IFogTSAxMjAuMTc1NzggNS45ODA5NTcgTCAxMjQuNDM1MDYgNS45ODA5NTcgTCAxMjQuNDM1MDYgNi44OTQwNDMgTCAxMjEuMTY5NDI2IDYuODk0MDQzIEwgMTIxLjE2OTQyNiA4Ljg1OTg2MyBRIDEyMS40MDU3NTQgOC43NzkyOTcgMTIxLjY0MjA5IDguNzM5MDE0IFEgMTIxLjg3ODQyIDguNjk4NzMgMTIyLjExNDc0NiA4LjY5ODczIFEgMTIzLjQ1NzUxIDguNjk4NzMgMTI0LjI0MTY5IDkuNDM0NTcgUSAxMjUuMDI1ODcgMTAuMTcwNDEgMTI1LjAyNTg3IDExLjQyNzI0NiBRIDEyNS4wMjU4NyAxMi43MjE2OCAxMjQuMjIwMjE1IDEzLjQzODcyMiBRIDEyMy40MTQ1NSAxNC4xNTU3NjIgMTIxLjk0ODI0IDE0LjE1NTc2MiBRIDEyMS40NDMzNiAxNC4xNTU3NjIgMTIwLjkxOTY4IDE0LjA2OTgyNCBRIDEyMC4zOTU5OSAxMy45ODM4ODYgMTE5LjgzNzQgMTMuODEyMDEyIEwgMTE5LjgzNzQgMTIuNzIxNjggUSAxMjAuMzIwOCAxMi45ODQ4NjIgMTIwLjgzNjQyNiAxMy4xMTM3NjkgUSAxMjEuMzUyMDUgMTMuMjQyNjc1IDEyMS45MjY3NiAxMy4yNDI2NzUgUSAxMjIuODU1OTYgMTMuMjQyNjc1IDEyMy4zOTg0NCAxMi43NTM5MDYgUSAxMjMuOTQwOTIgMTIuMjY1MTM3IDEyMy45NDA5MiAxMS40MjcyNDYgUSAxMjMuOTQwOTIgMTAuNTg5MzU1IDEyMy4zOTg0NCAxMC4xMDA1ODYgUSAxMjIuODU1OTYgOS42MTE4MTYgMTIxLjkyNjc2IDkuNjExODE2IFEgMTIxLjQ5MTcgOS42MTE4MTYgMTIxLjA1OTMyNiA5LjcwODQ5NiBRIDEyMC42MjY5NSA5LjgwNTE3NiAxMjAuMTc1NzggMTAuMDA5Mjc3IEwgMTIwLjE3NTc4IDUuOTgwOTU3IFoiLz4KICAgIDwvZz4KICA8L2c+Cjwvc3ZnPgo=" alt="PyPI version" /></a></p>
|
|
172
|
+
<p>Guessing reasonable defaults for locale, keyboard layout, territory,
|
|
173
|
+
and language.</p>
|
|
174
|
+
<h2 id="purpose-of-this-package">Purpose of this package</h2>
|
|
175
|
+
<p><em>langtable</em> is used to guess reasonable defaults for locale,
|
|
176
|
+
keyboard, territory, …, if part of that information is already known.
|
|
177
|
+
For example, guess the territory and the keyboard layout if the language
|
|
178
|
+
is known or guess the language and keyboard layout if the territory is
|
|
179
|
+
already known.</p>
|
|
180
|
+
<h2 id="license">License</h2>
|
|
181
|
+
<p>GPLv3+, see the included file “COPYING”.</p>
|
|
182
|
+
<p>Translations for languages and territory names are from CLDR which is
|
|
183
|
+
governed by the Unicode Terms of Use, see the included file
|
|
184
|
+
“unicode-license.txt”. The short name for this Unicode license is “MIT”.
|
|
185
|
+
See:</p>
|
|
186
|
+
<p><a href="https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29">https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29</a></p>
|
|
187
|
+
<h2 id="installation">Installation</h2>
|
|
188
|
+
<p>To install langtable, run</p>
|
|
189
|
+
<pre><code> make install DESTDIR=/usr</code></pre>
|
|
190
|
+
<p>To create a distribution tarball run</p>
|
|
191
|
+
<pre><code> make dist</code></pre>
|
|
192
|
+
<p>To run the test cases in the source directory:</p>
|
|
193
|
+
<pre><code> make check</code></pre>
|
|
194
|
+
<h2 id="how-to-use-it">How to use it</h2>
|
|
195
|
+
<pre><code>import langtable</code></pre>
|
|
196
|
+
<p>Functions in the public API:</p>
|
|
197
|
+
<pre><code> parse_locale()
|
|
198
|
+
list_locales()
|
|
199
|
+
list_keyboards()
|
|
200
|
+
list_common_languages()
|
|
201
|
+
list_common_locales()
|
|
202
|
+
list_common_keyboards()
|
|
203
|
+
list_consolefonts()
|
|
204
|
+
list_inputmethods()
|
|
205
|
+
list_timezones()
|
|
206
|
+
list_scripts()
|
|
207
|
+
language_name()
|
|
208
|
+
territory_name()
|
|
209
|
+
timezone_name()
|
|
210
|
+
languageId()
|
|
211
|
+
territoryId()
|
|
212
|
+
supports_ascii()
|
|
213
|
+
list_all_languages()
|
|
214
|
+
list_all_locales()
|
|
215
|
+
list_all_keyboards()
|
|
216
|
+
list_all_territories()
|
|
217
|
+
list_all_timezones()
|
|
218
|
+
list_all_scripts()
|
|
219
|
+
list_all_input_methods()
|
|
220
|
+
list_all_console_fonts()</code></pre>
|
|
221
|
+
<p>Some examples to show the usage are found in the documentation of the
|
|
222
|
+
public functions in <code>langtable.py</code>.</p>
|
|
223
|
+
<p>Some more examples are in the test cases in the file
|
|
224
|
+
<code>test_cases.py</code>.</p>
|
|
225
|
+
</body>
|
|
226
|
+
</html>
|
|
@@ -0,0 +1,72 @@
|
|
|
1
|
+
# langtable
|
|
2
|
+
|
|
3
|
+
[](https://badge.fury.io/py/langtable)
|
|
4
|
+
|
|
5
|
+
Guessing reasonable defaults for locale, keyboard layout, territory, and language.
|
|
6
|
+
|
|
7
|
+
## Purpose of this package
|
|
8
|
+
_langtable_ is used to guess reasonable defaults for locale, keyboard, territory, …, if part of that information is already known. For example, guess the territory and the keyboard layout if the language is known or guess the language and keyboard layout if the territory is already known.
|
|
9
|
+
|
|
10
|
+
## License
|
|
11
|
+
|
|
12
|
+
GPLv3+, see the included file “COPYING”.
|
|
13
|
+
|
|
14
|
+
Translations for languages and territory names are from CLDR which is governed by the Unicode Terms of Use, see the included file “unicode-license.txt”. The short name for this Unicode license is “MIT”. See:
|
|
15
|
+
|
|
16
|
+
https://fedoraproject.org/wiki/Licensing:MIT?rd=Licensing/MIT#Modern_Style_without_sublicense_.28Unicode.29
|
|
17
|
+
|
|
18
|
+
## Installation
|
|
19
|
+
|
|
20
|
+
To install langtable, run
|
|
21
|
+
|
|
22
|
+
```
|
|
23
|
+
make install DESTDIR=/usr
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
To create a distribution tarball run
|
|
27
|
+
```
|
|
28
|
+
make dist
|
|
29
|
+
```
|
|
30
|
+
To run the test cases in the source directory:
|
|
31
|
+
```
|
|
32
|
+
make check
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
## How to use it
|
|
36
|
+
|
|
37
|
+
```
|
|
38
|
+
import langtable
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Functions in the public API:
|
|
42
|
+
|
|
43
|
+
```
|
|
44
|
+
parse_locale()
|
|
45
|
+
list_locales()
|
|
46
|
+
list_keyboards()
|
|
47
|
+
list_common_languages()
|
|
48
|
+
list_common_locales()
|
|
49
|
+
list_common_keyboards()
|
|
50
|
+
list_consolefonts()
|
|
51
|
+
list_inputmethods()
|
|
52
|
+
list_timezones()
|
|
53
|
+
list_scripts()
|
|
54
|
+
language_name()
|
|
55
|
+
territory_name()
|
|
56
|
+
timezone_name()
|
|
57
|
+
languageId()
|
|
58
|
+
territoryId()
|
|
59
|
+
supports_ascii()
|
|
60
|
+
list_all_languages()
|
|
61
|
+
list_all_locales()
|
|
62
|
+
list_all_keyboards()
|
|
63
|
+
list_all_territories()
|
|
64
|
+
list_all_timezones()
|
|
65
|
+
list_all_scripts()
|
|
66
|
+
list_all_input_methods()
|
|
67
|
+
list_all_console_fonts()
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Some examples to show the usage are found in the documentation of the public functions in `langtable.py`.
|
|
71
|
+
|
|
72
|
+
Some more examples are in the test cases in the file `test_cases.py`.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|